This guide helps you upgrade your Xiaomi Mi 4 (and Mi 3, which are both codenamed by CyanogenMod as “cancro”) from the stock ROM or CyanogenMod 12 (based on Android “Lollipop” 5.0.x) to CyanogenMod 13 (based on Android “Marshmallow” 6.0.x) without data loss.
A. Install fastboot
In Arch Linux, install the following package from AUR:
Find further information on fastboot in the CyanogenMod documentation, including how you can install it on other operating systems.
Now boot the device into bootloader (fastboot) mode by rebooting and simultaneously pressing “volume down” and “power”. Connect the phone to your computer with a USB cable.
Check whether fastboot detects your device by running as root or with sudo:
$ sudo fastboot devices 34a3456b fastboot
If the command returns a device ID and no error message, you are good to go.
B. Download Files
- SuperSU root manager: It is recommended to get a stable release.
- Open GApps: Depending on your preference as to what you want to be included, select pico (minimal Google Play functionality), nano, micro, mini, full, stock or super (all Google Apps).
Copy (or download directly) the CM13, SuperSU and gapps zip files to your device, as they will be installed from recovery.
In my experience, adb did not work. It is therefore easier to simply download the files to the device or transfer them via USB or FTP (i.e. File Manager from Cheetah Mobile).
1. Install TWRP
TWRP will be flashed with fastboot to the device. Connect your device to the computer in fastboot mode, then run:
$ sudo fastboot flash recovery twrp-3.0.2-0-cancro.img
Boot into TWRP:
$ sudo fastboot boot twrp-3.0.2-0-cancro.img
2. Upgrade Baseband
CM 13 needs a different baseband (4.x) than CM 12 (3.x) or the Lollipop based stock ROM.
Flashing a Marshmallow based ROM with baseband 3.x will not work!
Check your version under Settings > About phone > Baseband version
Connect your device to the computer in fastboot mode, then run the following script from the extracted cm13Upgrade.zip file:
$ sudo sh flash_all.sh
3. Install CyanogenMod from recovery
Boot your device to TRWP recovery mode by rebooting and simultaneously pressing “volume up” and “power”. Wipe only the cache and Dalvik/ART (select Advanced Wipe). A factory reset, as described in the official guide, is not required, if you want to keep your data and apps!
Navigate to Install and select the CM13 image file you copied/downloaded to your device.
4. Root the device
In TRWP, navigate to Install and select the SuperSU image file you copied/downloaded to your device.
5. Flash GApps
In TRWP, navigate to Install and select the GApps image file you copied/downloaded to your device.
Reboot to the system and enjoy your beautiful CM 13!
During startup, you will see the notification “optimizing apps”
Creating a poster of a large format pdf input file split into smaller output files with overlap.
Transmission BitTorrent client fails to start
When Transmission crashes (e.g. forced quit after a “not responding”), it may refuse to start with the following error message:
$ transmission-gtk Failed to register: Timeout was reached
The solution is to delete the settings file:
$ rm ~/.config/transmission/settings.json
If this doesn’t resolve the problem, remove transmission’s whole config directory:
$ rm -r ~/.config/transmission
As of Android Kitkat 4.4.4, the People app will only let you create contacts which are synchronized with a google account by default. It doesn’t let you create a local “Phone contact”, unless you disable “Google Contacts Sync”.
This may be desired if you want to use Android without Google services. You can then choose your preferred groupware solution (kolab, mykolab, openexchange, …) to synchronise your contacts, calendar, etc.
Here is how to do it:
- Settings -> Apps -> Tab “All”
- “Google Contacts Sync” -> Disable
- Create a new contact. It will be marked “Phone only, unsynced contact”
- The “Google Contacts Sync” will now show up in a new “Disabled” tab in Settings -> Apps, where it can be re-enabled if need should be.
1. Determine what kind of fingerprint reader you have
On my T400, I read: AuthenTec, Inc. AES2810
2. Determine suitable software
Go to Thinkwiki. You’ll find a list which software (thinkfinger, fprintd) works with your hardware.
The AES2810 in my T400 is said to be unsupported.
3. Try Thinkfinger
I still try it. Thinkfinger doesn’t recognize the reader, indeed.
It keeps complaining:
Initializing...USB device not found.
4. Try fprintd
I am more lucky with fprintd.
Install fprintd. The official wiki is outdated and doesn’t do the job for me!
- Install the following packages:
~$ pacman -S pam fprintd
- The wiki suggests installing the following packages as dependencies. I already had them installed, so I cannot tell if they are really needed.
~$ pacman -S libusb imagemagick
The Configuration section of the Arch wiki works fine, except from the “Create fingerprint signature”.
What a wonderful world it was when scroogle.org was running smoothly!
It has become annoying recently, however, because Google seems to be blocking Scroogle by declaring it a bot.
So I was looking for alternative engines for my default address bar search, which feature the same google-based powerful results.
Startpage has even more features than scroogle!
Open search results via a proxy
Personalized – but anonymous – searches
and replace the entry in keyword.URL with
Is a another alternative search engine that claims to provide anonymous search results, not only from Google, but also from Bing, Yahoo and Dropbox.
However, I get localized search results in German based on my IP, which is a deal breaker to me.
When an update gets interrupted in some way, that is, pacman/yaourt cannot finish its job, pacman may be locked for further use.
$ yaourt -Syu ==> Pacman is currently in use, please wait.
You can unlock pacman by removing
$ rm /var/lib/pacman/db.lck
And pacman/yaourt will be working again!
Guide to install a Brother DCP-7065DN Printer and Scanner in a Linux network environment.
Troubleshooting: “receiving data”, but not printing. printer not discovered.
Today, I encountered an error I haven’t experienced before when wanting to burn a DVD.
$ growisofs -dry-run -Z /dev/dvd=Image.iso :-( "/dev/dvd=Image.iso": unexpected errno:No such file or directory
Since I knew the file was existing, something with the dvd device might be wrong. Investigating the problem yields:
$ cdrecord -checkdrive Device was not specified. Trying to find an appropriate drive... Detected CD-R drive: /dev/sr0 Device type : Removable CD-ROM Version : 5 Response Format: 2 Capabilities : Vendor_info : 'HL-DT-ST' Identification : 'DVDRAM GSA-U20N ' Revision : 'HX12' Device seems to be: Generic mmc2 DVD-R/DVD-RW. Using generic SCSI-3/mmc DVD-R(W) driver (mmc_mdvd). Driver flags : SWABAUDIO BURNFREE Supported modes: PACKET SAO
Allright, the disk in the drive is indeed recognized. But guess what: Now you have to access it directly via its node at /dev/sr0, not its alias /dev/dvd anymore!
You can simply change the command to
$ growisofs -dry-run -Z /dev/sr0=Image.iso
or automount the drive via /etc/fstab, where you can specify the path to mount, eg. /dev/dvd