Selection | Setup | Checkout | Install CM | Apps | Hacking | Top |
Android and CyanogenMod version cross-reference, from Wikipedia's Android version history and CyanogenMod history.
Code Name | Android Version | CyanogenMod Version | ||
---|---|---|---|---|
Lollipop | 5.1 | 2014-11-12 | 12.1 | 2015-04-16 |
Marshmallow | 6.0 - 6.0.1 | 2015-10-05 | 13 | 2015-11-23 |
Nougat | 7.0 - 7.1.1 | 2016-08-22 | 14.1 | 2016-11-08 |
I have been very slow upgrading CyanogenMod and am coming in at the very
end of CM-13's life. As of 2016-12-17, CM-14.1 based on Android-7.1.x
Nougat
is available for klte (my chassis) but is not yet feature
complete. My strategy will be to upgrade to CM-13, then watch for a reasonable
version of 14.1 and install that soon.
The latest snapshot image for CM-13.0 is dated 2016-10-13, with a coordinated CyanogenMod recovery image. No nightlies any more for CM-13.0; nightlies are for CM-14.1.
The following is a condensation from the initial CM-12 history, omitting blind alleys and screwups. As always, the CyanogenMod installation page for klte is authoritative and in case of any differences you should follow that page, not this one. Do not try this on a chassis that enforces boot images signed by the carrier, specifically AT&T or Verizon cellphones, because CyanogenMod images are obviously not signed by the carrier.
Since my phone already has TWRP Recovery, I am going to use that to upgrade to the latest recovery version, and then to install CM-13 and Google Apps. I will not mess with Heimdall or Odin to flash the images over the USB connection. However, I think it's going to be important to first upgrade my Android SDK, specifically ADB.
Finding and downloading image files. Total download size 792Mb. I checked the checksums of all files and they were not corrupt.
CM wiki page on ADB. It's part of (a very small part of) the Android Software Development Kit (SDK). Download Android Studio from Google's site, except if you're not actually developing apps, scroll down to the bottom, find tools_r25.2.3-linux.zip, and just download and install that. Only 264Mb.
Yeah, where's adb? Not in the collection downloaded. But wonder of wonders, the SuSE Build Service has the android-tools package, version 5.1.1_r8 (134kb). No weird dependencies. You get adb, fastboot, a udev rule, 4 docs files, and that's it. I installed it on Xena and Jacinth.
Download page.
I'm downloading the snapshot images dated 2016-10-13, currently the last
one for CM-13, since development effort has shifted to CM-14.1 based on
Android-7.1.x Nougat
.
It has a
direct link to a recovery image (10Mb).
Copy this image to /sdcard (on the phone).
adb push recovery.img /sdcard/
or copy with any other convenient
method, and similarly for the CM-13 zip file and Google Apps. Mind the
trailing slash on /sdcard/ . Copy speed is about 3Mb/sec. For paranoia,
use sha1sum to hash the file in the download directory and on the phone.
Yes they are equal.
The same page has a direct link to the CM-13 image (332Mb). Copy this image to /sdcard (on the phone).
CM wiki page for Google
Apps. You need the Google Apps version for your Android version
because the API gets updated. For CM-13 on klte they recommend to download
from OpenGapps,
for ARM (not ARM64, klte is a 32bit processor), Android-6.0, nano
variant (166Mb). The variants have different sets of apps; you will want
to install non-included ones from the Android Market (Play Store), such as
Google Maps.
Copy this image to /sdcard (on the phone).
An important diversion: you need to back up /data/app and /data/data so you can restore your apps and data after the upgrade. I've tried several methods with varying success.
I tried to use rsync, i.e. extract the content over the net direct to a scratch directory. Permission denied (to read the directories). Not too surprising.
You may
also want to make a compressed tar file and export that. Beware, if you do
adb shell tar czf - /data/app /data/data > app-backup.tgz
, standard
error gets interleaved with standard output, and the TGZ file ends up corrupt.
ssh selen "cd /data ; tar czf - app data" | tar xzf - Permission denied (again).
On the phone, "su" (and give yourself permission). I have 7.2Gb
free on /sdcard. cd /data ; tar czf /sdcard/app-data.tgz app data
.
1.3Gb compressed, took about 5 mins. Use adb pull to retrieve the TGZ
file. Then un-tar it. Also took about 5 mins to retrieve and un-tar the
TGZ file. Leave the TGZ file on Selen until we're sure it can be un-tarred
and restored.
And do a normal backup, for what it's worth.
Now starting the upgrade. Have the CyanogenMod installation page for klte open in your browser.
Boot into Recovery. I have the advanced boot menu turned on, which makes this easy. I have TWRP Recovery 2.8.6.0 (not the newest). It looks like my recovery image is for CyanogenMod Recovery, which I decided not to install.
Wipe Data (Factory Reset), since this is a major version upgrade. It kept /data/media.
Aargh, it blanked the screen, then said Swipe to Unlock
. Twice.
This appears to be a screen locker since there was a long period of no
input from the touch panel.
But it eventually finished after about 4 minutes. Whew! Hit TWRP's Back
button to get to the Wipe page, then the phone's back button to get back
to the main menu.
Install. Find the CM-13 image; for me it's in the toplevel directory of /sdcard, at the end of the list. Hit it. They offer to add more zips but I didn't. Swipe to start flashing. Successful, took under 1 minute. Hit Home (don't reboot yet, don't wipe, you already wiped).
Install again. Click on the gapps zip file and start flashing. I wonder what googletts is. (Google Text to Speech.) Successful. Now reboot. This ran the CPU temp to 70C (started at 61C).
The reboot takes extra time, don't panic. Once the boot animation finishes it starts precompiling the apps, 108 of them (before market APKs).
Welcome Wizard.
Language: I picked English
WiFi setup, pick your SSID and give the password. OK, we're connected.
Do you want cellular data during setup? Turn off.
Use NFC to copy our Google credential? No, no second device.
Authenticate to Google.
Automatically back up device and app data to Google Drive? No. Location service: Yes. Allow WiFi and bluetooth scans even when turned off? No. Send device and app usage data to Google? Hmmm? Yes.
Set up screen lock -- Pattern. Hide sensitive notifications.
Set up fingerprint. Blecch, can't process the print. Skip it. Later I tried again and got better results but not good enough to really use this reliably in production.
Send diagnostic info to CyanogenMod? Yes.
Allow apps (with granted permission) to use location info: Yes. Restrict frequency of GPS updates: No. Use WiFi or cellular for location: Yes.
Done. It didn't ask me about Google+, good. Also didn't ask for my full name.
Now transfer to the basic setup section. Special items that turned up:
Restoring apps: I excluded everything by com.google.* except com.google.zxing.client.android-2 (Barcode Scanner). Try installing $a/base.apk … It works. Remember to remove /data/local/tmp/base.apk. I installed all the apps, successfully, except com.android.vending was skipped with an error message; it was already installed and I didn't notice to exclude it. All but 3 miscellaneous apps were up to date.
I installed these apps from Play Store: Google Maps, Street View, YouTube, Google Wallet, Android Pay.
Restoring data: restoration script assumes awk, find, xargs will be available. Got to install Busybox! After debugging, I got the restoration scripts to work. Now, do the apps honor the restored data? Night Clock and GPS Status both die. Better un-restore and reconfigure all the apps.
Reconfiguring app data: I'm only listing apps where I actually restored something nontrivial. Statistics:
These apps needed work for reconfiguration:
Carbonis the one from last time.
rsync --rsh="ssh -p $port" $host/$from/ $dest/
ssh -p 2222 selenworks.
solution. I've set up the home index page (Top Sites), but I still need to do something about my bookmarks.
Problems encountered with apps:
The new Android permission system is tripping me up. Here's a user-level overview on HowToGeek. There is a symlink /sdcard to wherever the internal SD gets mounted, but nothing similar for external SD.
Firefox did not have read access to the external SD card, on which
I have my local home directory
that includes some HTML resources
that I use extensively. There is a fuse mount
(UID=1023:1023) of the external SD on /storage/B2A3-0150 . Same thing
on /mnt/runtime/{read,write,default}/B2A3- 0150 . The primary mount is
/dev/block/vold/public:179_65 on /mnt/media_rw/B2A3_0150 .
Jota Plus (a text editor) had read access but not write access to the external SD card, making it impossible to edit files in my home directory.
Privacy Guard (find it under Settings - Personal - Privacy) is a special CyanogenMod feature; it can block specified apps from sensitive access categories such as your location, personal data, or root access. But it can't add permission that the app didn't ask for. In Settings - Personal - Apps - (name of app) - Permissions, you can also grant or suppress access to permission categories, but again you can't grant permission that the app didn't ask for.
My final solution was to move the home directory off the external SD card onto the internal SD card, for which both programs have the needed permission. Hiss, boo! It would be a good idea to keep the internal and external instances synced, in case a quick migration is needed. In any case, they're backed up.
However, you also need to give Firefox permission to use /sdcard.
(A) Go to Settings - Personal - Apps - Firefox; (B) in the App Drawer
long press on the Firefox icon, then drag
it to App Info.
Once there, pick Permissions, and turn on Storage.
I've never seen our cellular signal so high, 5 bars. Bug?
How do I use Bluetooth to push a file from Xena to Selen? It looks like Android does not have intrinsic OBEX support. Needs an app? Total Commander can send a file using Bluetooth OBEX, but not receive. I got Bluetooth File Transfer (it.medieval.blueftp) by Medieval Software. Worked. The file ended up at the root of the internal SD card.
Google Play is now set up to auto-update by default. Although I never refuse updates, I do want to see what's going on and to exercise responsible control. Turn off auto updating (unless your policies are more like Google's).
Some of these were already set in Basic Setup. This list shows the settings available in CM-13 as jimc likes them in 2016-12-xx. When I left everything at the defaults, the section is omitted.
Wireless and Networks
Wi-Fi: Turned on, and configured various access points.
Bluetooth: Turned on (when in use), and paired current devices. I connected my headphone, minus phone audio (media only).
Cellular network: Kept all defaults. Preferred network type is LTE (vs. 2G or 3G), but it only does LTE when data is required, i.e. Wi-Fi is not connected. Data roaming is off.
Tethering (under More): Set up Wi-Fi hotspot. SSID is SelenAP. Password is the standard one (not my personal password). It is possible to connect via Bluetooth or USB (OTG).
Emergency Broadcasts: Turned on Earthquake and Tsunami warnings.
NFC: is on by default and there's no quick setting to turn it off.
Tap and Pay: Supposedly turned on.
Device
Sounds:
Ringtone: Every time they change the names of the sounds. Here are my top 5. I've excluded all the music. I finally picked Draco.
Similarly for the notification sound. CyanDoink is surprisingly not the default, but I like it best. However, I have trouble missing notifications and others last longer or have more acoustic energy.
Other Sounds: Turned on Volume Adjustment, turned off Dial Pad, Screen Lock, Touch.
Vibrate on Touch: Turned off.
Display and Lights:
Adaptive brightness (per ambient light sensor): Turn on (I think this was on by default).
Live Display (sensitive to color temperature): Turn on everything (not sure what the default was).
Rotation: All 4 directions (default is to omit 180deg).
Sleep: After 5 mins, default is 1 min which is too short.
Wake when plugged in: Turn on; I need this for Night Clock.
Wallpaper: Phase Beam. I didn't like the others.
Daydream: Turn off. It shows photos, clock, etc. when asleep. This has got to eat battery.
Font size: The default of 100% seems to be fine. You can adjust from 85% to 130%.
Notifications: When locked: default is to show the notification on the lock screen. You can also not show notifications at all, or show the title but hide the content.
Lock Screen
Screen lock style: change to Pattern.
Automatic lock: change to 1 minute after sleeping.
Power button does not lock instantly.
Fingerprint: Here's where you set that up, but I was not able to get the finger to be recognized reliably. (Or at all.)
Lock Screen Message: Selen -- jimc@jfcarter.net
.
It has to be short.
Buttons
Backlight: Off in 15 secs, default is 5 secs.
Power button menu: Turn on Reboot menu.
Recent (Menu) button action: Change so short press = menu, long press = app switcher.
Gestures (new): Proximity Wake means: Pass your hand across the screen (proximity transition to near, then again to far) and it will wake. It woke when not wanted, more often than waking when wanted, so I turned it back off.
Battery: Battery mode is Balanced
by default.
This controls how aggressive it is for power saving. It can
adjust the power save mode per app.
Security
Make Passwords Visible: default is on. This means that each letter of the password appears in clear text for a moment, then turns into a dot. I want this.
Allow installation of apps from unknown sources: Turn on. I almost never do this, but when I need it I don't want to have to hunt for this permission.
Install certificates from SD card. Wonder of wonders, it has a file browser (new feature) and has permission to read the external SD card. I installed ca-cft-2020, ca-mathnet-2024, u-jimc-R2017, the latter transferred by Bluetooth from Xena.
Users: I configured the Owner slot with my name (Jimc) and the puma photo.
Personal
Status Bar
Battery status style: default is Circle.
Battery percentage: Change to Inside the Icon.
Accounts: The Google account was recorded during basic setup. The CardDAV and CalDAV accounts were recorded in conjunction with setting up those two apps.
System
Date and Time
Automatic (network provided) date, time, and timezone: Turn off. I'm using NTP (ClockSync app) and it does these better.
Use 24 hour format: Turn on.
Language and Input
Android Keyboard Settings
Turn off these helpful
features: auto capitalization,
double space period, voice input key.
Theme: Material Dark (default is Material Light).
Text correction: the default has a lot of features turned on, and I left them.
Developer Options
To turn this on, find the Build Number in About Phone, and tap it 7 times.
Stay Awake: change to While Charging. I need this for Night Clock.
Root Access: change to Apps and ADB.
Android Debugging: Enable ADB.
Device hostname: Selen
To set up the Quick Settings Panel, open it (flick down the status bar
from the right corner). Swipe left or right for its pages (new feature).
Click an icon to toggle it; long press for a direct jump to its settings page.
Click Edit Tiles
to edit tiles. Swipe left to right to get the preferences.
I turned off Enlarge Top Row
. Drag a tile elsewhere to rearrange.
My arrangement:
Wi-Fi | Bluetooth | Cellular |
Airplane Mode | Flashlight | Hotspot |
Etc. continuing to the right page |
The controls for the desktop (home screen, window manager,
Trebuchet
) used to be mixed with the general settings, but in
CyanogenMod-11 and following, you get to them by long-pressing in the desktop background
(or the menu key if you have one). It shows you an icon of a house, at the
top; press this to make the current page the default one. At the bottom are
icons for setting wallpaper, widgets and themes. In the center is a cluster
of 3 small dots. Click on the dots to open the settings menu. The default
scroll effects are actually decent, and None
is not really none;
you can leave it on None. My major change was to disable the ubiquitous
and annoying Google search bar. Click the dots again to close this menu.
On the phone (Selen) I use a 4x4 array of icons. On the tablet (Mica)
I use 5x8. The default spacing of Comfortable
works out; Crammed
puts them too close together.
To create a new page, put an app icon or widget on the rightmost existing page and drag it off the right margin. This also works directly from the app drawer. To make a page disappear, including interior pages, remove (or relocate) all icons on it.
I'm trying to use a similar layout on both Mica and Selen.
The bottom row of special icons are OpenCamera (not on Mica),
phone (vacant on Mica), app drawer, and Firefox.
I've set 3 pages of icons. On MIca they are in the upper right 4x4
region and a photo or widget (3x3 or 3x4) goes on the vacant left side.
I'm using the Simple Photo Widget
. The provided Photo Widget
(part of Gallery) is fine except that you have to crop the picture and
let it store the cropped version, and when you go to change to a different
photo, I can't get Gallery to finish, i.e. you pick the photo and then
what?
Page 0 (Left)
| |||
StrongSwan | OpenVPN | WiFi Analyzer | H.E. Net Tools |
DNS Forwarder | Port Forwarder | SimpleSSHD | SSHelper |
GPS Status | Gallery | Open Camera | Camera (AOSP?) |
Andoku-2 | Sudokyuu | Lexic | Solitaire Classic |
Page 1 (Center)
| |||
-- | Barcode Scanner | Tasks | |
Amazon Kindle | RealCalc | aCalendar | Wallet (Google) |
Kitchen Timer | Jog Tracker | Contacts | Android Pay |
Night Clock | Jota+ Text Edit | Maps by Google | CadreBible |
Page 2 (Right)
| |||
-- | -- | -- | -- |
-- | Visual Voicemail | -- | -- |
VX ConnectBot | Xabber | -- | Play Store |
Total Commander | Messaging | -- | -- |
Lineage
Announcement of the end of CyanogenMod.
In 2013, Steve Kondik Cyanogen
joined with a venture capitalist
($7e6) and created Cyanogen Inc, which also gained ownership of the brand
CyanogenMod
. It produced a version of CyanogenMod called Cyanogen OS,
suitable for carriers and phone vendors, which was used on the OnePlus One
and several other phones. The relation has soured, Cyanogen has quit the
company, and as of 2016-12-23 the infrastructure
behind CyanogenMod
has been shut down.
I'm not quite sure what infrastructure
means, but we can expect
source hosting and OS builds to be relocated. There are also some
CyanogenMod-specific services such as encrypted SMS (that I don't use) that
presumably are now gone.
The CyanogenMod Team
, i.e. the community of developers, designers,
device maintainers and translators, have
forked CyanogenMod under the name
Lineage OS
on Github. It's going to take some time for the dust
to settle, but that is where to look for progress on CyanogenMod's successor.
(Also don't be surprised if the name changes to something with more charisma;
community members are already calling for this.)
This web site is the anchor identity of Lineage OS. It was started on 2016-12-24. The current content as of 2017-01-06 is approximately:
Blog: Currently points to the front page, which has a link to a report from 2016-12-28 on infrastructure status and needed facilities.
About: Has a dictionary definition of Lineage
.
Community: has links to
lineageosif you have an IRC client.
Status: An automated report on the infrastructure servers, some of which are not yet operational (and are reported as such).
Legal: Disclaimer of warranty, copyright policy, and privacy policy.
When the download portal is operational and has something that you can download, I'm sure that it will appear in the tab bar.
Selection | Setup | Checkout | Install CM | Apps | Hacking | Top |