CM 11 M4: Post-release Items

With yesterday’s M4 release all wrapped up, this is the perfect time to ‘talk shop’ about the releases in general and some of the comments we are seeing.

What are the M’s for?

The M-releases are our best effort to provide an actual ‘release cycle’ for ourselves and users alike. In previous generations of CM, we were super active but released sparingly, with months between releases and with an unpredictable cycle. This was bad for users, specifically those less likely to use nightlies, and bad for developers on our team – never knowing in advance when we’d collectively say “Okay, let’s do a release now”.

M-releases exist on a monthly cycle to force our hand at not only releasing, but addressing bug-fixes in a timely manner. These releases are scheduled for the first week of every month, usually the first Friday/Saturday. Every M release for CM 11 has gone through a very specific code preparation and release process, both of which were less stringent in CM’s previous incarnations. In terms of time, this allows for roughly 3.5 weeks out of any given month for code review and mergers to be included in a release. The last week or so is spent making sure that the code for release is tested and branched accordingly to the new ‘stable/cm-11.0′ branches on our Github (example). This ensures that newer, more experimental features are properly vetted in a separate release stream, and do not impede or prevent a timely release.

What M-releases are not

When we introduced the M’s, the common consensus was that they were just specially named nightlies. This was close to true for the majority of the CM9 cycle and most of the CM 10.x cycle. With CM 11 though, this is no longer the case. CM 11 M# releases are a code path that lags behind nightlies.

This means a few things:

  1. Nightlies have newer code than the M-releases
  2. You should be extra careful flashing an M build on top of a new nightly due to #1

In Practice

As the Ghostbusters would say, “Don’t cross the streams”. While this isn’t a hard-stop rule, it is still very apt advice to take into account. Let’s give you a real-world scenario.

M4 was branched for release last week – let’s use an easy date and say February 28th. This means all the code that exists in the stable/cm-11.0 branches on Github contain code 8 days old, with only bugfixes placed on top (or unstable features removed). This also means that any change merged in the last 8 days to the master ‘cm-11.0′ branch is not captured in the branch for M4. On March 2nd, we merged in some relatively sweeping telephony changes based on QCRIL (Qualcomm specific radio code) and the beginnings of Multi-SIM phone support. If you are using a nightly from March 2nd to today, you have this new code. If you flashed M4, you don’t. Simple enough right?

But what happens if you are on nightly March 7, for example, and then flash M4? In terms of code, you have just downgraded. Downgrading can be perfectly benign, or flat out make your phone unbootable. In the QCRIL example, if you downgraded you would see broken phone calls and radio behavior. This is one of the many reasons veteran users advocate making a backup before making any changes, and we’d echo that advice.

So what are the release streams?

There are effectively 3 release streams for CM: Nightlies, M/Stable, and Installer:

Nightlies are always the most bleeding edge in code, features, and yes, bugs (including the kind that may prevent the device from booting at all).

Update process: Flash a new nightly on top of the old – no need to wipe

M/Stable are specifically tagged, branched, tested and released. If you are a tinkerer but adverse to the chaos of nightlies, this is for you.

Update process: Flash a new M/Stable on top of the previous M/Stable – no need to wipe

Installer builds are those served via the CM Installer applications (Windows, Mac). These builds are specially signed and named separately – there is no concept of an ‘M’ build for this release channel – so saying ‘Installer skipped M#’ is an incorrect interpretation. This channel only ever receives specially created Stable builds – they even come with their own naming structure (eg XNPQ02R).

Update process: Incremental OTA’s are provided using the CMFota application – updates are handled by device logic with minimal user interaction, no wipe needed

If you are a nightly user, use nightlies. If you prefer to tinker but want something less chaotic, use the M/Stables. If you aren’t a tinkerer and don’t want chaos, use the Installer builds (if available).

If you want to cross streams, make a backup first! It should also be noted, to cross into or out of the Installer build release channel will require you to wipe your data (due to the different key signing).

Devices and greenlights 

As a team, we leave it to the maintainers to opt-in to releases. If for any reason your maintainer does not flag a device as ready for release – be it for technical reasons, lack of time, or anything else – we will not issue a release for that device.

For some examples, I’ll point you to the d2lte, jflte and hlte devices. These are the unified builds we announced last month. The maintainers decided that the unified devices were not ready to be issued outside of the nightly release stream and so no builds for these devices were generated.

Part of what I do on this project is the user interaction – talking to you all via this blog, comments, forums, social media, etc. All too often I see “you didn’t release for [device], you must have abandoned it”. This simply is not the case. You trust the CM maintainers to keep your devices functional and in a working state, if you didn’t you wouldn’t be using the work that they provide. But part of that trust also entails trusting their decision making abilities about the suitability of any device for release. These guys are working hard to get your devices in the best possible shape – so when they say “no” to any particular release, don’t take it as a slight against you, they are making a judgement call.

We all know that everyone wants the latest and greatest, but that mentality is for the nightly channel, and if the latest and greatest is what you want, use those. But for M/Stable, you want things that work (for those that will inevitably point out various bugs on M4 now, please do so constructively via JIRA).



  • Stiggu

    Well, but dont come running here and whine if things doesnt work as intended. A dirty flash aka flashing ontop of each other is usally root to alot of problems.

  • Betong Araneta

    Thanks brother :)

  • dave

    When CM oppo find 5 mini release?

  • set.egod

    how do i stop a cycle of going back to the start up screen after i updated to the snapshot M4 for 11?

  • Guest

    just long press the power + volume down button to get you in recovery. Then restore to your previous running rom. You backedup isnt?

  • Betong Araneta

    just long press the power + volume down button to get you in recovery. Then restore to your previous running rom. I hope you backuped

  • Nathan Warkentin

    Just stick your phone in air-plane mode so that it stops rebooting then download and copy over the latest nightly and flash it and it will be working again.

  • Rainer Escheberg

    Having the N4 it worked like a charm with the M4. Really appreciate the good work Of Cyanogen

  • Mario Möller

    Yup, unified builds keep on the support over more types of phones due similar hardware.
    (Ps: To Love-Ru, huehuehue)

  • Nikhil

    can u tell me whihc build its exactly … ? if possible link …thnx

  • surajkala

    YaY.. “the beginnings of Multi-SIM phone support.”

    Any ETA @ CM for Moto G (XT1033 Dual Sim version)

  • Nick Egerton

    I think this is a constructive, appreciated post. That said, there really, really are some communication issues that I wish CM would be address, and feel at wit’s end getting answers. I do think it’s a legitimate issue when a device doesn’t get a release for 4+ months without any communication, any response to any forum posts, and ignored emails. I DO trust CM’s judgement to skip releases when necessary, all I’m asking for is a little head’s up. maybe a section for dev comments on each device’s page? “hey, we’re having trouble and we’re skipping this M release.” even that vague response would be better absolutely no information, anywhere, ever, under any circumstances no matter what.

    And for reference, the device i’m referring to is m7spr.

  • Andrew Powell

    Why don’t you ‘talk to us’ about the horrendous state of d2lte nightlies and all of the problems it’s having, the causes, and the work being (or not being) done to address them?

  • Orkeren1307

    For christ’s sake! they’re nightlies. Not stable! Bugs (yes, even major bugs) are to be expected!

  • Andrew Powell

    Haha you’re shitting me, right? What project making an attempt to go commercial is going to allow device-bricking, radio-killing bugs to slip through a QA process and into master? Or maybe you just really enjoy being an apologist. This project as a whole has never allowed this kind of bullshit to get through before, not even in nightlies, and it’s detrimental to the project’s image and the perception of it’s quality control. But you just keep on drinking the kool-aid.

  • Jonty

    and i think it saves them a lot of time (correct me if i’m wrong)
    P.S. Yup! To-Love-Ru’s awesome!

  • CommentatusMaximus

    You guys rock. If it wasn’t for you, my old devices would be ancient bricks.

  • CommentatusMaximus

    Nightlies are for developers and people who want to report back bugs. If you want the cleanest code stick with OEM stock. Anything else is a shade of gray with unofficial builds being entirely questionable. Nightlies are just a step above that.

  • Marco Frick

    I can’t connect withe Google play store , why ?? And RamExpander doesen’t work :-(

  • Aramis

    How to switch from Nightlies to M/Stable Snapshot without WIPE ?

  • marcusmarcus2

    Isn’t that what nightlies are all about? I thought it was kinda like their community QA process. I myself run d2lte nighlties on my d2att and it seems super stable to me, except using the camera has caused the phone to reboot twice. That is the only issue I have had so far. If you want a bug free ROM, don’t be using one that they tell you may have bugs. Wait until a stable release. Common sense should tell you nightlies can and probably do have bugs.

    Thanks CyangenMod for all your hard work.

  • Guillermo González

    El M4 está pura vida! Thanks Cyanogenmod Team…

  • disqus_83cXZsRetS

    Not cool what you did there with the message/call history data. Titanium Backup won’t back it up the common way and this is hardly visible for the user.
    You have to communicate(through this blog at least!) such big changes to the user because it’s their data you want to save..

  • cdm

    Im happy with the nightly just installed on CM 11 Galaxy Nexus. Except my widgets are gone. But all of the major items are working great!

  • charlie

    Thanks for great new cyanogen release its a shame I’ll never see all the good work you put into the cameras features as mine camera it BROWN BREAD LOL 😀

  • benjamin aguilar

    Hi, im on nightly 20140211-maguro, what do i have to do to make it right ? wipe ? and is it ok to upgrade from nightlies to M4 ? or i need to be in m1 to upgrade to m4 ?


  • benjamin aguilar

    Hi, im on nightly-20140211-maguro can i upgrade straight to M4 or i have to be on M1 ? do i have to wipe ? i have already done a nandroid backup and i dont mind wiping the data but i just want to know if it’d be ok to go from nightly straight to M4 i didnt quite understood the procedures


  • Karim Fatehi

    so… since the d2 builds are not getting unified can we just have individual m4 builds plox.

  • Karim Fatehi

    since the unification of d2 builds is broken, can we just get regular m4 separate builds. please and thanks.

  • Mewmew

    lol @ kool-aid remark. Nightlies are unstable. They exist so the devs can identify and fix issues before the code is migrated to a stable build. That’s what nightlies are with CM and every other software project on earth. Don’t complain if you don’t understand what you’re complaining about.

  • Andrew Powell

    drink your own brew, mewmew. accusing someone of not groking a development practice that’s been around for decades when you yourself seem not to grasp the basic principles. breaking changes in nightly builds are par for the course. BRICKING changes are not. We’ve all seen in the forums over the years, the occasional bad flash causing a brick, even features flipping out. There’s enough evidence to show that the d2lte builds are a complete clusterfuck – and these problems exist in the source that’s made it past QA. You’re just another unobjective fanboy piling on to defend something that’s indefensible. Move along, and lecture someone else who hasn’t been on actual development teams with any midocum of responsibility to those consuming a product, free or otherwise.

  • Patrick

    Hi, thanks for clearing that up. 😉

  • KyleVPirate

    Lately I’ve become distrustful of Cyanogen. No reports of the M4 problems yet?? I think I’ll rather go back to stock because all these bad updates is getting ridiculous

  • Shadow

    At least they are trying their best to get CM11 ready for all the devices even if it takes 4+ months. CM 10.2 runs fine for me and I have never used the nightlies before and probably won’t.

  • Guillermo González

    Nightly: usually generated every 24 hours, experimental, newest features, unstable!

  • Wes Crockett

    Hey guys. I really appreciate what you are doing for us! I have one clarification question about the M releases… you say M/Stable… Up to this point I have only installed Stable build… would a M release be considered Stable? I’m a tinkerer, but don’t want to be bit by a feature or bug that might really effect my phone (i.e.: once, my phone wasn’t able to connect to a cell tower until a release was put out.) I am excited about CM 11, but want to make sure it is usable for day to day before installing it.


  • Yagnesh Darji

    Bluetooth not working in s2 i9100 using cm11.

  • Guest

    Hi guys, I’m a noob in CM, I’m currently running CM 10.1.3 on my i9100, based on above guide there’s no need to wipe data if I want to flash M4 on top of Stable, but how about the Gapps? do I need to install them too or it will be upgraded automatically after the rom is upgraded? Any help would be appreciated.


  • bradavon

    Thanks for this very informative blog, it really helps to understand the purpose of the Milestone builds. I’ll stick with Milestone or Stable releases. It’s all about stability for me, not use features.

  • fausto412

    So can you go from 10.2.1 to CM 11 M8 in one shot using the built in updater?