*** DONE Android-Migration from Stock ROM KitKat 4.4 to Lollipop 5.0.2 CM12 :android:blog:software:mobile:phones:open: CLOSED: [2015-03-15 Sun 17:37] SCHEDULED: <2015-03-15 Sun> :PROPERTIES: :CREATED: [2015-03-09 Mon 09:55] :ID: 2015-03-09-CM12-impressions :END: :LOGBOOK: - State "DONE" from "STARTED" [2015-03-15 Sun 17:37] :END: This article describes the reasons, the method used, and the results of my migration from Android Stock ROM KitKat 4.4 to Lollipop 5.0.2 CyanogenMod 12. **** Why upgrading? I've got a [[https://en.wikipedia.org/wiki/Nexus_5][Nexus 5]] Android smartphone. When I bought it just after its worldwide release, I had to root it in order to use [[https://play.google.com/store/apps/details?id=com.keramidas.TitaniumBackup&hl=en][TitaniumBackup Pro]] for restoring data from my previous phone. Also, [[http://tasker.dinglisch.net/][Tasker]] got more possibilities on a rooted Android. After rooting, I could not apply any [[https://en.wikipedia.org/wiki/Over-the-air_programming][OTA]] updates of the Android system. This way, I ran the original 4.4 version up to now. Until my data reception over 3G stopped working some day. I had no clue what caused this behavior. WLAN/WiFi still worked fine. However, with no data connection when being on the go was a huge issue since this also prevented [[https://github.com/WhisperSystems/TextSecure/][TextSecure]] push messages from being received. Further more, my system was in an old state, several updates were published, including the big update to Lollipop (Android v5). I was curious on the new user experience of [[https://en.wikipedia.org/wiki/Material_design][material design]]. **** Upgrading to what system? I basically had following options: un-root the device and install OTA updates from Google, install CyanogenMod stable (based on Android 4), or install CyanogenMod nightly (based on Android 5). My decision was to try out CyanogenMod nightly (CM12) because I wanted to have an up to date OS with less dependencies to Google. The only Google service I am using is the Play store. Further more, CM12 [[http://www.droidviews.com/cyanogenmod-12-now-see-whats-new/ ][has some interesting new features]]. **** Upgrade process First, I did some backup action: nandroid backup from recovery system, TitaniumBackup Pro of all apps and data, copying the SD card content to my computer, screenshots of all of my desktops, and so forth. According to [[http://wiki.cyanogenmod.org/w/Install_CM_for_hammerhead][the CM12 installation howto]] for ~cm-12-20150308-NIGHTLY-hammerhead~, I had to update the device's firmware and bootloader. I followed [[http://aaronhastings.me/updating-to-android-5-0-1-on-rooted-nexus-5/][this instructions]] and it worked out pretty well using ~hammerhead-lrx22c-factory-0f9eda1b.tgz~ and ~recovery-clockwork-touch-6.0.4.5-hammerhead.img~. To my surprise, the content of my (internal) SD card did not vanish despite the fact that I did wipe the device. Sadly, after flashing, I could not access the SD card via ~adb shell~ or ~adb push/pull~ any more. Did not invest more effort in fixing this. I was relieved to notice that my data reception issue with 3G had gone with the new system, the main reason for this flashing process. **** Issues with TextSecure I am using [[https://github.com/WhisperSystems/TextSecure/][TextSecure]] for privacy of my text messages ([[id:2014-03-23-TextSecure][German posting]]). TextSecure does not provide a method to backup your secret/private key for migration to another device. Therefore I did [[https://www.cypherpunk.at/2014/02/how-to-move-app-data-of-textsecure-to-new-android-device/][a hack to store the data]]. I also hoped for a working TitaniumBackup Pro. After restoring via TitaniumBackup Pro, TextSecure worked almost fine: I could send encrypted push-messages, encrypted text messages, and clear-text text messages. I also could receive text messages of any kind. However, I could not receive encrypted push-messages. My peers did not get any error when sending. Further more, I did not receive any reception notifications for encrypted push-messages any more. This was very annoying to me. Good news: the issue could be fixed with the help of the TextSecure community on github by re-registering to TextSecure. Read [[https://github.com/WhisperSystems/TextSecure/issues/2687#issuecomment-80519047][the issue report]] for details on this. To my surprise, un-register and re-registering did not lead to "warning"-messages to my TextSecure peers because of a new key. **** First impressions After using CM12 for a week, I got following impressions. The lock screen got more complicated. Instead of seeing the dot-pattern right after turning on the display, I now have to swipe to unlock the lock-screen *and* enter my unlock pattern afterwards. Two interactions instead of one. I also noticed, that the lock-screen links to digicam and so forth are not working. Might be an CM12 nightly issue. Very cool thing: I can swipe down the quick settings menu on the lock-screen. With this, I can quickly turn on the flashlight. Very handy! The notifications on the lock-screens are also an improvement in my opinion. Material design is a nice eye catcher. Its implications are probably mostly subtle. The system feels nicer than before. The CM12 launcher has a nice feature I had used before (not on stock ROM): hide labels of apps. This looks so much better now. First few hours, I gave the default keyboard a chance. This did not work out to me. So I restored [[https://play.google.com/store/apps/details?id=com.touchtype.swiftkey&hl=en][SwiftKey]] once more. Its multi-language feature, the [[http://en.wikipedia.org/wiki/Emoji][Emoji]]-support and its advanced word prediction algorithm is just so much better. On the other hand, also on stock ROM, I got the impression that my SwiftKey has stopped learning new words from me :-( The battery settings got a nice new feature: the visual graph of battery usage shows a linear prediction on how long your battery is going to last based on the consumption so far. Handy when being on the run without power. So far, I am happy to have spend half a day for backup, flashing, and restoring.