[Guide] CyanogenMod 13 on Xiaomi Mi 4 (cancro)

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:

android-sdk-platform-tools

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

Optionally, you may choose to root your device and/or install Google Apps, which are not shipped with the basic CyanogenMod image:

  • 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.

 

6. Reboot

Reboot to the system and enjoy your beautiful CM 13!
During startup, you will see the notification “optimizing apps”

photo38979895274088936

Create a poster with pdfposter

Creating a poster of a large format pdf input file split into smaller output files with overlap.

Continue reading

transmission-gtk | Failed to register: Timeout was reached

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

 

Android 4.4 Phone Contacts (without Google account)

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:

  1. Settings -> Apps -> Tab “All”
      20140722_01_AppList
  2. “Google Contacts Sync” -> Disable
    20140722_02_DisableGoogleContactsSync
  3. Create a new contact. It will be marked “Phone only, unsynced contact”
    20140722_04_CreatePhoneContact
  4. 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.
    20140722_03_DisabledAppsList

 

 

5 Steps: ThinkPad fingerprint reader on Archlinux

1. Determine what kind of fingerprint reader you have

 ~$ lsusb

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

5. Configuration

The Configuration section of the Arch wiki works fine, except from the “Create fingerprint signature”.

          1. Permissions according to wiki
          2. Login Configuration according to wiki
          3. Create Fingerprint Signature
            Add a user and save fingerprint:

             ~$ fprintd-enroll [username]

Firefox location bar search engine: scroogle & startpage

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

Startpage has even more features than scroogle!

Open search results via a proxy

Open Link via Proxy

Personalized – but anonymous – searches

Startpage Advanced SearchStartpage Settings

Open about:config
and replace the entry in keyword.URL with

https://startpage.com/do/metasearch.pl?language=english&cat=web&query=

Chuchuu

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.

Pacman is currently in use, please wait.

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!

HowTo install the Brother DCP-7065DN in a Linux network environment & Troubleshooting

Brother_DCP-7065DN_Laser_Printer

Guide to install a Brother DCP-7065DN Printer and Scanner in a Linux network environment.
Troubleshooting: “receiving data”, but not printing. printer not discovered.

Continue reading

Disarm Flash Cookies aka LSO’s (Local Shared objects)

Better Privacy is a great plugin for firefox that lets you manage LSO’s.

However, if you do not want your browser to store LSO’s on your local drive in the first place, you can follow the below steps:

$ ls -l ~/.macromedia/Flash_Player/
drwx------ 3 user user 4096 Jul 11 15:41 macromedia.com
drwx------ 3 user user 4096 Jul 11 15:41 #SharedObjects

Change permissions of folder #SharedObjects

$ sudo chown root:root \#SharedObjects/$ ls -l
drwx------ 3 user user 4096 Jul 11 15:41 macromedia.com
drwx------ 3 root root 4096 Jul 11 15:41 #SharedObjects

Congratulations, you have just made the flash player’s LSO folder non writeable for your browser!

/dev/dvd vs /dev/sr0

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