You are here

CyanogenMod 9 for Milestone A853

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.

xda thread:

gapps 20121225:
OpenRecovery 2ndbootOR:

Because of limited space in system, gapps are installed to /data/vendor. But if ext partition is present on sdcard, they are moved to /sd-ext.
Therefore ext partition is highly recommended for CM9, otherwise the space for apps in /data will be too limited.
You can find instructions on how to resize fat and create ext3 partition directly in OpenRecovery in this very fine guide by pontomedon:
Full guide from stock Motorola Android to CyanogenMod 7 for Milestone

CM9 for Milestone is using 2ndboot to run custom kernel despite the bootloader kernel lock.

Android 4.x requires at least 340MB RAM available to kernel and userspace
As we have only 225MB, don't expect any miracles - the hardware constrains count.

HW acceleration increases application's RAM demands. You can use the included HWA Settings app to disable it per app.

Known issues:
You tell me ;) .

9.1.0d (4.0.4) 07.01.2013
- fix: keep keyboard backlight off while keyboard is hidden
- fix crash on launch of certain apps (e.g. Aldiko) - use workaround for occasional mysteriously zeroed bitmap scale parameter
- Apollo music player fixes - jellybean backports; reworked image fetching and caching (by iwo)

9.1.0c (4.0.4) 30.12.2012
- call recording: fix recording for calls with asterisk in the phone number
- fix the per app HW acceleration disable code to work according to application package name as specified by HWA Settings app (the original implementation [which pre-dated HWA app usage] used process name, not package name)
- re-implement the 'Disable Dock Observer' option - for users of phone cases with magnetic closures (to prevent the screen turning on in reaction to a magnet appearing near the phone)

9.1.0b (4.0.4) 26.12.2012
- fix VoiceSearch, VoiceTyping and Talk (voice) - please use the updated gapps package
- fix adb toggle
- fix possible crash when recording videos and re-enable limited preview frame rate for better Camera app responsiveness
- fix backup of system files (mostly gapps) during ROM updates
- add built-in call recording option; no beeps every 10s during call recording any more
- updated CMFileManager
- 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

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

9.1.0a (4.0.4) 11.12.2012
- fix relaunch of some activities on keyboard slide out/in (e.g. YouTube playback, Root Explorer...)
- CMFileManager included (backport from JB)
- 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 Basband 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)
- 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

9.1.0 (4.0.4) 05.12.2012
notable recent fixes and features:
- support for connecting to adhoc wifi
- fixed wifi networking when using UPnP/DLNA apps
- note that this build is done from the branch with removed theme engine,
as the theme support seems to be too heavy, hurting performance of our device

- video recording (not exactly smooth yet, but working nevertheless)
- added missing sysctl to prevent RAM fragmentation (cause of gmaps freezes)
- etc.

- camera is working (only taking pictures, not video recording; panorama mode is not working)
- switched back to Calendar and LatinIME built from source
- bootanimation is enabled by default, it can be disabled under performance settings
- baseband selection is under device>advanced settings
- usb and native wifi tethering is not working yet (but should be fixed soon, probably in the next build)

- until the open source solution will be ready, Google builds of Calendar and CalendarProvider are installed via gapps to provide Google Calendar sync. Google build of LatinIME is included to provide access to downloadable dictionaries.
- most of the gapps are installed to /data/vendor. if you are updating from earlier CM9 build, use "rm -r /system/*" in recovery console before installation to make sure you don't run out of space in /system because of previously installed gapps
- bootanimation is disabled (debug.sf.nobootanimation=1 in build.prop), because the default bootanim takes more than 80MB of RAM while running, which may cause issues - from very long boot time to bootloops.


hey, thanks for ics :)

i am running the earlier verion of cm9 in which camera doesnt work..gonna update it soon but i wanted to post a couple of bugs:-

1. does not adds facebook account therefore, u cannot sync contacts
2. twitter cannot sync contacts

I read some positive comments about third party launchers (like Nova etc.), saying they use up less RAM.. please consider using one of them instead of the default one (Trebuchet) if you verify that there is an effective advantage in terms of performance.. just like it has been done on CM7 with ADW Launcher.
Thanks ;-)


Trebuchet and APEX are very user-friendly, one important thing on ICS. But yes, they're RAM hoggers.
Please try Zeam. IMHO it's the best lightweight launcher for ICS.

Mr. Potatoes

Thanks for the suggestion :) It's a possibility, but I think that a launcher that is fully integrated in the ROM would be the top :)
So, nadlabak, consider integrating Zeam or any other one :)


okay, I have a question for you, have long that not we know of the work of Skrilax_CZ about the kernel for habilitations of swap, we want know if he even to be work in this proyect... is simply one question. the true we like that this to work! thanks Nadlabak, you are our Hero. :)

Very good job developing this excellent version of this veteran android phone!

PS: ""
This update is fake? or is it real?
What is the changelog of this update?

Mám nainstalováno - běhá celkem rychle. Zatím vše funguje skvěle.
Jen na jedna věc mi chybí: bude zase fungovat vícenásobný stisk klávesy pro psaní čárek, háčků atd?
Dík za pěkný systém

Hey nadlabak,

first of all, i can't believe ics is running on my old milestone. you do really great work!
Despite you said "Alpha preview, not intended for daily use!" i used it for testing.

I experienced some issues while using it, here is a list that may help in some way:

- sometimes the phone lost data connectivity, it displayed 3g as active in the notification bar though. Switching to Airplane mode and back fixed this problem. Occurs randomly, often when i'm riding my bike.
- redialing does not work: not sure if this is an issue, but when i'm dialing a number by hand it's stored as "unknown" in the recent call list but it seems the number is lost. so if the line is busy i have to reenter the number.
- when getting called the phone just displays the number. sometime during the call the caller is displayed correctly. so it just might take to long to get the caller from the contacts
- i'm using an ext3 partition on the sd-card as you proposed, but since i created it the phone takes to reboots to actually boot. if i try to boot, it boots to the home screen, then reboots again after some seconds and then works normal.
- the ext3 sd-card partition is unmounted and shared via usb when in data storage mode and is accessible via my linux system. leaving the data storage mode causes the phone to reboot.
- the "barcode scanner" app ( ) has a wrong aspect ratio in the camera image and is not able to recognize any barcodes (tested several 1D and QR). when i try to close the app the phone freezes and eventually reboots after a minute.
- the battery percentage display instantly drops from about 25% to 4% when using the phone, but then the phone keeps running (on standby) for hours.
- before i used the ext3 sd-card partition i run low on internal storage and only had about 19mb left. then the google calendar and mail stopped syncing and even synced no data after forcing refresh in the app and freeing internal storage by removing installed apps. not sure if this is a google apps issue or cm9/milestone related.

Hope this list is of any use to you. Thanks again for bringing ics to the milestone. :D

Greets, dridde

I have a problem when tried to connection my university's wireless network (802.1x EAP) with my milestone, it failed to connect all the time. The problems also exists on CM7, imagine it could be solved in CM9 but with no luck.
Can you help me out?
Thanks a lot.

Activating lib2ext via "lib2ext 1" on terminal I correctly get the message saying: "lib2ext will be performed on next boot".

Well, after next boot a "lib" folder is created in sd-ext but nothing is moved there, it stays empty. I tried more than once.

Trying "lib2ext 0" to disable lib2ext (since it doesn't work) I get the following message:

"rm failed for -f, Read-only file system
Cannot disable lib2ext"

I tried mounting the file system as R/W through Root Explorer, and this is what I get running lib2ext 0:

"rm failed for -f, No such file or directory
Cannot disable lib2ext"

Is there anything that can be done? I hope that the possible future fix will not mess up all my applications.


i had the same problem.

the symlinks to rm, mv, cp, ls and a few other utilities show to /system/bin/toolbox.
but the toolbox tools rm, mv, cp, ls are quite limited and not working correctly.

if you have busybox installed with all it's symlinks (you should have)
you simply can delete the mentioned symlinks in /system/bin
and the script (and every other script) should use the busybox versions.
done. :)

Hy, when it will apear a newer version, because thi had a lot of bugs.....aniwey great job.... !!!!

I'd been using CM7 since quite a long time, kept it updated always. CM7 was very impressive and had done its job successfully without any issues.
Yesterday I've updated my milestone to CM9, steps given in the article are easy to follow and I was able to do it on my own (Having only basic tech knowledge).
Hurray! Now my milestone is running ICS.
Thanks a lot and really great job!!!
Eagerly looking forward to see this crossing alpha/beta stages.

My milestone have worked with CM since your work began, Even the milestone not work very well because of it's parameter. but the device always follows Google update. You work is magical.

Insufficient Storage avaliable

What should i do?

From above:

"Because of limited space in system, gapps are installed to /data/vendor. But if ext partition is present on sdcard, they are moved to /sd-ext.
Therefore ext partition is highly recommended for CM9, otherwise the space for apps in /data will be too limited.
You can find instructions on how to resize fat and create ext3 partition directly in OpenRecovery in this very fine guide by pontomedon:
Full guide from stock Motorola Android to CyanogenMod 7 for Milestone"

Did you follow the directions at to create an ext3 partition on your SD card?

Hi Pavel,

Thanks for all your hard work, it's awesome to see my old Milestone being updated like this!
I tried to find a way to change the keyboard layout to AZERTY on XDA, but I couldn't find the exact steps. I tried tinkering with some files, but so far *not* so good. Could you detail the new procedure to change the keyboard layout on ICS (if there is one)?

Thanks a lot, really. You are the man.


Pavel - thanks for this amazing release. I can't wait to try it on my Milestone.

Guys, I can not believe we have ICS on the Milestone one and this is thanks to Nadlabak. We should not simply say "thank you" but donate some money. This guys obviously does not make this for money, just because he has one device and he is pushing the limits of it, but honestly, without Nadlabak we would have changed our Milestone at least a year ago. He saved us money.

I say all those guys who say "tank you" should donate at least 10 USD. I know I will do when CM9 gets in Beta and will be able to use it every day!

I second that. But... where is the donate button or similiar? Where to send the money? And, for me the biggest problem, how does one donate without credit card? Any info and help would be appreciated.

See left under. Yellow Paypal donate button has there.

Crap :) Hidden...

This is a video of how it works on my milestone.}

Hi All. I've seen some advice on how to remap certain files but when I make the attempt using Rooted editors it fails saying that it's not Writable which I'm guessing is the phones internal storage. I see vague mention regarding unmount/remount but with no clear instructions. Now, some of you may shake your head and say "Noobie" or "search the previous posts" for which I have but a I mentioned above, nothing is clear. So, two things I ask.
1) Will this be a fix in a future release
2) Can some kind soul provide/point to clearer instructions on how to resolve this keyboard issue

Thanks in advance!

go to open recovery and change the keyboard layout in setting option that should do..:)

Thanks for the reply but that was the first thing I tried. The script does run but the settings do not hold. IT seems to be that the file Generic.klis now the file that holds the mapping in ICS and while I can change the mappings it won't let me save while the system is mounted and that's where I run into the issue. Either the script needs to be edited or the next build requires the fix. Any other suggestions from anyone? :)

i updated my milestone to latest cm9 version 2 days seems there is some bug with outgoing calls where it puts all the calls as "unknown"

i think this needs to be fixed asap...

thanks again for the awesome update

i had this too ... look at the comments here, someone wrote a solution for this!! and it worked, but i can't remember now ...

Hi, run Phone app > Settings > Additional settings > Caller ID > Show number

weird but works (found below in this discussion)

i am having the option dimmed for me...:(

hey when are you releasing the new version cos' i have problems with videos that aint recorded with the movile and the maps app is allwais on and in the market some apps cant be downloaded cos' when it's finished the download it sais that the package is invalid

Camera app totally diappointed me :( I took some photos, as usual, camera app freezed after third photo. Everything looked fine. Then i arrived home and found out that all photos taken that day are corrupt and cant be opened :( So good trip without digital memories :( I donated you and i wait for solution ;) Anyway, keep up good work ;)

keep in mind this is NOT a stable release, it DOES have undocumented bugs and it is in alpha stage, so it shouldnt be your daily rom, and you shouldnt rely on it for anything yet. it is meant for preview only

try UNOFFICIAL/0413 or Knightly/0319, for me all 3 modes of camera seem working fine.

Thank you very much Nadlabak

Hi Kabaldan,

I'm testing last rom update from mverk on xda forum, and I'm having problems with my milestone when I put it on the dock: the sound turns off, just like if earphones are plugged.
Indeed, if I plug my earphones (with my mm docking), I can listen music and others sounds, and if I unplug them then I can heard sounds.
It's like the cellphone recognizes earphones when docking it even when they aren't plugged.

And, by the way, thanks for everything you do. CM9 is running almost flawlessly on our MMs!!!

Hi Nadlabak,

You do a really great job on this ICS rom !
I re-discover my Milestone !

However, I have found a bug for the Exchange account synchronisation.
When I updated my milestone from cm7 rom (v7.1.5) to cm9 (, everything went fine except for the Email application which was crashing everytime I tried to open it.
I added the email widget that displays the list of emails which was a workaround to be able to open my current emails.
Then, I tried to re-create my exchange account to check if there was a problem with the account upgrade.
The creation of the account works fine but I could never get an email or all my contacts updated again. No more contacts and no emails in my Inbox. When I start the email app, it tells me that it is getting my emails and that I have to wait for a while, I see the Wifi usage, but after less than a minute, the application ends and still nothing.

So I revert back to cm7 for the moment.

Keep the good work !


Thanks a lot for the great work on porting CM9 to the old milestone.

I know this is an alpha version but here is the problems i have seen:
- can't connect to a wifi WPA2 access point (haven't tested on WEP or open)
- the browser crashes when loading heavy pages
- the wallpaper is not scrolling when switching home screens
- a camera issue causes the Barcode scanner from ZXing Team not to work properly (the image is stretched and QR can't be read) - maybe this is a 3rd party problem but that app worked on cm7
- the data connection goes down sometime without any specific reason. The network symbol from the top system bar turn white and it never comes back. A workaround is to switch Airplane mode ON and back OFF.
- the launcher is killed almost every time I open an app (to free more memory I assume) . I takes about 5 seconds for it to restart after pressing the home key.

I have similar problem, the data connection goes down sometime without any specific reason. The network symbol from the top system bar turn white and it never comes back. A workaround is to switch Airplane mode ON and back OFF.

First of all, thanks for all the great work you share!

I'm posting this comment to help others who encounter the same issues.

The only thing that didn't work for me was the updates (cm9, cm7-7.2.0 RC2, and the correspondant gapps) from the openrecovery 1.46 that you posted to work with the ext3 update on the cm7 thread. That version of Open Recovery i used to create the ext3 partition, but the updates didn't get to install. I had to go back to the androidiani (1.46) openrecovery to get the updates and gapps to install correctly. By now i installed cm9 and am testing it out. I still have to see the difference because i had an outdated cm7.0.9.

Thanks again for all the great work!

peccato che qui sia da un bel po', ancora tutto fermo !

Thank you so much! just a few question my WiFi sometimes doesn't work and how long until the video acceleration?
Great work keep it up!

I ran CM9 for about a month and it was the most stable ROM I've used yet. I only recently went back to CM7 for better navigation and caller ID support. Nailing down the video support would instantly make this a beta release. In terms of operational stability it's top notch.

When i set a custom ringtone to a contact, its playing the default one.
I found this in the log: CallerInfo query took too long; manually starting ringer. CallerInfo query took too long, falling back to default ringtone.
I try custom mp3 and default android ringtones too, but no luck.

Hi nadlabak, i have installed the Cyanogenmod 9 its awesome! excellent work, but i have a 1 issue, when I press Home button (this function is back to principal home) that says not responding, only vibrate, you can to fix this? Thanks You!

And, i fanatic of the ROM's Originals, Cyanogenmod can create a CyanogenMOD 9 without no mods?? thanks you!

Goodbye nadlabak, good work!

The issue its resolved when i reboot my phone, the lockscreen don't found, but reboot and found perfect!, when the next release?

I have a problem with the clock.
It often crashes, which is annoying, because so i dont get up in the morning ;)

Try deleting /data/data/
I had the same issue. Looking at the stack trace showed error when reading the db. Deleting it worked for me.

Hello nadlabak!

I've decided to try CM9 to see how things were going, and got really surprised to see it running so smoothly on our old phones. Congratz on your work!

But I'm having a problem with incoming calls. Changed the baseband do Brazil in OR and inside ICS, on Advanced Settings, to UMTS Brazil(Vivo) (my operator), but all incoming calls are directed to voicemail and are logged to the lost calls, as if I had blocked the contacts. Already checked and there is no block on the contacts I've tested. I've searched for anything that could change it, but didn't find any option. Am I missing something or is it really a bug?

Thank you very much!

i had this issue, but on CM7

switching to 3G-only mode seemed to remedy it

eventually the problem went away on its own, and i can receive calls on 2G again

might try 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.