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):


Hi nadlabak and f_pasha thanks for this great work bringing Gingerbread to Milestone.

So far 11.02.03 work great, of course some features still under construction.

Now upgrading to 11.02.07 version.

Do we need to install the new BPSW released a few days ago on this CM7?

What is BPSW at all?

BPSW is for "Base Bands Software", SW responsible for RF connections between phone and operator network.

What I did:

- Install Froyo leak from XDA forum: in my case I use Vivo SBF file.
- Install CM7 via OR, high recommended to use latest Androidiani OR.
- For non European carriers, use Androidiani OR Baseband menu to change to your operator or at least a similar.


- 2.3.2 working
- battery life really good.

can install the rom from here its 100% reliable installation

and also can install compatible themes from here, has instructional video on how to install them.

As has been mentioned, it's Baseband Processor SoftWare - it makes your phone be able to be used as, well, a phone...

If you haven't installed the latest full leak, it's recommended to use the BPSW update in order to get the updated BPSW.

the 0.07-11.02.07 no superuser in it?

for me superuser works

Is this playing WMA files? I can't! The music player says it's not supported.

in the mean time I'm using PowerAmp, it include support for .wma and .flac e.g.

and it's working great in CM7

Thanks, but i prefer the android player for better dock usability.

Yup, no wma support. It's there in CM6 so I hope it will be added in a future release.

I had problems with the camera starts recording and hangs

Same here!

known issue

Thank you for your highly appreciated and hard work and your afforts.
Just updated to CM7 and it's running just fine. May be not everything works like it should - but hey, its just an alpha! Thanks for bringing cool new stuff & tech to our old bricked-by-manufacturer phones.
You're the best!

Just an offtopic question: why don't you work - lets say: "officially" - together with the rest of the CyanogenMod team?

Best regards
cpt. kork

I work officially in the sense that I'm providing patches to the official CM source code (both Milestone/Droid specific and also generic ones), and they very well know that I'm working with Milestone.
I've done both the gps and compass fixes for Milestone directly in the official CM sources.
You can see my latest commits here:,129

E.g. in the past, when I needed to loosen a condition (equals "sholes" change to contain "sholes" to fit Milestone - umts_sholes) Steve (Cyanogen) agreed to make the change. So you can see, even in the official CM sources there are some changes that are needed solely for the Milestone...

The CyanogenMod policy is currently that locked devices that can't use custom kernel are not officially supported. Also, some of the hacks needed to get the custom ROM running on locked devices are not acceptable in the generic CM source tree.

As soon as the basic CM policy in regard to locked kernel will change (though possibly never), I will surely attempt to have the Milestone supported officially by CM.

Or as soon as the bootloader is unlocked / broken, should that ever happen, I'm guessing? :)

I don't know if anyone has tried using built-in SIP stack on CM7, but I can receive calls and place SIP calls when I use numbers. If I try to call a sip address like "" it's not possible. I cannot dial it from phone app neither if I define a sip address in my contacts. If I define a sip contact and try to dial it using sip, the phone app seems to translate all letters to a number...
Has anyone experiencing the same issue?

You can define a SIP-Adress if you edit a contact and look under "More"

My problem is not defining a SIP address.... My problem is when you click the contact who has SIP address on it and select SIP action, the dialer dial a number instead of dialing the SIP address...
I think it is a problem with the dialer or contacts app that still has only Froyo features on it...

Worked for me and I could establish SIP calls...

update to cm7 from original moto firmware 2.1 update1 with the baseband update only is not recommended! the cm7 is working but slow and ext4 module cant work, not even the gallery app.

first need to be install the latest froyo motoleak from XDA. use the nandroid backup archive and restore from the openrecovery, then wipe all data, and then install the cm7 update with google apps. the openrecovery memhack for cyanogenmod is working with cm7 too, and free up a lot of memory. ext4 module also working, so you can use app2sdext too.

ohh the most important thing: cm7 is incredible fast and smooth :)

well done!

I can't get to the recovery menu to apply updates anymore :(
Cam+Power shows ! in triangle and VolUp+Cam does nothing after that. Can anyone help?

I don't see the recovery menu but Cam+Power gives the triangle. To get the recovery menu press the Cam first and press the VolUp... not the other way.

Module tun.ko for cm7?, for openvpn, i need it? :( tanx for cm milestone, your work is great :)

CM7 for MM uses the same kernel as CM6 for MM, so all kernel modules should still work. Have you tried it?

when i execute /system/xbin/openvpn, i get:

Tue Feb 8 17:32:19 2011 us=909301 Note: Cannot open TUN/TAP dev /dev/tun: No such file or directory (errno=2)
Tue Feb 8 17:32:19 2011 us=911254 Note: Attempting fallback to kernel 2.2 TUN/TAP interface
Tue Feb 8 17:32:19 2011 us=916870 Cannot allocate TUN/TAP dev dynamically
Tue Feb 8 17:32:19 2011 us=916961 Exiting

# lsmod
tiwlan_drv 859608 0 - Live 0xbf09d000
cpufreq_conservative 4635 0 - Live 0xbf096000
cpufreq_smartass 5055 1 - Live 0xbf08f000
cpufreq_interactive 2081 0 - Live 0xbf089000
cpufreq_stats 1945 0 - Live 0xbf083000
overclock 3819 0 - Live 0xbf07d000
ext4 196127 0 - Live 0xbf044000
symsearch 673 3 cpufreq_smartass,cpufreq_interactive,overclock,[permanent], Live 0xbf03e000
jbd2 45314 1 ext4, Live 0xbf02c000
mbcache 4923 1 ext4, Live 0xbf025000
sec 3169 0 - Live 0xbf01f000
modem_pm_driver 1524 2 - Live 0xbf019000
netmux_linkdriver 7828 0 [permanent], Live 0xbf012000
netmux 48324 21 netmux_linkdriver, Live 0xbf000000

# ls -lrth /system/lib/modules
-rw-r--r-- 1 root root 3.7K Aug 1 2008 wl127x_test.ko
-rw-r--r-- 1 root root 3.5K Aug 1 2008 wl127x-test.ko
-rw-r--r-- 1 root root 1.0M Aug 1 2008 tiwlan_drv.ko
-rw-r--r-- 1 root root 1.1M Aug 1 2008 tiap_drv.ko
-rw-r--r-- 1 root root 2.8K Aug 1 2008 symsearch.ko
-rw-r--r-- 1 root root 6.0K Aug 1 2008 sec.ko
-rw-r--r-- 1 root root 17.6K Aug 1 2008 sch_htb.ko
-rw-r--r-- 1 root root 5.2K Aug 1 2008 pcbc.ko
-rw-r--r-- 1 root root 8.4K Aug 1 2008 overclock.ko
-rw-r--r-- 1 root root 4.2K Aug 1 2008 output.ko
-rw-r--r-- 1 root root 9.9K Aug 1 2008 netmux_linkdriver.ko
-rw-r--r-- 1 root root 62.0K Aug 1 2008 netmux.ko
-rw-r--r-- 1 root root 3.5K Aug 1 2008 modem_pm_driver.ko
-rw-r--r-- 1 root root 8.7K Aug 1 2008 mbcache.ko
-rw-r--r-- 1 root root 57.5K Aug 1 2008 jbd2.ko
-rw-r--r-- 1 root root 1.4K Aug 1 2008 hid-dummy.ko
-rw-r--r-- 1 root root 236.5K Aug 1 2008 ext4.ko
-rw-r--r-- 1 root root 5.1K Aug 1 2008 cpufreq_stats.ko
-rw-r--r-- 1 root root 9.6K Aug 1 2008 cpufreq_smartass.ko
-rw-r--r-- 1 root root 5.6K Aug 1 2008 cpufreq_interactive.ko
-rw-r--r-- 1 root root 9.2K Aug 1 2008 cpufreq_conservative.ko
-rw-r--r-- 1 root root 8.7K Aug 1 2008 cls_u32.ko

Hi! Thanks for your hard work. My problem is when I try to enable any option from DSP Manager I get a Force Close. Please, can you see that? Or I am the only that present this problem?

Same DSP Problem!

i get the same problem as well

It's not working on CM7 releases on ANY phone, not just our Milestones. Well, it's still in alpha stage, so I'd expect bugs or non-working stuff here and there...

I've now CM6 and I've flash also the update of BPSW (just incase, it's for the last baseband right?)

For install the new CM7 what I have to do?
Just all wipe and then update with new package a google apps?
Thank you for your work!

I've upgraded from CM6 to CM7, and while on the whole it's pretty good, I keep getting internal storage space warnings. I cleared a bunch of space, and have >35MB free on internal storage, but over the course of a day, the available space slowly decreases to the point where it's below the 20MB threshold and I start getting the warnings. Restarting the phone causes it to go back to the >35MB figure (and start slowly creeping down again). Has anybody else been experiencing this? It seems like some kind of memory leak, but one that eats into internal storage...

I see that behavior and I saw it in CM6 too.

Thanks - any idea how soon the extra logging will be disabled (and the storage will thus stop being eaten up)?

Can EXT3 and EXT4 work properly now?

I can see the EXT4 partition using Root Explorer, but cannot write or the phone halts.


from the changelog, seems ext3 and 4 cant still cant work properly
and can i ask, what is the different between ext2 and ext3/4?

The ext3 filesystem is a journaling version of the Linux ext2 filesystem. The ext3 filesystem has one significant advantage that no other journaling filesystem has - it is totally compatible with the ext2 filesystem. It can therefore make use of all of the existing applications that have already been developed to manipulate and fine-tune the ext2 filesystem.

Hi there !
First off all i have to say that this is a superb customized mod ! But i have one question that maybe is a little bit strange. Right now i got the CM7 installed on my Milestone. Is my Milestone then automatically overclocked to 900MHz,800Mhz or something else or is it stock ?

Yes, CM is usually overclocked to about 900 Mhz. If you want stock settings and want it easy, you may use Androidiani OR: Changes are persistent even after reboot. Just find your way into the menus.

Is anyone else having problems with apps (especially SMS apps) randomly closing and kicking you back to the homescreen? I've tried Handcent, GO SMS, and even the stock messaging app. They all randomly close without warning and kick you back to the homescreen. It's kinda PITA when you're in the middle of typing a message.

I just want to know if it's just me or not before opening up a bug report.

Stock SMS have no problem, but got the Whatsapp quit randomly

p.s. any news/update about FC at boot? did anyone have this experience also?

basically CM7 is ready for daily use, but it a little slow or lag with CPU set under 700MHz
Camera randomly FC or hang for more than 10s

Well, seems like the 09.02 release fixed the random closing... :)

Another annoying bug I've encountered is with non-stock SMS apps. I've tried both Handcent and GO SMS, both randomly stop notifying me of new messages. I've tested this by enabling notifications on both stock and non-stock app. First I get 2 notifications as expected (from stock and non-stock app), but after a while the non-stock app stops alerting me of new messages. I only get the notification from the stock app.

At first I thought this was a problem with the non-stock app, but I haven't found any reports on either Handcent or GO SMS, which lead me to suspect Moto's proprietary files.

Oh, and as a note, it started occuring since the 15.01 release of CM6. I've tried reverting to various older kernels, but the problem persists. My best guess would be that it's a bug in the proprietary libraries... :(

Looking at xda-dev (, it looks like I'm not the only one experiencing this...


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.