Here are some instructions to get droid 4 xt894 and bionic xt875 booted with
the mainline kernel.
As of Linux v5.12, most features work execpt for the camera, voice call
support, and GNSS. There are pending out-of-tree patches needed for voice
calls and GNSS. Camera support needs at least a camera sensor driver.
3D acceleration needs binary blobs but is known to work with Wayland and
sway at least.
List of some interesting links to follow the development:
- Sebastian Reichel's mainline kernel status matrix and other information
- Jonathan Bakker's patches for pvr blobs and wlroots
- Michael Allwright's pending omap4 camera patch for staging driver
- pending mdm6600 patch for reflashing the modem
- linux kernel v5.3 pending droid 4 patches for modem and gnss
- v5.12-rc pvr kernel module patches based on linux_openpvrsgx tree
- starting safestrap recovery from droid4-kexecboot
- newbies guide to make droid4 into linux phone
- droid4-kexecboot bootloader images
- diagram for droid4 audio wiring
- attempt to fix xorg rotation for manual mode LCDs
- maemo leste images
- postmarketOS issue 1275
- sailfishOS test images
There is a debug uart at tty[SO]2 multiplexed with the USB connector. To use
it, you need a custom cable with D+ and D- connected to a 3.3V UART. You need
to leave VBUS disconnected to avoid the connector getting multiplexed back to
USB. It's easiest to make the custom UART by ordering a micro-USB-B breakout
board and connecting the USB serial cable wires to it. I used the sparkfun
break out board here, others should work fine too.
The wire connections are:
d- device uart tx usb serial rx ftdi yellow, pl2303 white
d+ device uart rx usb serial tx ftdi orange, pl2303 green
gnd device ground usb serial gnd
vbus do not connect
With droid4-kexecboot, there is no need to unlock the device compared to
using SafeStrap and ddroid. Please just follow the instructions in the
For using older setup for booting with SafeStrap and ddroid, Sebastian Reichel
has written some instructions on device table, rooting and install.
Note that droid 4 has few limitations. Some eMMC partitions are locked down,
and changing the first two partitions risks bricking the system. So it's best
to treat eMMC as a giant bootloader for kexec with just few usable partitions :)
So far it seems that the following partitions can be reformatted to
be used for Linux
mmcblk1p23 webtop 1.3GB
mmcblk1p22 preinstall 608MB
mmcblk1p25 emstorage 8GB only if SafeStrap is not used
Also note that droid 4's modem is locked to be usable only with verizon
network in the U.S, in other countries any operator seems to work. The
mdm6600 modem can be used with ModemManager and qmicli for data and GPS.
The W3GLTE modem responds USB UART AT commands if powered, but is unable
to access the SIM card. It seems W3GLTE needs to read the SIM information
from mdm6600 over TS 27.010 n_gsm UART mux. There is some information
available here, and some reviews here and here.
Droid 4 has a Motorola custom PMIC called cpcap. It's connected over
SPI and controls things like regulators, USB and audio. Linux now has
various cpcap devices supported for regulators, battery charging and USB.
Unfortunately there is no documentation available for cpcap, but some
of the internal components like charging and ADC seem simlar to the ones
documented in NXP PMIC MC1378UG.pdf.
If you plan on working on adding more support, please coordinate the
effort on linux-omap mailing list to avoid duplicate work.
There are two GPIO pins amongst the wireless charger pins in the back
next to the battery. The GPIO pins are 1.8V and need also the padconf
registers configured with pinctrl in the dts if used.
+----- cpcap-ind-chrgcmpl gpio_118 gpios = <&gpio4 22 0>
Battery o o -- cpcap-ind-chrgterm gpio_121 gpios = <&gpio4 25 0>
o o -- GND
+---- 5V max 1500mA