You are here

CyanogenMod 7 for Milestone A853 (with custom kernel, finally)

Main credits:
Obviously, it's the CyanogenMod team and all CM contributors in the first place.
Besides that and my own humble work, CM for Milestone would not be where it is now without the essential works of Skrilax_CZ (2nd-init, OpenRecovery, lot of work on custom kernel, 2ndboot fixes and more), Czechop (hack to the kernel usb initialization code that allows to keep BP working after 2ndboot to custom kernel), f_pasha (gkisystem semaphore patch), Tiago Sousa (author of the original overclock kernel module) and contributions from others that I forgot to list here ;) .
Also worth mentioning is a lot of notable work done by the Defy developers: Epsylon, Quarx and Maniac103
The original 2ndboot code is by Dmitriy Taychenachev and Eugen Maksimov.

Please note that Milestone is not officially supported by CyanogenMod.

Issue tracker:
Build from source:
github repos: &
my recent commits to official CM:,129
2ndboot OpenRecovery:

Full guide from stock Motorola Android to CyanogenMod 7 for Milestone
- by pontomedon (many thanks)
- it includes instructions on how to partition sdcard directly in OpenRecovery (to resize existing fat and create ext3)

New era with custom kernel via 2ndboot
Czechop (Milestone 2) managed to create a hack to the kernel usb initialization code that allows to keep BP working even after 2ndboot to custom kernel.
(See )
Thanks to Skrilax_CZ, the issue of low performance before the first device suspend has been resolved (L2 cache remained disabled before).

Note that a lot of work on the custom kernel for Milestone has been done by Skrilax_CZ.

Main new features:
- Kernel Samepage Merging enabled
- ZRAM (compcache) can be enabled under CyanogenMod>Performance settings (will be active after reboot)
- additional swap file (or partition) can be used, if desired

(older CM builds: and )

7.2.4f (2.3.7) 10.03.2013
- the libaudio that allows beepless call recording has been made optional, because some users reported BP panics on incoming calls
-- you can enable it under Device settings > Experimental libaudio (the change requires reboot)
-- the experimental libaudio received new binary patch that may (or may not) fix the BP panics (testing and confirmation from users is needed)
- several additional fixes done to the call recording code
- added CPU stats kernel module
- the moto RIL data connectivity workarounds introduced in 7.2.4c can be optionally disabled by ro.telephony.ril_class=motow3gplain in /system/build.prop (the default value that includes the workarounds is "motow3g")
- ringer audiofocus fix (by maniac103)
- omap3 hwrng is now exposed by kernel and used by userspace rngd to feed the entropy pool

7.2.4e (2.3.7) 30.12.2012
- call recording: fix recording for calls with asterisk in phone number
- fix typo in /system/etc/init.d/12swap script
- use better way to implement 'Disable Dock Observer' option (fix issue 637 - )

7.2.4d (2.3.7) 27.12.2012
- add built-in call recording option; no beeps every 10s during call recording any more
- wifi: disable 802.11n support by default (HT_Enable in tiwlan.ini) to prevent stale data connections when using certain N routers
- kernel: reverted doubling of the DAC fifo size to 16384 (to prevent audio drop-outs) as it caused broken audio playback in certain games
- fix /system/etc/init.d/12swap script

in case you're wondering why the new build is not uploaded to github as before, see

7.2.4c (2.3.7) 11.12.2012
- kernel: increased DAC fifo size to 16384 to reduce the chance of audio drop-outs
- fix unwanted lcd-backlight activation by camera button while the screen is off (was related to the light sensor workaround that allows to use camera button to provoke sending of light sensor data without waiting for ALS interrupt)
- better handling of Baseband Processor panic (by maniac103) - instead of immediate reboot like in stock firmware, user is notified and can choose to postpone the reboot (e.g. when he's got some work to finish first). Note about the reason of reboot is displayed after restart.
- workarounds for some motorola RIL issues that cause occasional data connectivity problems (by maniac103)
- build: in-line kernel building
- optional swap activation on boot via /system/etc/init.d/12swap
-- requires swap partition present as third partition on sdcard
-- swap size (in kB) is determined by persist.sys.swapsize property
-- no persist.sys.swapsize property defined or set to 0 means no swap activation

example how to set persist.sys.swapsize property in terminal:
setprop persist.sys.swapsize 16384

7.2.4b (2.3.7) 09.11.2012
- kernel update: 10MB more of a free RAM (when the camera is not active)
-- allocate the LSC workaround memory only for the time while the ISP is actually in use

7.2.4a (2.3.7) 03.11.2012
- overclock: vsel entries restored to proofed values
- 2ndboot: updated pre-built binaries
-- a fix instead of a workaround for the GPU performance, proper ATAGs passing (thanks to Skrilax_CZ), etc.
- Music.apk: fixed music playback resume after a phone call (thanks to Danny Baumann)

7.2.4 (2.3.7) 23.10.2012
- the bad GPU performance on low CPU freq fixed via workaround during init (temporary insmod of stock pvr driver)
- updated kernel:
-- we're now on (thanks to Skrilax_CZ)
-- new interactive governor backported from jellybean (with input-boost feature activated by touchscreen events)
-- camera helper buffer (allocated during boot) reduced by 6MB (thanks to alef78) > more free RAM available
-- optional 5 point multitouch fixed
-- fixed usb tethering (only in the 2nd uploaded 7.2.4 build - sorry for the confusion)
- bootinfo hacks could be removed thanks to new 2ndboot update by Skrilax_CZ

7.2.3 (2.3.7) 18.10.2012
- older builds are hopelessly obsolete from now on


7.2.1 (2.3.7) 01.09.2012
- GPU drivers (SGX PVR) updated to 1.7 (latest Gingerbread release) from 1.5 (Froyo), despite the locked kernel
-- it allows less hacky surfacefliger/libui/egl code. Most notably, some workarounds had to be used for some apps to prevent occasional crashes on screen rotation before. Most prominently it can be seen in Gallery app. Before, the view had to be reset on each rotation (to make sure there won't be a crash), now it can work more naturally. Similar hack has had to be used for Google Maps as well...
- the proprietary patched to report 265 DPI to match the physical characteristics of the Milestone's display
- "stay away from zombie content providers" race condition fix - before, randomly, apps could get suddenly killed (after they attached to content provider that has been already killed, but its zombie process still there). This race caused apps to suddenly disappear e.g. after the search function has been initiated (reported e.g. in the case of Google Maps before). It should no longer happen after this release.
- a recent Google Maps update changed a part of the name of the always running background service from NetworkLocationService to GoogleLocationService. This change has been reflected in ActivityManagerService code, so the GMaps hack is working again.
- lots of fixes and also new features from upstream CyanogenMod is included, e.g. the increasing ring tone volume option.

7.2.0 (2.3.7) 16.06.2012
- 7.2.0 release
- the most notable 'last minute' fix is the elimination of the occasional 'mute' incoming call (while the two-way call recording ability is retained)

7.2.0 RC2 (2.3.7) 01.06.2012
- fixed initialization issues leading to bootloops or stalled boot if the ext partition mount took too long
- fixed lockscreen button behavior (notification power widget) where the lockscreen couldn't be enabled again after a while (thanks to maniac103)
- Toggle2G built from source; removed the need for root permissions
- usb: usbd built from source (thanks to Skrilax_CZ), disabled usb notification sound, usb tethering can be enabled directly from usb notification menu
- wlan: updated kernel drivers, disabled adhoc support in tiwlan.ini to prevent connection issues for some APs
- possible workaround for mute call issue (more feedback is needed to confirm or disprove its effectiveness) - Issue 752
- LatinIME is run in SystemUI process to spare additional 2MB of RAM
- added protection of Mms app if its service is doing a work. It shouldn't be necessary to keep the Mms app in RAM all the time to prevent lost sms anymore
- added possible recovery from DSP Bridge failures (its effectiveness needs to be confirmed) - Issue 672
- updated fonts (to fix special Romanian chars)
- install process wipes the dalvik-caches automatically
- etc.

7.2.0 RC1 (2.3.7) 23.03.2012
- various fixes under the hood

7.2.0 RC0 (2.3.7) 21.02.2012
just a quick fix build:
- make sure that services don't start before sd-ext has been mounted (if present)
- fix LED in charge only mode

7.2.0 RC0 (2.3.7) 17.02.2012
- wide screen video recording now captures in 848x480 resolution (was 720x400)
- two way call recording is now possible (recording has to start after the lines have been connected, not sooner)
- UMTS baseband (2100/900 vs. 2100/1900/850) can be selected in Device settings, the selection will persist even after future system updates (please do not use the baseband switching via Open Recovery anymore)
- fixed in-call and SIM PIN unlock screen layouts for landscape orientation, e.g. for phone in CarDock or DeskDock
- additional information about call can be indicated (e.g. that an incoming call has been forwarded, that the call is on hold on the remote side...)
- workaround for broken proximity sensors - camera button can be used to generate fake 'proximity far' event
- many other important fixes and improvements
note: CMWalpapers and Androidian and Cyanbread themes are not included anymore as more space in /system was needed for the libraries that enable the higher quality video recording. Themes and wallpapers can be installed e.g. from market separately.

7.1.5 (2.3.7) 21.01.2012
- ics animations (including rotation) backported to gingerbread
- renderer updated with rotation support - proper playback of videos with orientation hint
- adhoc disabled in tiwlan.ini (may help few people with wifi issues)

7.1.4 (2.3.7) 19.01.2012
- native wifi tethering finally works (proprietary 3G Mobile Hotspot removed, no dun apn dependency anymore)
- T9 dialer
- new 'Holo' ring lockscreen style
- increased net buffers for wifi, added values for hspa
- internal: switched to init built from source, wifi: switched from system/wlan/ti to hardware/ti/wlan, gps: gingerbread lib (from Defy GB firmware) is used instead of froyo lib + gpshim wrapper
- other things I can't remember now ;)

1) 7.1.3 skipped to distinguish from the intermediate version used as base for the last HO!NO! Mod
2) If you encounter wifi issues after update:
reboot to recovery, open console and enter
rm -R /data/misc/wifi

and reboot. You will have to re-configure your wifi networks after this.
Also make sure you have the correct Wifi Regulatory domain selected:
Settings>Wireless & network>Wi-Fi settings>menu>Advanced>Regulatory domain.
Select the appropriate value (11-US, 13-EU, 14-JP), then menu>Save

7.1.2 (2.3.7) 13.12.2011
- fixed recurring events in lockscreen calendar widget
- fixed possible egl surface creation failure (in PewPew game and possibly other apps); reworked egl config selection
- added optional revamped ring lockscreen style
- fixed bugreport service (left shift + del), report files are stored in /sdcard/bugreports/
- added /etc/powervr.ini for some PowerVR SGX tweaks (> less RAM used by surfaceflinger)
- internal storage changes:
-- dalvik.vm.dexopt-cache-only disabled by default ('no free space left in /cache' issue)
-- return back to 07app2ext moving also dalvik-cache to sd-ext
-- lib2ext script (and support for it in installd) newly included. It is not active by default. It can free huge amount of space in /data by transfer of applications' native libraries to sd-ext. Make sure you have enough free space (at least 100MB-200MB) in /sd-ext before you enable it. To activate it, run "su" and then "lib2ext 1" in terminal on phone. The libs will be moved during the next boot.
- etc

rest of changelogs:

download links:
CM 7.2.4:
Google Apps: -
same as the official gapps-gb-20110828 with:
- Market (Vending.apk) updated to 3.4.4 version
- CarHomeGoogle updated to version (it seems to fix Sygic launch issues)
- new talk with audio/video chat included to make a single gapps update package again
- updater script fixed to be fully compatible also with odexed ROMs

Additional downloads:
- BPSW (2.2 - Froyo):
if you are updating to CM from 2.1 firmware, you can use this package to update your baseband processor software to 2.2 version
- devtree (2.2 - Froyo):
if you are updating to CM from 2.1 firmware, you can use this package to update your devtree to 2.2 version

- the main init scripts are located in /system/etc/rootfs
- clocking options (frequency table, vsel table and governors) can be set in /system/etc/init.d/10overclock
- Adobe Flash can be downloaded and installed directly from Adobe web or from Android Market

- use OpenRecovery Apply Update menu to install the zip copied to /sdcard/OpenRecovery/updates
- data wipe/factory reset is highly recommended when you are upgrading from another rom/fw or from 0.01/0.02.
- if you are in France, you should replace ro.product.brand=MOTO_RTEU with ro.product.brand=MOTO_RTFR in /system/build.prop (the ap_gain_france.bin will be used then)

OpenRecovery with battery charging added and writing to certain sdcards fixed:

archive links:
CM 7.0.1 (0.08-11.04.24):


With Androidiani OR yo have to select your prefered layout.


Can somebody upload an apk file for the hardware keyboard?

based on apac 01.28 firmware this rc the most stable for now. no lag, no random reboot, fast, i like it :)

Hei nadlabak, great work ! I want to report some issue: after applying update, I always install Market Enabler. Now, the moment I choose T-Mobile my Milestone goes to an FC in superuser, and never gets to activate it. I think it can be something related with busybox. What do you think ? Cheers, and keep on man !!

Market Enabler working for me.
I switched to CM6 to CM7, made a full wipe, and its ok.

I could solve the problem going back to GOT Telus 2.2.1, and then applying CM... but is done !

I've discovered anoher one: using Autokiller, if you try to apply one of the profiles, the program freezes and FC comes after a while. Hope you can solve this one... Cheers !

i cant confirm that. work for me flawlessly. try to clear cache and reinstall app.

COuld be an issue with "superuser" again ?

no, if you use the superuser app what is come from cyanogen update.

btw autokiller only ask root when change sysctl settings. if you just run the software do not need root permission. if force closed then something not right, but the problem not is the superuser app i think.

I do use the superuser within CM. It's there when you apply the update ! And I can say that the problem is somehow there, because from time to time (even doing nothing) I get the message "superuser ...... and needs to close"

It was actually a problem with the superuser app. How did I manage to solve it ? This way: install GOT Telus 2.2.1 SBF with RSDLite,then apply the newest CM. That was it !


I can confirm that the memory issues are much better than the previous RC2...

It still however depletes memory and comes back to 15Mb if i open a lot of applications and then shutting them does not release the memory to that extent....

Otherwise its quite fast and stable....great work nadlabak...

Why CM7 for Milestone cannot display USB Debugging ico in Notification Bar?

I can't get USB Debugging to work at all.
>> adb devices
returns an empty list.

I can't define new APNs - which is bad, because the phone doesn't detect them automatically from my sim card, meaning I don't get a signal at all. (Hutchinson 3G - §g only, that's why I don't get any signal at all without the proper APN)

Using the latest RC3 btw.

I just installed a few minutes ago, this is so SLICK. Maybe much of this is thanks to Gingerbread, but I can't believe how responsive the phone is now. I haven't turned off animations like I usually do because they are 100% stutter free. Everything seems to be working, including GPS & BT.

Took about 30 minutes to get all my apps reset up after wiping stock 2.2 and switching - hopefully I won't have to wipe for future CM7 updates.

(A853 Milestone, Euro edition on T-Mobile.)

Hi volume buttons don't seem to be working when screen is off. Pause and play through camera button works though. Overall its looking very solid for RC3, no major errors so far. Thanks kabaldan. :)

Does it really affect performance as indicated in. The warning? Can someone help me by pointing out the visual difference? I can't seem to notice it anyway. :/

Will androidiani OR overclock scripts on the menu work on CM7? Thanks!

So far everything I've tried for Froyo in Androidiani OR has worked fine on CM7.


THanks i tried it and it worked too.

It seems that there is a bug with APNs.

The phone doesn't detect the settings automatically, thats no big deal.
But when I enter the settings manually, I click on save and they're gone.

Can anyone confirm this? I'm using the latest RC3

Sorry I can't confirm that issue.

I'm using latest RC3 in Latin-American carrier without problems with APN.

I had this problem a few months ago after rooting, but I was still running stock 2.1 then, so it's not necessarily a ROM issue. I found a solution after a bit of searching, but for the life of me I can't remember what it was - I do know that if the APN details entered don't match what is set in some other part of the configuration then the entry will disappear. Sorry I can't be more help.

Hi nadlabak could you please confirm if is't true that it only affects Android versions lower than 2.3?

In this case, we are safe using CM7 right.

Thanks in advanced

Once you enter airplane mode, it can't be undone until you reset the phone. Thats quite annoying :)

I can't confirm that. Airplane mode works fine over here (RC3-11.03.02).

system\etc\init.d\05mountsd is missing from the latest RC3! without this the sdcard ext2 partition not work

20userinit script not work too

i copy 05mountsd from previous release and place to the /etc/init.d and sd card mounted properly again.

please fix this issue at the next time :)

I flashed from the stock milestone image and now I cant get any service at all, also the phone doesn't ask for a pin code at startup.
When I roll back from CM7 RC3 to stock milestone, there is no Problem at all.

I googled a bit and found, that removing sim lock would eventually help, but this isn't possible, because he always asks for a pin code, even when no sim is inserted.
When the sim card is in the phone i als can't enter my pin code, so i can't remove this lock :((


the solution if you get no service is that 2.3 doesnt work with the milestones stock baseband version.
just install the new baseband version from down below and you're set!


Is there any idea or software than can update this ROM easier instead of downloading the whole file(90mb++) and flash it..THANKS

Thats pretty much as simple as it can get...sorry, no.

Lol..thanks for replying,so there is no way to do it,okay.Then u update everytime or just occasionally on important update?

I update every new release.
Just wipe cache and dalvik cache, flash new rom and you're set to go. No need to set up the whole phone again.

I've set a bookmark on my phone, I just download it onto the phone, move it to openrecovery and then flash it. Takes me about 10mins incl. download.

Do you mean microsoft myphone?Although i donno who are you..but very appreciated for all those information that you provided..vry kind of you

No, why would I use an android phone with microsoft software?! ;)
My phone in this case is my actual phone, I set a bookmark in the browser to this site.

I just download the newest update and wipe dalvik before installing. I keep all my settings and apps, no problems, no extra work. 10 minutes total including download. Although, just in case, I do a Nandroid backup every few updates as long as it's stable.


Thanks for the LiveWallpaper fix. That was the only problem I experienced with yesterday's initial RC3 release.

I want to format my sd card, my question, what should remain of the data on sd card?

erase all. phone creates the needed files itself

Thanks nadlabak its getting much better, I've tried the new release and i can see a noticeable difference in memory management.

Cant wait for a 100% fix to the memory issues, nadlabak can you confirm if what i;ve been facing is an issue...

Appreciate your work...regards...

i tested the latest release. everything works fine, the video recorder still nor working properly but its ok. i know this is one of the hard part.
anyway, anything else is fast and worked without a glich! no random reboot for now.

great work nadlabak! keep up :)

Recently I start to watch your work and is really good. I have a MotoMilesetone A853 with your ROM. In the future I'll like help to you to develop or something to continue with this.

Thanks for take the time for make true this.

try this settings in 10overclock

# Lets load up the modules:
insmod /system/lib/modules/symsearch.ko
insmod /system/lib/modules/overclock.ko

echo 60 > /proc/overclock/max_vsel
echo 900000 > /proc/overclock/max_rate

echo "5 900000000 56" > /proc/overclock/mpu_opps
echo "4 700000000 49" > /proc/overclock/mpu_opps
echo "3 500000000 44" > /proc/overclock/mpu_opps
echo "2 250000000 33" > /proc/overclock/mpu_opps

echo "0 900000" > /proc/overclock/freq_table
echo "1 700000" > /proc/overclock/freq_table
echo "2 500000" > /proc/overclock/freq_table
echo "3 250000" > /proc/overclock/freq_table

insmod /system/lib/modules/cpufreq_stats.ko
insmod /system/lib/modules/cpufreq_interactive.ko
insmod /system/lib/modules/cpufreq_smartass.ko
insmod /system/lib/modules/cpufreq_conservative.ko

echo smartass > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

#echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
#echo 125000 > /sys/devices/system/cpu/cpu0/cpufreq/conservative/sampling_rate
#echo 25 > /sys/devices/system/cpu/cpu0/cpufreq/conservative/freq_step
# Memory management
# Optimized by Feeyo,
mount -t debugfs none /sys/kernel/debug
echo NO_NORMALIZED_SLEEPER > /sys/kernel/debug/sched_features

# Lets set some kernel stuff:
echo "2048" > /proc/sys/kernel/msgmni
echo "64000" > /proc/sys/kernel/msgmax
echo "268435456" > /proc/sys/kernel/shmmax
echo "500 512000 64 2048" > /proc/sys/kernel/sem
echo "24319" > /proc/sys/kernel/sched_features
sysctl -w net.core.wmem_max=524288
sysctl -w net.core.rmem_max=524288
sysctl -w net.ipv4.tcp_tw_recycle=1
sysctl -w net.ipv4.tcp_rmem='4096 87380 404480'
sysctl -w net.ipv4.tcp_wmem='4096 16384 404480'
echo "20" > /proc/sys/vm/dirty_background_ratio
echo "30" > /proc/sys/vm/dirty_ratio
echo "300" > /proc/sys/vm/dirty_writeback_centisecs
echo "300" > /proc/sys/vm/dirty_expire_centisecs
echo "1" > /proc/sys/vm/oom_kill_allocating_task
echo "10" > /proc/sys/vm/swappiness
echo "2048" > /proc/sys/vm/min_free_kbytes
echo "100" > /proc/sys/vm/vfs_cache_pressure
echo "1536,2048,4096,5120,5632,6144" > /sys/module/lowmemorykiller/parameters/minfree
sysctl -w kernel.panic_on_oops=1
sysctl -w kernel.hung_task_timeout_secs=0
sysctl -w kernel.sched_latency_ns=100000
sysctl -w kernel.sched_min_granularity_ns=200000
sysctl -w kernel.sched_wakeup_granularity_ns=0
sysctl -w kernel.sched_compat_yield=1

echo "10" > /proc/sys/vm/swappiness
pm setInstallLocation 1

Do you have any testing result?

I can play videos only with Rock Player, the other players I use (iMPlayer, arcMedia, YXPlayer) are always crasing, but Rock Player has a delayed audio with 854x480 mp4 videos, h.264 seems ok, but has a strange noise with 5.1 AAC audio (I checked with Big Buck Bunny).
720p video playback is very choppy, will it be better or is it all what the Milestone can do?


Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.