Difference between revisions of "Motorola Droid Bionic"

From Maemo Leste Wiki
Jump to navigationJump to search
Line 8: Line 8:
|dram=1024MB DDR2
|dram=1024MB DDR2
|lcd=960x540 4"
|lcd=960x540 4.3"
|video=PowerVR SGX540  
|video=PowerVR SGX540  
Line 15: Line 15:
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor

Revision as of 11:03, 18 December 2020

Motorola Droid Bionic
Manufacturer Motorola
Codename Targa
Dimensions 127x67.3x12.7mm
Release Date 2012-02-10
Hardware Features
LCD 960x540 4.3"
Video PowerVR SGX540
Storage 16GB flash
Sensors AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor
Software Features


Feature Leste supported Notes
Kernel version 5.9.0 Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux
Serial Yes On MicroUSB port, requires special cable
Charging Yes
Wireless Yes
Ethernet N/A
Micro USB Yes OTG and USB network
Keyboard N/A
Screen Yes
3D Acceleration Yes PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/
Touchscreen Yes Capacitive
Audio Yes Switch around in alsamixer to get the right outputs working ('Speaker Right' set to 'HiFi' and 'HiFi' set to above 0 gets you output)
2G/3G data Yes Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/
4G data No Needs kernel work
SMS Yes Works with ofono. Needs Leste UI
Phone calls WIP Untested
Bluetooth Yes Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Due to interference with WiFi, load driver manually, AFTER wifi module loaded
FM Transmitter No Apparently exists, and will need serdev kernel modules/drivers
FM Receiver No
Accelerometer No Needs kernel work
Compass Yes Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)
Proximity sensor Yes needs mce work
Ambient Light Sensor WIP Needs mce work
Vibration Motor Yes
HDMI-out Yes No UI integration
TV-out N/A
GPS Yes Works with gpsd but is not integrated yet, see GPS
Infrared N/A Missing in hardware
Camera No
Idle power consumption ~70mW


Hardware requirements:

  • Droid Bionic with fully charged battery
  • MicroUSB cable
  • MicroSD card

Software requirements:

  • Host Linux system
  • Android Tools: fastboot adb
  • Flashing tools:
    • XZ Utils and coreutils for Linux
    • Etcher[1] for Windows

Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/

  1. Latest maemo-leste-1.0-armhf-bionic-*.img.xz

Download from https://github.com/tmlind/droid4-kexecboot.git

  1. droid4-kexecboot.img

Download or clone https://github.com/IMbackK/bionic-clown-boot

Follow the instructions in bionic-clown-boot's readme to install kexecboot on your device.

Now, flash the Maemo Leste image to your sdcard:

On Linux:

xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE

Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.

You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.


Normaly you can just apt update && apt dist-upgrade to update to the latest version. I for some reason this fails:


Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices. Blacklisting the module may help if you have such problems:

echo "blacklist hci_uart" >> /etc/modprobe.d/blacklist.conf

Also see Motorola_Droid_4/Modem Motorola_Droid_4/PowerVR

Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/

Serial Cable

As explained at http://muru.com/linux/d4 , the Droid 4 and Bionic both expose a serial console on the USB port. You can construct the required cable easily by following the instructions there. If you have old Nokia CA-42 or DKU-5 cables, then you can use them with the Bionic, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/

Unlocking the modem for usage in Europe

Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.

apt install build-essential
git clone https://github.com/tmlind/tcmdrw
cd tcmdrw
./tcmdrw 1877=8703E80400000200
./tcmdrw 6850=05

Tony also writes:

22:34 < tmlind> hmm so i had to do this for 3g gain: tcmdrw 1143=aaff0000, got that value from xt910 firmware i think, otherwise 3g signal was weak
22:43 < tmlind> Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us

Stuff to try

Make Audio Automaticaly set up (Temporary Solution)

Adding this in /etc/rc.local above the exit 0 to make audio work from boot.

amixer cset numid=22 HiFi      #set left speaker to HiFi
amixer cset numid=21 HiFi      #set right speaker to HiFi
amixer cset numid=26 HiFi      #set left headset to HiFi
amixer cset numid=25 HiFi      #set right headset to HiFi
amixer cset numid=1  50%       #set HiFi volumes to 50%


The WL1271 Wifi chip in the Bionic has no onboard nvmem to save its calibration parameters or its MAC address. Instead it gets these parameters from a configuration file provided by the kernel. By default a generic file is provided but for optimal range and a correct persistent MAC address a calibration procedure must be performed.

Install necessary tools:

apt-get install ti-utils-wilink6 droid4-wlanconfig

Run calibration:

sudo maserati-calibrate

3G Internet

22:12 < pave1> qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz
22:12 < pave1> route del default
22:12 < pave1> sudo ifconfig wwan0 up
22:12 < pave1> dhclient wwan0


modprobe gnss-motmdm and point gpsd to use /dev/gnss0

22:30 < tmlind> hmm there's a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)

Can try to

mkfifo /tmp/gps
cat /dev/gnss0 > /tmp/gps
Then point gpsd to use /tmp/gps


22:45 < tmlind> fyi, here's how to send USSD to query balance for example: printf "AT+CUSD=1,#999#,0\r" > /dev/motmdm1
22:47 < tmlind> fyi, for parsing incoming USSD, this web interface works if set to utf-8: