Android phones

Android phones are compatible with Google's Android, and usually also with CyanogenMod or Replicant. They are the most common smartphones.

The purpose of this page is about installing Free software (or at least "less-non-free") to Android devices.

Compatibility issues
Most Android handset OEMs provide loadable firmware for various components of the device. This firmware typically comes in the form of binary blobs. In addition, some components use binary-only drivers statically compiled into the kernel.

Replicant does not provide any such binary drivers or firmware images. Cyanogen may or may not provide such.

Both Replicant and Cyanogenmod provide compatibility lists on their respective websites.

http://wiki.cyanogenmod.org/w/Devices

http://redmine.replicant.us/projects/replicant/wiki#Installing-Replicant

Cyanogenmod provides an app-based installer program which presumably performs its own compatibility checks: http://beta.download.cyanogenmod.org/install

Boot sequence
Android devices have a 3-stage boot.


 * 1) The boot loader loads first, finds the Recovery partition, and loads it. Some boot loaders are locked, which means they cannot be modified. Sometimes this also means that no modifications can be done to the Recovery or the OS partitions without bricking the device.
 * 2) The Recovery partition finds the OS partition and loads the kernel from it. It's capable of loading various binaries from different partitions. It is filesystem-aware. It can be replaced with user-installed software such as ClockWorkMod.
 * 3) Other partitions contain the OS and other software. After the recovery software loads the kernel, the kernel continues the boot process. It's Linux, so from here we mostly follow the Linux boot process.

Mounting SD card
You can remove the SD card from the device and mount it on a local computer with an adapter box.

IIRC the Android devices I've hacked on used ext2. Koanhead (talk) 13:42, 1 October 2014 (PDT)

Some devices have only a SIM card for storage. Other devices have onboard storage. Such non-removable storage can be accessed using ADB.

Android Debug Bridge
ADB is a method for connecting to an Android device over USB. It is available in Debian's and Ubuntu's repositories.

It provides two main methods for interacting with devices:

The adb command can manipulate the filesystem and can give you a shell on the running device. The fastboot command manipulates the recovery software.