<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://leste.maemo.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Uvos</id>
	<title>Maemo Leste Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://leste.maemo.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Uvos"/>
	<link rel="alternate" type="text/html" href="https://leste.maemo.org/Special:Contributions/Uvos"/>
	<updated>2026-05-21T02:57:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Razr_(2011)&amp;diff=1435</id>
		<title>Motorola Razr (2011)</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Razr_(2011)&amp;diff=1435"/>
		<updated>2022-12-04T20:18:29Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:XT910Lockscreen.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Spyder XT910, XT912&lt;br /&gt;
|dimensions=130x68.9x7.1mm&lt;br /&gt;
|release_date=11-11-11&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
|category=unsupported&lt;br /&gt;
|sw_kernel=6.1&lt;br /&gt;
|sw_serial=Yes, [[#Serial Cable|special cable]]&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_usb_slave=Yes&lt;br /&gt;
|sw_usb_host=Yes&lt;br /&gt;
|sw_touchscreen=Yes&lt;br /&gt;
|sw_keyboard=Yes&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_hdmi=Yes&lt;br /&gt;
|sw_tv=&lt;br /&gt;
|sw_3daccel=Yes [https://github.com/maemo-leste/pvr-omap4] (closed)&lt;br /&gt;
|sw_vibration=Unkown&lt;br /&gt;
|sw_audio=Unkown&lt;br /&gt;
|sw_calls=Unkown&lt;br /&gt;
|sw_sms=Unkown&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=&lt;br /&gt;
|sw_2g3gdata=Unkown&lt;br /&gt;
|sw_4g=No&lt;br /&gt;
|sw_bluetooth=Yes,  [[#Bluetooth|see notes]] &lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=&lt;br /&gt;
|sw_nfc=&lt;br /&gt;
|sw_accelerometer=No&lt;br /&gt;
|sw_compass=No&lt;br /&gt;
|sw_gyro= No&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_als=No&lt;br /&gt;
|sw_gps=Unkown&lt;br /&gt;
|sw_agps=No&lt;br /&gt;
|sw_frontcam=No&lt;br /&gt;
|sw_backcam=No&lt;br /&gt;
|sw_idlepower=Unkown&lt;br /&gt;
|sw_standbytime=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* A Razr or Droid Razr or Droid Razr MAXX with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* get allow-mbmloader-flashing-mbm.bin for your device (xt910 or xt912) from an android update zip&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-xt910-16-mmcblk1p8-boots-mmcblk1p13-kexecboot.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# Power off the Razr and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
=== Setting up kexecboot ===&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-xt910-16-mmcblk1p8-boots-mmcblk1p13-kexecboot.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
=== Install Maemo Leste to the sdcard ===&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-razr-$DATE.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into the Razr. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Razr is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Razr will then reboot.&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Razr, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
== Bluetooth ==&lt;br /&gt;
&lt;br /&gt;
Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Due to interference with WiFi, load driver (hci_uart) manually, AFTER wifi module loaded&lt;br /&gt;
&lt;br /&gt;
Using a bluetooth headset:&lt;br /&gt;
 sudo apt install pulseaudio-module-bluetooth blueman bluez&lt;br /&gt;
 sudo modprobe hci_uart&lt;br /&gt;
 pactl load-module module-bluetooth-discover&lt;br /&gt;
 blueman-manager&lt;br /&gt;
&lt;br /&gt;
Pair &amp;amp; trust your device in blueman, connect audiosink. You can close blueman now.&lt;br /&gt;
&lt;br /&gt;
== Additional Tips ==&lt;br /&gt;
&lt;br /&gt;
==== Using a battery without temperature sensor ====&lt;br /&gt;
&lt;br /&gt;
Modprobe the pmic driver as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cpcap-battery ignore_temperature_probe=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Flashing the boot logo ====&lt;br /&gt;
&lt;br /&gt;
More info: https://github.com/xsetiadi/droid4-kexecboot/blob/master/LOGO&lt;br /&gt;
&lt;br /&gt;
logos can be flashed via fastboot flash logo.bin logo.bin&lt;br /&gt;
&lt;br /&gt;
==== HDMI ====&lt;br /&gt;
Move output to external 1080p monitor.  Disabling DSI-1 output gets xorg pointer displayed on HDMI, for use with a mouse or barrier.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output HDMI-1 --mode 1920x1080 --output DSI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return to internal touchscreen display.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output DSI-1 --auto --rotate right --output HDMI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using a configured Leste sdcard in a different Razr ==&lt;br /&gt;
&lt;br /&gt;
A configured Razr Leste installation will have a unique wlan firmware calibration. The wifi calibration script requires a system set to stock settings to calibrate-from.  It cannot just be re-run on an already calibrated system.&lt;br /&gt;
&lt;br /&gt;
To recalibrate the wifi firmware on a different Razr, you must reset the FEM parameters to stock settings on the new device, then recalibrate.  &lt;br /&gt;
If you can get the device online (usb networking or moving close to the WLAN AP) this can be done with.&lt;br /&gt;
 apt reinstall firmware-ti-connectivity &lt;br /&gt;
If not, you can download the firmware-ti-connectivity_[version]_all.deb on another Leste device&lt;br /&gt;
 apt download firmware-ti-connectivity&lt;br /&gt;
Then copy the .deb to your new device and install that (as root) with&lt;br /&gt;
 dpkg -i firmware-ti-connectivity_[version]_all.deb &lt;br /&gt;
Then (as root) re-calibrate the wifi chip by running&lt;br /&gt;
 /usr/bin/maserati-calibrate&lt;br /&gt;
Then reboot.&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Razr&amp;diff=1434</id>
		<title>Razr</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Razr&amp;diff=1434"/>
		<updated>2022-12-04T20:11:59Z</updated>

		<summary type="html">&lt;p&gt;Uvos: Uvos moved page Razr to Motorola Razr (2011)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Motorola Razr (2011)]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Razr_(2011)&amp;diff=1433</id>
		<title>Motorola Razr (2011)</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Razr_(2011)&amp;diff=1433"/>
		<updated>2022-12-04T20:11:57Z</updated>

		<summary type="html">&lt;p&gt;Uvos: Uvos moved page Razr to Motorola Razr (2011)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:XT910Lockscreen.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Spyder XT910, XT912&lt;br /&gt;
|dimensions=130x68.9x7.1mm&lt;br /&gt;
|release_date=11-11-11&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=6.1&lt;br /&gt;
|sw_serial=Yes, [[#Serial Cable|special cable]]&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_usb_slave=Yes&lt;br /&gt;
|sw_usb_host=Yes&lt;br /&gt;
|sw_touchscreen=Yes&lt;br /&gt;
|sw_keyboard=Yes&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_hdmi=Yes&lt;br /&gt;
|sw_tv=&lt;br /&gt;
|sw_3daccel=Yes [https://github.com/maemo-leste/pvr-omap4] (closed)&lt;br /&gt;
|sw_vibration=Unkown&lt;br /&gt;
|sw_audio=Unkown&lt;br /&gt;
|sw_calls=Unkown&lt;br /&gt;
|sw_sms=Unkown&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=&lt;br /&gt;
|sw_2g3gdata=Unkown&lt;br /&gt;
|sw_4g=No&lt;br /&gt;
|sw_bluetooth=Yes,  [[#Bluetooth|see notes]] &lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=&lt;br /&gt;
|sw_nfc=&lt;br /&gt;
|sw_accelerometer=No&lt;br /&gt;
|sw_compass=No&lt;br /&gt;
|sw_gyro= No&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_als=No&lt;br /&gt;
|sw_gps=Unkown&lt;br /&gt;
|sw_agps=No&lt;br /&gt;
|sw_frontcam=No&lt;br /&gt;
|sw_backcam=No&lt;br /&gt;
|sw_idlepower=Unkown&lt;br /&gt;
|sw_standbytime=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* A Razr or Droid Razr or Droid Razr MAXX with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* get allow-mbmloader-flashing-mbm.bin for your device (xt910 or xt912) from an android update zip&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-xt910-16-mmcblk1p8-boots-mmcblk1p13-kexecboot.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# Power off the Razr and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
=== Setting up kexecboot ===&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-xt910-16-mmcblk1p8-boots-mmcblk1p13-kexecboot.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
=== Install Maemo Leste to the sdcard ===&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-razr-$DATE.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into the Razr. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Razr is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Razr will then reboot.&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Razr, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
== Bluetooth ==&lt;br /&gt;
&lt;br /&gt;
Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Due to interference with WiFi, load driver (hci_uart) manually, AFTER wifi module loaded&lt;br /&gt;
&lt;br /&gt;
Using a bluetooth headset:&lt;br /&gt;
 sudo apt install pulseaudio-module-bluetooth blueman bluez&lt;br /&gt;
 sudo modprobe hci_uart&lt;br /&gt;
 pactl load-module module-bluetooth-discover&lt;br /&gt;
 blueman-manager&lt;br /&gt;
&lt;br /&gt;
Pair &amp;amp; trust your device in blueman, connect audiosink. You can close blueman now.&lt;br /&gt;
&lt;br /&gt;
== Additional Tips ==&lt;br /&gt;
&lt;br /&gt;
==== Using a battery without temperature sensor ====&lt;br /&gt;
&lt;br /&gt;
Modprobe the pmic driver as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cpcap-battery ignore_temperature_probe=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Flashing the boot logo ====&lt;br /&gt;
&lt;br /&gt;
More info: https://github.com/xsetiadi/droid4-kexecboot/blob/master/LOGO&lt;br /&gt;
&lt;br /&gt;
logos can be flashed via fastboot flash logo.bin logo.bin&lt;br /&gt;
&lt;br /&gt;
==== HDMI ====&lt;br /&gt;
Move output to external 1080p monitor.  Disabling DSI-1 output gets xorg pointer displayed on HDMI, for use with a mouse or barrier.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output HDMI-1 --mode 1920x1080 --output DSI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return to internal touchscreen display.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output DSI-1 --auto --rotate right --output HDMI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using a configured Leste sdcard in a different Razr ==&lt;br /&gt;
&lt;br /&gt;
A configured Razr Leste installation will have a unique wlan firmware calibration. The wifi calibration script requires a system set to stock settings to calibrate-from.  It cannot just be re-run on an already calibrated system.&lt;br /&gt;
&lt;br /&gt;
To recalibrate the wifi firmware on a different Razr, you must reset the FEM parameters to stock settings on the new device, then recalibrate.  &lt;br /&gt;
If you can get the device online (usb networking or moving close to the WLAN AP) this can be done with.&lt;br /&gt;
 apt reinstall firmware-ti-connectivity &lt;br /&gt;
If not, you can download the firmware-ti-connectivity_[version]_all.deb on another Leste device&lt;br /&gt;
 apt download firmware-ti-connectivity&lt;br /&gt;
Then copy the .deb to your new device and install that (as root) with&lt;br /&gt;
 dpkg -i firmware-ti-connectivity_[version]_all.deb &lt;br /&gt;
Then (as root) re-calibrate the wifi chip by running&lt;br /&gt;
 /usr/bin/maserati-calibrate&lt;br /&gt;
Then reboot.&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Razr_(2011)&amp;diff=1432</id>
		<title>Motorola Razr (2011)</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Razr_(2011)&amp;diff=1432"/>
		<updated>2022-12-04T20:11:12Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:XT910Lockscreen.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Spyder XT910, XT912&lt;br /&gt;
|dimensions=130x68.9x7.1mm&lt;br /&gt;
|release_date=11-11-11&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=6.1&lt;br /&gt;
|sw_serial=Yes, [[#Serial Cable|special cable]]&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_usb_slave=Yes&lt;br /&gt;
|sw_usb_host=Yes&lt;br /&gt;
|sw_touchscreen=Yes&lt;br /&gt;
|sw_keyboard=Yes&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_hdmi=Yes&lt;br /&gt;
|sw_tv=&lt;br /&gt;
|sw_3daccel=Yes [https://github.com/maemo-leste/pvr-omap4] (closed)&lt;br /&gt;
|sw_vibration=Unkown&lt;br /&gt;
|sw_audio=Unkown&lt;br /&gt;
|sw_calls=Unkown&lt;br /&gt;
|sw_sms=Unkown&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=&lt;br /&gt;
|sw_2g3gdata=Unkown&lt;br /&gt;
|sw_4g=No&lt;br /&gt;
|sw_bluetooth=Yes,  [[#Bluetooth|see notes]] &lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=&lt;br /&gt;
|sw_nfc=&lt;br /&gt;
|sw_accelerometer=No&lt;br /&gt;
|sw_compass=No&lt;br /&gt;
|sw_gyro= No&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_als=No&lt;br /&gt;
|sw_gps=Unkown&lt;br /&gt;
|sw_agps=No&lt;br /&gt;
|sw_frontcam=No&lt;br /&gt;
|sw_backcam=No&lt;br /&gt;
|sw_idlepower=Unkown&lt;br /&gt;
|sw_standbytime=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* A Razr or Droid Razr or Droid Razr MAXX with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* get allow-mbmloader-flashing-mbm.bin for your device (xt910 or xt912) from an android update zip&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-xt910-16-mmcblk1p8-boots-mmcblk1p13-kexecboot.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# Power off the Razr and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
=== Setting up kexecboot ===&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-xt910-16-mmcblk1p8-boots-mmcblk1p13-kexecboot.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
=== Install Maemo Leste to the sdcard ===&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-razr-$DATE.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into the Razr. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Razr is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Razr will then reboot.&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Razr, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
== Bluetooth ==&lt;br /&gt;
&lt;br /&gt;
Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Due to interference with WiFi, load driver (hci_uart) manually, AFTER wifi module loaded&lt;br /&gt;
&lt;br /&gt;
Using a bluetooth headset:&lt;br /&gt;
 sudo apt install pulseaudio-module-bluetooth blueman bluez&lt;br /&gt;
 sudo modprobe hci_uart&lt;br /&gt;
 pactl load-module module-bluetooth-discover&lt;br /&gt;
 blueman-manager&lt;br /&gt;
&lt;br /&gt;
Pair &amp;amp; trust your device in blueman, connect audiosink. You can close blueman now.&lt;br /&gt;
&lt;br /&gt;
== Additional Tips ==&lt;br /&gt;
&lt;br /&gt;
==== Using a battery without temperature sensor ====&lt;br /&gt;
&lt;br /&gt;
Modprobe the pmic driver as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cpcap-battery ignore_temperature_probe=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Flashing the boot logo ====&lt;br /&gt;
&lt;br /&gt;
More info: https://github.com/xsetiadi/droid4-kexecboot/blob/master/LOGO&lt;br /&gt;
&lt;br /&gt;
logos can be flashed via fastboot flash logo.bin logo.bin&lt;br /&gt;
&lt;br /&gt;
==== HDMI ====&lt;br /&gt;
Move output to external 1080p monitor.  Disabling DSI-1 output gets xorg pointer displayed on HDMI, for use with a mouse or barrier.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output HDMI-1 --mode 1920x1080 --output DSI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return to internal touchscreen display.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output DSI-1 --auto --rotate right --output HDMI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using a configured Leste sdcard in a different Razr ==&lt;br /&gt;
&lt;br /&gt;
A configured Razr Leste installation will have a unique wlan firmware calibration. The wifi calibration script requires a system set to stock settings to calibrate-from.  It cannot just be re-run on an already calibrated system.&lt;br /&gt;
&lt;br /&gt;
To recalibrate the wifi firmware on a different Razr, you must reset the FEM parameters to stock settings on the new device, then recalibrate.  &lt;br /&gt;
If you can get the device online (usb networking or moving close to the WLAN AP) this can be done with.&lt;br /&gt;
 apt reinstall firmware-ti-connectivity &lt;br /&gt;
If not, you can download the firmware-ti-connectivity_[version]_all.deb on another Leste device&lt;br /&gt;
 apt download firmware-ti-connectivity&lt;br /&gt;
Then copy the .deb to your new device and install that (as root) with&lt;br /&gt;
 dpkg -i firmware-ti-connectivity_[version]_all.deb &lt;br /&gt;
Then (as root) re-calibrate the wifi chip by running&lt;br /&gt;
 /usr/bin/maserati-calibrate&lt;br /&gt;
Then reboot.&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Razr_(2011)&amp;diff=1431</id>
		<title>Motorola Razr (2011)</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Razr_(2011)&amp;diff=1431"/>
		<updated>2022-12-04T20:10:24Z</updated>

		<summary type="html">&lt;p&gt;Uvos: Created page with &amp;quot;{{Infobox Device |image=250px |manufacturer=Motorola |codename=Spyder XT910, XT912 |dimensions=130x68.9x7.1mm |release_date=11-11-11 |soc=TI OMAP4...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:XT910Lockscreen.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Spyder XT910, XT912&lt;br /&gt;
|dimensions=130x68.9x7.1mm&lt;br /&gt;
|release_date=11-11-11&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=6.1&lt;br /&gt;
|sw_serial=Yes, [[#Serial Cable|special cable]]&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_usb_slave=Yes&lt;br /&gt;
|sw_usb_host=Yes&lt;br /&gt;
|sw_touchscreen=Yes&lt;br /&gt;
|sw_keyboard=Yes&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_hdmi=Yes&lt;br /&gt;
|sw_tv=&lt;br /&gt;
|sw_3daccel=Yes [https://github.com/maemo-leste/pvr-omap4] (closed)&lt;br /&gt;
|sw_vibration=Unkown&lt;br /&gt;
|sw_audio=Unkown&lt;br /&gt;
|sw_calls=Unkown&lt;br /&gt;
|sw_sms=Unkown&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=&lt;br /&gt;
|sw_2g3gdata=Unkown&lt;br /&gt;
|sw_4g=No&lt;br /&gt;
|sw_bluetooth=Yes,  [[#Bluetooth|see notes]] &lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=&lt;br /&gt;
|sw_nfc=&lt;br /&gt;
|sw_accelerometer=No&lt;br /&gt;
|sw_compass=No&lt;br /&gt;
|sw_gyro= No&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_als=No&lt;br /&gt;
|sw_gps=Unkown&lt;br /&gt;
|sw_agps=No&lt;br /&gt;
|sw_frontcam=No&lt;br /&gt;
|sw_backcam=No&lt;br /&gt;
|sw_idlepower=120mW&lt;br /&gt;
|sw_standbytime=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* A Razr or Droid Razr or Droid Razr MAXX with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* get allow-mbmloader-flashing-mbm.bin for your device (xt910 or xt912) from an android update zip&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-xt910-16-mmcblk1p8-boots-mmcblk1p13-kexecboot.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# Power off the Razr and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
=== Setting up kexecboot ===&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-xt910-16-mmcblk1p8-boots-mmcblk1p13-kexecboot.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
=== Install Maemo Leste to the sdcard ===&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-razr-$DATE.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into the Razr. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Razr is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Razr will then reboot.&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Razr, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
== Bluetooth ==&lt;br /&gt;
&lt;br /&gt;
Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Due to interference with WiFi, load driver (hci_uart) manually, AFTER wifi module loaded&lt;br /&gt;
&lt;br /&gt;
Using a bluetooth headset:&lt;br /&gt;
 sudo apt install pulseaudio-module-bluetooth blueman bluez&lt;br /&gt;
 sudo modprobe hci_uart&lt;br /&gt;
 pactl load-module module-bluetooth-discover&lt;br /&gt;
 blueman-manager&lt;br /&gt;
&lt;br /&gt;
Pair &amp;amp; trust your device in blueman, connect audiosink. You can close blueman now.&lt;br /&gt;
&lt;br /&gt;
== Additional Tips ==&lt;br /&gt;
&lt;br /&gt;
==== Using a battery without temperature sensor ====&lt;br /&gt;
&lt;br /&gt;
Modprobe the pmic driver as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cpcap-battery ignore_temperature_probe=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Flashing the boot logo ====&lt;br /&gt;
&lt;br /&gt;
More info: https://github.com/xsetiadi/droid4-kexecboot/blob/master/LOGO&lt;br /&gt;
&lt;br /&gt;
logos can be flashed via fastboot flash logo.bin logo.bin&lt;br /&gt;
&lt;br /&gt;
==== HDMI ====&lt;br /&gt;
Move output to external 1080p monitor.  Disabling DSI-1 output gets xorg pointer displayed on HDMI, for use with a mouse or barrier.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output HDMI-1 --mode 1920x1080 --output DSI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return to internal touchscreen display.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output DSI-1 --auto --rotate right --output HDMI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using a configured Leste sdcard in a different Razr ==&lt;br /&gt;
&lt;br /&gt;
A configured Razr Leste installation will have a unique wlan firmware calibration. The wifi calibration script requires a system set to stock settings to calibrate-from.  It cannot just be re-run on an already calibrated system.&lt;br /&gt;
&lt;br /&gt;
To recalibrate the wifi firmware on a different Razr, you must reset the FEM parameters to stock settings on the new device, then recalibrate.  &lt;br /&gt;
If you can get the device online (usb networking or moving close to the WLAN AP) this can be done with.&lt;br /&gt;
 apt reinstall firmware-ti-connectivity &lt;br /&gt;
If not, you can download the firmware-ti-connectivity_[version]_all.deb on another Leste device&lt;br /&gt;
 apt download firmware-ti-connectivity&lt;br /&gt;
Then copy the .deb to your new device and install that (as root) with&lt;br /&gt;
 dpkg -i firmware-ti-connectivity_[version]_all.deb &lt;br /&gt;
Then (as root) re-calibrate the wifi chip by running&lt;br /&gt;
 /usr/bin/maserati-calibrate&lt;br /&gt;
Then reboot.&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:XT910Lockscreen.jpg&amp;diff=1430</id>
		<title>File:XT910Lockscreen.jpg</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:XT910Lockscreen.jpg&amp;diff=1430"/>
		<updated>2022-12-04T20:09:38Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A European XT910 running Maemo leste&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Calendar&amp;diff=1121</id>
		<title>Calendar</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Calendar&amp;diff=1121"/>
		<updated>2021-07-02T15:31:53Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Calendar =&lt;br /&gt;
&lt;br /&gt;
Data is stored in /home/user/.calendar/calendardb - in SQLite3 format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Qalendar ==&lt;br /&gt;
&lt;br /&gt;
Qalendar is Qt5 implementation of the Maemo Calendar, source is here: https://github.com/maemo-leste/qalendar&lt;br /&gt;
&lt;br /&gt;
It should mostly function as the Maemo calendar, see the feature comparison here: https://wiki.maemo.org/Qalendar&lt;br /&gt;
&lt;br /&gt;
* cal-home-widget has also been ported&lt;br /&gt;
&lt;br /&gt;
== Improvements over Fremantle Qalendar ==&lt;br /&gt;
&lt;br /&gt;
* Supports landscape at dynamic resolutions (vs only 800x480)&lt;br /&gt;
&lt;br /&gt;
Planned:&lt;br /&gt;
&lt;br /&gt;
* Portrait support&lt;br /&gt;
&lt;br /&gt;
== Synchronising ==&lt;br /&gt;
&lt;br /&gt;
you can try this script&lt;br /&gt;
it currently only syncs the calendar&lt;br /&gt;
&lt;br /&gt;
# Install syncevolution first via &#039;apt install syncevolution&#039;&lt;br /&gt;
# Grab the script at: http://uvos.xyz/maserati/maemo-calendar-sync.sh&lt;br /&gt;
# Open it and change the vars to reflect your server&lt;br /&gt;
# Run it&lt;br /&gt;
&lt;br /&gt;
if that dosent work try the section below&lt;br /&gt;
&lt;br /&gt;
== Synchronising manually ==&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install syncevolution&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example URL is &amp;lt;b&amp;gt;http://localhost:5223&amp;lt;/b&amp;gt; - using ssh tunneling to forward the remote radicale port to a local port. This is no by means required for operation - just pick any host that works for you.&lt;br /&gt;
&lt;br /&gt;
For reference, this can be used to set up the ssh port forward if you&#039;re keen on using it (but again, just pick whatever host you want to use):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh myhost -L 5223:localhost:5223&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OK, so let&#039;s configure syncevolution and do the initial sync:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
              --template webdav \&lt;br /&gt;
             username=USER \&lt;br /&gt;
             password=PASS \&lt;br /&gt;
             syncURL=http://localhost:5223/ \&lt;br /&gt;
             target-config@radicale&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             database=http://localhost:5223/USER/UUID/ \&lt;br /&gt;
             backend=caldavtodo \&lt;br /&gt;
             target-config@radicale radicaletodo&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             database=http://localhost:5223/USER/UUID/ \&lt;br /&gt;
             backend=caldavjournal \&lt;br /&gt;
             target-config@radicale radicalejournal&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             database=http://localhost:5223/USER/UUID/ \&lt;br /&gt;
             backend=caldav \&lt;br /&gt;
             target-config@radicale radicalecal&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             --template SyncEvolution_Client \&lt;br /&gt;
             sync=none \&lt;br /&gt;
             syncURL=local://@radicale \&lt;br /&gt;
             username= \&lt;br /&gt;
             password= \&lt;br /&gt;
             radicale&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             sync=two-way \&lt;br /&gt;
             backend=maemo-tasks \&lt;br /&gt;
             database= \&lt;br /&gt;
             radicale radicaletodo&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             sync=two-way \&lt;br /&gt;
             backend=maemo-notes\&lt;br /&gt;
             database= \&lt;br /&gt;
             radicale radicalejournal&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             sync=two-way \&lt;br /&gt;
             backend=maemo-events \&lt;br /&gt;
             database= \&lt;br /&gt;
             radicale radicalecal&lt;br /&gt;
&lt;br /&gt;
syncevolution --sync refresh-from-client radicale radicalejournal&lt;br /&gt;
syncevolution --sync refresh-from-client radicale radicaletodo&lt;br /&gt;
syncevolution --sync refresh-from-client radicale radicalecal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the next time you want to synchronise, just call:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
syncevolution --sync two-way radicale radicalejournal&lt;br /&gt;
syncevolution --sync two-way radicale radicaletodo&lt;br /&gt;
syncevolution --sync two-way radicale radicalecal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Syncevolution-frontend ==&lt;br /&gt;
&lt;br /&gt;
The custom Maemo Syncevolution frontend has also been ported and is available in the application manager; which can be used to set up scheduled synchronisation.&lt;br /&gt;
&lt;br /&gt;
Random resources:&lt;br /&gt;
&lt;br /&gt;
* https://www.mail-archive.com/syncevolution@syncevolution.org/msg03379.html&lt;br /&gt;
* https://wiki.maemo.org/Calendar_database&lt;br /&gt;
* https://wiki.maemo.org/Sync&lt;br /&gt;
* http://maemo.org/packages/source/view/fremantle_extras-devel_free_source/syncevolution-frontend/0.12/&lt;br /&gt;
* https://talk.maemo.org/showthread.php?t=75810&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1107</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1107"/>
		<updated>2021-06-01T16:23:00Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2011-09-8&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=5.10.4&lt;br /&gt;
|sw_serial=Yes, [[#Serial Cable|special cable]]&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_usb_slave=Gadgets only&lt;br /&gt;
|sw_usb_host=No&lt;br /&gt;
|sw_touchscreen=Yes&lt;br /&gt;
|sw_keyboard=&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_hdmi=Yes&lt;br /&gt;
|sw_tv=&lt;br /&gt;
|sw_3daccel=Yes, [[https://github.com/maemo-leste/pvr-omap4/|SGX540, closed driver|]]&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=untested&lt;br /&gt;
|sw_sms=Yes, no UI&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=&lt;br /&gt;
|sw_2g3gdata=Yes&lt;br /&gt;
|sw_4g=No&lt;br /&gt;
|sw_bluetooth=Yes,  [[#Bluetooth|see notes]] &lt;br /&gt;
|sw_fmtx=No, but apparently exists, needs serdev kernel modules/drivers&lt;br /&gt;
|sw_fmrx=&lt;br /&gt;
|sw_nfc=&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_compass=Yes, no integration&lt;br /&gt;
|sw_gyro=No, needs kernel work&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_als=Yes&lt;br /&gt;
|sw_gps=Yes&lt;br /&gt;
|sw_agps=No, needs kernel/userspace work&lt;br /&gt;
|sw_frontcam=No&lt;br /&gt;
|sw_backcam=No&lt;br /&gt;
|sw_idlepower=70mW, needs sim inserted&lt;br /&gt;
|sw_standbytime=91.8h (with HW4X)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into The Bionic. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Bluetooth ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Old status table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.10.4 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| USB slave || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| USB host (OTG) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Wifi || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| IrDA || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Nfc || No || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| AGPS || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Front Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Back Camera(s) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70 mW || Needs sim inserted&lt;br /&gt;
|-&lt;br /&gt;
| Idle Battery life on new battery || 91.8 h || With HW4X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1103</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1103"/>
		<updated>2021-05-24T08:21:08Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=5.10.4&lt;br /&gt;
|sw_serial=Yes, [[#Serial Cable|special cable]]&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_usb_slave=Gadgets only&lt;br /&gt;
|sw_usb_host=No&lt;br /&gt;
|sw_touchscreen=Yes&lt;br /&gt;
|sw_keyboard=&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_hdmi=Yes&lt;br /&gt;
|sw_tv=&lt;br /&gt;
|sw_3daccel=Yes, [[https://github.com/maemo-leste/pvr-omap4/|SGX540, closed driver|]]&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=untested&lt;br /&gt;
|sw_sms=Yes, no UI&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=&lt;br /&gt;
|sw_2g3gdata=Yes&lt;br /&gt;
|sw_4g=No&lt;br /&gt;
|sw_bluetooth=Yes,  [[#Bluetooth|see notes]] &lt;br /&gt;
|sw_fmtx=No, but apparently exists, needs serdev kernel modules/drivers&lt;br /&gt;
|sw_fmrx=&lt;br /&gt;
|sw_nfc=&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_compass=Yes, no integration&lt;br /&gt;
|sw_gyro=No, needs kernel work&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_als=Yes&lt;br /&gt;
|sw_gps=Yes&lt;br /&gt;
|sw_agps=No, needs kernel/userspace work&lt;br /&gt;
|sw_frontcam=No&lt;br /&gt;
|sw_backcam=No&lt;br /&gt;
|sw_idlepower=70mW, needs sim inserted&lt;br /&gt;
|sw_standbytime=91.8h (with HW4X)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into The Bionic. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Bluetooth ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Old status table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.10.4 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| USB slave || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| USB host (OTG) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Wifi || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| IrDA || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Nfc || No || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| AGPS || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Front Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Back Camera(s) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70 mW || Needs sim inserted&lt;br /&gt;
|-&lt;br /&gt;
| Idle Battery life on new battery || 91.8 h || With HW4X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1077</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1077"/>
		<updated>2021-05-23T12:20:43Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|category=Supported&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
|headers=&lt;br /&gt;
|battery=&lt;br /&gt;
|sw_kernel=5.1&lt;br /&gt;
|sw_serial=Yes,special hardware&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_usb_slave=Gadgets only&lt;br /&gt;
|sw_usb_host=With hacks&lt;br /&gt;
|sw_touchscreen=Yes&lt;br /&gt;
|sw_keyboard=Yes&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_hdmi=&lt;br /&gt;
|sw_tv=Yes&lt;br /&gt;
|sw_3daccel=Yes, closed driver&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes (complex, no ucm, no speaker protection)&lt;br /&gt;
|sw_calls=WIP&lt;br /&gt;
|sw_sms=Yes, no UI&lt;br /&gt;
|sw_wifi=Yes, firmware required&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=TX only&lt;br /&gt;
|sw_2g3gdata=Yes&lt;br /&gt;
|sw_4g=&lt;br /&gt;
|sw_bluetooth=No&lt;br /&gt;
|sw_fmtx=Yes&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_nfc=&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_compass=&lt;br /&gt;
|sw_gyro=&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_als=Yes&lt;br /&gt;
|sw_gps=Yes&lt;br /&gt;
|sw_agps=No&lt;br /&gt;
|sw_frontcam=&lt;br /&gt;
|sw_backcam=&lt;br /&gt;
|sw_idlepower=300mW (needs kernel work)&lt;br /&gt;
|sw_standbytime=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The installation consists of two steps: copying the image to the microsd card, and setting up the bootloader on the phone.&lt;br /&gt;
&lt;br /&gt;
=== Image installation ===&lt;br /&gt;
&lt;br /&gt;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card.&lt;br /&gt;
&lt;br /&gt;
If using a Windows machine, you can use [https://etcher.io/ Etcher]&lt;br /&gt;
&lt;br /&gt;
See the next section on how to boot. (using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613)&lt;br /&gt;
&lt;br /&gt;
=== Bootloader (U-Boot) setup ===&lt;br /&gt;
&lt;br /&gt;
==== Quick ====&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to configure u-boot from Fremantle, or your Fremantle rootfs is broken), or you just want to install quickly:&lt;br /&gt;
&lt;br /&gt;
1. Download 0xFFFF and u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
2. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: &amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Open the keyboard slider on the N900, and then issue following command on PC to test boot: &amp;lt;code&amp;gt;./0xFFFF -b&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type &amp;lt;code&amp;gt;run sdboot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(Be careful though. This will replace the existing fremantle kernel. Only do this if you do not care about the existing maemo installation or you know how to recover from this condition)&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Existing fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have an existing Fremantle installation, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
&lt;br /&gt;
Run the following script: &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serial ==&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* Speakers are enabled by default, but be careful of very high frequencies/levels - there are concerns regarding the possibility to blow them&lt;br /&gt;
&lt;br /&gt;
Also see: https://elinux.org/N900&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
Power usage right now is reported to be about 80mA, which is quite a lot. On a good battery this will last for about 15 hours. Power management on the N900 is being worked on: https://github.com/maemo-leste/bugtracker/issues/170&lt;br /&gt;
&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_management&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_Consumption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This script can be used to decode idle states when this patch is applied: https://github.com/maemo-leste/n9xx-linux/blob/maemo/beowulf/debian/patches/0001_deeper_idle.patch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat idlest.py&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
00001fff 48005020 (584be965) cm_idlest_per blocking bits: 0007e000&lt;br /&gt;
f7df3fb9 48004a20 (b32988a8) cm_idlest1_core blocking bits: 0020c046&lt;br /&gt;
0000000d 48004a28 (f7aa95e6) cm_idlest3_core&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 31 to 0&lt;br /&gt;
cm_idlest1_core_bits = [&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MMC3&#039;,&lt;br /&gt;
&#039;ST_ICR&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MMC2&#039;,&lt;br /&gt;
&#039;ST_MMC1&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_HDQ&#039;,&lt;br /&gt;
&#039;ST_MCSPI4&#039;,&lt;br /&gt;
&#039;ST_MCSPI3&#039;,&lt;br /&gt;
&#039;ST_MCSPI2&#039;,&lt;br /&gt;
&#039;ST_MCSPI1&#039;,&lt;br /&gt;
&#039;ST_I2C3&#039;,&lt;br /&gt;
&#039;ST_I2C2&#039;,&lt;br /&gt;
&#039;ST_I2C1&#039;,&lt;br /&gt;
&#039;ST_UART2&#039;,&lt;br /&gt;
&#039;ST_UART1&#039;,&lt;br /&gt;
&#039;ST_GPT11&#039;,&lt;br /&gt;
&#039;ST_GPT10&#039;,&lt;br /&gt;
&#039;ST_MCBSP5&#039;,&lt;br /&gt;
&#039;ST_MCBSP1&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MAILBOXES&#039;,&lt;br /&gt;
&#039;ST_OMAPCTRL&#039;,&lt;br /&gt;
&#039;ST_HSOTGUSB_IDLE&#039;,&lt;br /&gt;
&#039;ST_HSOTGUSB_STDBY&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_SDMA&#039;,&lt;br /&gt;
&#039;ST_SDRC&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
cm_idlest1_core_bits = list(reversed(cm_idlest1_core_bits))&lt;br /&gt;
&lt;br /&gt;
#inp = &#039;0020c046&#039;&lt;br /&gt;
inp = &#039;00208042&#039; # after rmmod hci_nokia and hci_uart&lt;br /&gt;
&lt;br /&gt;
v = int(inp, 16)&lt;br /&gt;
&lt;br /&gt;
#print(v)&lt;br /&gt;
b= &amp;quot;{0:b}&amp;quot;.format(v)&lt;br /&gt;
print((32-len(b))*&#039;0&#039; + b)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, 32):&lt;br /&gt;
    is_set = (v &amp;amp; (1 &amp;lt;&amp;lt; i)) &amp;gt;&amp;gt; i&lt;br /&gt;
    if is_set:&lt;br /&gt;
        print(cm_idlest1_core_bits[i])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery calibration ==&lt;br /&gt;
&lt;br /&gt;
Nokia N900 has bq27200 integrated circuit for monitoring battery state. The datasheet can be found here: http://www.ti.com/lit/ds/symlink/bq27200.pdf. If you are curious, check the section called &amp;quot;Gas Gauge Operation&amp;quot; for how the battery calibration is done in a low level.&lt;br /&gt;
&lt;br /&gt;
Here are described the steps necessary to calibrate your battery. This should help if you see &amp;quot;Battery not calibrated&amp;quot; message in the status applet.&lt;br /&gt;
&lt;br /&gt;
* Fully charge Nokia N900. Don&#039;t detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don&#039;t attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don&#039;t connect the device to a charger or a PC using the USB cable.&lt;br /&gt;
* When your Nokia N900 has battery depleted, it will alarm you with the &amp;quot;battery low&amp;quot; sound.&lt;br /&gt;
* Wait for about 20 seconds and attach the charger. If the device was powered off because of battery depletion, it&#039;s fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It&#039;s how the battery calibration works in low level: it can&#039;t change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it&#039;s needed to repeat the calibration cycle several times to get more accurate value. It may take about 3-7 calibration cycles to get the proper mAh value for fully charged battery. If you spend some time on this process, you will get really accurate battery gauge and you will always know how much charge is remaining.&lt;br /&gt;
&lt;br /&gt;
Tip 1. If for any reason you want to reset the battery calibration value to see the message “Battery is not calibrated” again, you should remove the battery from the device for about 6 hours.&lt;br /&gt;
Tip 2. If you replace the battery, you may want to do 1-2 calibration cycles described above to update the gauge for your new battery.&lt;br /&gt;
&lt;br /&gt;
== Accessing MTD ==&lt;br /&gt;
&lt;br /&gt;
List devices:&lt;br /&gt;
 cat /proc/mtd&lt;br /&gt;
&lt;br /&gt;
Mount:&lt;br /&gt;
 apt install mtd-utils&lt;br /&gt;
 mkdir -vp /mnt/fremantle&lt;br /&gt;
 ubiattach -p /dev/mtd5&lt;br /&gt;
 mount -t ubifs ubi:rootfs /mnt/fremantle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Old status table ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.1 || Mainline + PowerVR Patches: https://github.com/maemo-leste/n9xx-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Requires special hardware&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes || Firmware is non-free&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || USB Network, Mass Storage. OTG not working, although it might be possible&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || closed driver&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), but requires complex alsa configuration and currently no ucm support&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono - UI is WIP, see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || N/A || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, might require pulseaudio audio filters&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver needs some work&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A|| No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || evdev interface not supported in mce&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || Yes || Enable in alsamixer (Jack Function in alsamixer to TV OUT), enable with &amp;lt;code&amp;gt;xrandr --output TV --mode 800x480 --same-as LCD&amp;lt;/code&amp;gt;. Set PAL/NTSC with &amp;lt;code&amp;gt;xrandr --output TV --set SignalProperties PAL&amp;lt;/code&amp;gt;, and scale with &amp;lt;code&amp;gt;xrandr --output TV --set TVScale 90&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Yes || TX only (hardware limitation). &lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~300mW || Device does not enter RET or OFF mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1076</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1076"/>
		<updated>2021-05-23T12:08:38Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|category=Supported&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
|headers=&lt;br /&gt;
|battery=&lt;br /&gt;
|sw_kernel=5.1&lt;br /&gt;
|sw_serial=Yes,special hardware&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_usb_slave=Gadgets only&lt;br /&gt;
|sw_usb_host=With hacks&lt;br /&gt;
|sw_touchscreen=Yes&lt;br /&gt;
|sw_keyboard=Yes&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_hdmi=&lt;br /&gt;
|sw_tv=Yes&lt;br /&gt;
|sw_3daccel=Yes, closed driver&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes (complex, no ucm, no speaker protection)&lt;br /&gt;
|sw_calls=WIP&lt;br /&gt;
|sw_sms=Yes, no UI&lt;br /&gt;
|sw_wifi=Yes, firmware required&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=TX only&lt;br /&gt;
|sw_2g3gdata=Yes&lt;br /&gt;
|sw_4g=&lt;br /&gt;
|sw_bluetooth=No&lt;br /&gt;
|sw_fmtx=Yes&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_nfc=No, needs kernel work&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_compass=&lt;br /&gt;
|sw_gyro=&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_als=Yes&lt;br /&gt;
|sw_gps=Yes&lt;br /&gt;
|sw_agps=No&lt;br /&gt;
|sw_frontcam=&lt;br /&gt;
|sw_backcam=&lt;br /&gt;
|sw_idlepower=300mW (needs kernel work)&lt;br /&gt;
|sw_standbytime=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The installation consists of two steps: copying the image to the microsd card, and setting up the bootloader on the phone.&lt;br /&gt;
&lt;br /&gt;
=== Image installation ===&lt;br /&gt;
&lt;br /&gt;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card.&lt;br /&gt;
&lt;br /&gt;
If using a Windows machine, you can use [https://etcher.io/ Etcher]&lt;br /&gt;
&lt;br /&gt;
See the next section on how to boot. (using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613)&lt;br /&gt;
&lt;br /&gt;
=== Bootloader (U-Boot) setup ===&lt;br /&gt;
&lt;br /&gt;
==== Quick ====&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to configure u-boot from Fremantle, or your Fremantle rootfs is broken), or you just want to install quickly:&lt;br /&gt;
&lt;br /&gt;
1. Download 0xFFFF and u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
2. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: &amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Open the keyboard slider on the N900, and then issue following command on PC to test boot: &amp;lt;code&amp;gt;./0xFFFF -b&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type &amp;lt;code&amp;gt;run sdboot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(Be careful though. This will replace the existing fremantle kernel. Only do this if you do not care about the existing maemo installation or you know how to recover from this condition)&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Existing fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have an existing Fremantle installation, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
&lt;br /&gt;
Run the following script: &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serial ==&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* Speakers are enabled by default, but be careful of very high frequencies/levels - there are concerns regarding the possibility to blow them&lt;br /&gt;
&lt;br /&gt;
Also see: https://elinux.org/N900&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
Power usage right now is reported to be about 80mA, which is quite a lot. On a good battery this will last for about 15 hours. Power management on the N900 is being worked on: https://github.com/maemo-leste/bugtracker/issues/170&lt;br /&gt;
&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_management&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_Consumption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This script can be used to decode idle states when this patch is applied: https://github.com/maemo-leste/n9xx-linux/blob/maemo/beowulf/debian/patches/0001_deeper_idle.patch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat idlest.py&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
00001fff 48005020 (584be965) cm_idlest_per blocking bits: 0007e000&lt;br /&gt;
f7df3fb9 48004a20 (b32988a8) cm_idlest1_core blocking bits: 0020c046&lt;br /&gt;
0000000d 48004a28 (f7aa95e6) cm_idlest3_core&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 31 to 0&lt;br /&gt;
cm_idlest1_core_bits = [&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MMC3&#039;,&lt;br /&gt;
&#039;ST_ICR&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MMC2&#039;,&lt;br /&gt;
&#039;ST_MMC1&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_HDQ&#039;,&lt;br /&gt;
&#039;ST_MCSPI4&#039;,&lt;br /&gt;
&#039;ST_MCSPI3&#039;,&lt;br /&gt;
&#039;ST_MCSPI2&#039;,&lt;br /&gt;
&#039;ST_MCSPI1&#039;,&lt;br /&gt;
&#039;ST_I2C3&#039;,&lt;br /&gt;
&#039;ST_I2C2&#039;,&lt;br /&gt;
&#039;ST_I2C1&#039;,&lt;br /&gt;
&#039;ST_UART2&#039;,&lt;br /&gt;
&#039;ST_UART1&#039;,&lt;br /&gt;
&#039;ST_GPT11&#039;,&lt;br /&gt;
&#039;ST_GPT10&#039;,&lt;br /&gt;
&#039;ST_MCBSP5&#039;,&lt;br /&gt;
&#039;ST_MCBSP1&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MAILBOXES&#039;,&lt;br /&gt;
&#039;ST_OMAPCTRL&#039;,&lt;br /&gt;
&#039;ST_HSOTGUSB_IDLE&#039;,&lt;br /&gt;
&#039;ST_HSOTGUSB_STDBY&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_SDMA&#039;,&lt;br /&gt;
&#039;ST_SDRC&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
cm_idlest1_core_bits = list(reversed(cm_idlest1_core_bits))&lt;br /&gt;
&lt;br /&gt;
#inp = &#039;0020c046&#039;&lt;br /&gt;
inp = &#039;00208042&#039; # after rmmod hci_nokia and hci_uart&lt;br /&gt;
&lt;br /&gt;
v = int(inp, 16)&lt;br /&gt;
&lt;br /&gt;
#print(v)&lt;br /&gt;
b= &amp;quot;{0:b}&amp;quot;.format(v)&lt;br /&gt;
print((32-len(b))*&#039;0&#039; + b)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, 32):&lt;br /&gt;
    is_set = (v &amp;amp; (1 &amp;lt;&amp;lt; i)) &amp;gt;&amp;gt; i&lt;br /&gt;
    if is_set:&lt;br /&gt;
        print(cm_idlest1_core_bits[i])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery calibration ==&lt;br /&gt;
&lt;br /&gt;
Nokia N900 has bq27200 integrated circuit for monitoring battery state. The datasheet can be found here: http://www.ti.com/lit/ds/symlink/bq27200.pdf. If you are curious, check the section called &amp;quot;Gas Gauge Operation&amp;quot; for how the battery calibration is done in a low level.&lt;br /&gt;
&lt;br /&gt;
Here are described the steps necessary to calibrate your battery. This should help if you see &amp;quot;Battery not calibrated&amp;quot; message in the status applet.&lt;br /&gt;
&lt;br /&gt;
* Fully charge Nokia N900. Don&#039;t detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don&#039;t attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don&#039;t connect the device to a charger or a PC using the USB cable.&lt;br /&gt;
* When your Nokia N900 has battery depleted, it will alarm you with the &amp;quot;battery low&amp;quot; sound.&lt;br /&gt;
* Wait for about 20 seconds and attach the charger. If the device was powered off because of battery depletion, it&#039;s fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It&#039;s how the battery calibration works in low level: it can&#039;t change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it&#039;s needed to repeat the calibration cycle several times to get more accurate value. It may take about 3-7 calibration cycles to get the proper mAh value for fully charged battery. If you spend some time on this process, you will get really accurate battery gauge and you will always know how much charge is remaining.&lt;br /&gt;
&lt;br /&gt;
Tip 1. If for any reason you want to reset the battery calibration value to see the message “Battery is not calibrated” again, you should remove the battery from the device for about 6 hours.&lt;br /&gt;
Tip 2. If you replace the battery, you may want to do 1-2 calibration cycles described above to update the gauge for your new battery.&lt;br /&gt;
&lt;br /&gt;
== Accessing MTD ==&lt;br /&gt;
&lt;br /&gt;
List devices:&lt;br /&gt;
 cat /proc/mtd&lt;br /&gt;
&lt;br /&gt;
Mount:&lt;br /&gt;
 apt install mtd-utils&lt;br /&gt;
 mkdir -vp /mnt/fremantle&lt;br /&gt;
 ubiattach -p /dev/mtd5&lt;br /&gt;
 mount -t ubifs ubi:rootfs /mnt/fremantle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Old status table ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.1 || Mainline + PowerVR Patches: https://github.com/maemo-leste/n9xx-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Requires special hardware&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes || Firmware is non-free&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || USB Network, Mass Storage. OTG not working, although it might be possible&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || closed driver&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), but requires complex alsa configuration and currently no ucm support&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono - UI is WIP, see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || N/A || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, might require pulseaudio audio filters&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver needs some work&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A|| No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || evdev interface not supported in mce&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || Yes || Enable in alsamixer (Jack Function in alsamixer to TV OUT), enable with &amp;lt;code&amp;gt;xrandr --output TV --mode 800x480 --same-as LCD&amp;lt;/code&amp;gt;. Set PAL/NTSC with &amp;lt;code&amp;gt;xrandr --output TV --set SignalProperties PAL&amp;lt;/code&amp;gt;, and scale with &amp;lt;code&amp;gt;xrandr --output TV --set TVScale 90&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Yes || TX only (hardware limitation). &lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~300mW || Device does not enter RET or OFF mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1075</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1075"/>
		<updated>2021-05-23T12:07:06Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
|sw_kernel=5.10.4&lt;br /&gt;
|sw_serial=Yes, [[#Serial Cable|special cable]]&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_usb_slave=Gadgets only&lt;br /&gt;
|sw_usb_host=No&lt;br /&gt;
|sw_touchscreen=Yes&lt;br /&gt;
|sw_keyboard=&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_hdmi=Yes&lt;br /&gt;
|sw_tv=&lt;br /&gt;
|sw_3daccel=Yes, [[https://github.com/maemo-leste/pvr-omap4/|SGX540, closed driver|]]&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=untested&lt;br /&gt;
|sw_sms=Yes, no UI&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=&lt;br /&gt;
|sw_2g3gdata=Yes&lt;br /&gt;
|sw_4g=No&lt;br /&gt;
|sw_bluetooth=Yes,  [[#Bluetooth|see notes]] &lt;br /&gt;
|sw_fmtx=No, but apparently exists, needs serdev kernel modules/drivers&lt;br /&gt;
|sw_fmrx=&lt;br /&gt;
|sw_nfc=&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_compass=Yes, no integration&lt;br /&gt;
|sw_gyro=No, needs kernel work&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_als=Yes&lt;br /&gt;
|sw_gps=Yes&lt;br /&gt;
|sw_agps=No, needs kernel/userspace work&lt;br /&gt;
|sw_frontcam=No&lt;br /&gt;
|sw_backcam=No&lt;br /&gt;
|sw_idlepower=70mW, needs sim inserted&lt;br /&gt;
|sw_standbytime=91.8h (with HW4X)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into The Bionic. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Bluetooth ==&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Old status table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.10.4 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| USB slave || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| USB host (OTG) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Wifi || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| IrDA || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Nfc || No || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| AGPS || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Front Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Back Camera(s) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70 mW || Needs sim inserted&lt;br /&gt;
|-&lt;br /&gt;
| Idle Battery life on new battery || 91.8 h || With HW4X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1048</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1048"/>
		<updated>2021-05-23T11:10:30Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.10.4 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| USB slave || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| USB host (OTG) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Wifi || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| IrDA || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Nfc || No || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| AGPS || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Front Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Back Camera(s) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70 mW || Needs sim inserted&lt;br /&gt;
|-&lt;br /&gt;
| Idle Battery life on new battery || 91.8 h || With HW4X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into The Bionic. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1046</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1046"/>
		<updated>2021-05-23T11:10:01Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.10.4 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| USB slave || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| USB host (OTG) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Wifi || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| IrDA || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Nfc || No || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| AGPS || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Front Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Back Camera(s) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70 mW || Needs sim inserted&lt;br /&gt;
|-&lt;br /&gt;
| Idle Battery life on new battery || 91.8 h || With HW4X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into The Bionic. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1044</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1044"/>
		<updated>2021-05-23T10:10:32Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.10.4 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Wifi || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| IrDA || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| AGPS || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Front Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Back Camera(s) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70 mW || Needs sim inserted&lt;br /&gt;
|-&lt;br /&gt;
| Idle Battery life on new battery || 91.8 h || With HW4X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into The Bionic. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1043</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1043"/>
		<updated>2021-05-23T10:03:00Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.10.4 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Wifi || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| IrDA || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| AGPS || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Front Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Back Camera(s) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into The Bionic. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=992</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=992"/>
		<updated>2021-04-30T20:03:16Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.10.4 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into The Bionic. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=972</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=972"/>
		<updated>2021-03-31T20:33:36Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Implemented with Pulseaudio and UCM files&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available in /sys, and as input device via iio-uinput&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A || &lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || See https://elektranox.org/2018/02/0025-droid-camera/&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~120mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
=== Updating Android ===&lt;br /&gt;
&lt;br /&gt;
This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up kexecboot ===&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
=== Install Maemo Leste to the sdcard ===&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
Read modem output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Turn off signal reporting:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in a pulsaudio of you choice switch to the make a phone call profile, and set the output device as desired.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&lt;br /&gt;
Using qmicli:&lt;br /&gt;
# qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
# route del default&lt;br /&gt;
# sudo ifconfig wwan0 up&lt;br /&gt;
# dhclient wwan0&lt;br /&gt;
&lt;br /&gt;
Alternatively if updated to devel icd2 and the maemo gui should allow 3g data connection, if the sim is unlocked and the relevant packages are installed.&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HDMI ====&lt;br /&gt;
Move output to external 1080p monitor.  Disabling DSI-1 output gets xorg pointer displayed on HDMI, for use with a mouse or barrier.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output HDMI-1 --mode 1920x1080 --output DSI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return to internal touchscreen display.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output DSI-1 --auto --rotate right --output HDMI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Keyboard / Mouse sharing with PC ====&lt;br /&gt;
To use droid4 while working at desktop it can be convenient to share mouse and keyboard of the host pc with droid4.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[https://github.com/debauchee/barrier Barrier software-KVM switch]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Developers and testers may wish to disable the googley bits before compiling.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
Cant_have_2_much_leste.jpg&lt;br /&gt;
Leste-neverball.jpg&lt;br /&gt;
Statsfun.jpg&lt;br /&gt;
Leste-glmatrix.png&lt;br /&gt;
Droid4-leste-utox2.jpg&lt;br /&gt;
Droid4-leste-pcsx.jpg&lt;br /&gt;
Droid4-leste-surf_master.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=971</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=971"/>
		<updated>2021-03-31T20:31:37Z</updated>

		<summary type="html">&lt;p&gt;Uvos: /* Stuff to try */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Implemented with Pulseaudio and UCM files&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available in /sys, and as input device via iio-uinput&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A || &lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || See https://elektranox.org/2018/02/0025-droid-camera/&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~120mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
=== Updating Android ===&lt;br /&gt;
&lt;br /&gt;
This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setting up kexecboot ===&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
=== Install Maemo Leste to the sdcard ===&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this over SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read modem output: &lt;br /&gt;
# cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
# printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Not sure, do it anyway:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in a pulsaudio of you choice switch to the make a phone call profile, and set the output device as desired.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&lt;br /&gt;
Using qmicli:&lt;br /&gt;
# qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
# route del default&lt;br /&gt;
# sudo ifconfig wwan0 up&lt;br /&gt;
# dhclient wwan0&lt;br /&gt;
&lt;br /&gt;
Alternatively if updated to devel icd2 and the maemo gui should allow 3g data connection, if the sim is unlocked and the relevant packages are installed.&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HDMI ====&lt;br /&gt;
Move output to external 1080p monitor.  Disabling DSI-1 output gets xorg pointer displayed on HDMI, for use with a mouse or barrier.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output HDMI-1 --mode 1920x1080 --output DSI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return to internal touchscreen display.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output DSI-1 --auto --rotate right --output HDMI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Keyboard / Mouse sharing with PC ====&lt;br /&gt;
To use droid4 while working at desktop it can be convenient to share mouse and keyboard of the host pc with droid4.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[https://github.com/debauchee/barrier Barrier software-KVM switch]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Developers and testers may wish to disable the googley bits before compiling.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
Cant_have_2_much_leste.jpg&lt;br /&gt;
Leste-neverball.jpg&lt;br /&gt;
Statsfun.jpg&lt;br /&gt;
Leste-glmatrix.png&lt;br /&gt;
Droid4-leste-utox2.jpg&lt;br /&gt;
Droid4-leste-pcsx.jpg&lt;br /&gt;
Droid4-leste-surf_master.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=956</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=956"/>
		<updated>2021-01-29T00:34:29Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Nokia N900.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.1 || Mainline + PowerVR Patches: https://github.com/maemo-leste/n9xx-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Requires special hardware&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes || Firmware is non-free&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || USB Network, Mass Storage. OTG not working, although it might be possible&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || closed driver&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Patial || Works (minus speaker protection), but requires complex alsa configuration no ucm support&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || N/A || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, not enabled by default (might require pulseaudio audio filters)&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No ||&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A|| Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || No || evdev interface not supported in mce&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || Yes || Enable in alsamixer (Jack Function in alsamixer to TV OUT), enable with &amp;lt;code&amp;gt;xrandr --output TV --mode 800x480 --same-as LCD&amp;lt;/code&amp;gt;. Set PAL/NTSC with &amp;lt;code&amp;gt;xrandr --output TV --set SignalProperties PAL&amp;lt;/code&amp;gt;, and scale with &amp;lt;code&amp;gt;xrandr --output TV --set TVScale 90&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Yes || TX only (hardware limitation). &lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~300mW || Device dosent enter RET mode or OFF mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card. If using a Windows machine, you can use [https://etcher.io/ Etcher] &#039;&#039;&#039;NB:&#039;&#039;&#039; Etcher does not warn you before starting the flashing operation, so please be extra careful that you choose the correct device to flash to&lt;br /&gt;
&lt;br /&gt;
Then boot from the sd card using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613&lt;br /&gt;
&lt;br /&gt;
=== U-Boot setup ===&lt;br /&gt;
&lt;br /&gt;
==== If you don&#039;t want to configure u-boot from Fremantle, or your Fremantle rootfs is broken), or you just want to install quickly ====&lt;br /&gt;
&lt;br /&gt;
1. Download 0xFFFF and u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
2. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: &#039;&#039;&#039;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3. Open the keyboard slider on the N900, and then issue following command on PC to test boot: &#039;&#039;&#039;./0xFFFF -b&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type &#039;&#039;&#039;run sdboot&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(BE CAREFUL THOUGH. THIS WILL REPLACE THE EXISTING FREMANTLE KERNEL. ONLY DO THIS IF YOU DO NOT CARE ABOUT THE EXISTING MAEMO INSTALLATION OR YOU KNOW HOW TO RECOVER FROM THIS CONDITION)&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
As of 2018/11, the latest pre-alpha image results in a 1.2GB root filesystem with about 100MB to spare. This can be extended, provided that your SD card is big enough.&lt;br /&gt;
Perform the following steps on a Linux machine with none of the SD card&#039;s partitions mounted:&lt;br /&gt;
* assumption: /dev/sda2 is Leste root partition&lt;br /&gt;
* e2fsck -f /dev/sda2&lt;br /&gt;
* use parted/gparted/cfdisk/... to enlarge /dev/sda2 to the desired size&lt;br /&gt;
* resize2fs -p /dev/sda2&lt;br /&gt;
* e2fsck -f /dev/sda2&lt;br /&gt;
&lt;br /&gt;
The latest images have a script, &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt; from https://github.com/maemo-leste/image-builder/blob/master/rootfs-overlay/common/etc/expandcard.sh&lt;br /&gt;
&lt;br /&gt;
=== Serial ===&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* Speakers are enabled by default, but be careful of very high frequencies/levels - there are concerns regarding the possibility to blow them&lt;br /&gt;
&lt;br /&gt;
Also see: https://elinux.org/N900&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
Power usage right now is reported to be about 80mA, which is quite a lot. On a good battery this will last for about 15 hours. Power management on the N900 is being worked on: https://github.com/maemo-leste/bugtracker/issues/170&lt;br /&gt;
&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_management&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_Consumption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This script can be used to decode idle states when this patch is applied: https://github.com/maemo-leste/n9xx-linux/blob/maemo/beowulf/debian/patches/0001_deeper_idle.patch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat idlest.py&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
00001fff 48005020 (584be965) cm_idlest_per blocking bits: 0007e000&lt;br /&gt;
f7df3fb9 48004a20 (b32988a8) cm_idlest1_core blocking bits: 0020c046&lt;br /&gt;
0000000d 48004a28 (f7aa95e6) cm_idlest3_core&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 31 to 0&lt;br /&gt;
cm_idlest1_core_bits = [&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MMC3&#039;,&lt;br /&gt;
&#039;ST_ICR&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MMC2&#039;,&lt;br /&gt;
&#039;ST_MMC1&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_HDQ&#039;,&lt;br /&gt;
&#039;ST_MCSPI4&#039;,&lt;br /&gt;
&#039;ST_MCSPI3&#039;,&lt;br /&gt;
&#039;ST_MCSPI2&#039;,&lt;br /&gt;
&#039;ST_MCSPI1&#039;,&lt;br /&gt;
&#039;ST_I2C3&#039;,&lt;br /&gt;
&#039;ST_I2C2&#039;,&lt;br /&gt;
&#039;ST_I2C1&#039;,&lt;br /&gt;
&#039;ST_UART2&#039;,&lt;br /&gt;
&#039;ST_UART1&#039;,&lt;br /&gt;
&#039;ST_GPT11&#039;,&lt;br /&gt;
&#039;ST_GPT10&#039;,&lt;br /&gt;
&#039;ST_MCBSP5&#039;,&lt;br /&gt;
&#039;ST_MCBSP1&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MAILBOXES&#039;,&lt;br /&gt;
&#039;ST_OMAPCTRL&#039;,&lt;br /&gt;
&#039;ST_HSOTGUSB_IDLE&#039;,&lt;br /&gt;
&#039;ST_HSOTGUSB_STDBY&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_SDMA&#039;,&lt;br /&gt;
&#039;ST_SDRC&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
cm_idlest1_core_bits = list(reversed(cm_idlest1_core_bits))&lt;br /&gt;
&lt;br /&gt;
#inp = &#039;0020c046&#039;&lt;br /&gt;
inp = &#039;00208042&#039; # after rmmod hci_nokia and hci_uart&lt;br /&gt;
&lt;br /&gt;
v = int(inp, 16)&lt;br /&gt;
&lt;br /&gt;
#print(v)&lt;br /&gt;
b= &amp;quot;{0:b}&amp;quot;.format(v)&lt;br /&gt;
print((32-len(b))*&#039;0&#039; + b)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, 32):&lt;br /&gt;
    is_set = (v &amp;amp; (1 &amp;lt;&amp;lt; i)) &amp;gt;&amp;gt; i&lt;br /&gt;
    if is_set:&lt;br /&gt;
        print(cm_idlest1_core_bits[i])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery calibration ==&lt;br /&gt;
&lt;br /&gt;
Nokia N900 has bq27200 integrated circuit for monitoring battery state. The datasheet can be found here: http://www.ti.com/lit/ds/symlink/bq27200.pdf. If you are curious, check the section called &amp;quot;Gas Gauge Operation&amp;quot; for how the battery calibration is done in a low level.&lt;br /&gt;
&lt;br /&gt;
Here are described the steps necessary to calibrate your battery. This should help if you see &amp;quot;Battery not calibrated&amp;quot; message in the status applet.&lt;br /&gt;
&lt;br /&gt;
* Fully charge Nokia N900. Don&#039;t detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don&#039;t attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don&#039;t connect the device to a charger or a PC using the USB cable.&lt;br /&gt;
* When your Nokia N900 has battery depleted, it will alarm you with the &amp;quot;battery low&amp;quot; sound.&lt;br /&gt;
* Wait for about 20 seconds and attach the charger. If the device was powered off because of battery depletion, it&#039;s fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It&#039;s how the battery calibration works in low level: it can&#039;t change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it&#039;s needed to repeat the calibration cycle several times to get more accurate value. It may take about 3-7 calibration cycles to get the proper mAh value for fully charged battery. If you spend some time on this process, you will get really accurate battery gauge and you will always know how much charge is remaining.&lt;br /&gt;
&lt;br /&gt;
Tip 1. If for any reason you want to reset the battery calibration value to see the message “Battery is not calibrated” again, you should remove the battery from the device for about 6 hours.&lt;br /&gt;
Tip 2. If you replace the battery, you may want to do 1-2 calibration cycles described above to update the gauge for your new battery.&lt;br /&gt;
&lt;br /&gt;
== Accessing MTD ==&lt;br /&gt;
&lt;br /&gt;
List devices:&lt;br /&gt;
 cat /proc/mtd&lt;br /&gt;
&lt;br /&gt;
Mount:&lt;br /&gt;
 apt install mtd-utils&lt;br /&gt;
 mkdir -vp /mnt/fremantle&lt;br /&gt;
 ubiattach -p /dev/mtd5&lt;br /&gt;
 mount -t ubifs ubi:rootfs /mnt/fremantle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=955</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=955"/>
		<updated>2021-01-29T00:32:50Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Nokia N900.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.1 || Mainline + PowerVR Patches: https://github.com/maemo-leste/n9xx-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Requires special hardware&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || closed driver&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Patial || Works (minus speaker protection), but requires complex alsa configuration no ucm support&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || N/A || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, not enabled by default (might require pulseaudio audio filters)&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No ||&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A|| Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || No || evdev interface not supported in mce&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || Yes || Enable in alsamixer (Jack Function in alsamixer to TV OUT), enable with &amp;lt;code&amp;gt;xrandr --output TV --mode 800x480 --same-as LCD&amp;lt;/code&amp;gt;. Set PAL/NTSC with &amp;lt;code&amp;gt;xrandr --output TV --set SignalProperties PAL&amp;lt;/code&amp;gt;, and scale with &amp;lt;code&amp;gt;xrandr --output TV --set TVScale 90&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Yes || TX only (hardware limitation). &lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~300mW || Device dosent enter RET mode or OFF mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card. If using a Windows machine, you can use [https://etcher.io/ Etcher] &#039;&#039;&#039;NB:&#039;&#039;&#039; Etcher does not warn you before starting the flashing operation, so please be extra careful that you choose the correct device to flash to&lt;br /&gt;
&lt;br /&gt;
Then boot from the sd card using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613&lt;br /&gt;
&lt;br /&gt;
=== U-Boot setup ===&lt;br /&gt;
&lt;br /&gt;
==== If you don&#039;t want to configure u-boot from Fremantle, or your Fremantle rootfs is broken), or you just want to install quickly ====&lt;br /&gt;
&lt;br /&gt;
1. Download 0xFFFF and u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
2. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: &#039;&#039;&#039;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3. Open the keyboard slider on the N900, and then issue following command on PC to test boot: &#039;&#039;&#039;./0xFFFF -b&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type &#039;&#039;&#039;run sdboot&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(BE CAREFUL THOUGH. THIS WILL REPLACE THE EXISTING FREMANTLE KERNEL. ONLY DO THIS IF YOU DO NOT CARE ABOUT THE EXISTING MAEMO INSTALLATION OR YOU KNOW HOW TO RECOVER FROM THIS CONDITION)&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
As of 2018/11, the latest pre-alpha image results in a 1.2GB root filesystem with about 100MB to spare. This can be extended, provided that your SD card is big enough.&lt;br /&gt;
Perform the following steps on a Linux machine with none of the SD card&#039;s partitions mounted:&lt;br /&gt;
* assumption: /dev/sda2 is Leste root partition&lt;br /&gt;
* e2fsck -f /dev/sda2&lt;br /&gt;
* use parted/gparted/cfdisk/... to enlarge /dev/sda2 to the desired size&lt;br /&gt;
* resize2fs -p /dev/sda2&lt;br /&gt;
* e2fsck -f /dev/sda2&lt;br /&gt;
&lt;br /&gt;
The latest images have a script, &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt; from https://github.com/maemo-leste/image-builder/blob/master/rootfs-overlay/common/etc/expandcard.sh&lt;br /&gt;
&lt;br /&gt;
=== Serial ===&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* Speakers are enabled by default, but be careful of very high frequencies/levels - there are concerns regarding the possibility to blow them&lt;br /&gt;
&lt;br /&gt;
Also see: https://elinux.org/N900&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
Power usage right now is reported to be about 80mA, which is quite a lot. On a good battery this will last for about 15 hours. Power management on the N900 is being worked on: https://github.com/maemo-leste/bugtracker/issues/170&lt;br /&gt;
&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_management&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_Consumption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This script can be used to decode idle states when this patch is applied: https://github.com/maemo-leste/n9xx-linux/blob/maemo/beowulf/debian/patches/0001_deeper_idle.patch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat idlest.py&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
00001fff 48005020 (584be965) cm_idlest_per blocking bits: 0007e000&lt;br /&gt;
f7df3fb9 48004a20 (b32988a8) cm_idlest1_core blocking bits: 0020c046&lt;br /&gt;
0000000d 48004a28 (f7aa95e6) cm_idlest3_core&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 31 to 0&lt;br /&gt;
cm_idlest1_core_bits = [&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MMC3&#039;,&lt;br /&gt;
&#039;ST_ICR&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MMC2&#039;,&lt;br /&gt;
&#039;ST_MMC1&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_HDQ&#039;,&lt;br /&gt;
&#039;ST_MCSPI4&#039;,&lt;br /&gt;
&#039;ST_MCSPI3&#039;,&lt;br /&gt;
&#039;ST_MCSPI2&#039;,&lt;br /&gt;
&#039;ST_MCSPI1&#039;,&lt;br /&gt;
&#039;ST_I2C3&#039;,&lt;br /&gt;
&#039;ST_I2C2&#039;,&lt;br /&gt;
&#039;ST_I2C1&#039;,&lt;br /&gt;
&#039;ST_UART2&#039;,&lt;br /&gt;
&#039;ST_UART1&#039;,&lt;br /&gt;
&#039;ST_GPT11&#039;,&lt;br /&gt;
&#039;ST_GPT10&#039;,&lt;br /&gt;
&#039;ST_MCBSP5&#039;,&lt;br /&gt;
&#039;ST_MCBSP1&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MAILBOXES&#039;,&lt;br /&gt;
&#039;ST_OMAPCTRL&#039;,&lt;br /&gt;
&#039;ST_HSOTGUSB_IDLE&#039;,&lt;br /&gt;
&#039;ST_HSOTGUSB_STDBY&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_SDMA&#039;,&lt;br /&gt;
&#039;ST_SDRC&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
cm_idlest1_core_bits = list(reversed(cm_idlest1_core_bits))&lt;br /&gt;
&lt;br /&gt;
#inp = &#039;0020c046&#039;&lt;br /&gt;
inp = &#039;00208042&#039; # after rmmod hci_nokia and hci_uart&lt;br /&gt;
&lt;br /&gt;
v = int(inp, 16)&lt;br /&gt;
&lt;br /&gt;
#print(v)&lt;br /&gt;
b= &amp;quot;{0:b}&amp;quot;.format(v)&lt;br /&gt;
print((32-len(b))*&#039;0&#039; + b)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, 32):&lt;br /&gt;
    is_set = (v &amp;amp; (1 &amp;lt;&amp;lt; i)) &amp;gt;&amp;gt; i&lt;br /&gt;
    if is_set:&lt;br /&gt;
        print(cm_idlest1_core_bits[i])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery calibration ==&lt;br /&gt;
&lt;br /&gt;
Nokia N900 has bq27200 integrated circuit for monitoring battery state. The datasheet can be found here: http://www.ti.com/lit/ds/symlink/bq27200.pdf. If you are curious, check the section called &amp;quot;Gas Gauge Operation&amp;quot; for how the battery calibration is done in a low level.&lt;br /&gt;
&lt;br /&gt;
Here are described the steps necessary to calibrate your battery. This should help if you see &amp;quot;Battery not calibrated&amp;quot; message in the status applet.&lt;br /&gt;
&lt;br /&gt;
* Fully charge Nokia N900. Don&#039;t detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don&#039;t attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don&#039;t connect the device to a charger or a PC using the USB cable.&lt;br /&gt;
* When your Nokia N900 has battery depleted, it will alarm you with the &amp;quot;battery low&amp;quot; sound.&lt;br /&gt;
* Wait for about 20 seconds and attach the charger. If the device was powered off because of battery depletion, it&#039;s fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It&#039;s how the battery calibration works in low level: it can&#039;t change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it&#039;s needed to repeat the calibration cycle several times to get more accurate value. It may take about 3-7 calibration cycles to get the proper mAh value for fully charged battery. If you spend some time on this process, you will get really accurate battery gauge and you will always know how much charge is remaining.&lt;br /&gt;
&lt;br /&gt;
Tip 1. If for any reason you want to reset the battery calibration value to see the message “Battery is not calibrated” again, you should remove the battery from the device for about 6 hours.&lt;br /&gt;
Tip 2. If you replace the battery, you may want to do 1-2 calibration cycles described above to update the gauge for your new battery.&lt;br /&gt;
&lt;br /&gt;
== Accessing MTD ==&lt;br /&gt;
&lt;br /&gt;
List devices:&lt;br /&gt;
 cat /proc/mtd&lt;br /&gt;
&lt;br /&gt;
Mount:&lt;br /&gt;
 apt install mtd-utils&lt;br /&gt;
 mkdir -vp /mnt/fremantle&lt;br /&gt;
 ubiattach -p /dev/mtd5&lt;br /&gt;
 mount -t ubifs ubi:rootfs /mnt/fremantle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=954</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=954"/>
		<updated>2021-01-29T00:32:03Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Nokia N900.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.1 || Mainline + PowerVR Patches: https://github.com/maemo-leste/n9xx-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Requires special hardware&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || closed driver&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Patial || Works (minus speaker protection), but requires complex alsa configuration no ucm support&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || N/A || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, not enabled by default (might require pulseaudio audio filters)&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No ||&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A|| Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || No || evdev interface not supported in mce&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || Yes || Enable in alsamixer (Jack Function in alsamixer to TV OUT), enable with &amp;lt;code&amp;gt;xrandr --output TV --mode 800x480 --same-as LCD&amp;lt;/code&amp;gt;. Set PAL/NTSC with &amp;lt;code&amp;gt;xrandr --output TV --set SignalProperties PAL&amp;lt;/code&amp;gt;, and scale with &amp;lt;code&amp;gt;xrandr --output TV --set TVScale 90&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Yes || TX only (hardware limitation). &lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~300mW || No device dosent enter RET mode or OFF mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card. If using a Windows machine, you can use [https://etcher.io/ Etcher] &#039;&#039;&#039;NB:&#039;&#039;&#039; Etcher does not warn you before starting the flashing operation, so please be extra careful that you choose the correct device to flash to&lt;br /&gt;
&lt;br /&gt;
Then boot from the sd card using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613&lt;br /&gt;
&lt;br /&gt;
=== U-Boot setup ===&lt;br /&gt;
&lt;br /&gt;
==== If you don&#039;t want to configure u-boot from Fremantle, or your Fremantle rootfs is broken), or you just want to install quickly ====&lt;br /&gt;
&lt;br /&gt;
1. Download 0xFFFF and u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
2. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: &#039;&#039;&#039;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3. Open the keyboard slider on the N900, and then issue following command on PC to test boot: &#039;&#039;&#039;./0xFFFF -b&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type &#039;&#039;&#039;run sdboot&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(BE CAREFUL THOUGH. THIS WILL REPLACE THE EXISTING FREMANTLE KERNEL. ONLY DO THIS IF YOU DO NOT CARE ABOUT THE EXISTING MAEMO INSTALLATION OR YOU KNOW HOW TO RECOVER FROM THIS CONDITION)&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
As of 2018/11, the latest pre-alpha image results in a 1.2GB root filesystem with about 100MB to spare. This can be extended, provided that your SD card is big enough.&lt;br /&gt;
Perform the following steps on a Linux machine with none of the SD card&#039;s partitions mounted:&lt;br /&gt;
* assumption: /dev/sda2 is Leste root partition&lt;br /&gt;
* e2fsck -f /dev/sda2&lt;br /&gt;
* use parted/gparted/cfdisk/... to enlarge /dev/sda2 to the desired size&lt;br /&gt;
* resize2fs -p /dev/sda2&lt;br /&gt;
* e2fsck -f /dev/sda2&lt;br /&gt;
&lt;br /&gt;
The latest images have a script, &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt; from https://github.com/maemo-leste/image-builder/blob/master/rootfs-overlay/common/etc/expandcard.sh&lt;br /&gt;
&lt;br /&gt;
=== Serial ===&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* Speakers are enabled by default, but be careful of very high frequencies/levels - there are concerns regarding the possibility to blow them&lt;br /&gt;
&lt;br /&gt;
Also see: https://elinux.org/N900&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
Power usage right now is reported to be about 80mA, which is quite a lot. On a good battery this will last for about 15 hours. Power management on the N900 is being worked on: https://github.com/maemo-leste/bugtracker/issues/170&lt;br /&gt;
&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_management&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_Consumption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This script can be used to decode idle states when this patch is applied: https://github.com/maemo-leste/n9xx-linux/blob/maemo/beowulf/debian/patches/0001_deeper_idle.patch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat idlest.py&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
00001fff 48005020 (584be965) cm_idlest_per blocking bits: 0007e000&lt;br /&gt;
f7df3fb9 48004a20 (b32988a8) cm_idlest1_core blocking bits: 0020c046&lt;br /&gt;
0000000d 48004a28 (f7aa95e6) cm_idlest3_core&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 31 to 0&lt;br /&gt;
cm_idlest1_core_bits = [&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MMC3&#039;,&lt;br /&gt;
&#039;ST_ICR&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MMC2&#039;,&lt;br /&gt;
&#039;ST_MMC1&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_HDQ&#039;,&lt;br /&gt;
&#039;ST_MCSPI4&#039;,&lt;br /&gt;
&#039;ST_MCSPI3&#039;,&lt;br /&gt;
&#039;ST_MCSPI2&#039;,&lt;br /&gt;
&#039;ST_MCSPI1&#039;,&lt;br /&gt;
&#039;ST_I2C3&#039;,&lt;br /&gt;
&#039;ST_I2C2&#039;,&lt;br /&gt;
&#039;ST_I2C1&#039;,&lt;br /&gt;
&#039;ST_UART2&#039;,&lt;br /&gt;
&#039;ST_UART1&#039;,&lt;br /&gt;
&#039;ST_GPT11&#039;,&lt;br /&gt;
&#039;ST_GPT10&#039;,&lt;br /&gt;
&#039;ST_MCBSP5&#039;,&lt;br /&gt;
&#039;ST_MCBSP1&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MAILBOXES&#039;,&lt;br /&gt;
&#039;ST_OMAPCTRL&#039;,&lt;br /&gt;
&#039;ST_HSOTGUSB_IDLE&#039;,&lt;br /&gt;
&#039;ST_HSOTGUSB_STDBY&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_SDMA&#039;,&lt;br /&gt;
&#039;ST_SDRC&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
cm_idlest1_core_bits = list(reversed(cm_idlest1_core_bits))&lt;br /&gt;
&lt;br /&gt;
#inp = &#039;0020c046&#039;&lt;br /&gt;
inp = &#039;00208042&#039; # after rmmod hci_nokia and hci_uart&lt;br /&gt;
&lt;br /&gt;
v = int(inp, 16)&lt;br /&gt;
&lt;br /&gt;
#print(v)&lt;br /&gt;
b= &amp;quot;{0:b}&amp;quot;.format(v)&lt;br /&gt;
print((32-len(b))*&#039;0&#039; + b)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, 32):&lt;br /&gt;
    is_set = (v &amp;amp; (1 &amp;lt;&amp;lt; i)) &amp;gt;&amp;gt; i&lt;br /&gt;
    if is_set:&lt;br /&gt;
        print(cm_idlest1_core_bits[i])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery calibration ==&lt;br /&gt;
&lt;br /&gt;
Nokia N900 has bq27200 integrated circuit for monitoring battery state. The datasheet can be found here: http://www.ti.com/lit/ds/symlink/bq27200.pdf. If you are curious, check the section called &amp;quot;Gas Gauge Operation&amp;quot; for how the battery calibration is done in a low level.&lt;br /&gt;
&lt;br /&gt;
Here are described the steps necessary to calibrate your battery. This should help if you see &amp;quot;Battery not calibrated&amp;quot; message in the status applet.&lt;br /&gt;
&lt;br /&gt;
* Fully charge Nokia N900. Don&#039;t detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don&#039;t attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don&#039;t connect the device to a charger or a PC using the USB cable.&lt;br /&gt;
* When your Nokia N900 has battery depleted, it will alarm you with the &amp;quot;battery low&amp;quot; sound.&lt;br /&gt;
* Wait for about 20 seconds and attach the charger. If the device was powered off because of battery depletion, it&#039;s fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It&#039;s how the battery calibration works in low level: it can&#039;t change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it&#039;s needed to repeat the calibration cycle several times to get more accurate value. It may take about 3-7 calibration cycles to get the proper mAh value for fully charged battery. If you spend some time on this process, you will get really accurate battery gauge and you will always know how much charge is remaining.&lt;br /&gt;
&lt;br /&gt;
Tip 1. If for any reason you want to reset the battery calibration value to see the message “Battery is not calibrated” again, you should remove the battery from the device for about 6 hours.&lt;br /&gt;
Tip 2. If you replace the battery, you may want to do 1-2 calibration cycles described above to update the gauge for your new battery.&lt;br /&gt;
&lt;br /&gt;
== Accessing MTD ==&lt;br /&gt;
&lt;br /&gt;
List devices:&lt;br /&gt;
 cat /proc/mtd&lt;br /&gt;
&lt;br /&gt;
Mount:&lt;br /&gt;
 apt install mtd-utils&lt;br /&gt;
 mkdir -vp /mnt/fremantle&lt;br /&gt;
 ubiattach -p /dev/mtd5&lt;br /&gt;
 mount -t ubifs ubi:rootfs /mnt/fremantle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=953</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=953"/>
		<updated>2021-01-27T15:39:11Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Nokia N900.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.1 || Mainline + PowerVR Patches: https://github.com/maemo-leste/n9xx-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Requires special hardware&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || closed driver&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Patial || Works (minus speaker protection), but requires complex alsa configuration no ucm support&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || N/A || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, not enabled by default (might require pulseaudio audio filters)&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No ||&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A|| Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || No || evdev interface not supported in mce&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || N/A || Now hardware&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || Yes || Enable in alsamixer (Jack Function in alsamixer to TV OUT), enable with &amp;lt;code&amp;gt;xrandr --output TV --mode 800x480 --same-as LCD&amp;lt;/code&amp;gt;. Set PAL/NTSC with &amp;lt;code&amp;gt;xrandr --output TV --set SignalProperties PAL&amp;lt;/code&amp;gt;, and scale with &amp;lt;code&amp;gt;xrandr --output TV --set TVScale 90&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Yes || TX only (hardware limitation). &lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~300mW || No device dosent enter RET mode or OFF mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card. If using a Windows machine, you can use [https://etcher.io/ Etcher] &#039;&#039;&#039;NB:&#039;&#039;&#039; Etcher does not warn you before starting the flashing operation, so please be extra careful that you choose the correct device to flash to&lt;br /&gt;
&lt;br /&gt;
Then boot from the sd card using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613&lt;br /&gt;
&lt;br /&gt;
=== U-Boot setup ===&lt;br /&gt;
&lt;br /&gt;
==== If you don&#039;t want to configure u-boot from Fremantle, or your Fremantle rootfs is broken), or you just want to install quickly ====&lt;br /&gt;
&lt;br /&gt;
1. Download 0xFFFF and u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
2. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: &#039;&#039;&#039;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3. Open the keyboard slider on the N900, and then issue following command on PC to test boot: &#039;&#039;&#039;./0xFFFF -b&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type &#039;&#039;&#039;run sdboot&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(BE CAREFUL THOUGH. THIS WILL REPLACE THE EXISTING FREMANTLE KERNEL. ONLY DO THIS IF YOU DO NOT CARE ABOUT THE EXISTING MAEMO INSTALLATION OR YOU KNOW HOW TO RECOVER FROM THIS CONDITION)&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
As of 2018/11, the latest pre-alpha image results in a 1.2GB root filesystem with about 100MB to spare. This can be extended, provided that your SD card is big enough.&lt;br /&gt;
Perform the following steps on a Linux machine with none of the SD card&#039;s partitions mounted:&lt;br /&gt;
* assumption: /dev/sda2 is Leste root partition&lt;br /&gt;
* e2fsck -f /dev/sda2&lt;br /&gt;
* use parted/gparted/cfdisk/... to enlarge /dev/sda2 to the desired size&lt;br /&gt;
* resize2fs -p /dev/sda2&lt;br /&gt;
* e2fsck -f /dev/sda2&lt;br /&gt;
&lt;br /&gt;
The latest images have a script, &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt; from https://github.com/maemo-leste/image-builder/blob/master/rootfs-overlay/common/etc/expandcard.sh&lt;br /&gt;
&lt;br /&gt;
=== Serial ===&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* Speakers are enabled by default, but be careful of very high frequencies/levels - there are concerns regarding the possibility to blow them&lt;br /&gt;
&lt;br /&gt;
Also see: https://elinux.org/N900&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
Power usage right now is reported to be about 80mA, which is quite a lot. On a good battery this will last for about 15 hours. Power management on the N900 is being worked on: https://github.com/maemo-leste/bugtracker/issues/170&lt;br /&gt;
&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_management&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_Consumption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This script can be used to decode idle states when this patch is applied: https://github.com/maemo-leste/n9xx-linux/blob/maemo/beowulf/debian/patches/0001_deeper_idle.patch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat idlest.py&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
00001fff 48005020 (584be965) cm_idlest_per blocking bits: 0007e000&lt;br /&gt;
f7df3fb9 48004a20 (b32988a8) cm_idlest1_core blocking bits: 0020c046&lt;br /&gt;
0000000d 48004a28 (f7aa95e6) cm_idlest3_core&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 31 to 0&lt;br /&gt;
cm_idlest1_core_bits = [&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MMC3&#039;,&lt;br /&gt;
&#039;ST_ICR&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MMC2&#039;,&lt;br /&gt;
&#039;ST_MMC1&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_HDQ&#039;,&lt;br /&gt;
&#039;ST_MCSPI4&#039;,&lt;br /&gt;
&#039;ST_MCSPI3&#039;,&lt;br /&gt;
&#039;ST_MCSPI2&#039;,&lt;br /&gt;
&#039;ST_MCSPI1&#039;,&lt;br /&gt;
&#039;ST_I2C3&#039;,&lt;br /&gt;
&#039;ST_I2C2&#039;,&lt;br /&gt;
&#039;ST_I2C1&#039;,&lt;br /&gt;
&#039;ST_UART2&#039;,&lt;br /&gt;
&#039;ST_UART1&#039;,&lt;br /&gt;
&#039;ST_GPT11&#039;,&lt;br /&gt;
&#039;ST_GPT10&#039;,&lt;br /&gt;
&#039;ST_MCBSP5&#039;,&lt;br /&gt;
&#039;ST_MCBSP1&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_MAILBOXES&#039;,&lt;br /&gt;
&#039;ST_OMAPCTRL&#039;,&lt;br /&gt;
&#039;ST_HSOTGUSB_IDLE&#039;,&lt;br /&gt;
&#039;ST_HSOTGUSB_STDBY&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
&#039;ST_SDMA&#039;,&lt;br /&gt;
&#039;ST_SDRC&#039;,&lt;br /&gt;
&#039;RESERVED&#039;,&lt;br /&gt;
]&lt;br /&gt;
&lt;br /&gt;
cm_idlest1_core_bits = list(reversed(cm_idlest1_core_bits))&lt;br /&gt;
&lt;br /&gt;
#inp = &#039;0020c046&#039;&lt;br /&gt;
inp = &#039;00208042&#039; # after rmmod hci_nokia and hci_uart&lt;br /&gt;
&lt;br /&gt;
v = int(inp, 16)&lt;br /&gt;
&lt;br /&gt;
#print(v)&lt;br /&gt;
b= &amp;quot;{0:b}&amp;quot;.format(v)&lt;br /&gt;
print((32-len(b))*&#039;0&#039; + b)&lt;br /&gt;
&lt;br /&gt;
for i in range(0, 32):&lt;br /&gt;
    is_set = (v &amp;amp; (1 &amp;lt;&amp;lt; i)) &amp;gt;&amp;gt; i&lt;br /&gt;
    if is_set:&lt;br /&gt;
        print(cm_idlest1_core_bits[i])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Battery calibration ==&lt;br /&gt;
&lt;br /&gt;
Nokia N900 has bq27200 integrated circuit for monitoring battery state. The datasheet can be found here: http://www.ti.com/lit/ds/symlink/bq27200.pdf. If you are curious, check the section called &amp;quot;Gas Gauge Operation&amp;quot; for how the battery calibration is done in a low level.&lt;br /&gt;
&lt;br /&gt;
Here are described the steps necessary to calibrate your battery. This should help if you see &amp;quot;Battery not calibrated&amp;quot; message in the status applet.&lt;br /&gt;
&lt;br /&gt;
* Fully charge Nokia N900. Don&#039;t detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don&#039;t attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don&#039;t connect the device to a charger or a PC using the USB cable.&lt;br /&gt;
* When your Nokia N900 has battery depleted, it will alarm you with the &amp;quot;battery low&amp;quot; sound.&lt;br /&gt;
* Wait for about 20 seconds and attach the charger. If the device was powered off because of battery depletion, it&#039;s fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It&#039;s how the battery calibration works in low level: it can&#039;t change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it&#039;s needed to repeat the calibration cycle several times to get more accurate value. It may take about 3-7 calibration cycles to get the proper mAh value for fully charged battery. If you spend some time on this process, you will get really accurate battery gauge and you will always know how much charge is remaining.&lt;br /&gt;
&lt;br /&gt;
Tip 1. If for any reason you want to reset the battery calibration value to see the message “Battery is not calibrated” again, you should remove the battery from the device for about 6 hours.&lt;br /&gt;
Tip 2. If you replace the battery, you may want to do 1-2 calibration cycles described above to update the gauge for your new battery.&lt;br /&gt;
&lt;br /&gt;
== Accessing MTD ==&lt;br /&gt;
&lt;br /&gt;
List devices:&lt;br /&gt;
 cat /proc/mtd&lt;br /&gt;
&lt;br /&gt;
Mount:&lt;br /&gt;
 apt install mtd-utils&lt;br /&gt;
 mkdir -vp /mnt/fremantle&lt;br /&gt;
 ubiattach -p /dev/mtd5&lt;br /&gt;
 mount -t ubifs ubi:rootfs /mnt/fremantle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=952</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=952"/>
		<updated>2021-01-27T15:33:40Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.10.4 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into The Bionic. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=894</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=894"/>
		<updated>2020-12-29T22:35:59Z</updated>

		<summary type="html">&lt;p&gt;Uvos: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into The Bionic. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Status&amp;diff=883</id>
		<title>Status</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Status&amp;diff=883"/>
		<updated>2020-12-23T11:54:04Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
For Device specific status pages, see See [[:Category:Device]]&lt;br /&gt;
&lt;br /&gt;
The table below documents what features work on Maemo Leste on at least one device, without (a lot of) console hackery. This usually means that the feature should be decently integrated and that there has to be a UI available. This is *independent* of specific device drivers or just specified devices and doesn&#039;t mean that it necessarily works on a device&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Status&lt;br /&gt;
! Leste software&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Desktop environment || OK ||  hildon || hildon home, hildon desktop, .&lt;br /&gt;
|-&lt;br /&gt;
| [[Terminal]] || OK || [https://github.com/maemo-leste/osso-xterm osso-xterm] || &lt;br /&gt;
|-&lt;br /&gt;
| [[Status/VirtualKeyboard|Virtual keyboard]] || WIP || [https://github.com/maemo-leste/hildon-input-meta hildon-input-meta] || Should work fine for all devices, GTK2 only.&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Wireless|Wireless]] || OK || [https://github.com/maemo-leste/libicd-network-wpasupplicant libicd-network-wpasupplicant] || Works out of the box. Needs testing; https://github.com/maemo-leste/bugtracker/milestone/7&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No(t yet) || ? || &lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Browser|Browser]] || No(t yet) || ? || Various browsers can be installed, none are quite optimal currently. However, surf2 works smoothly, and hopefully can be integrated easily. Some also use netsurf-gtk or firefox&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Audio|Audio]] || WIP || ? || [Basic audio/sounds work (like, notifications, charging notification, etc); need to switch to pulseaudio ; will need to import alsa-policy-enforcement, port OHM&lt;br /&gt;
|-&lt;br /&gt;
| Battery / charging || OK || [https://github.com/maemo-leste/status-area-applet-battery status-area-applet-battery], [https://github.com/maemo-leste/mce mce], [https://github.com/maemo-leste/upower upower] ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/USB Peripheral|USB Peripheral]] || OK || [https://github.com/maemo-leste/hildon-status-bar-usb hildon-status-bar-usb], [https://github.com/maemo-leste/ke-recv ke-recv] || Basic support in place for N900/Droid4/Allwinner, see https://github.com/maemo-leste/bugtracker/issues/39 ; https://github.com/maemo-leste/bugtracker/issues/179 ; https://github.com/maemo-leste/ke-recv &lt;br /&gt;
|-&lt;br /&gt;
| LED control || OK || mce || Make sure the notifications are enabled in settings.&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Mobile Data|Mobile Data]] || WIP || [https://github.com/maemo-leste/connui-cellular connui-cellular] [https://github.com/maemo-leste/libicd-network-ofono libicd-network-ofono] || There is basic libicd-network-ofono, connui-cellular is being ported to ofono&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/GPS|GPS]] || WIP || gpsd or liblocation/location-daemon || Fremantle location services are closed&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/SMS|SMS]] || WIP || ofono, telepathy-ring ? || Test UI: [https://github.com/maemo-leste/unicsy_demo unicsy_demo] [https://github.com/maemo-leste/bugtracker/issues/77 n900 issue]&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Phone Calls|Phone Calls]] || WIP || ofono, telepathy-ring ? || Test UI: [https://github.com/maemo-leste/unicsy_demo unicsy_demo] [https://github.com/maemo-leste/bugtracker/issues/77 n900 issue]&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Application Manager|Application Manager]] || OK || [https://github.com/maemo-leste/hildon-application-manager hildon-application-manager] || Mostly works, but needs serious testing [https://github.com/maemo-leste/bugtracker/issues/202 tracking issue]&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Media Player|Media Player]] || No(t yet) || open media player || [https://github.com/maemo-leste/bugtracker/issues/25 tracking issue]&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/PDF Viewer|PDF Viewer]] || Mostly works || osso-pdf-viewer || [https://github.com/maemo-leste/osso-pdf-viewer osso-pdf-viewer]&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Games|Games &amp;amp; Entertainment]] || OK || Works (available in [[Leste Extras]] || [https://github.com/maemo-leste/bugtracker/issues/18 sdl fullscreen] [https://github.com/maemo-leste/bugtracker/issues/238 game importing]&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Theming|Theming]] || OK || Works with themes (available in [[Leste Extras]] ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Calendar|Calendar]] || OK || Qalendar UI, syncing works. (UI needs some scrolling work) ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=881</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=881"/>
		<updated>2020-12-18T11:10:19Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available in /sys, and as input device via iio-uinput&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A || &lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~120mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
Updating Android. This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this over SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read modem output: &lt;br /&gt;
# cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
# printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Not sure, do it anyway:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in alsamixer, make sure echo cancellation is turned on. I had to set Call out to &amp;quot;speakerphone&amp;quot; and set the right speaker to &amp;quot;voice&amp;quot; codec, and set volume for both call and voice to something non-zero.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
Cant_have_2_much_leste.jpg&lt;br /&gt;
Leste-neverball.jpg&lt;br /&gt;
Statsfun.jpg&lt;br /&gt;
Leste-glmatrix.png&lt;br /&gt;
Droid4-leste-utox2.jpg&lt;br /&gt;
Droid4-leste-pcsx.jpg&lt;br /&gt;
Droid4-leste-surf_master.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=880</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=880"/>
		<updated>2020-12-18T11:08:25Z</updated>

		<summary type="html">&lt;p&gt;Uvos: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available in /sys, and as input device via iio-uinput&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A || &lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~120mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
Updating Android. This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this over SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read modem output: &lt;br /&gt;
# cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
# printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Not sure, do it anyway:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in alsamixer, make sure echo cancellation is turned on. I had to set Call out to &amp;quot;speakerphone&amp;quot; and set the right speaker to &amp;quot;voice&amp;quot; codec, and set volume for both call and voice to something non-zero.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
Cant_have_2_much_leste.jpg&lt;br /&gt;
Leste-neverball.jpg&lt;br /&gt;
Statsfun.jpg&lt;br /&gt;
Leste-glmatrix.png&lt;br /&gt;
Droid4-leste-utox2.jpg&lt;br /&gt;
Droid4-leste-pcsx.jpg&lt;br /&gt;
Droid4-leste-surf_master.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=879</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=879"/>
		<updated>2020-12-18T11:07:54Z</updated>

		<summary type="html">&lt;p&gt;Uvos: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available in /sys, and as input device via iio-uinput&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A || &lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || WIP || needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~120mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
Updating Android. This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this over SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read modem output: &lt;br /&gt;
# cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
# printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Not sure, do it anyway:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in alsamixer, make sure echo cancellation is turned on. I had to set Call out to &amp;quot;speakerphone&amp;quot; and set the right speaker to &amp;quot;voice&amp;quot; codec, and set volume for both call and voice to something non-zero.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
Cant_have_2_much_leste.jpg&lt;br /&gt;
Leste-neverball.jpg&lt;br /&gt;
Statsfun.jpg&lt;br /&gt;
Leste-glmatrix.png&lt;br /&gt;
Droid4-leste-utox2.jpg&lt;br /&gt;
Droid4-leste-pcsx.jpg&lt;br /&gt;
Droid4-leste-surf_master.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=878</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=878"/>
		<updated>2020-12-18T11:07:48Z</updated>

		<summary type="html">&lt;p&gt;Uvos: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=877</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=877"/>
		<updated>2020-12-18T11:07:16Z</updated>

		<summary type="html">&lt;p&gt;Uvos: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available in /sys, and as input device via iio-uinput&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A || &lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || WIP || needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~120mW ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
Updating Android. This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this over SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read modem output: &lt;br /&gt;
# cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
# printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Not sure, do it anyway:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in alsamixer, make sure echo cancellation is turned on. I had to set Call out to &amp;quot;speakerphone&amp;quot; and set the right speaker to &amp;quot;voice&amp;quot; codec, and set volume for both call and voice to something non-zero.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
Cant_have_2_much_leste.jpg&lt;br /&gt;
Leste-neverball.jpg&lt;br /&gt;
Statsfun.jpg&lt;br /&gt;
Leste-glmatrix.png&lt;br /&gt;
Droid4-leste-utox2.jpg&lt;br /&gt;
Droid4-leste-pcsx.jpg&lt;br /&gt;
Droid4-leste-surf_master.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=876</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=876"/>
		<updated>2020-12-18T11:05:08Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70mW || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=875</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=875"/>
		<updated>2020-12-18T11:04:50Z</updated>

		<summary type="html">&lt;p&gt;Uvos: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70mW || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=874</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=874"/>
		<updated>2020-12-18T11:03:52Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || WIP || Needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70mW || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=873</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=873"/>
		<updated>2020-12-18T11:03:24Z</updated>

		<summary type="html">&lt;p&gt;Uvos: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || WIP || Needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70mW || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Unlocking the modem for usage in Europe ==&lt;br /&gt;
&lt;br /&gt;
Tony suggested these values, Wizzup confirmed it to work on his Bionic in Europe/Amsterdam.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install build-essential&lt;br /&gt;
git clone https://github.com/tmlind/tcmdrw&lt;br /&gt;
cd tcmdrw&lt;br /&gt;
make&lt;br /&gt;
./tcmdrw 1877=8703E80400000200&lt;br /&gt;
./tcmdrw 6850=05&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tony also writes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:34 &amp;lt; tmlind&amp;gt; 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&lt;br /&gt;
22:43 &amp;lt; tmlind&amp;gt; Wizzup: great, the 1143 setting is for 1900 frequency only to get decent signal on t-mo in the us&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=844</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=844"/>
		<updated>2020-10-22T18:16:15Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.8.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || WIP || Needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~350mW || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=843</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=843"/>
		<updated>2020-10-22T18:15:47Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.8.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || WIP || Needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
-&lt;br /&gt;
| Idle power consumption || ~350mW || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=841</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=841"/>
		<updated>2020-10-22T17:47:01Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.8.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available in /sys, and as input device via iio-uinput&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || WIP || needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
Updating Android. This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this over SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read modem output: &lt;br /&gt;
# cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
# printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Not sure, do it anyway:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in alsamixer, make sure echo cancellation is turned on. I had to set Call out to &amp;quot;speakerphone&amp;quot; and set the right speaker to &amp;quot;voice&amp;quot; codec, and set volume for both call and voice to something non-zero.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=840</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=840"/>
		<updated>2020-10-22T17:46:46Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.8.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || WIP || Needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normaly you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. I for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=839</id>
		<title>Motorola Droid Bionic</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=839"/>
		<updated>2020-10-22T17:43:25Z</updated>

		<summary type="html">&lt;p&gt;Uvos: Created page with &amp;quot;{{Infobox Device |image=250px |manufacturer=Motorola |codename=Targa |dimensions=127x67.3x12.7mm |release_date=2012-02-10 |soc=TI OMAP4430 |dram=1024MB DDR...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Bionic.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Targa&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.8.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || WIP || Needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid Bionic with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux system&lt;br /&gt;
* Android Tools: fastboot adb&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://phoenix.maemo.org/view/Images/job/leste-image-bionic/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-bionic-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Download or clone https://github.com/IMbackK/bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in bionic-clown-boot&#039;s readme to install kexecboot on your device.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
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/&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=File:Bionic.jpg&amp;diff=838</id>
		<title>File:Bionic.jpg</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=File:Bionic.jpg&amp;diff=838"/>
		<updated>2020-10-22T17:24:29Z</updated>

		<summary type="html">&lt;p&gt;Uvos: Motorola Droid Bionic running leste&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Motorola Droid Bionic running leste&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=837</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=837"/>
		<updated>2020-10-21T12:42:19Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.8.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available in /sys, and as input device via iio-uinput&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || WIP || needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
Updating Android. This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this over SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read modem output: &lt;br /&gt;
# cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
# printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Not sure, do it anyway:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in alsamixer, make sure echo cancellation is turned on. I had to set Call out to &amp;quot;speakerphone&amp;quot; and set the right speaker to &amp;quot;voice&amp;quot; codec, and set volume for both call and voice to something non-zero.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=836</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=836"/>
		<updated>2020-10-21T12:41:40Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.7.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| 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&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available in /sys, and as input device via iio-uinput&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || WIP || needs mce work&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
Updating Android. This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this over SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read modem output: &lt;br /&gt;
# cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
# printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Not sure, do it anyway:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in alsamixer, make sure echo cancellation is turned on. I had to set Call out to &amp;quot;speakerphone&amp;quot; and set the right speaker to &amp;quot;voice&amp;quot; codec, and set volume for both call and voice to something non-zero.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=809</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=809"/>
		<updated>2020-07-23T18:10:39Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.7.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || WIP || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| SMS || WIP || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Currently disabled due to interference with WiFi&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || ? || Available in /sys, but not yet as input device, needs kernel and MCE work https://github.com/maemo-leste/bugtracker/issues/294&lt;br /&gt;
|-&lt;br /&gt;
| Compass || ? || Available in /sys (after loading ak8975 module. No applications using it yet&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || WIP || Sensor works, not yet exposed as evdev device&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes || https://github.com/maemo-leste/mce/pull/8&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || WIP || works&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || ? || Works but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
Updating Android. This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Make Audio Automaticaly set up (Temporary Solution) ====&lt;br /&gt;
Adding this in /etc/rc.local above the &#039;&#039;exit 0&#039;&#039; to make audio work from boot.&lt;br /&gt;
 amixer cset numid=22 HiFi      #set left speaker to HiFi&lt;br /&gt;
 amixer cset numid=21 HiFi      #set right speaker to HiFi&lt;br /&gt;
 amixer cset numid=26 HiFi      #set left headset to HiFi&lt;br /&gt;
 amixer cset numid=25 HiFi      #set right headset to HiFi&lt;br /&gt;
 amixer cset numid=1  50%       #set HiFi volumes to 50%&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this over SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read modem output: &lt;br /&gt;
# cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
# printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Not sure, do it anyway:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in alsamixer, make sure echo cancellation is turned on. I had to set Call out to &amp;quot;speakerphone&amp;quot; and set the right speaker to &amp;quot;voice&amp;quot; codec, and set volume for both call and voice to something non-zero.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=765</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=765"/>
		<updated>2020-06-03T08:49:28Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.6.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || WIP || Reported to work, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| SMS || WIP || Work with AT commands, needs ofono porting work, and then Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Work with AT commands (good call quality, too), needs ofono porting work, and then Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Currently disabled due to interference with WiFi&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || ? || Available in /sys, but not yet as input device, needs kernel and MCE work https://github.com/maemo-leste/bugtracker/issues/294&lt;br /&gt;
|-&lt;br /&gt;
| Compass || ? || Available in /sys (after loading ak8975 module. No applications using it yet&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || WIP || Sensor works, not yet exposed as evdev device&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes || https://github.com/maemo-leste/mce/pull/8&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || No userspace yet (should be in mce)&lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || WIP || works&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || ? || Works but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
Updating Android. This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this over SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read modem output: &lt;br /&gt;
# cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
# printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Not sure, do it anyway:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in alsamixer, make sure echo cancellation is turned on. I had to set Call out to &amp;quot;speakerphone&amp;quot; and set the right speaker to &amp;quot;voice&amp;quot; codec, and set volume for both call and voice to something non-zero.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=764</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=764"/>
		<updated>2020-06-03T08:47:01Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.6.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || WIP || Reported to work, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| SMS || WIP || Work with AT commands, needs ofono porting work, and then Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Work with AT commands (good call quality, too), needs ofono porting work, and then Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Currently disabled due to interference with WiFi&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || ? || Available in /sys, but not yet as input device, needs kernel and MCE work https://github.com/maemo-leste/bugtracker/issues/294&lt;br /&gt;
|-&lt;br /&gt;
| Compass || ? || Available in /sys (after loading ak8975 module. No applications using it yet&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || WIP || Sensor works, not yet exposed as evdev device&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes || https://github.com/maemo-leste/mce/pull/8&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || No userspace yet (should be in mce)&lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || WIP || works&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || ? || Works but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
Updating Android. This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;\pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;\pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this over SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read modem output: &lt;br /&gt;
# cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
# printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Not sure, do it anyway:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in alsamixer, make sure echo cancellation is turned on. I had to set Call out to &amp;quot;speakerphone&amp;quot; and set the right speaker to &amp;quot;voice&amp;quot; codec, and set volume for both call and voice to something non-zero.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=763</id>
		<title>Motorola Droid 4</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=763"/>
		<updated>2020-06-03T08:45:32Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.6.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working (&#039;Speaker Right&#039; set to &#039;HiFi&#039; and &#039;HiFi&#039; set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || WIP || Reported to work, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| SMS || WIP || Work with AT commands, needs ofono porting work, and then Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Work with AT commands (good call quality, too), needs ofono porting work, and then Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Currently disabled due to interference with WiFi&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || ? || Available in /sys, but not yet as input device, needs kernel and MCE work https://github.com/maemo-leste/bugtracker/issues/294&lt;br /&gt;
|-&lt;br /&gt;
| Compass || ? || Available in /sys (after loading ak8975 module. No applications using it yet&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || WIP || Sensor works, not yet exposed as evdev device&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes || https://github.com/maemo-leste/mce/pull/8&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || No userspace yet (should be in mce)&lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || WIP || works&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || ? || Works but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid4 with fully charged battery&lt;br /&gt;
* MicroUSB cable&lt;br /&gt;
* MicroSD card&lt;br /&gt;
&lt;br /&gt;
Software requirements:&lt;br /&gt;
* Host Linux or Windows system&lt;br /&gt;
* Android Tools: fastboot&lt;br /&gt;
* Flashing tools:&lt;br /&gt;
** XZ Utils and coreutils for Linux&lt;br /&gt;
** Etcher[https://github.com/balena-io/etcher] for Windows&lt;br /&gt;
&lt;br /&gt;
Download from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
&lt;br /&gt;
# VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# flash-droid-4-fw.sh&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid4-*.img.xz&lt;br /&gt;
&lt;br /&gt;
Download from https://github.com/tmlind/droid4-kexecboot.git&lt;br /&gt;
&lt;br /&gt;
# utags-mmcblk1p13.bin&lt;br /&gt;
# droid4-kexecboot.img&lt;br /&gt;
&lt;br /&gt;
Check what kernel version your Android OS runs.&lt;br /&gt;
For this go to Settings -&amp;gt; About phone. Slide to the bottom, where you can see &amp;quot;Kernel version&amp;quot;.&lt;br /&gt;
If you have at least 3.0.8, you may skip &amp;quot;Updating Android&amp;quot; step below.&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
&lt;br /&gt;
# Create a working directory with above mentioned files in it&lt;br /&gt;
# unzip VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml.zip&lt;br /&gt;
# Power off Droid4 and connect it to the host machine with MicroUSB cable&lt;br /&gt;
# Start the device in fastboot mode. For this press power button and bottom volume key simultaneously and release them after a second.&lt;br /&gt;
&lt;br /&gt;
Updating Android. This will reinstall the Android OS on your device, deleting all user data. Do a backup, if you want to save something. When everything is ready, go to the working directory mentioned above and run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pushd VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml&lt;br /&gt;
sudo bash ../flash-droid-4-fw.sh&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, assuming you are in the working directory, install kexecboot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo fastboot flash mbm VRZ_XT894_9.8.2O-72_VZW-18-8_CFC.xml/allow-mbmloader-flashing-mbm.bin&lt;br /&gt;
sudo fastboot reboot-bootloader&lt;br /&gt;
sudo fastboot flash bpsw droid4-kexecboot.img&lt;br /&gt;
sudo fastboot flash utags utags-mmcblk1p13.bin&lt;br /&gt;
sudo fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you did &amp;quot;Updating Android&amp;quot; the device should run the firstboot steps.&lt;br /&gt;
If you didn&#039;t, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab latest image from https://maedevu.maemo.org/images/droid4/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
== Serial Cable ==&lt;br /&gt;
&lt;br /&gt;
As explained at http://muru.com/linux/d4 , the Droid 4 exposes 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 Droid 4, using instructions at https://jethomson.wordpress.com/2010/02/21/diy-usb-to-serial-cable-for-3usd/&lt;br /&gt;
&lt;br /&gt;
While using the serial cable, if you lose the connection, the following may help:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
18:43 &amp;lt; tmlind&amp;gt; sicelo: hmm the uart debug cable multiplexing still has issues, if the uart disappears during boot it should come back with &lt;br /&gt;
                the console login propt later&lt;br /&gt;
18:45 &amp;lt; tmlind&amp;gt; try plugging in a pc usb cable then back to uart cable in case that might help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Blinkenlights ====&lt;br /&gt;
Adding this in rc.local above the &#039;&#039;exit 0&#039;&#039; gets you some blinkenlights to watschen und relaxen.&lt;br /&gt;
 echo cpu &amp;gt; /sys/class/leds/lm3532::kbd_backlight/trigger # gets you a cpu activity monitor on the keyboard backlight&lt;br /&gt;
 echo mmc0 &amp;gt; /sys/class/leds/shift-key-light/trigger      # gets you a &#039;hdd led&#039; of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 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.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
# apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
Run calibration:&lt;br /&gt;
# sudo maserati-calibrate&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this over SSH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Read modem output: &lt;br /&gt;
# cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
# printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Not sure, do it anyway:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&lt;br /&gt;
# printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in alsamixer, make sure echo cancellation is turned on. I had to set Call out to &amp;quot;speakerphone&amp;quot; and set the right speaker to &amp;quot;voice&amp;quot; codec, and set volume for both call and voice to something non-zero.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; route del default&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; sudo ifconfig wwan0 up&lt;br /&gt;
22:12 &amp;lt; pave1&amp;gt; dhclient wwan0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there&#039;s a probably kernel gnss bug for gsp access fyi, you can currently only open one connection before you have to restart gpsd :)&lt;br /&gt;
&lt;br /&gt;
Can try to &amp;lt;pre&amp;gt;&lt;br /&gt;
mkfifo /tmp/gps&lt;br /&gt;
cat /dev/gnss0 &amp;gt; /tmp/gps&lt;br /&gt;
Then point gpsd to use /tmp/gps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== USSD ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:45 &amp;lt; tmlind&amp;gt; fyi, here&#039;s how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Motorola-Droid4-20200125.jpeg&lt;br /&gt;
Droid4-neofetch.JPG&lt;br /&gt;
Droid4_htop.jpg&lt;br /&gt;
Droid4_leste_logo.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Virtual_Machine&amp;diff=761</id>
		<title>Virtual Machine</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Virtual_Machine&amp;diff=761"/>
		<updated>2020-05-29T13:39:06Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Device&lt;br /&gt;
|image=&lt;br /&gt;
|manufacturer=Generic&lt;br /&gt;
|codename=&lt;br /&gt;
|dimensions=&lt;br /&gt;
|release_date=&lt;br /&gt;
|soc=&lt;br /&gt;
|dram=&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=&lt;br /&gt;
|video=&lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Generic virtual machine target. This is particularly useful when doing development and testing.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
https://maedevu.maemo.org/images/virtual-machines/&lt;br /&gt;
&lt;br /&gt;
There are three different types of images: VirtualBox (.box), QEMU (.qcow2, .vdi) and Vagrant. The VirtualBox image may be converted to a VMware VMDK image which has been reported to perform better and have good hardware acceleration.&lt;br /&gt;
Converting the qcow2 image to raw allows it to be used on real hardware.&lt;br /&gt;
&lt;br /&gt;
=== VirtualBox ===&lt;br /&gt;
&lt;br /&gt;
Download latest .vdi.xz image, unpack it with &amp;quot;xz -d&amp;quot; command.&lt;br /&gt;
Create new Virtual Machine, select &amp;quot;Debian (64-bit)&amp;quot; and 1024MB RAM. Use the downloaded file as virtual hard disk.&lt;br /&gt;
You are done!&lt;br /&gt;
&lt;br /&gt;
=== QEMU ===&lt;br /&gt;
&lt;br /&gt;
In general something like:&lt;br /&gt;
  qemu-system-x86_64 -hda maemo-leste-1.0-amd64.qcow2 -enable-kvm -cpu host -smp cores=2 -m 1024 &lt;br /&gt;
should work. But there seem to be issues with some QEMU versions, for more details see [https://github.com/maemo-leste/bugtracker/issues/198 issue#198].&lt;br /&gt;
&lt;br /&gt;
To set up a port forward for SSH, add:&lt;br /&gt;
  -nic user,hostfwd=tcp:127.0.0.1:7722-:22&lt;br /&gt;
And then log in like this (password: &amp;lt;code&amp;gt;toor&amp;lt;/code&amp;gt;):&lt;br /&gt;
  ssh root@localhost -p 7722&lt;br /&gt;
&lt;br /&gt;
If the mouse pointer is grabbed and no cursor shows, you can add:&lt;br /&gt;
  -usb -device usb-tablet&lt;br /&gt;
to the command line. Alternatively if that dose not work you can instead add:&lt;br /&gt;
  -usb -device usb-mouse -machine vmport=off&lt;br /&gt;
&lt;br /&gt;
If you have a USB modem you can also use that in QEMU. You can either use sudo to elevate your privileges to be able to use it:&lt;br /&gt;
  sudo qemu-system-x86_64 -hda maemo-leste-1.0-amd64-virtual-20200324.qcow2 -enable-kvm -cpu host -smp cores=2 -m 1024 \&lt;br /&gt;
  -nic user,hostfwd=tcp:127.0.0.1:7722-:22 \&lt;br /&gt;
  -usb -device usb-ehci,id=ehci \&lt;br /&gt;
  -device usb-host,bus=ehci.0,vendorid=0x0bdb,productid=0x193e&lt;br /&gt;
&lt;br /&gt;
Or you can make a udev rule for your device. For example, with a Lenovo Ericsson N5321 gw you can create &amp;quot;/etc/udev/rules.d/45-n5321.rules&amp;quot; with this in it:&lt;br /&gt;
  # Lenovo Ericsson N5321 gw simple udev rule&lt;br /&gt;
  SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;0bdb&amp;quot;, ATTRS{idProduct}==&amp;quot;193e&amp;quot;, \&lt;br /&gt;
    MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And then activate it by running these two commands as root:&lt;br /&gt;
  # udevadm control --reload-rules&lt;br /&gt;
  # udevadm trigger&lt;br /&gt;
&lt;br /&gt;
Now you can run QEMU without the need for sudo!&lt;br /&gt;
&lt;br /&gt;
=== virt-manager ===&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/maemo-leste/bugtracker/issues/291#issuecomment-575952497 here].&lt;br /&gt;
&lt;br /&gt;
== Initial configuration ==&lt;br /&gt;
&lt;br /&gt;
On the first run you may want to generate ssh host keys and set the timezone. To do so open the &amp;quot;X Terminal&amp;quot; application and run:&lt;br /&gt;
 sudo su -&lt;br /&gt;
 dpkg-reconfigure openssh-server&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Make the system up-to-date:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt upgrade&lt;br /&gt;
 apt install linux-image-amd64&lt;br /&gt;
 reboot&lt;br /&gt;
&lt;br /&gt;
To get networking to work (at least in virtualbox), launch a shell and do &lt;br /&gt;
 sudo ifconfig eth0 up&lt;br /&gt;
 sudo dhclient eth0&lt;br /&gt;
&lt;br /&gt;
== Connectivity ==&lt;br /&gt;
&lt;br /&gt;
If you have a modem exposed to QEMU, you still need to do some steps manually to get connectivity.&lt;br /&gt;
&lt;br /&gt;
First off you need to add the development APT repository to your APT sources:&lt;br /&gt;
 # echo &#039;deb https://maedevu.maemo.org/leste beowulf-devel main contrib non-free&#039; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
Now update and upgrade:&lt;br /&gt;
 # apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&lt;br /&gt;
Then you can install these things:&lt;br /&gt;
 # apt install ofono libicd-network-ofono connui-iapsettings-gprs connui-statusbar-cellular connui-home-cellular connui-cellular-settings connui-conndlgs-cellular&lt;br /&gt;
&lt;br /&gt;
We need mdbus2 to manipulate oFono:&lt;br /&gt;
 # wget http://ftp.nl.debian.org/debian/pool/main/m/mdbus/mdbus2_2.3.3-2_amd64.deb&lt;br /&gt;
 # dpkg -i mdbus2_2.3.3-2_amd64.deb&lt;br /&gt;
&lt;br /&gt;
Then we can check if oFono finds our modem:&lt;br /&gt;
 # mdbus2 -s org.ofono&lt;br /&gt;
 /&lt;br /&gt;
 /bluetooth&lt;br /&gt;
 /bluetooth/profile&lt;br /&gt;
 /bluetooth/profile/dun_gw&lt;br /&gt;
 /bluetooth/profile/hfp_ag&lt;br /&gt;
 /bluetooth/profile/hfp_hf&lt;br /&gt;
 /mbm_0&lt;br /&gt;
&lt;br /&gt;
Then can check our mbm_0 modem:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0&lt;br /&gt;
 [METHOD]   org.freedesktop.DBus.Introspectable.Introspect() -&amp;gt; (s:xml)&lt;br /&gt;
 [METHOD]   org.ofono.Modem.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.Modem.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.Modem.PropertyChanged(s:name, v:value)&lt;br /&gt;
&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.Modem.GetProperties&lt;br /&gt;
 ({&#039;Online&#039;: &amp;lt;false&amp;gt;, &#039;Powered&#039;: &amp;lt;false&amp;gt;, &#039;Lockdown&#039;: &amp;lt;false&amp;gt;, &#039;Emergency&#039;: &amp;lt;false&amp;gt;, &#039;SystemPath&#039;: &amp;lt;&#039;/sys/devices/pci0000:00/0000:00:04.0/usb1/1-1&#039;&amp;gt;, &#039;Interfaces&#039;: &amp;lt;@as []&amp;gt;, &#039;Features&#039;: &amp;lt;@as []&amp;gt;, &#039;Type&#039;: &amp;lt;&#039;hardware&#039;&amp;gt;},)&lt;br /&gt;
&lt;br /&gt;
Power on the modem:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.Modem.SetProperty Powered true&lt;br /&gt;
 ()&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.Modem.GetProperties&lt;br /&gt;
 ({&#039;Online&#039;: &amp;lt;false&amp;gt;, &#039;Powered&#039;: &amp;lt;true&amp;gt;, &#039;Lockdown&#039;: &amp;lt;false&amp;gt;, &#039;Emergency&#039;: &amp;lt;false&amp;gt;, &#039;Manufacturer&#039;: &amp;lt;&#039;Lenovo&#039;&amp;gt;, &#039;Model&#039;: &amp;lt;&#039;N5321 gw&#039;&amp;gt;, &#039;Revision&#039;: &amp;lt;&#039;R3C11&#039;&amp;gt;, &#039;Serial&#039;: &amp;lt;&#039;xxxxxxxxxxxx&#039;&amp;gt;, &#039;SystemPath&#039;: &amp;lt;&#039;/sys/devices/pci0000:00/0000:00:04.0/usb1/1-1&#039;&amp;gt;, &#039;Interfaces&#039;: &amp;lt;[&#039;org.ofono.SimManager&#039;]&amp;gt;, &#039;Features&#039;: &amp;lt;[&#039;sim&#039;]&amp;gt;, &#039;Type&#039;: &amp;lt;&#039;hardware&#039;&amp;gt;},)&lt;br /&gt;
&lt;br /&gt;
Check if we need to enter a pin:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.SimManager.GetProperties&lt;br /&gt;
 ({&#039;Present&#039;: &amp;lt;true&amp;gt;, &#039;CardIdentifier&#039;: &amp;lt;&#039;xxxxxx&#039;&amp;gt;, &#039;FixedDialing&#039;: &amp;lt;false&amp;gt;, &#039;BarredDialing&#039;: &amp;lt;false&amp;gt;, &#039;SubscriberNumbers&#039;: &amp;lt;@as []&amp;gt;, &#039;LockedPins&#039;: &amp;lt;[&#039;pin&#039;]&amp;gt;, &#039;PreferredLanguages&#039;: &amp;lt;[&#039;de&#039;, &#039;en&#039;, &#039;fr&#039;]&amp;gt;, &#039;PinRequired&#039;: &amp;lt;&#039;pin&#039;&amp;gt;, &#039;Retries&#039;: &amp;lt;{&#039;pin&#039;: byte 0x03, &#039;pin2&#039;: 0x03, &#039;puk&#039;: 0x0a, &#039;puk2&#039;: 0x0a}&amp;gt;, &#039;CardSlotCount&#039;: &amp;lt;uint32 1&amp;gt;, &#039;ActiveCardSlot&#039;: &amp;lt;uint32 1&amp;gt;},)&lt;br /&gt;
&lt;br /&gt;
If PinRequired is &#039;pin&#039; we need to enter a pin to unlock the sim:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.SimManager.EnterPin pin 1234&lt;br /&gt;
 ()&lt;br /&gt;
&lt;br /&gt;
Then we can bring the modem online:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.Modem.SetProperty Online true&lt;br /&gt;
 ()&lt;br /&gt;
&lt;br /&gt;
If we now redo the first mdbus2 command on /mbm_0:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0&lt;br /&gt;
 [METHOD]   org.freedesktop.DBus.Introspectable.Introspect() -&amp;gt; (s:xml)&lt;br /&gt;
 [METHOD]   org.ofono.Modem.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.Modem.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.Modem.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.ChangePin(s:type, s:oldpin, s:newpin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.EnterPin(s:type, s:pin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.ResetPin(s:type, s:puk, s:newpin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.LockPin(s:type, s:pin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.UnlockPin(s:type, s:pin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.GetIcon(y:id) -&amp;gt; (ay:icon)&lt;br /&gt;
 [SIGNAL]   org.ofono.SimManager.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.AllowedAccessPoints.GetAllowedAccessPoints() -&amp;gt; (as:apnlist)&lt;br /&gt;
 [METHOD]   org.ofono.SimAuthentication.GetApplications() -&amp;gt; (a{oa{sv}}:applications)&lt;br /&gt;
 [METHOD]   org.ofono.SimAuthentication.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.SimToolkit.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.SimToolkit.SelectItem(y:item, o:agent) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimToolkit.RegisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimToolkit.UnregisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.SimToolkit.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.RadioSettings.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.RadioSettings.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.RadioSettings.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.MessageManager.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.MessageManager.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.MessageManager.SendMessage(s:to, s:text) -&amp;gt; (o:path)&lt;br /&gt;
 [METHOD]   org.ofono.MessageManager.GetMessages() -&amp;gt; (a(oa{sv}):messages)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.IncomingMessage(s:message, a{sv}:info)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.ImmediateMessage(s:message, a{sv}:info)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.MessageAdded(o:path, a{sv}:properties)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.MessageRemoved(o:path)&lt;br /&gt;
 [METHOD]   org.ofono.PushNotification.RegisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.PushNotification.UnregisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SmartMessaging.RegisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SmartMessaging.UnregisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SmartMessaging.SendBusinessCard(s:to, ay:card) -&amp;gt; (o:path)&lt;br /&gt;
 [METHOD]   org.ofono.SmartMessaging.SendAppointment(s:to, ay:appointment) -&amp;gt; (o:path)&lt;br /&gt;
 [METHOD]   org.ofono.LocationReporting.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.LocationReporting.Request() -&amp;gt; (h:fd)&lt;br /&gt;
 [METHOD]   org.ofono.LocationReporting.Release() -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.LocationReporting.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.SupplementaryServices.Initiate(s:command) -&amp;gt; (s:result_name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.SupplementaryServices.Respond(s:reply) -&amp;gt; (s:result)&lt;br /&gt;
 [METHOD]   org.ofono.SupplementaryServices.Cancel() -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SupplementaryServices.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [SIGNAL]   org.ofono.SupplementaryServices.NotificationReceived(s:message)&lt;br /&gt;
 [SIGNAL]   org.ofono.SupplementaryServices.RequestReceived(s:message)&lt;br /&gt;
 [SIGNAL]   org.ofono.SupplementaryServices.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.CellBroadcast.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.CellBroadcast.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.CellBroadcast.PropertyChanged(s:property, v:value)&lt;br /&gt;
 [SIGNAL]   org.ofono.CellBroadcast.IncomingBroadcast(s:message, q:channel)&lt;br /&gt;
 [SIGNAL]   org.ofono.CellBroadcast.EmergencyBroadcast(s:message, a{sv}:dict)&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.AddContext(s:type) -&amp;gt; (o:path)&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.RemoveContext(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.DeactivateAll() -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.GetContexts() -&amp;gt; (a(oa{sv}):contexts_with_properties)&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.ResetContexts() -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.ConnectionManager.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [SIGNAL]   org.ofono.ConnectionManager.ContextAdded(o:path, a{sv}:properties)&lt;br /&gt;
 [SIGNAL]   org.ofono.ConnectionManager.ContextRemoved(o:path)&lt;br /&gt;
 [METHOD]   org.ofono.NetworkRegistration.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.NetworkRegistration.Register() -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.NetworkRegistration.GetOperators() -&amp;gt; (a(oa{sv}):operators_with_properties)&lt;br /&gt;
 [METHOD]   org.ofono.NetworkRegistration.Scan() -&amp;gt; (a(oa{sv}):operators_with_properties)&lt;br /&gt;
 [SIGNAL]   org.ofono.NetworkRegistration.PropertyChanged(s:name, v:value)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Virtual_Machine&amp;diff=760</id>
		<title>Virtual Machine</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Virtual_Machine&amp;diff=760"/>
		<updated>2020-05-29T13:38:19Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Device&lt;br /&gt;
|image=&lt;br /&gt;
|manufacturer=Generic&lt;br /&gt;
|codename=&lt;br /&gt;
|dimensions=&lt;br /&gt;
|release_date=&lt;br /&gt;
|soc=&lt;br /&gt;
|dram=&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=&lt;br /&gt;
|video=&lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Generic virtual machine target. This is particularly useful when doing development and testing.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
https://maedevu.maemo.org/images/virtual-machines/&lt;br /&gt;
&lt;br /&gt;
There are three different types of images: VirtualBox (.box), QEMU (.qcow2, .vdi) and Vagrant. The VirtualBox image may be converted to a VMware VMDK image which has been reported to perform better and have good hardware acceleration.&lt;br /&gt;
Converting the qcow2 image to raw allows it to be used on real hardware.&lt;br /&gt;
&lt;br /&gt;
=== VirtualBox ===&lt;br /&gt;
&lt;br /&gt;
Download latest .vdi.xz image, unpack it with &amp;quot;xz -d&amp;quot; command.&lt;br /&gt;
Create new Virtual Machine, select &amp;quot;Debian (64-bit)&amp;quot; and 1024MB RAM. Use the downloaded file as virtual hard disk.&lt;br /&gt;
You are done!&lt;br /&gt;
&lt;br /&gt;
=== QEMU ===&lt;br /&gt;
&lt;br /&gt;
In general something like&lt;br /&gt;
  qemu-system-x86_64 -hda maemo-leste-1.0-amd64.qcow2 -enable-kvm -cpu host -smp cores=2 -m 1024 &lt;br /&gt;
should work. But there seem to be issues with some QEMU versions, for more details see [https://github.com/maemo-leste/bugtracker/issues/198 issue#198].&lt;br /&gt;
&lt;br /&gt;
To set up a port forward for SSH, add:&lt;br /&gt;
  -nic user,hostfwd=tcp:127.0.0.1:7722-:22&lt;br /&gt;
And then log in like this (password: &amp;lt;code&amp;gt;toor&amp;lt;/code&amp;gt;):&lt;br /&gt;
  ssh root@localhost -p 7722&lt;br /&gt;
&lt;br /&gt;
If the mouse pointer is grabbed and no cursor shows, you can add&lt;br /&gt;
  -usb -device usb-tablet&lt;br /&gt;
to the command line&lt;br /&gt;
&lt;br /&gt;
Alternatively if that dose not work you can instead add&lt;br /&gt;
  -usb -device usb-mouse -machine vmport=off&lt;br /&gt;
&lt;br /&gt;
If you have a USB modem you can also use that in QEMU. You can either use sudo to elevate your privileges to be able to use it:&lt;br /&gt;
  sudo qemu-system-x86_64 -hda maemo-leste-1.0-amd64-virtual-20200324.qcow2 -enable-kvm -cpu host -smp cores=2 -m 1024 \&lt;br /&gt;
  -nic user,hostfwd=tcp:127.0.0.1:7722-:22 \&lt;br /&gt;
  -usb -device usb-ehci,id=ehci \&lt;br /&gt;
  -device usb-host,bus=ehci.0,vendorid=0x0bdb,productid=0x193e&lt;br /&gt;
&lt;br /&gt;
Or you can make a udev rule for your device. For example, with a Lenovo Ericsson N5321 gw you can create &amp;quot;/etc/udev/rules.d/45-n5321.rules&amp;quot; with this in it:&lt;br /&gt;
  # Lenovo Ericsson N5321 gw simple udev rule&lt;br /&gt;
  SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;0bdb&amp;quot;, ATTRS{idProduct}==&amp;quot;193e&amp;quot;, \&lt;br /&gt;
    MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And then activate it by running these two commands as root:&lt;br /&gt;
  # udevadm control --reload-rules&lt;br /&gt;
  # udevadm trigger&lt;br /&gt;
&lt;br /&gt;
Now you can run QEMU without the need for sudo!&lt;br /&gt;
&lt;br /&gt;
=== virt-manager ===&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/maemo-leste/bugtracker/issues/291#issuecomment-575952497 here].&lt;br /&gt;
&lt;br /&gt;
== Initial configuration ==&lt;br /&gt;
&lt;br /&gt;
On the first run you may want to generate ssh host keys and set the timezone. To do so open the &amp;quot;X Terminal&amp;quot; application and run:&lt;br /&gt;
 sudo su -&lt;br /&gt;
 dpkg-reconfigure openssh-server&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Make the system up-to-date:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt upgrade&lt;br /&gt;
 apt install linux-image-amd64&lt;br /&gt;
 reboot&lt;br /&gt;
&lt;br /&gt;
To get networking to work (at least in virtualbox), launch a shell and do &lt;br /&gt;
 sudo ifconfig eth0 up&lt;br /&gt;
 sudo dhclient eth0&lt;br /&gt;
&lt;br /&gt;
== Connectivity ==&lt;br /&gt;
&lt;br /&gt;
If you have a modem exposed to QEMU, you still need to do some steps manually to get connectivity.&lt;br /&gt;
&lt;br /&gt;
First off you need to add the development APT repository to your APT sources:&lt;br /&gt;
 # echo &#039;deb https://maedevu.maemo.org/leste beowulf-devel main contrib non-free&#039; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
Now update and upgrade:&lt;br /&gt;
 # apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&lt;br /&gt;
Then you can install these things:&lt;br /&gt;
 # apt install ofono libicd-network-ofono connui-iapsettings-gprs connui-statusbar-cellular connui-home-cellular connui-cellular-settings connui-conndlgs-cellular&lt;br /&gt;
&lt;br /&gt;
We need mdbus2 to manipulate oFono:&lt;br /&gt;
 # wget http://ftp.nl.debian.org/debian/pool/main/m/mdbus/mdbus2_2.3.3-2_amd64.deb&lt;br /&gt;
 # dpkg -i mdbus2_2.3.3-2_amd64.deb&lt;br /&gt;
&lt;br /&gt;
Then we can check if oFono finds our modem:&lt;br /&gt;
 # mdbus2 -s org.ofono&lt;br /&gt;
 /&lt;br /&gt;
 /bluetooth&lt;br /&gt;
 /bluetooth/profile&lt;br /&gt;
 /bluetooth/profile/dun_gw&lt;br /&gt;
 /bluetooth/profile/hfp_ag&lt;br /&gt;
 /bluetooth/profile/hfp_hf&lt;br /&gt;
 /mbm_0&lt;br /&gt;
&lt;br /&gt;
Then can check our mbm_0 modem:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0&lt;br /&gt;
 [METHOD]   org.freedesktop.DBus.Introspectable.Introspect() -&amp;gt; (s:xml)&lt;br /&gt;
 [METHOD]   org.ofono.Modem.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.Modem.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.Modem.PropertyChanged(s:name, v:value)&lt;br /&gt;
&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.Modem.GetProperties&lt;br /&gt;
 ({&#039;Online&#039;: &amp;lt;false&amp;gt;, &#039;Powered&#039;: &amp;lt;false&amp;gt;, &#039;Lockdown&#039;: &amp;lt;false&amp;gt;, &#039;Emergency&#039;: &amp;lt;false&amp;gt;, &#039;SystemPath&#039;: &amp;lt;&#039;/sys/devices/pci0000:00/0000:00:04.0/usb1/1-1&#039;&amp;gt;, &#039;Interfaces&#039;: &amp;lt;@as []&amp;gt;, &#039;Features&#039;: &amp;lt;@as []&amp;gt;, &#039;Type&#039;: &amp;lt;&#039;hardware&#039;&amp;gt;},)&lt;br /&gt;
&lt;br /&gt;
Power on the modem:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.Modem.SetProperty Powered true&lt;br /&gt;
 ()&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.Modem.GetProperties&lt;br /&gt;
 ({&#039;Online&#039;: &amp;lt;false&amp;gt;, &#039;Powered&#039;: &amp;lt;true&amp;gt;, &#039;Lockdown&#039;: &amp;lt;false&amp;gt;, &#039;Emergency&#039;: &amp;lt;false&amp;gt;, &#039;Manufacturer&#039;: &amp;lt;&#039;Lenovo&#039;&amp;gt;, &#039;Model&#039;: &amp;lt;&#039;N5321 gw&#039;&amp;gt;, &#039;Revision&#039;: &amp;lt;&#039;R3C11&#039;&amp;gt;, &#039;Serial&#039;: &amp;lt;&#039;xxxxxxxxxxxx&#039;&amp;gt;, &#039;SystemPath&#039;: &amp;lt;&#039;/sys/devices/pci0000:00/0000:00:04.0/usb1/1-1&#039;&amp;gt;, &#039;Interfaces&#039;: &amp;lt;[&#039;org.ofono.SimManager&#039;]&amp;gt;, &#039;Features&#039;: &amp;lt;[&#039;sim&#039;]&amp;gt;, &#039;Type&#039;: &amp;lt;&#039;hardware&#039;&amp;gt;},)&lt;br /&gt;
&lt;br /&gt;
Check if we need to enter a pin:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.SimManager.GetProperties&lt;br /&gt;
 ({&#039;Present&#039;: &amp;lt;true&amp;gt;, &#039;CardIdentifier&#039;: &amp;lt;&#039;xxxxxx&#039;&amp;gt;, &#039;FixedDialing&#039;: &amp;lt;false&amp;gt;, &#039;BarredDialing&#039;: &amp;lt;false&amp;gt;, &#039;SubscriberNumbers&#039;: &amp;lt;@as []&amp;gt;, &#039;LockedPins&#039;: &amp;lt;[&#039;pin&#039;]&amp;gt;, &#039;PreferredLanguages&#039;: &amp;lt;[&#039;de&#039;, &#039;en&#039;, &#039;fr&#039;]&amp;gt;, &#039;PinRequired&#039;: &amp;lt;&#039;pin&#039;&amp;gt;, &#039;Retries&#039;: &amp;lt;{&#039;pin&#039;: byte 0x03, &#039;pin2&#039;: 0x03, &#039;puk&#039;: 0x0a, &#039;puk2&#039;: 0x0a}&amp;gt;, &#039;CardSlotCount&#039;: &amp;lt;uint32 1&amp;gt;, &#039;ActiveCardSlot&#039;: &amp;lt;uint32 1&amp;gt;},)&lt;br /&gt;
&lt;br /&gt;
If PinRequired is &#039;pin&#039; we need to enter a pin to unlock the sim:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.SimManager.EnterPin pin 1234&lt;br /&gt;
 ()&lt;br /&gt;
&lt;br /&gt;
Then we can bring the modem online:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.Modem.SetProperty Online true&lt;br /&gt;
 ()&lt;br /&gt;
&lt;br /&gt;
If we now redo the first mdbus2 command on /mbm_0:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0&lt;br /&gt;
 [METHOD]   org.freedesktop.DBus.Introspectable.Introspect() -&amp;gt; (s:xml)&lt;br /&gt;
 [METHOD]   org.ofono.Modem.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.Modem.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.Modem.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.ChangePin(s:type, s:oldpin, s:newpin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.EnterPin(s:type, s:pin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.ResetPin(s:type, s:puk, s:newpin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.LockPin(s:type, s:pin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.UnlockPin(s:type, s:pin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.GetIcon(y:id) -&amp;gt; (ay:icon)&lt;br /&gt;
 [SIGNAL]   org.ofono.SimManager.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.AllowedAccessPoints.GetAllowedAccessPoints() -&amp;gt; (as:apnlist)&lt;br /&gt;
 [METHOD]   org.ofono.SimAuthentication.GetApplications() -&amp;gt; (a{oa{sv}}:applications)&lt;br /&gt;
 [METHOD]   org.ofono.SimAuthentication.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.SimToolkit.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.SimToolkit.SelectItem(y:item, o:agent) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimToolkit.RegisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimToolkit.UnregisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.SimToolkit.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.RadioSettings.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.RadioSettings.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.RadioSettings.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.MessageManager.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.MessageManager.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.MessageManager.SendMessage(s:to, s:text) -&amp;gt; (o:path)&lt;br /&gt;
 [METHOD]   org.ofono.MessageManager.GetMessages() -&amp;gt; (a(oa{sv}):messages)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.IncomingMessage(s:message, a{sv}:info)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.ImmediateMessage(s:message, a{sv}:info)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.MessageAdded(o:path, a{sv}:properties)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.MessageRemoved(o:path)&lt;br /&gt;
 [METHOD]   org.ofono.PushNotification.RegisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.PushNotification.UnregisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SmartMessaging.RegisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SmartMessaging.UnregisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SmartMessaging.SendBusinessCard(s:to, ay:card) -&amp;gt; (o:path)&lt;br /&gt;
 [METHOD]   org.ofono.SmartMessaging.SendAppointment(s:to, ay:appointment) -&amp;gt; (o:path)&lt;br /&gt;
 [METHOD]   org.ofono.LocationReporting.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.LocationReporting.Request() -&amp;gt; (h:fd)&lt;br /&gt;
 [METHOD]   org.ofono.LocationReporting.Release() -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.LocationReporting.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.SupplementaryServices.Initiate(s:command) -&amp;gt; (s:result_name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.SupplementaryServices.Respond(s:reply) -&amp;gt; (s:result)&lt;br /&gt;
 [METHOD]   org.ofono.SupplementaryServices.Cancel() -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SupplementaryServices.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [SIGNAL]   org.ofono.SupplementaryServices.NotificationReceived(s:message)&lt;br /&gt;
 [SIGNAL]   org.ofono.SupplementaryServices.RequestReceived(s:message)&lt;br /&gt;
 [SIGNAL]   org.ofono.SupplementaryServices.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.CellBroadcast.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.CellBroadcast.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.CellBroadcast.PropertyChanged(s:property, v:value)&lt;br /&gt;
 [SIGNAL]   org.ofono.CellBroadcast.IncomingBroadcast(s:message, q:channel)&lt;br /&gt;
 [SIGNAL]   org.ofono.CellBroadcast.EmergencyBroadcast(s:message, a{sv}:dict)&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.AddContext(s:type) -&amp;gt; (o:path)&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.RemoveContext(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.DeactivateAll() -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.GetContexts() -&amp;gt; (a(oa{sv}):contexts_with_properties)&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.ResetContexts() -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.ConnectionManager.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [SIGNAL]   org.ofono.ConnectionManager.ContextAdded(o:path, a{sv}:properties)&lt;br /&gt;
 [SIGNAL]   org.ofono.ConnectionManager.ContextRemoved(o:path)&lt;br /&gt;
 [METHOD]   org.ofono.NetworkRegistration.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.NetworkRegistration.Register() -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.NetworkRegistration.GetOperators() -&amp;gt; (a(oa{sv}):operators_with_properties)&lt;br /&gt;
 [METHOD]   org.ofono.NetworkRegistration.Scan() -&amp;gt; (a(oa{sv}):operators_with_properties)&lt;br /&gt;
 [SIGNAL]   org.ofono.NetworkRegistration.PropertyChanged(s:name, v:value)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Virtual_Machine&amp;diff=759</id>
		<title>Virtual Machine</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Virtual_Machine&amp;diff=759"/>
		<updated>2020-05-29T13:27:56Z</updated>

		<summary type="html">&lt;p&gt;Uvos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Device&lt;br /&gt;
|image=&lt;br /&gt;
|manufacturer=Generic&lt;br /&gt;
|codename=&lt;br /&gt;
|dimensions=&lt;br /&gt;
|release_date=&lt;br /&gt;
|soc=&lt;br /&gt;
|dram=&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=&lt;br /&gt;
|video=&lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Generic virtual machine target. This is particularly useful when doing development and testing.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
https://maedevu.maemo.org/images/virtual-machines/&lt;br /&gt;
&lt;br /&gt;
There are three different types of images: VirtualBox (.box), QEMU (.qcow2, .vdi) and Vagrant. The VirtualBox image may be converted to a VMware VMDK image which has been reported to perform better and have good hardware acceleration.&lt;br /&gt;
Converting the qcow2 image to raw allows it to be used on real hardware.&lt;br /&gt;
&lt;br /&gt;
=== VirtualBox ===&lt;br /&gt;
&lt;br /&gt;
Download latest .vdi.xz image, unpack it with &amp;quot;xz -d&amp;quot; command.&lt;br /&gt;
Create new Virtual Machine, select &amp;quot;Debian (64-bit)&amp;quot; and 1024MB RAM. Use the downloaded file as virtual hard disk.&lt;br /&gt;
You are done!&lt;br /&gt;
&lt;br /&gt;
=== QEMU ===&lt;br /&gt;
&lt;br /&gt;
In general something like&lt;br /&gt;
  qemu-system-x86_64 -hda maemo-leste-1.0-amd64.qcow2 -enable-kvm -cpu host -smp cores=2 -m 1024 &lt;br /&gt;
should work. But there seem to be issues with some QEMU versions, for more details see [https://github.com/maemo-leste/bugtracker/issues/198 issue#198].&lt;br /&gt;
&lt;br /&gt;
To set up a port forward for SSH, add:&lt;br /&gt;
  -nic user,hostfwd=tcp:127.0.0.1:7722-:22&lt;br /&gt;
And then log in like this (password: &amp;lt;code&amp;gt;toor&amp;lt;/code&amp;gt;):&lt;br /&gt;
  ssh root@localhost -p 7722&lt;br /&gt;
&lt;br /&gt;
If the mouse pointer is grabbed and no cursor shows, you can add&lt;br /&gt;
  -usb -device usb-tablet&lt;br /&gt;
to the command line&lt;br /&gt;
&lt;br /&gt;
If you have a USB modem you can also use that in QEMU. You can either use sudo to elevate your privileges to be able to use it:&lt;br /&gt;
  sudo qemu-system-x86_64 -hda maemo-leste-1.0-amd64-virtual-20200324.qcow2 -enable-kvm -cpu host -smp cores=2 -m 1024 \&lt;br /&gt;
  -nic user,hostfwd=tcp:127.0.0.1:7722-:22 \&lt;br /&gt;
  -usb -device usb-ehci,id=ehci \&lt;br /&gt;
  -device usb-host,bus=ehci.0,vendorid=0x0bdb,productid=0x193e&lt;br /&gt;
&lt;br /&gt;
Or you can make a udev rule for your device. For example, with a Lenovo Ericsson N5321 gw you can create &amp;quot;/etc/udev/rules.d/45-n5321.rules&amp;quot; with this in it:&lt;br /&gt;
  # Lenovo Ericsson N5321 gw simple udev rule&lt;br /&gt;
  SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;0bdb&amp;quot;, ATTRS{idProduct}==&amp;quot;193e&amp;quot;, \&lt;br /&gt;
    MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And then activate it by running these two commands as root:&lt;br /&gt;
  # udevadm control --reload-rules&lt;br /&gt;
  # udevadm trigger&lt;br /&gt;
&lt;br /&gt;
Now you can run QEMU without the need for sudo!&lt;br /&gt;
&lt;br /&gt;
=== virt-manager ===&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/maemo-leste/bugtracker/issues/291#issuecomment-575952497 here].&lt;br /&gt;
&lt;br /&gt;
== Initial configuration ==&lt;br /&gt;
&lt;br /&gt;
On the first run you may want to generate ssh host keys and set the timezone. To do so open the &amp;quot;X Terminal&amp;quot; application and run:&lt;br /&gt;
 sudo su -&lt;br /&gt;
 dpkg-reconfigure openssh-server&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Make the system up-to-date:&lt;br /&gt;
 apt update&lt;br /&gt;
 apt upgrade&lt;br /&gt;
 apt install linux-image-amd64&lt;br /&gt;
 reboot&lt;br /&gt;
&lt;br /&gt;
To get networking to work (at least in virtualbox), launch a shell and do &lt;br /&gt;
 sudo ifconfig eth0 up&lt;br /&gt;
 sudo dhclient eth0&lt;br /&gt;
&lt;br /&gt;
== Connectivity ==&lt;br /&gt;
&lt;br /&gt;
If you have a modem exposed to QEMU, you still need to do some steps manually to get connectivity.&lt;br /&gt;
&lt;br /&gt;
First off you need to add the development APT repository to your APT sources:&lt;br /&gt;
 # echo &#039;deb https://maedevu.maemo.org/leste beowulf-devel main contrib non-free&#039; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
Now update and upgrade:&lt;br /&gt;
 # apt update &amp;amp;&amp;amp; apt upgrade&lt;br /&gt;
&lt;br /&gt;
Then you can install these things:&lt;br /&gt;
 # apt install ofono libicd-network-ofono connui-iapsettings-gprs connui-statusbar-cellular connui-home-cellular connui-cellular-settings connui-conndlgs-cellular&lt;br /&gt;
&lt;br /&gt;
We need mdbus2 to manipulate oFono:&lt;br /&gt;
 # wget http://ftp.nl.debian.org/debian/pool/main/m/mdbus/mdbus2_2.3.3-2_amd64.deb&lt;br /&gt;
 # dpkg -i mdbus2_2.3.3-2_amd64.deb&lt;br /&gt;
&lt;br /&gt;
Then we can check if oFono finds our modem:&lt;br /&gt;
 # mdbus2 -s org.ofono&lt;br /&gt;
 /&lt;br /&gt;
 /bluetooth&lt;br /&gt;
 /bluetooth/profile&lt;br /&gt;
 /bluetooth/profile/dun_gw&lt;br /&gt;
 /bluetooth/profile/hfp_ag&lt;br /&gt;
 /bluetooth/profile/hfp_hf&lt;br /&gt;
 /mbm_0&lt;br /&gt;
&lt;br /&gt;
Then can check our mbm_0 modem:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0&lt;br /&gt;
 [METHOD]   org.freedesktop.DBus.Introspectable.Introspect() -&amp;gt; (s:xml)&lt;br /&gt;
 [METHOD]   org.ofono.Modem.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.Modem.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.Modem.PropertyChanged(s:name, v:value)&lt;br /&gt;
&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.Modem.GetProperties&lt;br /&gt;
 ({&#039;Online&#039;: &amp;lt;false&amp;gt;, &#039;Powered&#039;: &amp;lt;false&amp;gt;, &#039;Lockdown&#039;: &amp;lt;false&amp;gt;, &#039;Emergency&#039;: &amp;lt;false&amp;gt;, &#039;SystemPath&#039;: &amp;lt;&#039;/sys/devices/pci0000:00/0000:00:04.0/usb1/1-1&#039;&amp;gt;, &#039;Interfaces&#039;: &amp;lt;@as []&amp;gt;, &#039;Features&#039;: &amp;lt;@as []&amp;gt;, &#039;Type&#039;: &amp;lt;&#039;hardware&#039;&amp;gt;},)&lt;br /&gt;
&lt;br /&gt;
Power on the modem:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.Modem.SetProperty Powered true&lt;br /&gt;
 ()&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.Modem.GetProperties&lt;br /&gt;
 ({&#039;Online&#039;: &amp;lt;false&amp;gt;, &#039;Powered&#039;: &amp;lt;true&amp;gt;, &#039;Lockdown&#039;: &amp;lt;false&amp;gt;, &#039;Emergency&#039;: &amp;lt;false&amp;gt;, &#039;Manufacturer&#039;: &amp;lt;&#039;Lenovo&#039;&amp;gt;, &#039;Model&#039;: &amp;lt;&#039;N5321 gw&#039;&amp;gt;, &#039;Revision&#039;: &amp;lt;&#039;R3C11&#039;&amp;gt;, &#039;Serial&#039;: &amp;lt;&#039;xxxxxxxxxxxx&#039;&amp;gt;, &#039;SystemPath&#039;: &amp;lt;&#039;/sys/devices/pci0000:00/0000:00:04.0/usb1/1-1&#039;&amp;gt;, &#039;Interfaces&#039;: &amp;lt;[&#039;org.ofono.SimManager&#039;]&amp;gt;, &#039;Features&#039;: &amp;lt;[&#039;sim&#039;]&amp;gt;, &#039;Type&#039;: &amp;lt;&#039;hardware&#039;&amp;gt;},)&lt;br /&gt;
&lt;br /&gt;
Check if we need to enter a pin:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.SimManager.GetProperties&lt;br /&gt;
 ({&#039;Present&#039;: &amp;lt;true&amp;gt;, &#039;CardIdentifier&#039;: &amp;lt;&#039;xxxxxx&#039;&amp;gt;, &#039;FixedDialing&#039;: &amp;lt;false&amp;gt;, &#039;BarredDialing&#039;: &amp;lt;false&amp;gt;, &#039;SubscriberNumbers&#039;: &amp;lt;@as []&amp;gt;, &#039;LockedPins&#039;: &amp;lt;[&#039;pin&#039;]&amp;gt;, &#039;PreferredLanguages&#039;: &amp;lt;[&#039;de&#039;, &#039;en&#039;, &#039;fr&#039;]&amp;gt;, &#039;PinRequired&#039;: &amp;lt;&#039;pin&#039;&amp;gt;, &#039;Retries&#039;: &amp;lt;{&#039;pin&#039;: byte 0x03, &#039;pin2&#039;: 0x03, &#039;puk&#039;: 0x0a, &#039;puk2&#039;: 0x0a}&amp;gt;, &#039;CardSlotCount&#039;: &amp;lt;uint32 1&amp;gt;, &#039;ActiveCardSlot&#039;: &amp;lt;uint32 1&amp;gt;},)&lt;br /&gt;
&lt;br /&gt;
If PinRequired is &#039;pin&#039; we need to enter a pin to unlock the sim:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.SimManager.EnterPin pin 1234&lt;br /&gt;
 ()&lt;br /&gt;
&lt;br /&gt;
Then we can bring the modem online:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0 org.ofono.Modem.SetProperty Online true&lt;br /&gt;
 ()&lt;br /&gt;
&lt;br /&gt;
If we now redo the first mdbus2 command on /mbm_0:&lt;br /&gt;
 # mdbus2 -s org.ofono /mbm_0&lt;br /&gt;
 [METHOD]   org.freedesktop.DBus.Introspectable.Introspect() -&amp;gt; (s:xml)&lt;br /&gt;
 [METHOD]   org.ofono.Modem.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.Modem.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.Modem.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.ChangePin(s:type, s:oldpin, s:newpin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.EnterPin(s:type, s:pin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.ResetPin(s:type, s:puk, s:newpin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.LockPin(s:type, s:pin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.UnlockPin(s:type, s:pin) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimManager.GetIcon(y:id) -&amp;gt; (ay:icon)&lt;br /&gt;
 [SIGNAL]   org.ofono.SimManager.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.AllowedAccessPoints.GetAllowedAccessPoints() -&amp;gt; (as:apnlist)&lt;br /&gt;
 [METHOD]   org.ofono.SimAuthentication.GetApplications() -&amp;gt; (a{oa{sv}}:applications)&lt;br /&gt;
 [METHOD]   org.ofono.SimAuthentication.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.SimToolkit.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.SimToolkit.SelectItem(y:item, o:agent) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimToolkit.RegisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SimToolkit.UnregisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.SimToolkit.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.RadioSettings.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.RadioSettings.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.RadioSettings.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.MessageManager.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.MessageManager.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.MessageManager.SendMessage(s:to, s:text) -&amp;gt; (o:path)&lt;br /&gt;
 [METHOD]   org.ofono.MessageManager.GetMessages() -&amp;gt; (a(oa{sv}):messages)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.IncomingMessage(s:message, a{sv}:info)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.ImmediateMessage(s:message, a{sv}:info)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.MessageAdded(o:path, a{sv}:properties)&lt;br /&gt;
 [SIGNAL]   org.ofono.MessageManager.MessageRemoved(o:path)&lt;br /&gt;
 [METHOD]   org.ofono.PushNotification.RegisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.PushNotification.UnregisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SmartMessaging.RegisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SmartMessaging.UnregisterAgent(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SmartMessaging.SendBusinessCard(s:to, ay:card) -&amp;gt; (o:path)&lt;br /&gt;
 [METHOD]   org.ofono.SmartMessaging.SendAppointment(s:to, ay:appointment) -&amp;gt; (o:path)&lt;br /&gt;
 [METHOD]   org.ofono.LocationReporting.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.LocationReporting.Request() -&amp;gt; (h:fd)&lt;br /&gt;
 [METHOD]   org.ofono.LocationReporting.Release() -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.LocationReporting.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.SupplementaryServices.Initiate(s:command) -&amp;gt; (s:result_name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.SupplementaryServices.Respond(s:reply) -&amp;gt; (s:result)&lt;br /&gt;
 [METHOD]   org.ofono.SupplementaryServices.Cancel() -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.SupplementaryServices.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [SIGNAL]   org.ofono.SupplementaryServices.NotificationReceived(s:message)&lt;br /&gt;
 [SIGNAL]   org.ofono.SupplementaryServices.RequestReceived(s:message)&lt;br /&gt;
 [SIGNAL]   org.ofono.SupplementaryServices.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [METHOD]   org.ofono.CellBroadcast.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.CellBroadcast.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.CellBroadcast.PropertyChanged(s:property, v:value)&lt;br /&gt;
 [SIGNAL]   org.ofono.CellBroadcast.IncomingBroadcast(s:message, q:channel)&lt;br /&gt;
 [SIGNAL]   org.ofono.CellBroadcast.EmergencyBroadcast(s:message, a{sv}:dict)&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.SetProperty(s:property, v:value) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.AddContext(s:type) -&amp;gt; (o:path)&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.RemoveContext(o:path) -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.DeactivateAll() -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.GetContexts() -&amp;gt; (a(oa{sv}):contexts_with_properties)&lt;br /&gt;
 [METHOD]   org.ofono.ConnectionManager.ResetContexts() -&amp;gt; ()&lt;br /&gt;
 [SIGNAL]   org.ofono.ConnectionManager.PropertyChanged(s:name, v:value)&lt;br /&gt;
 [SIGNAL]   org.ofono.ConnectionManager.ContextAdded(o:path, a{sv}:properties)&lt;br /&gt;
 [SIGNAL]   org.ofono.ConnectionManager.ContextRemoved(o:path)&lt;br /&gt;
 [METHOD]   org.ofono.NetworkRegistration.GetProperties() -&amp;gt; (a{sv}:properties)&lt;br /&gt;
 [METHOD]   org.ofono.NetworkRegistration.Register() -&amp;gt; ()&lt;br /&gt;
 [METHOD]   org.ofono.NetworkRegistration.GetOperators() -&amp;gt; (a(oa{sv}):operators_with_properties)&lt;br /&gt;
 [METHOD]   org.ofono.NetworkRegistration.Scan() -&amp;gt; (a(oa{sv}):operators_with_properties)&lt;br /&gt;
 [SIGNAL]   org.ofono.NetworkRegistration.PropertyChanged(s:name, v:value)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Uvos</name></author>
	</entry>
</feed>