<?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=Arno11-n900</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=Arno11-n900"/>
	<link rel="alternate" type="text/html" href="https://leste.maemo.org/Special:Contributions/Arno11-n900"/>
	<updated>2026-11-09T03:07:07Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3294</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3294"/>
		<updated>2026-10-18T08:57:59Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|display=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=IMX355, IMX363&lt;br /&gt;
|sensors=BMI160, AK0991X, TMD2725, BMP380, MAX11261&lt;br /&gt;
|battery=3000 / 3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, capacitive&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes&lt;br /&gt;
|sw_backcam=Yes&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40 / 50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Comaps experimental maemo version is also able to report coordinates.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth (testing with Pipewire) ===&lt;br /&gt;
&lt;br /&gt;
Packages needed: blueman, pipewire, pipewire-pulse, wireplumber, bluez, pipewire-audio, libspa-0.2-bluetooth&lt;br /&gt;
&lt;br /&gt;
Launch blueman and search/pair/connect your device.&lt;br /&gt;
&lt;br /&gt;
Sending files between Pixel 3a and android phones works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you pair and connect a headset, note that bluetooth device is not set as default sink:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To check bluetooth device sink number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Look in Audio ---&amp;gt; Sinks&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl set-default &amp;lt;bluetooth device sink number&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Broken notification sounds (notify-sv). &lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. Fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3293</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3293"/>
		<updated>2026-10-18T08:53:26Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Remaining issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|display=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=IMX355, IMX363&lt;br /&gt;
|sensors=BMI160, AK0991X, TMD2725, BMP380, MAX11261&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, capacitive&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes&lt;br /&gt;
|sw_backcam=Yes&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Comaps experimental maemo version is also able to report coordinates.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth (testing with Pipewire) ===&lt;br /&gt;
&lt;br /&gt;
Packages needed: blueman, pipewire, pipewire-pulse, wireplumber, bluez, pipewire-audio, libspa-0.2-bluetooth&lt;br /&gt;
&lt;br /&gt;
Launch blueman and search/pair/connect your device.&lt;br /&gt;
&lt;br /&gt;
Sending files between Pixel 3a and android phones works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you pair and connect a headset, note that bluetooth device is not set as default sink:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To check bluetooth device sink number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Look in Audio ---&amp;gt; Sinks&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl set-default &amp;lt;bluetooth device sink number&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Broken notification sounds (notify-sv). &lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. Fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3292</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3292"/>
		<updated>2026-10-18T08:52:03Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Bluetooth (testing with Pipewire) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|display=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=IMX355, IMX363&lt;br /&gt;
|sensors=BMI160, AK0991X, TMD2725, BMP380, MAX11261&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, capacitive&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes&lt;br /&gt;
|sw_backcam=Yes&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Comaps experimental maemo version is also able to report coordinates.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth (testing with Pipewire) ===&lt;br /&gt;
&lt;br /&gt;
Packages needed: blueman, pipewire, pipewire-pulse, wireplumber, bluez, pipewire-audio, libspa-0.2-bluetooth&lt;br /&gt;
&lt;br /&gt;
Launch blueman and search/pair/connect your device.&lt;br /&gt;
&lt;br /&gt;
Sending files between Pixel 3a and android phones works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you pair and connect a headset, note that bluetooth device is not set as default sink:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To check bluetooth device sink number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Look in Audio ---&amp;gt; Sinks&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl set-default &amp;lt;bluetooth device sink number&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Broken notification sounds (notify-sv). &lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3291</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3291"/>
		<updated>2026-10-16T15:16:46Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Bluetooth (testing with Pipewire) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|display=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=IMX355, IMX363&lt;br /&gt;
|sensors=BMI160, AK0991X, TMD2725, BMP380, MAX11261&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, capacitive&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes&lt;br /&gt;
|sw_backcam=Yes&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Comaps experimental maemo version is also able to report coordinates.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth (testing with Pipewire) ===&lt;br /&gt;
&lt;br /&gt;
Install blueman package from apt.&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bluetoothctl power on&lt;br /&gt;
sudo hciconfig hci0 up&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Launch blueman and search/pair/connect your device.&lt;br /&gt;
&lt;br /&gt;
Sending files between Pixel 3a and android phones works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you pair and connect a headset, note that bluetooth device is not the default sink:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To check bluetooth device sink number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl set-default &amp;lt;bluetooth device sink number&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Broken notification sounds (notify-sv). &lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3290</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3290"/>
		<updated>2026-10-16T15:07:09Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|display=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=IMX355, IMX363&lt;br /&gt;
|sensors=BMI160, AK0991X, TMD2725, BMP380, MAX11261&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, capacitive&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes&lt;br /&gt;
|sw_backcam=Yes&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Comaps experimental maemo version is also able to report coordinates.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth (testing with Pipewire) ===&lt;br /&gt;
&lt;br /&gt;
Install blueman package from apt.&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bluetoothctl power on&lt;br /&gt;
sudo hciconfig hci0 up&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Launch blueman and search/pair/connect your device.&lt;br /&gt;
&lt;br /&gt;
Sending files between Pixel 3a and android phones works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you pair and connect a headset, note that bluetooth device is not the default sink:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To check bluetooth sink number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl set-default &amp;lt;bluetooth device sink number&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Broken notification sounds (notify-sv). &lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3289</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3289"/>
		<updated>2026-10-16T15:04:19Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|display=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=BMI160, AK0991X, TMD2725, BMP380, MAX11261&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, capacitive&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes&lt;br /&gt;
|sw_backcam=Yes&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Comaps experimental maemo version is also able to report coordinates.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth (testing with Pipewire) ===&lt;br /&gt;
&lt;br /&gt;
Install blueman package from apt.&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bluetoothctl power on&lt;br /&gt;
sudo hciconfig hci0 up&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Launch blueman and search/pair/connect your device.&lt;br /&gt;
&lt;br /&gt;
Sending files between Pixel 3a and android phones works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you pair and connect a headset, note that bluetooth device is not the default sink:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To check bluetooth sink number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl set-default &amp;lt;bluetooth device sink number&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Broken notification sounds (notify-sv). &lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3288</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3288"/>
		<updated>2026-10-15T20:08:58Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Bluetooth (testing with Pipewire) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|display=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, capacitive&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes&lt;br /&gt;
|sw_backcam=Yes&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Comaps experimental maemo version is also able to report coordinates.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth (testing with Pipewire) ===&lt;br /&gt;
&lt;br /&gt;
Install blueman package from apt.&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bluetoothctl power on&lt;br /&gt;
sudo hciconfig hci0 up&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Launch blueman and search/pair/connect your device.&lt;br /&gt;
&lt;br /&gt;
Sending files between Pixel 3a and android phones works.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you pair and connect a headset, note that bluetooth device is not the default sink:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To check bluetooth sink number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl set-default &amp;lt;bluetooth device sink number&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Broken notification sounds (notify-sv). &lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3287</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3287"/>
		<updated>2026-10-15T20:06:14Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Tweaks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|display=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, capacitive&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes&lt;br /&gt;
|sw_backcam=Yes&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Comaps experimental maemo version is also able to report coordinates.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth (testing with Pipewire) ===&lt;br /&gt;
&lt;br /&gt;
Install blueman package from apt.&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bluetoothctl power on&lt;br /&gt;
sudo hciconfig hci0 up&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Launch blueman and search/pair/connect your device.&lt;br /&gt;
&lt;br /&gt;
Sending files between Pixel 3a and android phones works.&lt;br /&gt;
&lt;br /&gt;
If you pair and connect a headset, note that bluetooth device is not the default sink:&lt;br /&gt;
&lt;br /&gt;
To check bluetooth sink number:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wpctl set-default &amp;lt;bluetooth device sink number&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Broken notification sounds (notify-sv). &lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3286</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3286"/>
		<updated>2026-10-11T12:47:17Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Remaining issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|display=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, capacitive&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes&lt;br /&gt;
|sw_backcam=Yes&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Comaps experimental maemo version is also able to report coordinates.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Broken notification sounds (notify-sv). &lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3285</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3285"/>
		<updated>2026-10-11T12:45:32Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* GPS with ModemManager and Geoclue (testing, not implemented, WIP) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|display=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, capacitive&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes&lt;br /&gt;
|sw_backcam=Yes&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Comaps experimental maemo version is also able to report coordinates.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=A23-Q8H-v1.5&amp;diff=3284</id>
		<title>A23-Q8H-v1.5</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=A23-Q8H-v1.5&amp;diff=3284"/>
		<updated>2026-09-27T07:44:24Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:A23-q8h-v1.5-ccit.jpg|250px|alt=image of Q8H tablet, running leste]]&lt;br /&gt;
|manufacturer=CCIT? (Ippo?)&lt;br /&gt;
|codename=Q8H v1.5&lt;br /&gt;
|dimensions=181mm x 121mm x 10.5mm&lt;br /&gt;
|release_date=2015-01-29&lt;br /&gt;
|category=Supported&lt;br /&gt;
|soc=Allwinner A23 @1.5Ghz &amp;lt;br&amp;gt;underclocked @1.2Ghz&amp;lt;br&amp;gt;Cortex-A7&amp;lt;br&amp;gt;Armv7-A&lt;br /&gt;
|dram=512MiB DDR3 @ 480MHz &lt;br /&gt;
|power=DC 5V @ 2A&lt;br /&gt;
|display=800x480 7&amp;quot; capacitive touch&lt;br /&gt;
|video=Mali 400&lt;br /&gt;
|audio=3.5mm headphone plug, internal speaker, internal microphone &lt;br /&gt;
|network=RTL8703AS&lt;br /&gt;
|storage=4GB?&lt;br /&gt;
|usb=Micro USB 2.0 Host&lt;br /&gt;
|camera=0.3MP (640x480)&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
|headers=UART?&lt;br /&gt;
|battery=?mAh 3.7V Li-Ion battery &lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_serial=N/A&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, single-touch&lt;br /&gt;
|sw_keyboard=N/A&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_hdmi=N/A&lt;br /&gt;
|sw_tv=No&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=N/A&lt;br /&gt;
|sw_sms=N/A&lt;br /&gt;
|sw_wifi=Yes, firmware required&lt;br /&gt;
|sw_ethernet=N/A&lt;br /&gt;
|sw_irda=N/A&lt;br /&gt;
|sw_2g3gdata=N/A&lt;br /&gt;
|sw_4gdata=N/A&lt;br /&gt;
|sw_bluetooth=Yes, firmware required&lt;br /&gt;
|sw_fmtx=N/A&lt;br /&gt;
|sw_fmrx=N/A&lt;br /&gt;
|sw_nfc=N/A&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_compass=N/A&lt;br /&gt;
|sw_gyro=N/A&lt;br /&gt;
|sw_proximity=N/A&lt;br /&gt;
|sw_als=N/A&lt;br /&gt;
|sw_gps=N/A&lt;br /&gt;
|sw_agps=N/A&lt;br /&gt;
|sw_frontcam=N/A&lt;br /&gt;
|sw_backcam=N/A&lt;br /&gt;
|sw_idlepower=1.4W-3.7W (WIP)&lt;br /&gt;
|sw_standbytime=N/A&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Simply write the image to a sdcard and put it on the device, it should load u-boot and kernel automatically.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Like most devices with silead touch screen you may need to extract touch screen driver from android firmware. firmware for this tablet was &amp;lt;code&amp;gt;gsl1680-b482-q8-a70.fw&amp;lt;/code&amp;gt;, which could be either taken from [https://github.com/onitake/gsl-firmware here] or from android directly.&lt;br /&gt;
while the screen resolution was 800 x 480, touch panel had 900 x 600.&lt;br /&gt;
&lt;br /&gt;
=== Wireless and Bluetooth ===&lt;br /&gt;
On devices that ship with realtek 8702as (or 8723bs), a firmware and a binary config file are required for wifi/bluetooth driver to work properly.&lt;br /&gt;
these are available under package &amp;lt;code&amp;gt;firmware-realtek&amp;lt;/code&amp;gt;.&lt;br /&gt;
a patch is needed for bluetooth driver to work properly, which is just for correct probing of the card.&lt;br /&gt;
&lt;br /&gt;
note that sdio currently doesn&#039;t function if device is rebooted, powering it off and turning it on again works.&lt;br /&gt;
&lt;br /&gt;
=== Power usage ===&lt;br /&gt;
Hungry beast, sips 1A with everything on and max and sips 300mA with everything (but wifi) off and cpu mostly idle.&lt;br /&gt;
this results in very poor temps and runtime, some of which can be improved thru [https://github.com/crust-firmware/crust crust] (since appearently deep sleep support in mainline for allwinner kernels is very poor, if non existant?) or better dt/kernel setups.&lt;br /&gt;
&lt;br /&gt;
== Status ==&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 || 6.12 || Mainline + patches (for bluetooth, wireless and screen rotation)&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Probably || Need to locate it on the board&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes || charging via AC in works&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes || Realtek 8703as, Driver is still in staging (rt8723bs)&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes? || Realtek 8703as, Uses rt8723bs driver, seems to work, but not tested much&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || WIP || Only works in otg (with dr_mode = &amp;quot;host&amp;quot; in dts), might need further device tree improvments&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A || Device has no keyboard&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes || sunxi drm (with simplefb)&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || Mali 400, Lima&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Silead gsl1688?, Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Speaker || WIP || works, but a bit underwhelming, might be amplifiers&lt;br /&gt;
|-&lt;br /&gt;
| Headphone || WIP || works, but does not mute speakers when plugged in&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes? || Memsic 6255, There is a screen rotation sensor, mxc6255 driver can be used for it, but doesn&#039;t seem to work very well&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || N/A || Not sure if available&lt;br /&gt;
|-&lt;br /&gt;
| eMMC || No || Likely dts issues&lt;br /&gt;
|-&lt;br /&gt;
| HW accelerated video encode/decode || ? || Should work with Cedrus driver, but not tested&lt;br /&gt;
|-&lt;br /&gt;
| Camera || ? || Not tested&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Purism_Librem5&amp;diff=3283</id>
		<title>Purism Librem5</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Purism_Librem5&amp;diff=3283"/>
		<updated>2026-09-27T07:43:21Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|manufacturer=Purism&lt;br /&gt;
|codename=Librem5&lt;br /&gt;
|dimensions=74×152×15 mm&lt;br /&gt;
|release_date=&lt;br /&gt;
|soc=NXP i.MX 8M Quad core Cortex-A53, 64bit ARM (auxiliary 266MHz Cortex-M4F)&lt;br /&gt;
|dram=3GB LPDDR4-3200&lt;br /&gt;
|power=&lt;br /&gt;
|display=1440x720 IPS TFT 5.7″&lt;br /&gt;
|video=Vivante GC7000Lite&lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors= &lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=PinePhone&amp;diff=3282</id>
		<title>PinePhone</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=PinePhone&amp;diff=3282"/>
		<updated>2026-09-27T07:42:44Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Device&lt;br /&gt;
|image=[[File:Phinephone_leste.jpg|250px]]&lt;br /&gt;
|manufacturer=Pine64&lt;br /&gt;
|codename=&lt;br /&gt;
|dimensions=160.5x76.6x9.2mm&lt;br /&gt;
|release_date=&lt;br /&gt;
|soc=Allwinner A64 &amp;lt;br&amp;gt;Cortex-A53 &amp;lt;br&amp;gt;arm64v8&lt;br /&gt;
|dram=2GB or 3GB LPDDR3 SDRAM&lt;br /&gt;
|power=&lt;br /&gt;
|display=1440x720 5.95″&lt;br /&gt;
|video=ARM Mali 400 MP2 GPU&lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB or 32GB eMMC&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=GalaxyCore GC2145, &amp;lt;br&amp;gt;OmniVision OV5640&lt;br /&gt;
|sensors=ST LIS3MDL compass, &amp;lt;br&amp;gt;InvenSense MPU-6050 accelerometer, &amp;lt;br&amp;gt;SensorTek STK3335 proximity and illuminance&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This is for all PinePhones starting with the first Pinephone (Braveheart) phone, but not for the PinePhone Pro. &lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Go here for &#039;&#039;&#039;[https://maedevu.maemo.org/images/pinephone/ latest images to test.] &#039;&#039;&#039; Please [[Main_Page#Links|get in touch with us]] to report any issues or learn how to help out with the project.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Currently, most things work, for example you can:&lt;br /&gt;
&lt;br /&gt;
* Run any applications in Debian and Devuan on your phone&lt;br /&gt;
* Connect to wifi&lt;br /&gt;
* Use the terminal&lt;br /&gt;
* Connect to 2G/3G/4G data connections&lt;br /&gt;
* Make and receive phone calls and SMS&lt;br /&gt;
* PinePhone keyboard is supported&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 || 6.17 || Mainline + some patches: https://git.maemo.org/leste-upstream-forks/pine64-kernel/src/branch/orange-pi-6.17-megi-maemo&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Via headphone jack (disable headphone switch)&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes || Involves installing out of tree driver&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A || ps: USB Ethernet adapter tested and works&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || YES || No UI integration yet&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || TX only (hardware limitation). &lt;br /&gt;
|-&lt;br /&gt;
| USB C || Yes || Peripheral/slave, exposes network gadget by default. Host Untested&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || When a PP keyboard is connected, it works out-of-the-box&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes || Modesetting driver&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || mesa-lima&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Pulseaudio and UCM units&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G/4G data || YES || Works with ofono;&lt;br /&gt;
|-&lt;br /&gt;
| SMS || YES || Works with ofono, will using telepathy-ring. Sphone and Conversations are currently available&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || YES || Works with ofono; Calls work with sphone as UI&lt;br /&gt;
|-&lt;br /&gt;
| VoLTE || YES || Quectel EG25 has VoLTE support, no userland required, but setting VoLTE profile might be needed&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| RGB LED || WIP || Works, but mce can&#039;t deal with LEDs without controllers yet.&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || ? || &lt;br /&gt;
|-&lt;br /&gt;
| GPS || WIP || Works with WIP Leste GPS stack&lt;br /&gt;
|-&lt;br /&gt;
| Cameras || WIP || Driver present for rear (OV5640) and front (GC2145) cameras. User space support in progress with libcamera.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== More Information ===&lt;br /&gt;
&lt;br /&gt;
* Virtual keyboard should work in all gtk2 applications (not yet in gtk3 and qt, but this is coming).&lt;br /&gt;
* Default virtual keyboard is set to on. You can check by tapping the top left corner-&amp;gt;&amp;quot;Settings&amp;quot;-&amp;gt;&amp;quot;Text input&amp;quot;-&amp;gt; ensure the &amp;quot;Use virtual keyboard&amp;quot; option is checked. You may also want to change the keyboard layout by changing the dictionary settings.&lt;br /&gt;
* WiFi and terminal work.&lt;br /&gt;
* Some rendering bugs in portrait mode remain, so the default desktop orientation is landscape for now (&amp;lt;code&amp;gt;xrandr -o right&amp;lt;/code&amp;gt;). Please note that if orientation is changed (e.g. with &amp;lt;code&amp;gt;xrandr -o normal&amp;lt;/code&amp;gt;) the ui will still be reading original key positions.&lt;br /&gt;
* Screen brightness adjustments in UI do not work on the Pinephone yet. There is also a user reported when &amp;quot;brightness&amp;quot; UI setting is set to minimum (no visual change normally), the screen will stay black after reboot with WiFi set to ON with kill switch. However screen is normal after reboot if WiFi set to OFF with kill switch even minimum &amp;quot;brightness&amp;quot; UI setting. You may still change the screen brightness with terminal commands: &amp;lt;code&amp;gt;xrandr --output DSI-1 --brightness 0.5&amp;lt;/code&amp;gt;&lt;br /&gt;
* Performance is not bad, but will get better, with hildon-desktop optimisations and as lima improves.&lt;br /&gt;
* Many &amp;quot;games&amp;quot; packages in the Application Manager don&#039;t work well yet.&lt;br /&gt;
* &#039;&#039;&#039;VoLTE should work out-of-the-box.&#039;&#039;&#039; If not, please set the VoLTE profile via AT commands. For example, for T-Mobile in US, do:&lt;br /&gt;
 $ echo &#039;AT+QMBNCFG=&amp;quot;select&amp;quot;,&amp;quot;Commercial-TMO_VoLTE&amp;quot;&#039; | atinout - /dev/EG25.AT -&lt;br /&gt;
In order to list all specific VoLTE profiles, use:&lt;br /&gt;
 $ echo &#039;AT+QMBNCFG=&amp;quot;list&amp;quot;&#039; | atinout - /dev/EG25.AT -&lt;br /&gt;
To enable calling out over VoLTE, use:&lt;br /&gt;
 $ echo &#039;AT+QCFG=&amp;quot;ims&amp;quot;,1&#039; | atinout - /dev/EG25.AT -&lt;br /&gt;
Reboot the modem by rebooting the phone.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Unlike most phones, it&#039;s pretty simple.&lt;br /&gt;
&lt;br /&gt;
=== SD Card Installation ===&lt;br /&gt;
==== Prepare the SD card ====&lt;br /&gt;
&lt;br /&gt;
Create a new msdos partition table using fdisk&lt;br /&gt;
&lt;br /&gt;
 $ sudo fdisk /dev/&#039;&#039;SDCARD&#039;&#039; &lt;br /&gt;
# press &#039;p&#039; to view current table&lt;br /&gt;
# press &#039;o&#039; to erase and make a new table&lt;br /&gt;
# press &#039;w&#039; to write changes and quit&lt;br /&gt;
&lt;br /&gt;
==== Write the image to an SD-Card. ====&lt;br /&gt;
&lt;br /&gt;
Download the latest image and the associated checksum file from [https://maedevu.maemo.org/images/pinephone/ here]. &lt;br /&gt;
&lt;br /&gt;
 $ wget https://maedevu.maemo.org/images/pinephone/&#039;&#039;DATE&#039;&#039;/&#039;&#039;IMAGE FILE&#039;&#039;&lt;br /&gt;
 $ wget https://maedevu.maemo.org/images/pinephone/&#039;&#039;DATE&#039;&#039;/&#039;&#039;CHECKSUM FILE&#039;&#039;&lt;br /&gt;
 $ sha256sum maemo-leste-*-arm64-pinephone-*.img.xz&lt;br /&gt;
 $ cat maemo-leste-*-arm64-pinephone-*.img.xz.sha56&lt;br /&gt;
Compare the output. If they do not match, stop and ask someone in the project for help. If the checksums match, extract the image:&lt;br /&gt;
 $ unxz maemo-leste-*-arm64-pinephone-*.img.xz&lt;br /&gt;
Write the image to microSD. &#039;&#039;&#039;&#039;&#039;Be very careful with this step&#039;&#039;&#039;&#039;&#039; to select the correct device.&lt;br /&gt;
 $ dd if=maemo-leste-*-arm64-pinephone-*.img /path/to/sd-card bs=4M status=progress conv=fsync&lt;br /&gt;
Block size set to 4M will work most of the time. If not, try 1M, although this will take considerably longer. Do not use partition numbers, or it won&#039;t boot. For example: sdd, not sdds1 or sddp1; mmcblk0, not mmcblk0p1. In most cases with SD cards, your computer might read the SD card as mmcblk0 or something similar.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;small&amp;gt;Make absolutely sure you replace the input file &amp;lt;code&amp;gt;if=&amp;lt;/code&amp;gt; argument with the path to your file, and the &amp;lt;code&amp;gt;/dev/sdX&amp;lt;/code&amp;gt; in the output file &amp;lt;code&amp;gt;of=&amp;lt;/code&amp;gt; argument with the correct device name. This is very important, as you will lose all the data on the device you selected, make sure it is the correct one. You can use Gnome Disks, gparted, [https://etcher.io/ Etcher], etc...your choice. Again, as with all of these tools, be careful to select the microSD card not your computer hard drive.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== eMMC Installation ===&lt;br /&gt;
&#039;&#039;&#039;Some notes have been adapted from the [https://wiki.pine64.org/wiki/PinePhone_Installation_Instructions#Installation_to_the_eMMC Pine64 Wiki]&#039;&#039;&#039;.&lt;br /&gt;
==== Preparing the .img file for eMMC boot ====&lt;br /&gt;
&lt;br /&gt;
Download the .img.xz version of the image and extract it:&lt;br /&gt;
&lt;br /&gt;
 $ unxz -k maemo-leste-*-arm64-pinephone-*.img.xz&lt;br /&gt;
&lt;br /&gt;
The image, by default, points to &amp;lt;code&amp;gt;/dev/mmcblk0&amp;lt;/code&amp;gt; for SD cards, which must be modified to point to &amp;lt;code&amp;gt;/dev/mmcblk2&amp;lt;/code&amp;gt; for the eMMC.  To start, mount the image to a loop device.&lt;br /&gt;
&lt;br /&gt;
 $ sudo losetup -P /dev/loop0 maemo-leste-*-arm64-pinephone-*.img&lt;br /&gt;
&lt;br /&gt;
Mount the second partition to /mnt and the first partition to /mnt/boot and enter /mnt:&lt;br /&gt;
&lt;br /&gt;
 $ sudo mount /dev/loop0p2 /mnt&lt;br /&gt;
 $ sudo mount /dev/loop0p1 /mnt/boot&lt;br /&gt;
 $ cd /mnt&lt;br /&gt;
&lt;br /&gt;
Use the editor of your choice to edit &amp;lt;code&amp;gt;/mnt/etc/fstab&amp;lt;/code&amp;gt;, replacing &amp;lt;code&amp;gt;/dev/mmcblk0&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;/dev/mmcblk2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Now we need to edit &amp;lt;code&amp;gt;boot.scr&amp;lt;/code&amp;gt;. For that you will need to download &amp;lt;code&amp;gt;boot.txt&amp;lt;/code&amp;gt; from Maemo Leste github:&lt;br /&gt;
&lt;br /&gt;
 $ cd /mnt/boot&lt;br /&gt;
 $ sudo wget https://raw.githubusercontent.com/maemo-leste/pine64-uboot/master/boot.txt&lt;br /&gt;
&lt;br /&gt;
Now we do the same step as we did for the fstab, replacing &amp;lt;code&amp;gt;/dev/mmcblk0&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;/dev/mmcblk2&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;boot.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To regenerate &amp;lt;code&amp;gt;boot.scr&amp;lt;/code&amp;gt; you need to install &amp;lt;code&amp;gt;u-boot-tools&amp;lt;/code&amp;gt; first to be able to use mkimage.&lt;br /&gt;
&lt;br /&gt;
Regenerate &amp;lt;code&amp;gt;boot.scr&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ sudo mkimage -A arm -O linux -T script -C none -a 0 -e 0 -d boot.txt boot.scr&lt;br /&gt;
&lt;br /&gt;
Leave /mnt and unmount the partitions:&lt;br /&gt;
&lt;br /&gt;
 $ cd ~&lt;br /&gt;
 $ sudo umount -R /mnt&lt;br /&gt;
&lt;br /&gt;
We can now save the image we just modified using dd:&lt;br /&gt;
&lt;br /&gt;
 $ sudo dd if=/dev/loop0 of=maemo-leste-1.0-arm64-pinephone-EMMC.img&lt;br /&gt;
&lt;br /&gt;
The image is now ready to be installed to the eMMC.&lt;br /&gt;
&lt;br /&gt;
We can now remove the loop device we created earlier:&lt;br /&gt;
&lt;br /&gt;
 $ sudo losetup -d /dev/loop0&lt;br /&gt;
&lt;br /&gt;
==== Install Using Tow-Boot ====&lt;br /&gt;
&lt;br /&gt;
If you [https://tow-boot.org/devices/pine64-pinephoneA64.html flashed tow-boot to the PinePhone] the eMMC can be flashed by holding vol+ on startup to boot into USB Mass Storage mode.&lt;br /&gt;
&lt;br /&gt;
The process of flashing Maemo Leste to the eMMC is identical to that of any other storage medium - e.g. a microSD card. You can use the &amp;lt;i&amp;gt;dd&amp;lt;/i&amp;gt; command or a utility such as Etcher or Gnome Disks, etc.&lt;br /&gt;
&lt;br /&gt;
==== Install Using JumpDrive ====&lt;br /&gt;
&lt;br /&gt;
You can flash Maemo Leste to eMMC using JumpDrive. This utility boots from microSD and exposes the internal eMMC flash storage when the PinePhone is connected to a computer.&lt;br /&gt;
&lt;br /&gt;
The process of flashing Maemo Leste to the exposed and mounted eMMC is identical to that of any other storage medium - e.g. a microSD card. &lt;br /&gt;
&lt;br /&gt;
[https://wiki.pine64.org/wiki/PinePhone_Installation_Instructions#Using_JumpDrive JumpDrive instructions are on the Pine64 wiki.]&lt;br /&gt;
&lt;br /&gt;
==== Install from the booted microSD ====&lt;br /&gt;
# Flash Maemo Leste to the microSD card&lt;br /&gt;
# Insert microSD card and boot the phone&lt;br /&gt;
# Download the latest Maemo Leste image on the booted OS; if you get errors during download, you&#039;ll have to expand the partition; and don&#039;t forget to re-check the checksums when you download.&lt;br /&gt;
# Extract the image file so that it only ends in &amp;quot;.img&amp;quot;&lt;br /&gt;
# Flash the image file to eMMC using &amp;lt;code&amp;gt;dd if=&#039;&#039;&#039;IMAGE.img&#039;&#039;&#039; of=/dev/&#039;&#039;&#039;mmcblkX&#039;&#039;&#039; bs=1M status=progress conv=fsync&amp;lt;/code&amp;gt; where X is the number label of the eMMC (of the disk, not the partition!). Use the command &amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt; to check your devices: typically with the current kernel the microSD card is &#039;&#039;/dev/mmcblk0&#039;&#039; and the eMMC is &#039;&#039;/dev/mmcblk2&#039;&#039; but as always with &#039;&#039;dd&#039;&#039; be extremely cautious to get the devices correct. &lt;br /&gt;
# Turn off phone, remove microSD card and then turn on the phone.&lt;br /&gt;
&lt;br /&gt;
== Post-Installation ==&lt;br /&gt;
&lt;br /&gt;
=== How to take a picture ===&lt;br /&gt;
&lt;br /&gt;
Maemo userland to take pictures or make videos is ready yet. The default camera app is pinhole: https://github.com/piggz/harbour-pinhole/&lt;br /&gt;
&lt;br /&gt;
Both cameras (rear and front) are supported. Work in ongoing to improve the camera app.&lt;br /&gt;
&lt;br /&gt;
To open the (pinhole) camera from the terminal:&lt;br /&gt;
 $ harbour-pinhole&lt;br /&gt;
&lt;br /&gt;
Or open it from Maemo desktop &amp;quot;Camera&amp;quot; icon.&lt;br /&gt;
&lt;br /&gt;
In order to trigger auto-focus:&lt;br /&gt;
 $ v4l2-ctl -d /dev/v4l-subdev1 -c focus_automatic_continuous=1&lt;br /&gt;
&lt;br /&gt;
Or trigger autofocus using the commands to start and stop manually:&lt;br /&gt;
 $ v4l2-ctl -d /dev/v4l-subdev1 -c auto_focus_start=1&lt;br /&gt;
&lt;br /&gt;
then wait till it gets the focus where you want, then &lt;br /&gt;
 $ v4l2-ctl -d /dev/v4l-subdev1 -c auto_focus_stop=1&lt;br /&gt;
&lt;br /&gt;
You can use this script as reference to take a picture:&lt;br /&gt;
https://github.com/OpenMandrivaAssociation/pinephone-tools/blob/master/camera-setup&lt;br /&gt;
&lt;br /&gt;
Or use libcamera tools (libcamera-tools package). To list the cameras:&lt;br /&gt;
 $ cam -l&lt;br /&gt;
&lt;br /&gt;
Example to capture 10 pictures with the rear camera:&lt;br /&gt;
 $ cam --camera &amp;quot;/base/i2c-csi/rear-camera@4c&amp;quot; --file=/home/user/some_dir --capture=10&lt;br /&gt;
&lt;br /&gt;
Example to capture 10 pictures with the front camera:&lt;br /&gt;
 $ cam --camera &amp;quot;/base/i2c-csi/front-camera@3c&amp;quot; --file=/home/user/some_dir --capture=10&lt;br /&gt;
&lt;br /&gt;
And then, conver the raw &amp;quot;.bin&amp;quot; files to some useful format with ffmpeg or any other image conversion tool. Example:&lt;br /&gt;
 $ ffmpeg -f image2 -vcodec rawvideo -s 1600x1200 -pix_fmt bayer_bggr8 -i picture.bin converted_picture.jpeg&lt;br /&gt;
&lt;br /&gt;
Other option is to use &amp;quot;cam&amp;quot; to capture to DNG. Example:&lt;br /&gt;
 $ cam --camera &amp;quot;/base/i2c-csi/rear-camera@4c&amp;quot; --file=/home/user/frame-#.dng --capture=10&lt;br /&gt;
&lt;br /&gt;
And then convert to .ppm (for .tiff use &amp;quot;-T&amp;quot; cmd line parameter). Eg:&lt;br /&gt;
 $ dcraw frame-cam0-stream0-000001.dng&lt;br /&gt;
&lt;br /&gt;
Also the graphical tool &amp;quot;qcam&amp;quot; is working! Run it with:&lt;br /&gt;
 $ qcam -r gles -spixelformat=NV21,width=1280,height=720 -platform xcb -style=fusion&lt;br /&gt;
&lt;br /&gt;
=== Enabling Flash Light / Torch ===&lt;br /&gt;
&lt;br /&gt;
Enable:&lt;br /&gt;
 $  echo 1 &amp;gt; /sys/class/leds/white:flash/brightness&lt;br /&gt;
&lt;br /&gt;
Disable:&lt;br /&gt;
 $ echo 0 &amp;gt; /sys/class/leds/white:flash/brightness&lt;br /&gt;
&lt;br /&gt;
Trigger flash strobe:&lt;br /&gt;
 $ echo 1 &amp;gt; /sys/class/leds/white:flash/flash_strobe&lt;br /&gt;
&lt;br /&gt;
=== PinePhone Keyboard ===&lt;br /&gt;
&lt;br /&gt;
First of all, make sure you have the latest firmware loaded in the keyboard (firmware is here: https://github.com/maemo-leste-upstream-forks/pinephone-keyboard/tree/master/firmware/build and userland here: https://github.com/maemo-leste-upstream-forks/pinephone-keyboard ):&lt;br /&gt;
&lt;br /&gt;
 $ ppkb-i2c-flasher -e i2c -i fw-user.bin write reset&lt;br /&gt;
&lt;br /&gt;
Load the xkb layout ( available here: https://codeberg.org/phalio/ppkb-layouts/src/branch/main/xkb )&lt;br /&gt;
&lt;br /&gt;
 $ setxkbmap pp altgr&lt;br /&gt;
&lt;br /&gt;
=== Suspend ===&lt;br /&gt;
&lt;br /&gt;
Suspend can be triggered with:&lt;br /&gt;
 $ echo mem &amp;gt; /sys/power/state&lt;br /&gt;
&lt;br /&gt;
A temporary workaround for calling suspend from UI is here: https://github.com/rafael2k/maemo-suspend/&lt;br /&gt;
&lt;br /&gt;
=== Volume Applet ===&lt;br /&gt;
&lt;br /&gt;
Volume applet ( https://github.com/maemo-leste/maemo-statusmenu-volume ) needs a change in &amp;quot;sink_name&amp;quot; at &amp;quot;/usr/share/maemo-statusmenu-volume/sinks.ini&amp;quot;. Edit the sinks.ini in order the sink_name is:&lt;br /&gt;
&lt;br /&gt;
sink_name=alsa_output.0.HiFi__hw_PinePhone_0__sink&lt;br /&gt;
&lt;br /&gt;
=== Installing apps ===&lt;br /&gt;
&lt;br /&gt;
* Apps can be installed just as on any Devuan system with:&lt;br /&gt;
 $ sudo apt install &#039;&#039;package-name&#039;&#039;&lt;br /&gt;
* There is also the app store.&lt;br /&gt;
&lt;br /&gt;
=== Launching apps ===&lt;br /&gt;
&lt;br /&gt;
This works for any app. Say for instance, you want to run Iceweasel/Firefox:&lt;br /&gt;
&lt;br /&gt;
* Launch apps from the desktop&lt;br /&gt;
* Launch apps from your console:&lt;br /&gt;
 $ iceweasel &amp;amp;&lt;br /&gt;
* Install a universal app launcher that you can run from desktop:&lt;br /&gt;
 $ sudo apt install desktop-cmd-exec&lt;br /&gt;
&lt;br /&gt;
=== Make apps show up on desktop ===&lt;br /&gt;
&lt;br /&gt;
Apps installed via apt, or otherwise not installed from the app store, don&#039;t come with desktop icons pre-configured and so won&#039;t show up on the desktop. If you want desktop icons for your apps, you have to edit .desktop files for the apps you want to show up on the desktop, see ([https://wiki.archlinux.org/title/Desktop_entries examples])&lt;br /&gt;
&lt;br /&gt;
To view a list of currently installed apps, do:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt list --installed | less&lt;br /&gt;
&lt;br /&gt;
This should help you figure out for which apps to configure .desktop icons. A benefit with all this is that you can decide which apps you want to show or hide.&lt;br /&gt;
&lt;br /&gt;
=== Unhide the keyboard ===&lt;br /&gt;
&lt;br /&gt;
The virtual keyboard can be summoned by hitting the volume-up key while the cursor is in a text field (such as the URL bar in a web browser like Firefox). This will be fixed in a future release (image tested: 20220731).&lt;br /&gt;
&lt;br /&gt;
=== Note about Calculator ===&lt;br /&gt;
&lt;br /&gt;
The default GUI calculator works (08/15/2022) but you won&#039;t see the numbers appear on screen until after you touch the next key. It should be used in landscape mode for best results, as there are additional display issues in portrait mode.&lt;br /&gt;
&lt;br /&gt;
=== Time zone / World Clock ===&lt;br /&gt;
&lt;br /&gt;
Currently (06/15/2022) the interface to the default GUI clock has a few bugs but the workaround is to: &lt;br /&gt;
&lt;br /&gt;
* Go to Settings &amp;gt; Date and Time &amp;gt; and adjust time zone and date and time there. This also has some bugs, but only in portrait mode.&lt;br /&gt;
&lt;br /&gt;
* Or just use the console:&lt;br /&gt;
&lt;br /&gt;
 $ sudo date -s HH:MM&lt;br /&gt;
 $ sudo date -s YYYYMMDD&lt;br /&gt;
 $ sudo ln -s /usr/share/zoneinfo/YOURREGION/YOURCITY /etc/localtime&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== More Tips &amp;amp; Tricks ===&lt;br /&gt;
&lt;br /&gt;
Visit [https://leste.maemo.org/Tricks &#039;&#039;&#039;this page&#039;&#039;&#039;] for more general advice on customizing Maemo on your PinePhone.&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N9&amp;diff=3281</id>
		<title>Nokia N9</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N9&amp;diff=3281"/>
		<updated>2026-09-27T07:41:30Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Lankku&lt;br /&gt;
|dimensions=116.5x61.2x12.1mm&lt;br /&gt;
|release_date=September 2011&lt;br /&gt;
|soc=TI OMAP3630&lt;br /&gt;
|dram=1024M&lt;br /&gt;
|power=&lt;br /&gt;
|display=480x854 3.9&amp;quot; AMOLED&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16/64GB flash&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;
[[Category:Device]]&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Mainline Linux ==&lt;br /&gt;
&lt;br /&gt;
 14:49 &amp;lt;sre&amp;gt; tmlind: parazyd: not sure if you found my old n9/50 display branch already (I did not read full history since you pinged me). I think only this patch is needed to get display output on n9/50:&lt;br /&gt;
 https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-n900.git/commit/?h=n950-display-tony&amp;amp;id=d4cbc226a30b29bf2583ffff97b052c9ec68c8a3&lt;br /&gt;
 14:52 &amp;lt;parazyd&amp;gt; I have these: https://github.com/parazyd/arm-sdk/tree/master/extra/patches/linux-n9-patches&lt;br /&gt;
 14:52 &amp;lt;parazyd&amp;gt; But it&#039;s 4.16&lt;br /&gt;
 14:59 &amp;lt;sre&amp;gt; parazyd: ok, 4.16 is... old. Basically the features for the first four patches reached mainline. Patches 5-7 add automatic rotation and have not yet been integrated,&lt;br /&gt;
 but screen works without them (one just needs to rotate&lt;br /&gt;
 manually). Also they are easy to rebase and I don&#039;t see any problems upstreaming them after Tomi&#039;s cleanup series has landed.&lt;br /&gt;
 14:59 &amp;lt;sre&amp;gt; The &#039;rotation&#039; property is already documented in DT bindings :) Finally patch 8 is required on OMAP3 devices and has not yet been upstreamed either. Without that display does not work at all on n9/50.&lt;br /&gt;
 15:00 &amp;lt;sre&amp;gt; Also on mainline the DSI command mode panel driver works like the other DRM panel drivers, so the panel timing is described in the driver instead of DT.&lt;br /&gt;
 15:00 &amp;lt;sre&amp;gt; so support for &amp;quot;nokia,pyrenees&amp;quot; needs to be added in the driver instead of describing the timings in DT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Partitioning ==&lt;br /&gt;
&lt;br /&gt;
https://talk.maemo.org/showthread.php?t=91914&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WORK IN PROGRESS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In Harmattan, go to &#039;&#039;&#039;Settings-&amp;gt;Applications-&amp;gt;Installations&#039;&#039;&#039; and enable &#039;&#039;&#039;Allow installation from non-Store sources&#039;&#039;&#039;.&lt;br /&gt;
Then connect to WiFi and navigate to http://maedevu.maemo.org/images/n9/n9repomirror_0.7.2_armel.deb and install the package.&lt;br /&gt;
&lt;br /&gt;
After installation, go to &#039;&#039;&#039;Settings-&amp;gt;Security-&amp;gt;Developer mode&#039;&#039;&#039; and enable &#039;&#039;&#039;Developer mode&#039;&#039;&#039;. Your device will do some&lt;br /&gt;
operations and then reboot. Once rebooted, reconnect to WiFi if necessary and go back to &#039;&#039;&#039;Settings-&amp;gt;Security-&amp;gt;Developer mode&#039;&#039;&#039;&lt;br /&gt;
and install &#039;&#039;&#039;Debugging&#039;&#039;&#039; (other packages as a plus). Now you should have a Terminal app.&lt;br /&gt;
&lt;br /&gt;
For root access, in the terminal you can type:&lt;br /&gt;
&lt;br /&gt;
 $ devel-su&lt;br /&gt;
 Password: rootme&lt;br /&gt;
&lt;br /&gt;
For ssh access, set a password for the user:&lt;br /&gt;
 $ devel-su&lt;br /&gt;
 # passwd user &lt;br /&gt;
&lt;br /&gt;
Then you can ssh:&lt;br /&gt;
 $ ssh user@RM696&lt;br /&gt;
&lt;br /&gt;
Remove openmode warning:&lt;br /&gt;
 $ devel-su&lt;br /&gt;
 # disclaimer-cal remove View-openmode&lt;br /&gt;
&lt;br /&gt;
Download ubiboot (on device):&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p /home/user/MyDocs/boot &amp;amp;&amp;amp; cd /home/user/MyDocs/boot&lt;br /&gt;
 $ wget http://maedevu.maemo.org/images/n9/ubiboot-02_0.3.5_301013.tar&lt;br /&gt;
 $ tar xf ubiboot-02_0.3.5_301013.tar&lt;br /&gt;
 $ rm ubiboot-02_0.3.5_301013.tar&lt;br /&gt;
 $ md5sum *&lt;br /&gt;
 e76ed3f0cf0cc172f668b970ae778a71  md5sums.txt&lt;br /&gt;
 d1e1a6eb6d877f53a01e946a5ccf5017  ubiboot-02.menus.cpio&lt;br /&gt;
 adfbdc7d6cca6638b2dd079105d8daeb  ubiboot.conf&lt;br /&gt;
 d6d7081cffe2684944f141bc9a71fea9  zImage_2.6.32.54-ubiboot-02_301013&lt;br /&gt;
 $ devel-su&lt;br /&gt;
 # cd /boot&lt;br /&gt;
 # wget http://maedevu.maemo.org/images/n9/zImage_2.6.32.54-openmode_l2fix&lt;br /&gt;
 # cd /&lt;br /&gt;
 # wget http://maedevu.maemo.org/images/n9/preinits.tar&lt;br /&gt;
 # md5sum preinits.tar&lt;br /&gt;
 515a8e1e5506f45afbc139c137d496b7  preinits.tar&lt;br /&gt;
 # tar xf preinits.tar&lt;br /&gt;
 # rm preinits.tar&lt;br /&gt;
&lt;br /&gt;
Put your device in Upgrade mode:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 001 Device 084: ID 0421:0105 Nokia Mobile Phones Nokia Firmware Upgrade Mode&lt;br /&gt;
&lt;br /&gt;
Disable watchdogs:&lt;br /&gt;
&lt;br /&gt;
 # 0xFFFF -F no-omap-wd,no-ext-wd,no-lifeguard-reset&lt;br /&gt;
&lt;br /&gt;
Power off the N9 completely, and run flasher to flash ubiboot kernel, then connect the N9 with USB:&lt;br /&gt;
&lt;br /&gt;
 # flasher -a firmware.bin -k zImage_2.6.32.54-ubiboot-02_301013 --flash-only=kernel -f -R&lt;br /&gt;
&lt;br /&gt;
If everything was performed correctly, the device should boot in an animated bootmenu if you disconnected&lt;br /&gt;
the USB cable, or maintenance mode if USB is still connected.&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Razr_(2011)&amp;diff=3280</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=3280"/>
		<updated>2026-09-27T07:40:26Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &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 &amp;lt;br&amp;gt;Cortex-A9 &amp;lt;br&amp;gt;Armv7‑A&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|display=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>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=3279</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=3279"/>
		<updated>2026-09-27T07:39:50Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &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 XT875&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;
|display=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.18.x&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=Yes&lt;br /&gt;
|sw_sms=Yes&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://git.maemo.org/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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
22:37 &amp;lt; tmlind&amp;gt; i also had to do tcmdrw 6850=05 for 3g voice to work properly&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://git.maemo.org/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://git.maemo.org/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://git.maemo.org/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://git.maemo.org/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>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=3278</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=3278"/>
		<updated>2026-09-27T07:39:05Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &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 XT894&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430 &amp;lt;br&amp;gt;Cortex-A9 &amp;lt;br&amp;gt;Armv7‑A &lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|display=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, &amp;lt;br&amp;gt;LIS3DH accelerometer, &amp;lt;br&amp;gt;TMP105 temperature, &amp;lt;br&amp;gt;ISL29030 proximity and illuminance &lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=6.18 LTS&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=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&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=&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=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;
* 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-excalibur-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;
# NOTE: be sure there&#039;s only one file matching maemo-leste-5.0-armhf-droid4-*.img.xz before running this command&lt;br /&gt;
xzcat maemo-leste-5.0-armhf-droid4-*.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://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;
&lt;br /&gt;
The keyboard layout is extended to provide more standard keys.&lt;br /&gt;
[[File:Maemo-leste-droid4-kbd-2021-07.png|center|620px|thumb|maemo-leste droid4 keyboard]]&lt;br /&gt;
Key mapping can be tested with the &#039;xev&#039; program.&lt;br /&gt;
&lt;br /&gt;
It may be necessary to run the follow commands as root in order to get the OK key to function correctly (see [https://github.com/maemo-leste/bugtracker/issues/510#issuecomment-815618591 here]):&lt;br /&gt;
 udevadm hwdb --update&lt;br /&gt;
 udevadm trigger&lt;br /&gt;
&lt;br /&gt;
This should survive a 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 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;
== Bluetooth ==&lt;br /&gt;
&lt;br /&gt;
Needs firmware - install latest firmware-ti-connectivity - See also https://git.maemo.org/leste/bugtracker/issues/290. Due to interference with WiFi, load driver manually, AFTER wifi module loaded. So you should do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install firmware-ti-connectivity&lt;br /&gt;
sudo modprobe hci_uart&lt;br /&gt;
sudo hciconfig hci0 up&lt;br /&gt;
sudo hcitool lescan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
15:04 &amp;lt; tmlind&amp;gt; Wizzup: i think the logo on droid4 can be flashed with fastboot flash logo logo.bin or something, can also be just written to logo partition from m-l&lt;br /&gt;
[snip]&lt;br /&gt;
09:24 &amp;lt; xsetiadi&amp;gt; https://github.com/xsetiadi/droid4-kexecboot/blob/master/logo.bin&lt;br /&gt;
09:25 &amp;lt; xsetiadi&amp;gt; becarefull, you can bootloop droid4 if you wrong flash partition&lt;br /&gt;
09:26 &amp;lt; xsetiadi&amp;gt; like i do last year&lt;br /&gt;
09:26 &amp;lt; xsetiadi&amp;gt; instead of flashing using command: fastboot flash logo.bin logo.bin i just flash it with command: fastboot flash logo logo.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
==== 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;
&lt;br /&gt;
If one wants to mirror the screen on HDMI, this can be done like so, for landscape:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --newmode &amp;quot;960x540_60.00&amp;quot;   40.75  960 992 1088 1216  540 543 548 562 -hsync +vsync&lt;br /&gt;
xrandr --addmode HDMI-1 &amp;quot;960x540_60.00&amp;quot;&lt;br /&gt;
xrandr --output HDMI-1 --mode &amp;quot;960x540_60.00&amp;quot; --same-as DSI-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For rotation, something like this might or might not work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --newmode &amp;quot;960x540_60.00ROT&amp;quot; 43.00  544 576 632 720  960 963 973 996 -hsync +vsync&lt;br /&gt;
xrandr --addmode HDMI-1 &amp;quot;960x540_60.00ROT&amp;quot;&lt;br /&gt;
xrandr --output HDMI-1 --mode &amp;quot;960x540_60.00&amp;quot; --same-as DSI-1 --rotate right&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;
==== BT Audio headset ====&lt;br /&gt;
&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. The quality seems a bit better in &#039;offline mode&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Torch ====&lt;br /&gt;
&lt;br /&gt;
The Droid 4 has a TI LM3559 flash torch controller. This provides flash functionality when taking pictures, usage as a torch, and provides privacy indication (in this mode, the LED flashes in a fast heartbeat pattern). A driver for it exists in mainline, but it requires some DTS work, since it is tied to a camera device. &lt;br /&gt;
&lt;br /&gt;
If you want to use it in the meantime, direct i2c access can be used as follows (since this is direct access, be careful about each of the commands below):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
##Install the prerequisites&lt;br /&gt;
$ sudo apt install i2c-tools&lt;br /&gt;
&lt;br /&gt;
## Turn LED on in torch mode&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x1a&lt;br /&gt;
&lt;br /&gt;
## Turn LED on in privacy indication mode&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x19&lt;br /&gt;
&lt;br /&gt;
## Turn LED off (in any mode)&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x18&lt;br /&gt;
&lt;br /&gt;
## Use LED for doing a hella bright flash for some time once and then turn off&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x1b&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using a configured Leste sdcard in a different Droid4 ==&lt;br /&gt;
&lt;br /&gt;
A configured Droid4 Leste installation is unique to the device that it was calibrated on.  Particularly the wlan firmware calibration will be incorrect if an existing Leste installation is transferred to a different device.  &lt;br /&gt;
&lt;br /&gt;
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 Droid4, 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;
&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;
Droid4_Daimonin_Hdmi.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status overview ==&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 || 6.18 LTS || Mainline + some patches not yet in mainline - see https://git.maemo.org/leste-upstream-forks/droid4-linux/src/branch/leste/maemo-6.18.y&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)&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, see https://git.maemo.org/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 and conversations UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), and sphone UI&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://git.maemo.org/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&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;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_3&amp;diff=3277</id>
		<title>Motorola Droid 3</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_3&amp;diff=3277"/>
		<updated>2026-09-27T07:38:21Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=&lt;br /&gt;
[[File:Motorola Droid 3 Leste Chimera.jpg|thumb]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Solana XT862 / XT860&lt;br /&gt;
|dimensions=todo&lt;br /&gt;
|release_date=todo&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=512MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|display=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=todo&lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=6.1.9&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=No&lt;br /&gt;
|sw_tv=&lt;br /&gt;
|sw_3daccel=Yes [https://github.com/maemo-leste/pvr-omap4] (closed)&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=No (needs modem work)&lt;br /&gt;
|sw_sms=No (needs modem work)&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=&lt;br /&gt;
|sw_2g3gdata=&lt;br /&gt;
|sw_4g=No&lt;br /&gt;
|sw_bluetooth=todo&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=&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_als=Yes&lt;br /&gt;
|sw_gps=No (needs modem work)&lt;br /&gt;
|sw_agps=No&lt;br /&gt;
|sw_frontcam=No&lt;br /&gt;
|sw_backcam=No&lt;br /&gt;
|sw_idlepower=&lt;br /&gt;
|sw_standbytime=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This device is called &amp;quot;Motorola Milestone 3&amp;quot; outside of the US.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid 3 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;
&lt;br /&gt;
Download latest Chimera release from https://maedevu.maemo.org/images/droid3/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid3-20240908.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/MerlijnWajer/bionic-clown-boot/tree/solana (solana branch!)&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;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: Set the USB mode to &amp;quot;PC mode&amp;quot; instead of &amp;quot;mass storage mode&amp;quot; on your device before running install.sh&lt;br /&gt;
on bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Device is still heavy work in the progress. The following is known not to work:&lt;br /&gt;
&lt;br /&gt;
* Brightness control (screen is always max brightness) You can scale the brightness using xrandr:&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
   xrandr --output DSI-1 --brightness 0.5&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
* Keyboard backlight&lt;br /&gt;
* Modem interrupts, it is visible on USB but other communication with it doesn&#039;t work&lt;br /&gt;
* pstore (needs figuring out what the reserved memory is on Android)&lt;br /&gt;
* See if we can use 512MB ram instead of 509MB (see dts)&lt;br /&gt;
* &amp;lt;s&amp;gt;3d shows some frame lag / misdrawing, so probably powervr clock needs adjusting&amp;lt;/s&amp;gt; (seems solved on kernel 5.15)&lt;br /&gt;
* &amp;lt;s&amp;gt;touchscreen buttons do not work yet&amp;lt;/s&amp;gt; (fixed on 5.15)&lt;br /&gt;
* keyboard layout in Leste is not faithful to the icons on the keyboard, but rather mostly mimic droid 4&lt;br /&gt;
&lt;br /&gt;
Additionally, the device suffers from random hangs while in use, causing resets. When pstore works, we can hopefully figure this out. &amp;lt;s&amp;gt;(Haven&#039;t seen them on 5.15)&amp;lt;/s&amp;gt; (Came back on kernel 6.x) It might be a power-management-related issue, or a GPU issue (last log line shows something about OMAP complaining about DRM), or something else. The emergency shell works just fine with no hangs at all.&lt;br /&gt;
&lt;br /&gt;
There is a workaround to the random hangs that work for some in 6.1. Here is how to work around this.&lt;br /&gt;
&lt;br /&gt;
Download the latest Chimaera release: maemo-leste-1.0-armhf-droid3-20250608.img.xz and follow the same installation instructions provided above.&lt;br /&gt;
&lt;br /&gt;
*From the kexecboot menu, select the &amp;quot;emergency shell&amp;quot; startup.&lt;br /&gt;
*Bypass the login prompt, ALT-D, the kernel will continue to boot into the Hildon window manager.&lt;br /&gt;
*Immediately try and configure your wifi settings, the device might hang and reboot. Reset the battery and try again until you get it configured.&lt;br /&gt;
*Once wifi is configured, let the device sleep, having the screen off reduces the chances of it freezing up again.&lt;br /&gt;
*ssh/scp in to the D3 from another device.&lt;br /&gt;
*Replace the script in the /etc/init.d/powervr with this:&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
#!/sbin/openrc-run&lt;br /&gt;
&lt;br /&gt;
depend() {&lt;br /&gt;
        after eudev kmod&lt;br /&gt;
        before xorg xsession hildon-desktop&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        ebegin &amp;quot;Starting PowerVR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        modprobe pvrsrvkm_omap4_sgx540_120 || true&lt;br /&gt;
&lt;br /&gt;
        for i in 1 2 3 4 5; do&lt;br /&gt;
                [ -e /sys/bus/platform/devices/56000000.gpu/power/control ] &amp;amp;&amp;amp; break&lt;br /&gt;
                sleep 1&lt;br /&gt;
        done&lt;br /&gt;
&lt;br /&gt;
        #echo 0xffffffff &amp;gt; /sys/module/pvrsrvkm_omap4_sgx540_120/parameters/gPVRDebugLevel 2&amp;gt;/dev/null || true&lt;br /&gt;
        echo on &amp;gt; /sys/bus/platform/devices/56000000.gpu/power/control 2&amp;gt;/dev/null || true&lt;br /&gt;
&lt;br /&gt;
        /usr/bin/pvrsrvinit || true&lt;br /&gt;
&lt;br /&gt;
        eend 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        ebegin &amp;quot;Stopping PowerVR&amp;quot;&lt;br /&gt;
        eend 0&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Reboot always using the &amp;quot;emergency shell&amp;quot; startup. Use xrandr to reduce the screen brightness. Chimaera should run without random hangs. &lt;br /&gt;
&lt;br /&gt;
Also, the device often comes network locked. [[User:Wizzup]] has access to Sigmakey software and can help remotely remove the network lock.&lt;br /&gt;
&lt;br /&gt;
If you run the battery dead, you cannot recharge using the MicroUSB cable. It is recommended to purchase a wall-wort to externally charge the battery.&lt;br /&gt;
&lt;br /&gt;
If you have got the device stuck, you should hold the power button for about 7 seconds. Droid3 will display a white LED letting you know that it is shutting down. Once the LED shuts off, power on the device at any time. If this doesn&#039;t work, remove the battery and reset it.&lt;br /&gt;
&lt;br /&gt;
== Conversations ==&lt;br /&gt;
&lt;br /&gt;
*You can join IRC channels in conversations.&lt;br /&gt;
*You can create contacts in osso-addressbook to send messages or make calls. &lt;br /&gt;
*XMPP works.&lt;br /&gt;
&lt;br /&gt;
== Music ==&lt;br /&gt;
&lt;br /&gt;
*Lollypop works very well for the droid3. The controls are a bit small but are manageable.&lt;br /&gt;
*CMUS works, but chews up a lot of battery. It uses some remote M3 CPUs which are not available to normal Linux.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
neofetch.png&lt;br /&gt;
Terminal.JPG&lt;br /&gt;
Htop.png&lt;br /&gt;
Main.png&lt;br /&gt;
Status.png&lt;br /&gt;
Lollypop.png&lt;br /&gt;
3600bat.JPG&lt;br /&gt;
irssi.JPG&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=3276</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=3276"/>
		<updated>2026-09-27T07:36:47Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &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 &amp;lt;br&amp;gt;overclock @805MHz &amp;lt;br&amp;gt;Cortex-A8 &amp;lt;br&amp;gt;Armv7‑A&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|display=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=1320mAh&lt;br /&gt;
|sw_kernel=6.18&lt;br /&gt;
|sw_serial=Yes, UART under battery, 2.7V max!&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, single-touch&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, ucm, no speaker protection)&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes, firmware required&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=Yes, actually CIR, not  IrDA&lt;br /&gt;
|sw_2g3gdata=Yes&lt;br /&gt;
|sw_4gdata=&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=160mW (WIP)&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;
* Images built automatically can be obtained at the download page: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
* If you want to build a current image yourself use debos: https://git.maemo.org/leste-cicd/debos-leste but beware that downloadable images are genereally more stable than the most recent development build.&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 (dual boot mode):&lt;br /&gt;
&lt;br /&gt;
1. Either download 0xFFFF (binary for x86) from https://maedevu.maemo.org/images/n900/tools/ or build from source from https://github.com/pali/0xFFFF/ on *nix systems make sure to $ chmod a+x 0xFFFF&lt;br /&gt;
&lt;br /&gt;
2. Download u-boot from https://maedevu.maemo.org/images/n900/tools/ save it in a subfolder called test.&lt;br /&gt;
&lt;br /&gt;
3. Turn off Nokia N900, issue the following command on PC  &amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&amp;lt;/code&amp;gt;  you will get a message similar to the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0xFFFF v0.8  // Open Free Fiasco Firmware Flasher&lt;br /&gt;
Not a local device&lt;br /&gt;
Waiting for USB device...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the connect Nokia N900 to the PC. you will then get a message like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Found USB device: RX-51/RM-680/RM-696 (0x421:0x106) in Cold flashing mode&lt;br /&gt;
 USB device product string: Nokia USB ROM&lt;br /&gt;
 USB device serial number string: (not detected)&lt;br /&gt;
 Detected USB device: (not detected)   &lt;br /&gt;
 Waiting for ASIC ID...&lt;br /&gt;
 Detected OMAP3430 chip (revision 87)&lt;br /&gt;
 Device: (not detected)&lt;br /&gt;
 HW revision: (not detected)&lt;br /&gt;
 NOLO version: (not detected)&lt;br /&gt;
 Kernel version: (not detected)&lt;br /&gt;
 Initfs version: (not detected)&lt;br /&gt;
 Software release version: (not detected)&lt;br /&gt;
 Content eMMC version: (not detected)&lt;br /&gt;
 Root device: (not detected)&lt;br /&gt;
 USB host mode: (not detected)&lt;br /&gt;
 R&amp;amp;D mode: (not detected)&lt;br /&gt;
 Switching to NOLO mode...&lt;br /&gt;
 Sending OMAP memory boot message...&lt;br /&gt;
 Waiting for USB device...  &lt;br /&gt;
 Found USB device: SU-18/RX-34/RX-44/RX-48/RX-51/RM-680/RM-696 (0x421:0x105) in NOLO mode&lt;br /&gt;
 USB device product string: Nokia N900 (Update mode)&lt;br /&gt;
 USB device serial number string: MUN233033&lt;br /&gt;
 Detected USB device: RX-51            &lt;br /&gt;
 Initializing NOLO...&lt;br /&gt;
 Device: RX-51&lt;br /&gt;
 HW revision: 2204&lt;br /&gt;
 NOLO version: 1.4.14&lt;br /&gt;
 Kernel version: 2.6.28-20101501+0m5&lt;br /&gt;
 Initfs version: (not detected)&lt;br /&gt;
 Software release version: RX-51_2009SE_21.2011.38-1.203.1_PR_203&lt;br /&gt;
 Content eMMC version: RX-51_2009SE_10.2010.13-2.UK-IRELAND&lt;br /&gt;
 Root device: flash&lt;br /&gt;
 USB host mode: disabled&lt;br /&gt;
 R&amp;amp;D mode: disabled&lt;br /&gt;
 Load image:&lt;br /&gt;
 File: test/u-boot-2013.04-2.bin&lt;br /&gt;
 Image type: kernel&lt;br /&gt;
 Image size: 212864 bytes&lt;br /&gt;
 Sending image header...&lt;br /&gt;
 Sending image...&lt;br /&gt;
 100% [#################################################################]&lt;br /&gt;
 Done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. 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; you will get an output such as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 0xFFFF v0.8  // Open Free Fiasco Firmware Flasher&lt;br /&gt;
 Not a local device&lt;br /&gt;
 Waiting for USB device...  &lt;br /&gt;
 Found USB device: SU-18/RX-34/RX-44/RX-48/RX-51/RM-680/RM-696 (0x421:0x105) in NOLO mode&lt;br /&gt;
 USB device product string: Nokia N900 (Update mode)&lt;br /&gt;
 USB device serial number string: MUN233033&lt;br /&gt;
 Detected USB device: RX-51            &lt;br /&gt;
 Initializing NOLO...&lt;br /&gt;
 Device: RX-51&lt;br /&gt;
 HW revision: 2204&lt;br /&gt;
 NOLO version: 1.4.14&lt;br /&gt;
 Kernel version: 2.6.28-20101501+0m5&lt;br /&gt;
 Initfs version: (not detected)&lt;br /&gt;
 Software release version: RX-51_2009SE_21.2011.38-1.203.1_PR_203&lt;br /&gt;
 Content eMMC version: RX-51_2009SE_10.2010.13-2.UK-IRELAND&lt;br /&gt;
 Root device: flash&lt;br /&gt;
 USB host mode: disabled&lt;br /&gt;
 R&amp;amp;D mode: disabled&lt;br /&gt;
 Booting kernel with default cmdline...&lt;br /&gt;
&amp;lt;/pre&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. The screen might not be backlit so it will be difficult to read. 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;. The screen might be very dim and look off. So it might be difficult to see. Boot up the first time will take a long time full 2 min on test. Some text will show and will then go back to black screen but eventually you will see the splash screen and later the icons will show. &lt;br /&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;pre&amp;gt;&lt;br /&gt;
 sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have a functional Fremantle installation and you want to keep it, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;lt;code&amp;gt;u-boot-flasher&amp;lt;/code&amp;gt; (U-Boot with kernel 2.6.28-omap1). This will &#039;flash&#039; u-boot into the kernel area. This u-boot also contains the kernel itself, so doing this is safe.&lt;br /&gt;
&lt;br /&gt;
2. Check with &amp;lt;code&amp;gt;uname -a&amp;lt;/code&amp;gt; to be sure what kernel you are running. If you were running a power kernel, install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is important, to ensure that the correct kernel is booted, otherwise modules will not match and boot will fail.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; __EOF__&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(press enter at the end if necessary)&lt;br /&gt;
&lt;br /&gt;
And then run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
u-boot-update-bootmenu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device with the keyboard slide open (U-boot will boot the default option if the keyboard slide is closed)&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;
Use this command line (specifically the part after &amp;lt;code&amp;gt;rootwait&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p2 rootwait console=ttyS2,115200 verbose earlyprintk debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
=== Speakers ===&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. There is no clear consensus about this, but it is best to err on the side of caution.&lt;br /&gt;
=== Torch ===&lt;br /&gt;
&lt;br /&gt;
The N900 has an Analog Devices ADP1653 flash controller, mainly for use with the camera. It drives two white power LEDs connected in series, and has an additional red indicator led (referred to as a privacy indicator). The ADP1653 has a driver in mainline kernel, and it probes fine. However, some DTS changes are needed to make it work, since the driver requires it to be tied to a camera.&lt;br /&gt;
&lt;br /&gt;
In the meantime, the LEDs can be used as a torch manually using &amp;lt;code&amp;gt;i2cset&amp;lt;/code&amp;gt;. &lt;br /&gt;
However, &#039;&#039;&#039;BE WARNED:&#039;&#039;&#039; setting wrong values via i2c runs the risk of over-driving the LEDs and causing permanent hardware damage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# Install the prerequisites&lt;br /&gt;
$ sudo apk add i2c-tools&lt;br /&gt;
&lt;br /&gt;
# Unload the driver in case it is already loaded. We will use i2c manually&lt;br /&gt;
$ sudo modprobe -r adp1653&lt;br /&gt;
&lt;br /&gt;
# Enable the chip&lt;br /&gt;
$ echo 88 | sudo tee /sys/class/gpio/export&lt;br /&gt;
$ echo &amp;quot;out&amp;quot; | sudo tee /sys/class/gpio/gpio88/direction&lt;br /&gt;
$ echo 1 | sudo tee /sys/class/gpio/gpio88/value&lt;br /&gt;
&lt;br /&gt;
# Turn the torch on, using the lowest torch current - DO NOT use other values here or you risk burning the LED&lt;br /&gt;
# Values between 1 and 7 enable the red privacy/recording led, with different intensity&lt;br /&gt;
# 0x8 is the lowest torch intensity, and we do not recommend going above it&lt;br /&gt;
$ sudo i2cset -y 2 0x30 0x0 0x8&lt;br /&gt;
&lt;br /&gt;
# Turn the torch off&lt;br /&gt;
$ sudo i2cset -y 2 0x30 0x0 0x0&lt;br /&gt;
&lt;br /&gt;
# Disable the chip&lt;br /&gt;
$ echo 0 | sudo tee /sys/class/gpio/gpio88/value&lt;br /&gt;
$ echo 88 | sudo tee /sys/class/gpio/unexport&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
This ticket tracks hitting idle states for the N900: https://github.com/maemo-leste/bugtracker/issues/545&lt;br /&gt;
&lt;br /&gt;
Power usage right now is reported to be about 45mA (idle, modem ON and data ON). On a good battery this will last for about 30 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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
See this code for a work in progress power management script: https://github.com/maemo-leste/n900-pm&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 the Nokia N900&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 process 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, you will need to restart the calibration process from scratch.&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;
== Overclocking (optional) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overclocking is now available in -devel using cpufreq boost.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It uses 250-500-550-600-720-805MHz frequencies&lt;br /&gt;
&lt;br /&gt;
To enable it, edit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/sys/devices/system/cpu/cpufreq/boost&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And replace 0 by 1.&lt;br /&gt;
&lt;br /&gt;
It is possible to customise max/min/available frequencies editing files in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No other steps are needed and updates/upgrades work with boost mode.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Installing cpufrequtils is useful to change frequency governors.&lt;br /&gt;
&lt;br /&gt;
Prefer &amp;quot;conservative&amp;quot; instead of &amp;quot;ondemand&amp;quot; governor.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Performance&amp;quot; governor locks N900 at 805MHz.&lt;br /&gt;
&lt;br /&gt;
As root&lt;br /&gt;
&amp;lt;code&amp;gt;cpufreq-set -c 0 -g conservative&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: some devices can&#039;t run at 805MHz. For this specific case, select powersave governor instead of ondemand, activate boost mode, replace 805000 by 720000 in scaling_max_freq file and finally select conservative governor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Overclocking - Old method for testing purpose ==&lt;br /&gt;
&lt;br /&gt;
To be able to overclock two steps are needed:&lt;br /&gt;
&lt;br /&gt;
1) From Fremantle: add new Maemo Leste menu item (run as root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; /etc/bootmenu.d/30-maemo-leste-Overclock.item &amp;lt;&amp;lt; __EOF__&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(press enter at the end if necessary)&lt;br /&gt;
&lt;br /&gt;
And then run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
u-boot-update-bootmenu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) From Maemo Leste (run as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /usr/lib/linux-image-omap/omap3-n900.dtb /home/user&lt;br /&gt;
dtc -I dtb -O dts /home/user/omap3-n900.dtb -o /home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Now it&#039;s time to modify frequencies and voltage: be careful to do exactly the same)&lt;br /&gt;
&lt;br /&gt;
Replace all content in &amp;quot;opp-table { opp1 opp2 opp3 opp4 opp5 opp6 };&amp;quot; &lt;br /&gt;
&lt;br /&gt;
New opp-table for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opp-table {&lt;br /&gt;
		compatible = &amp;quot;operating-points-v2-ti-cpu&amp;quot;;&lt;br /&gt;
		syscon = &amp;lt; 0x05 &amp;gt;;&lt;br /&gt;
		phandle = &amp;lt; 0x03 &amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		opp1-250000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0xee6b280 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0xee098 0xee098 0xee098 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp2-500000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x1dcd6500 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x106738 0x106738 0x106738 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
			opp-suspend;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp3-600000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x23c34600 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x124f80 0x124f80 0x124f80 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp4-720000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x2aea5400 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x124f80 0x124f80 0x124f80 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp5-850000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x32a9f880 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x149970 0x149970 0x149970 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And still as root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /home/user/omap3-n900.dtb&lt;br /&gt;
dtc -I dts -O dtb /home/user/omap3-n900.dts -o /home/user/omap3-n900.dtb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check your kernel version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uname -r&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example if the result is 6.1.30, your vmlinuz version is vmlinuz-6.1.30&lt;br /&gt;
&lt;br /&gt;
In the next command, replace &amp;quot;vmlinuz-&amp;lt;version&amp;gt;&amp;quot; by yours (i.e vmlinuz-6.1.30)&lt;br /&gt;
&lt;br /&gt;
As root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /boot/vmlinuz-&amp;lt;version&amp;gt; /home/user/omap3-n900.dtb &amp;gt; /tmp/zImage_dtb&lt;br /&gt;
mkimage -A arm -O linux -T kernel -C none -a 80008000 -e 80008000 -d /tmp/zImage_dtb /boot/uImageX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now reboot and select &#039;Maemo Leste Overclock&#039; in bootmenu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;&#039;WARNING with old method:&#039;&#039;&#039; always use stock &amp;quot;Maemo Leste&amp;quot; in bootmenu before dist-upgrade / kernel update. (New uImageX must be created again and old uImageX must be removed))&lt;br /&gt;
&lt;br /&gt;
== Tips / Tweaks ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SD Card and first boot===&lt;br /&gt;
&lt;br /&gt;
To avoid overall slowness, SDXC U3 microSD card is a must. Class10 U1 cards are usually too slow to run Leste on N900 unfortunately.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: unresponsive / freezing screen is normal during Hildon-desktop loading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: do not use zram and/or zswap.&lt;br /&gt;
&lt;br /&gt;
First boot is a bit complicated because Leste is loading lot of things even if hildon-desktop is already visible (wait at least 3 min before clicking somewhere).&lt;br /&gt;
Connecting to Wi-Fi must be avoided until the second boot (otherwise apt-worker starts automatically and N900 is unresponsive for few minutes).&lt;br /&gt;
Don&#039;t forget to run /etc/expandcard.sh on first boot and check if swap is activated.&lt;br /&gt;
Then reboot.&lt;br /&gt;
&lt;br /&gt;
=== Gnome-tracker in $HOME ===&lt;br /&gt;
&lt;br /&gt;
By default trackers are indexing the entire $HOME folder, causing severe slowdown.&lt;br /&gt;
&lt;br /&gt;
To avoid this issue, the solution (until a proper fix) is to add a &amp;lt;code&amp;gt;.nomedia&amp;lt;/code&amp;gt; file in /home/user folder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /home/user/.nomedia&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Removing 250MHz CPU frequency (example) ===&lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Replace 250000 by 500000 in  &amp;lt;pre&amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Not persistent after reboot&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== More SWAP / SWAP activation (testing purpose) ===&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;&#039;Note: SWAP is already activated by default and use a swap file on SD card&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a simple 1GB swap file on the SDcard if swap is missing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(It takes some time...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo chmod 600 /&lt;br /&gt;
sudo mkswap /swapfile&lt;br /&gt;
sudo swapon /swapfile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make the change permanent open &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo nano /etc/fstab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And add this line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/swapfile swap swap defaults 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To check if the swap is active:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo swapon --show&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tweaking Transitions (already optimized by default now) ===&lt;br /&gt;
&lt;br /&gt;
Many options are missing in CSSU Features package but it is possible to edit them in transitions.ini.&lt;br /&gt;
&lt;br /&gt;
As root&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See Fremantle documentation for perfect setup.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: like Fremantle, blur effect can cause lags and slowness.&#039;&#039;&#039; It is possible to deactivate/modify it through the transitions.ini file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[HOME]&lt;br /&gt;
&lt;br /&gt;
radius = 1&lt;br /&gt;
&lt;br /&gt;
radius_more = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video playing ===&lt;br /&gt;
&lt;br /&gt;
Video playing is working fine using SMPLAYER:&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / General:&lt;br /&gt;
&lt;br /&gt;
Media engine: Other: /user/bin/mplayer&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / Video:&lt;br /&gt;
&lt;br /&gt;
Output driver: xv (0 - OMAP Textured Video)&lt;br /&gt;
&lt;br /&gt;
Only unable Double buffering and Disable screensaver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / Audio:&lt;br /&gt;
&lt;br /&gt;
Output driver: pulse (or User defined)&lt;br /&gt;
&lt;br /&gt;
Disable everything else&lt;br /&gt;
&lt;br /&gt;
Channel by default: 2 (Stereo)&lt;br /&gt;
&lt;br /&gt;
High speed playback: Auto&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / Performance:&lt;br /&gt;
&lt;br /&gt;
Unable Allow frame drop&lt;br /&gt;
&lt;br /&gt;
Hardware decoding: None&lt;br /&gt;
&lt;br /&gt;
Prefer 360p - 480p max video format&lt;br /&gt;
&lt;br /&gt;
(With overclocking, Video is working well using KODI 17.6 with equivalent A/V settings)&lt;br /&gt;
&lt;br /&gt;
=== Voice Calls / SIP Calls ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now SIP calls and SIP messages are working out of the box using Twinkle.&lt;br /&gt;
&lt;br /&gt;
Voice calls are now working out of the box as well.&lt;br /&gt;
&lt;br /&gt;
If sound is distorted with Pulseaudio, run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo chrt -a -f -p 99 $(pgrep pulseaudio)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Leste uses Pipewire by default now.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 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 || 6.18 LTS || Mainline + PowerVR Patches: https://github.com/maemo-leste/droid4-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 PowerVR driver&lt;br /&gt;
|-&lt;br /&gt;
| Overclock || Yes || up to 805MHz (stable &amp;amp; supported), 850MHz works with some devices (not supported), Turbo mode works&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), UCM support with Jack plug/unplug detection and FMTX&lt;br /&gt;
|-&lt;br /&gt;
| Video || Yes || Xv acceleration, up to 360-480p. Max 360p for online streaming with SMplayer.&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G/3.5G data || Yes || Works with ofono - UI is working, 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 Sphone or ofono scripts. Works with Conversations in -devel.&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || UCM support, sound is good. Works in 2G, 3G and 3.5G mode, works with Sphone&lt;br /&gt;
|-&lt;br /&gt;
| SIP calls / IM || Yes || Works with Twinkle, TLS transport is supported, Telepathy/Sphone integration is WIP&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver needs some work&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Select &#039;FM Transmitter&#039; in Pavucontrol&lt;br /&gt;
Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt; 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 || Depends on working Bluetooth stack&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Not used in Leste at the moment, since UI rotation does not work on N900&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 || &amp;lt;code&amp;gt;evdev&amp;lt;/code&amp;gt; interface not supported in mce since it depends on iio-sensor-proxy support. https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/issues/363 for possible &#039;fix&#039;&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 || &lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Yes || TX only (hardware limitation). Works with pwm-ir-tx driver (patched)&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~160mW / up to 30 hours || 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>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=3275</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=3275"/>
		<updated>2026-09-27T07:29:00Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Removing 250MHz CPU frequency (example) */&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 &amp;lt;br&amp;gt;overclock @805MHz &amp;lt;br&amp;gt;Cortex-A8 &amp;lt;br&amp;gt;Armv7‑A&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=1320mAh&lt;br /&gt;
|sw_kernel=6.18&lt;br /&gt;
|sw_serial=Yes, UART under battery, 2.7V max!&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, single-touch&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, ucm, no speaker protection)&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes, firmware required&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=Yes, actually CIR, not  IrDA&lt;br /&gt;
|sw_2g3gdata=Yes&lt;br /&gt;
|sw_4gdata=&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=160mW (WIP)&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;
* Images built automatically can be obtained at the download page: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
* If you want to build a current image yourself use debos: https://git.maemo.org/leste-cicd/debos-leste but beware that downloadable images are genereally more stable than the most recent development build.&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 (dual boot mode):&lt;br /&gt;
&lt;br /&gt;
1. Either download 0xFFFF (binary for x86) from https://maedevu.maemo.org/images/n900/tools/ or build from source from https://github.com/pali/0xFFFF/ on *nix systems make sure to $ chmod a+x 0xFFFF&lt;br /&gt;
&lt;br /&gt;
2. Download u-boot from https://maedevu.maemo.org/images/n900/tools/ save it in a subfolder called test.&lt;br /&gt;
&lt;br /&gt;
3. Turn off Nokia N900, issue the following command on PC  &amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&amp;lt;/code&amp;gt;  you will get a message similar to the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0xFFFF v0.8  // Open Free Fiasco Firmware Flasher&lt;br /&gt;
Not a local device&lt;br /&gt;
Waiting for USB device...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the connect Nokia N900 to the PC. you will then get a message like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Found USB device: RX-51/RM-680/RM-696 (0x421:0x106) in Cold flashing mode&lt;br /&gt;
 USB device product string: Nokia USB ROM&lt;br /&gt;
 USB device serial number string: (not detected)&lt;br /&gt;
 Detected USB device: (not detected)   &lt;br /&gt;
 Waiting for ASIC ID...&lt;br /&gt;
 Detected OMAP3430 chip (revision 87)&lt;br /&gt;
 Device: (not detected)&lt;br /&gt;
 HW revision: (not detected)&lt;br /&gt;
 NOLO version: (not detected)&lt;br /&gt;
 Kernel version: (not detected)&lt;br /&gt;
 Initfs version: (not detected)&lt;br /&gt;
 Software release version: (not detected)&lt;br /&gt;
 Content eMMC version: (not detected)&lt;br /&gt;
 Root device: (not detected)&lt;br /&gt;
 USB host mode: (not detected)&lt;br /&gt;
 R&amp;amp;D mode: (not detected)&lt;br /&gt;
 Switching to NOLO mode...&lt;br /&gt;
 Sending OMAP memory boot message...&lt;br /&gt;
 Waiting for USB device...  &lt;br /&gt;
 Found USB device: SU-18/RX-34/RX-44/RX-48/RX-51/RM-680/RM-696 (0x421:0x105) in NOLO mode&lt;br /&gt;
 USB device product string: Nokia N900 (Update mode)&lt;br /&gt;
 USB device serial number string: MUN233033&lt;br /&gt;
 Detected USB device: RX-51            &lt;br /&gt;
 Initializing NOLO...&lt;br /&gt;
 Device: RX-51&lt;br /&gt;
 HW revision: 2204&lt;br /&gt;
 NOLO version: 1.4.14&lt;br /&gt;
 Kernel version: 2.6.28-20101501+0m5&lt;br /&gt;
 Initfs version: (not detected)&lt;br /&gt;
 Software release version: RX-51_2009SE_21.2011.38-1.203.1_PR_203&lt;br /&gt;
 Content eMMC version: RX-51_2009SE_10.2010.13-2.UK-IRELAND&lt;br /&gt;
 Root device: flash&lt;br /&gt;
 USB host mode: disabled&lt;br /&gt;
 R&amp;amp;D mode: disabled&lt;br /&gt;
 Load image:&lt;br /&gt;
 File: test/u-boot-2013.04-2.bin&lt;br /&gt;
 Image type: kernel&lt;br /&gt;
 Image size: 212864 bytes&lt;br /&gt;
 Sending image header...&lt;br /&gt;
 Sending image...&lt;br /&gt;
 100% [#################################################################]&lt;br /&gt;
 Done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. 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; you will get an output such as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 0xFFFF v0.8  // Open Free Fiasco Firmware Flasher&lt;br /&gt;
 Not a local device&lt;br /&gt;
 Waiting for USB device...  &lt;br /&gt;
 Found USB device: SU-18/RX-34/RX-44/RX-48/RX-51/RM-680/RM-696 (0x421:0x105) in NOLO mode&lt;br /&gt;
 USB device product string: Nokia N900 (Update mode)&lt;br /&gt;
 USB device serial number string: MUN233033&lt;br /&gt;
 Detected USB device: RX-51            &lt;br /&gt;
 Initializing NOLO...&lt;br /&gt;
 Device: RX-51&lt;br /&gt;
 HW revision: 2204&lt;br /&gt;
 NOLO version: 1.4.14&lt;br /&gt;
 Kernel version: 2.6.28-20101501+0m5&lt;br /&gt;
 Initfs version: (not detected)&lt;br /&gt;
 Software release version: RX-51_2009SE_21.2011.38-1.203.1_PR_203&lt;br /&gt;
 Content eMMC version: RX-51_2009SE_10.2010.13-2.UK-IRELAND&lt;br /&gt;
 Root device: flash&lt;br /&gt;
 USB host mode: disabled&lt;br /&gt;
 R&amp;amp;D mode: disabled&lt;br /&gt;
 Booting kernel with default cmdline...&lt;br /&gt;
&amp;lt;/pre&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. The screen might not be backlit so it will be difficult to read. 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;. The screen might be very dim and look off. So it might be difficult to see. Boot up the first time will take a long time full 2 min on test. Some text will show and will then go back to black screen but eventually you will see the splash screen and later the icons will show. &lt;br /&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;pre&amp;gt;&lt;br /&gt;
 sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have a functional Fremantle installation and you want to keep it, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;lt;code&amp;gt;u-boot-flasher&amp;lt;/code&amp;gt; (U-Boot with kernel 2.6.28-omap1). This will &#039;flash&#039; u-boot into the kernel area. This u-boot also contains the kernel itself, so doing this is safe.&lt;br /&gt;
&lt;br /&gt;
2. Check with &amp;lt;code&amp;gt;uname -a&amp;lt;/code&amp;gt; to be sure what kernel you are running. If you were running a power kernel, install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is important, to ensure that the correct kernel is booted, otherwise modules will not match and boot will fail.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; __EOF__&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(press enter at the end if necessary)&lt;br /&gt;
&lt;br /&gt;
And then run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
u-boot-update-bootmenu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device with the keyboard slide open (U-boot will boot the default option if the keyboard slide is closed)&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;
Use this command line (specifically the part after &amp;lt;code&amp;gt;rootwait&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p2 rootwait console=ttyS2,115200 verbose earlyprintk debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
=== Speakers ===&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. There is no clear consensus about this, but it is best to err on the side of caution.&lt;br /&gt;
=== Torch ===&lt;br /&gt;
&lt;br /&gt;
The N900 has an Analog Devices ADP1653 flash controller, mainly for use with the camera. It drives two white power LEDs connected in series, and has an additional red indicator led (referred to as a privacy indicator). The ADP1653 has a driver in mainline kernel, and it probes fine. However, some DTS changes are needed to make it work, since the driver requires it to be tied to a camera.&lt;br /&gt;
&lt;br /&gt;
In the meantime, the LEDs can be used as a torch manually using &amp;lt;code&amp;gt;i2cset&amp;lt;/code&amp;gt;. &lt;br /&gt;
However, &#039;&#039;&#039;BE WARNED:&#039;&#039;&#039; setting wrong values via i2c runs the risk of over-driving the LEDs and causing permanent hardware damage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# Install the prerequisites&lt;br /&gt;
$ sudo apk add i2c-tools&lt;br /&gt;
&lt;br /&gt;
# Unload the driver in case it is already loaded. We will use i2c manually&lt;br /&gt;
$ sudo modprobe -r adp1653&lt;br /&gt;
&lt;br /&gt;
# Enable the chip&lt;br /&gt;
$ echo 88 | sudo tee /sys/class/gpio/export&lt;br /&gt;
$ echo &amp;quot;out&amp;quot; | sudo tee /sys/class/gpio/gpio88/direction&lt;br /&gt;
$ echo 1 | sudo tee /sys/class/gpio/gpio88/value&lt;br /&gt;
&lt;br /&gt;
# Turn the torch on, using the lowest torch current - DO NOT use other values here or you risk burning the LED&lt;br /&gt;
# Values between 1 and 7 enable the red privacy/recording led, with different intensity&lt;br /&gt;
# 0x8 is the lowest torch intensity, and we do not recommend going above it&lt;br /&gt;
$ sudo i2cset -y 2 0x30 0x0 0x8&lt;br /&gt;
&lt;br /&gt;
# Turn the torch off&lt;br /&gt;
$ sudo i2cset -y 2 0x30 0x0 0x0&lt;br /&gt;
&lt;br /&gt;
# Disable the chip&lt;br /&gt;
$ echo 0 | sudo tee /sys/class/gpio/gpio88/value&lt;br /&gt;
$ echo 88 | sudo tee /sys/class/gpio/unexport&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
This ticket tracks hitting idle states for the N900: https://github.com/maemo-leste/bugtracker/issues/545&lt;br /&gt;
&lt;br /&gt;
Power usage right now is reported to be about 45mA (idle, modem ON and data ON). On a good battery this will last for about 30 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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
See this code for a work in progress power management script: https://github.com/maemo-leste/n900-pm&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 the Nokia N900&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 process 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, you will need to restart the calibration process from scratch.&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;
== Overclocking (optional) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overclocking is now available in -devel using cpufreq boost.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It uses 250-500-550-600-720-805MHz frequencies&lt;br /&gt;
&lt;br /&gt;
To enable it, edit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/sys/devices/system/cpu/cpufreq/boost&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And replace 0 by 1.&lt;br /&gt;
&lt;br /&gt;
It is possible to customise max/min/available frequencies editing files in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No other steps are needed and updates/upgrades work with boost mode.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Installing cpufrequtils is useful to change frequency governors.&lt;br /&gt;
&lt;br /&gt;
Prefer &amp;quot;conservative&amp;quot; instead of &amp;quot;ondemand&amp;quot; governor.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Performance&amp;quot; governor locks N900 at 805MHz.&lt;br /&gt;
&lt;br /&gt;
As root&lt;br /&gt;
&amp;lt;code&amp;gt;cpufreq-set -c 0 -g conservative&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: some devices can&#039;t run at 805MHz. For this specific case, select powersave governor instead of ondemand, activate boost mode, replace 805000 by 720000 in scaling_max_freq file and finally select conservative governor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Overclocking - Old method for testing purpose ==&lt;br /&gt;
&lt;br /&gt;
To be able to overclock two steps are needed:&lt;br /&gt;
&lt;br /&gt;
1) From Fremantle: add new Maemo Leste menu item (run as root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; /etc/bootmenu.d/30-maemo-leste-Overclock.item &amp;lt;&amp;lt; __EOF__&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(press enter at the end if necessary)&lt;br /&gt;
&lt;br /&gt;
And then run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
u-boot-update-bootmenu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) From Maemo Leste (run as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /usr/lib/linux-image-omap/omap3-n900.dtb /home/user&lt;br /&gt;
dtc -I dtb -O dts /home/user/omap3-n900.dtb -o /home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Now it&#039;s time to modify frequencies and voltage: be careful to do exactly the same)&lt;br /&gt;
&lt;br /&gt;
Replace all content in &amp;quot;opp-table { opp1 opp2 opp3 opp4 opp5 opp6 };&amp;quot; &lt;br /&gt;
&lt;br /&gt;
New opp-table for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opp-table {&lt;br /&gt;
		compatible = &amp;quot;operating-points-v2-ti-cpu&amp;quot;;&lt;br /&gt;
		syscon = &amp;lt; 0x05 &amp;gt;;&lt;br /&gt;
		phandle = &amp;lt; 0x03 &amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		opp1-250000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0xee6b280 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0xee098 0xee098 0xee098 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp2-500000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x1dcd6500 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x106738 0x106738 0x106738 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
			opp-suspend;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp3-600000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x23c34600 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x124f80 0x124f80 0x124f80 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp4-720000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x2aea5400 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x124f80 0x124f80 0x124f80 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp5-850000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x32a9f880 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x149970 0x149970 0x149970 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And still as root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /home/user/omap3-n900.dtb&lt;br /&gt;
dtc -I dts -O dtb /home/user/omap3-n900.dts -o /home/user/omap3-n900.dtb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check your kernel version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uname -r&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example if the result is 6.1.30, your vmlinuz version is vmlinuz-6.1.30&lt;br /&gt;
&lt;br /&gt;
In the next command, replace &amp;quot;vmlinuz-&amp;lt;version&amp;gt;&amp;quot; by yours (i.e vmlinuz-6.1.30)&lt;br /&gt;
&lt;br /&gt;
As root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /boot/vmlinuz-&amp;lt;version&amp;gt; /home/user/omap3-n900.dtb &amp;gt; /tmp/zImage_dtb&lt;br /&gt;
mkimage -A arm -O linux -T kernel -C none -a 80008000 -e 80008000 -d /tmp/zImage_dtb /boot/uImageX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now reboot and select &#039;Maemo Leste Overclock&#039; in bootmenu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;&#039;WARNING with old method:&#039;&#039;&#039; always use stock &amp;quot;Maemo Leste&amp;quot; in bootmenu before dist-upgrade / kernel update. (New uImageX must be created again and old uImageX must be removed))&lt;br /&gt;
&lt;br /&gt;
== Tips / Tweaks ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SD Card and first boot===&lt;br /&gt;
&lt;br /&gt;
To avoid overall slowness, SDXC U3 microSD card is a must. Class10 U1 cards are usually too slow to run Leste on N900 unfortunately.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: unresponsive / freezing screen is normal during Hildon-desktop loading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: do not use zram and/or zswap.&lt;br /&gt;
&lt;br /&gt;
First boot is a bit complicated because Leste is loading lot of things even if hildon-desktop is already visible (wait at least 3 min before clicking somewhere).&lt;br /&gt;
Connecting to Wi-Fi must be avoided until the second boot (otherwise apt-worker starts automatically and N900 is unresponsive for few minutes).&lt;br /&gt;
Don&#039;t forget to run /etc/expandcard.sh on first boot and check if swap is activated.&lt;br /&gt;
Then reboot.&lt;br /&gt;
&lt;br /&gt;
=== Gnome-tracker in $HOME ===&lt;br /&gt;
&lt;br /&gt;
By default trackers are indexing the entire $HOME folder, causing severe slowdown.&lt;br /&gt;
&lt;br /&gt;
To avoid this issue, the solution (until a proper fix) is to add a &amp;lt;code&amp;gt;.nomedia&amp;lt;/code&amp;gt; file in /home/user folder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /home/user/.nomedia&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Removing 250MHz CPU frequency (example) ===&lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Replace 250000 by 500000 in  &amp;lt;pre&amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Not persistent after reboot&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== More SWAP / SWAP activation (testing purpose) ===&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;&#039;Note: SWAP is already activated by default and use a swap file on SD card&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a simple 1GB swap file on the SDcard if swap is missing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(It takes some time...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo chmod 600 /&lt;br /&gt;
sudo mkswap /swapfile&lt;br /&gt;
sudo swapon /swapfile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make the change permanent open &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo nano /etc/fstab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And add this line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/swapfile swap swap defaults 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To check if the swap is active:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo swapon --show&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tweaking Transitions (already optimized by default now) ===&lt;br /&gt;
&lt;br /&gt;
Many options are missing in CSSU Features package but it is possible to edit them in transitions.ini.&lt;br /&gt;
&lt;br /&gt;
As root&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See Fremantle documentation for perfect setup.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: like Fremantle, blur effect can cause lags and slowness.&#039;&#039;&#039; It is possible to deactivate/modify it through the transitions.ini file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[HOME]&lt;br /&gt;
&lt;br /&gt;
radius = 1&lt;br /&gt;
&lt;br /&gt;
radius_more = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video playing ===&lt;br /&gt;
&lt;br /&gt;
Video playing is working fine using SMPLAYER:&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / General:&lt;br /&gt;
&lt;br /&gt;
Media engine: Other: /user/bin/mplayer&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / Video:&lt;br /&gt;
&lt;br /&gt;
Output driver: xv (0 - OMAP Textured Video)&lt;br /&gt;
&lt;br /&gt;
Only unable Double buffering and Disable screensaver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / Audio:&lt;br /&gt;
&lt;br /&gt;
Output driver: pulse (or User defined)&lt;br /&gt;
&lt;br /&gt;
Disable everything else&lt;br /&gt;
&lt;br /&gt;
Channel by default: 2 (Stereo)&lt;br /&gt;
&lt;br /&gt;
High speed playback: Auto&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / Performance:&lt;br /&gt;
&lt;br /&gt;
Unable Allow frame drop&lt;br /&gt;
&lt;br /&gt;
Hardware decoding: None&lt;br /&gt;
&lt;br /&gt;
Prefer 360p - 480p max video format&lt;br /&gt;
&lt;br /&gt;
(With overclocking, Video is working well using KODI 17.6 with equivalent A/V settings)&lt;br /&gt;
&lt;br /&gt;
=== Voice Calls / SIP Calls ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now SIP calls and SIP messages are working out of the box using Twinkle.&lt;br /&gt;
&lt;br /&gt;
Voice calls are now working out of the box as well.&lt;br /&gt;
&lt;br /&gt;
If sound is distorted with Pulseaudio, run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo chrt -a -f -p 99 $(pgrep pulseaudio)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Leste uses Pipewire by default now.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 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 || 6.18 LTS || Mainline + PowerVR Patches: https://github.com/maemo-leste/droid4-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 PowerVR driver&lt;br /&gt;
|-&lt;br /&gt;
| Overclock || Yes || up to 805MHz (stable &amp;amp; supported), 850MHz works with some devices (not supported), Turbo mode works&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), UCM support with Jack plug/unplug detection and FMTX&lt;br /&gt;
|-&lt;br /&gt;
| Video || Yes || Xv acceleration, up to 360-480p. Max 360p for online streaming with SMplayer.&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G/3.5G data || Yes || Works with ofono - UI is working, 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 Sphone or ofono scripts. Works with Conversations in -devel.&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || UCM support, sound is good. Works in 2G, 3G and 3.5G mode, works with Sphone&lt;br /&gt;
|-&lt;br /&gt;
| SIP calls / IM || Yes || Works with Twinkle, TLS transport is supported, Telepathy/Sphone integration is WIP&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver needs some work&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Select &#039;FM Transmitter&#039; in Pavucontrol&lt;br /&gt;
Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt; 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 || Depends on working Bluetooth stack&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Not used in Leste at the moment, since UI rotation does not work on N900&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 || &amp;lt;code&amp;gt;evdev&amp;lt;/code&amp;gt; interface not supported in mce since it depends on iio-sensor-proxy support. https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/issues/363 for possible &#039;fix&#039;&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 || &lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Yes || TX only (hardware limitation). Works with pwm-ir-tx driver (patched)&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~160mW / up to 30 hours || 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>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=3274</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=3274"/>
		<updated>2026-09-27T07:24:50Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Tips / Tweaks */&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 &amp;lt;br&amp;gt;overclock @805MHz &amp;lt;br&amp;gt;Cortex-A8 &amp;lt;br&amp;gt;Armv7‑A&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=1320mAh&lt;br /&gt;
|sw_kernel=6.18&lt;br /&gt;
|sw_serial=Yes, UART under battery, 2.7V max!&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, single-touch&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, ucm, no speaker protection)&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes, firmware required&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=Yes, actually CIR, not  IrDA&lt;br /&gt;
|sw_2g3gdata=Yes&lt;br /&gt;
|sw_4gdata=&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=160mW (WIP)&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;
* Images built automatically can be obtained at the download page: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
* If you want to build a current image yourself use debos: https://git.maemo.org/leste-cicd/debos-leste but beware that downloadable images are genereally more stable than the most recent development build.&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 (dual boot mode):&lt;br /&gt;
&lt;br /&gt;
1. Either download 0xFFFF (binary for x86) from https://maedevu.maemo.org/images/n900/tools/ or build from source from https://github.com/pali/0xFFFF/ on *nix systems make sure to $ chmod a+x 0xFFFF&lt;br /&gt;
&lt;br /&gt;
2. Download u-boot from https://maedevu.maemo.org/images/n900/tools/ save it in a subfolder called test.&lt;br /&gt;
&lt;br /&gt;
3. Turn off Nokia N900, issue the following command on PC  &amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&amp;lt;/code&amp;gt;  you will get a message similar to the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0xFFFF v0.8  // Open Free Fiasco Firmware Flasher&lt;br /&gt;
Not a local device&lt;br /&gt;
Waiting for USB device...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the connect Nokia N900 to the PC. you will then get a message like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Found USB device: RX-51/RM-680/RM-696 (0x421:0x106) in Cold flashing mode&lt;br /&gt;
 USB device product string: Nokia USB ROM&lt;br /&gt;
 USB device serial number string: (not detected)&lt;br /&gt;
 Detected USB device: (not detected)   &lt;br /&gt;
 Waiting for ASIC ID...&lt;br /&gt;
 Detected OMAP3430 chip (revision 87)&lt;br /&gt;
 Device: (not detected)&lt;br /&gt;
 HW revision: (not detected)&lt;br /&gt;
 NOLO version: (not detected)&lt;br /&gt;
 Kernel version: (not detected)&lt;br /&gt;
 Initfs version: (not detected)&lt;br /&gt;
 Software release version: (not detected)&lt;br /&gt;
 Content eMMC version: (not detected)&lt;br /&gt;
 Root device: (not detected)&lt;br /&gt;
 USB host mode: (not detected)&lt;br /&gt;
 R&amp;amp;D mode: (not detected)&lt;br /&gt;
 Switching to NOLO mode...&lt;br /&gt;
 Sending OMAP memory boot message...&lt;br /&gt;
 Waiting for USB device...  &lt;br /&gt;
 Found USB device: SU-18/RX-34/RX-44/RX-48/RX-51/RM-680/RM-696 (0x421:0x105) in NOLO mode&lt;br /&gt;
 USB device product string: Nokia N900 (Update mode)&lt;br /&gt;
 USB device serial number string: MUN233033&lt;br /&gt;
 Detected USB device: RX-51            &lt;br /&gt;
 Initializing NOLO...&lt;br /&gt;
 Device: RX-51&lt;br /&gt;
 HW revision: 2204&lt;br /&gt;
 NOLO version: 1.4.14&lt;br /&gt;
 Kernel version: 2.6.28-20101501+0m5&lt;br /&gt;
 Initfs version: (not detected)&lt;br /&gt;
 Software release version: RX-51_2009SE_21.2011.38-1.203.1_PR_203&lt;br /&gt;
 Content eMMC version: RX-51_2009SE_10.2010.13-2.UK-IRELAND&lt;br /&gt;
 Root device: flash&lt;br /&gt;
 USB host mode: disabled&lt;br /&gt;
 R&amp;amp;D mode: disabled&lt;br /&gt;
 Load image:&lt;br /&gt;
 File: test/u-boot-2013.04-2.bin&lt;br /&gt;
 Image type: kernel&lt;br /&gt;
 Image size: 212864 bytes&lt;br /&gt;
 Sending image header...&lt;br /&gt;
 Sending image...&lt;br /&gt;
 100% [#################################################################]&lt;br /&gt;
 Done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. 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; you will get an output such as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 0xFFFF v0.8  // Open Free Fiasco Firmware Flasher&lt;br /&gt;
 Not a local device&lt;br /&gt;
 Waiting for USB device...  &lt;br /&gt;
 Found USB device: SU-18/RX-34/RX-44/RX-48/RX-51/RM-680/RM-696 (0x421:0x105) in NOLO mode&lt;br /&gt;
 USB device product string: Nokia N900 (Update mode)&lt;br /&gt;
 USB device serial number string: MUN233033&lt;br /&gt;
 Detected USB device: RX-51            &lt;br /&gt;
 Initializing NOLO...&lt;br /&gt;
 Device: RX-51&lt;br /&gt;
 HW revision: 2204&lt;br /&gt;
 NOLO version: 1.4.14&lt;br /&gt;
 Kernel version: 2.6.28-20101501+0m5&lt;br /&gt;
 Initfs version: (not detected)&lt;br /&gt;
 Software release version: RX-51_2009SE_21.2011.38-1.203.1_PR_203&lt;br /&gt;
 Content eMMC version: RX-51_2009SE_10.2010.13-2.UK-IRELAND&lt;br /&gt;
 Root device: flash&lt;br /&gt;
 USB host mode: disabled&lt;br /&gt;
 R&amp;amp;D mode: disabled&lt;br /&gt;
 Booting kernel with default cmdline...&lt;br /&gt;
&amp;lt;/pre&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. The screen might not be backlit so it will be difficult to read. 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;. The screen might be very dim and look off. So it might be difficult to see. Boot up the first time will take a long time full 2 min on test. Some text will show and will then go back to black screen but eventually you will see the splash screen and later the icons will show. &lt;br /&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;pre&amp;gt;&lt;br /&gt;
 sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have a functional Fremantle installation and you want to keep it, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;lt;code&amp;gt;u-boot-flasher&amp;lt;/code&amp;gt; (U-Boot with kernel 2.6.28-omap1). This will &#039;flash&#039; u-boot into the kernel area. This u-boot also contains the kernel itself, so doing this is safe.&lt;br /&gt;
&lt;br /&gt;
2. Check with &amp;lt;code&amp;gt;uname -a&amp;lt;/code&amp;gt; to be sure what kernel you are running. If you were running a power kernel, install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is important, to ensure that the correct kernel is booted, otherwise modules will not match and boot will fail.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; __EOF__&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(press enter at the end if necessary)&lt;br /&gt;
&lt;br /&gt;
And then run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
u-boot-update-bootmenu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device with the keyboard slide open (U-boot will boot the default option if the keyboard slide is closed)&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;
Use this command line (specifically the part after &amp;lt;code&amp;gt;rootwait&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p2 rootwait console=ttyS2,115200 verbose earlyprintk debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
=== Speakers ===&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. There is no clear consensus about this, but it is best to err on the side of caution.&lt;br /&gt;
=== Torch ===&lt;br /&gt;
&lt;br /&gt;
The N900 has an Analog Devices ADP1653 flash controller, mainly for use with the camera. It drives two white power LEDs connected in series, and has an additional red indicator led (referred to as a privacy indicator). The ADP1653 has a driver in mainline kernel, and it probes fine. However, some DTS changes are needed to make it work, since the driver requires it to be tied to a camera.&lt;br /&gt;
&lt;br /&gt;
In the meantime, the LEDs can be used as a torch manually using &amp;lt;code&amp;gt;i2cset&amp;lt;/code&amp;gt;. &lt;br /&gt;
However, &#039;&#039;&#039;BE WARNED:&#039;&#039;&#039; setting wrong values via i2c runs the risk of over-driving the LEDs and causing permanent hardware damage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# Install the prerequisites&lt;br /&gt;
$ sudo apk add i2c-tools&lt;br /&gt;
&lt;br /&gt;
# Unload the driver in case it is already loaded. We will use i2c manually&lt;br /&gt;
$ sudo modprobe -r adp1653&lt;br /&gt;
&lt;br /&gt;
# Enable the chip&lt;br /&gt;
$ echo 88 | sudo tee /sys/class/gpio/export&lt;br /&gt;
$ echo &amp;quot;out&amp;quot; | sudo tee /sys/class/gpio/gpio88/direction&lt;br /&gt;
$ echo 1 | sudo tee /sys/class/gpio/gpio88/value&lt;br /&gt;
&lt;br /&gt;
# Turn the torch on, using the lowest torch current - DO NOT use other values here or you risk burning the LED&lt;br /&gt;
# Values between 1 and 7 enable the red privacy/recording led, with different intensity&lt;br /&gt;
# 0x8 is the lowest torch intensity, and we do not recommend going above it&lt;br /&gt;
$ sudo i2cset -y 2 0x30 0x0 0x8&lt;br /&gt;
&lt;br /&gt;
# Turn the torch off&lt;br /&gt;
$ sudo i2cset -y 2 0x30 0x0 0x0&lt;br /&gt;
&lt;br /&gt;
# Disable the chip&lt;br /&gt;
$ echo 0 | sudo tee /sys/class/gpio/gpio88/value&lt;br /&gt;
$ echo 88 | sudo tee /sys/class/gpio/unexport&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
This ticket tracks hitting idle states for the N900: https://github.com/maemo-leste/bugtracker/issues/545&lt;br /&gt;
&lt;br /&gt;
Power usage right now is reported to be about 45mA (idle, modem ON and data ON). On a good battery this will last for about 30 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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
See this code for a work in progress power management script: https://github.com/maemo-leste/n900-pm&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 the Nokia N900&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 process 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, you will need to restart the calibration process from scratch.&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;
== Overclocking (optional) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overclocking is now available in -devel using cpufreq boost.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It uses 250-500-550-600-720-805MHz frequencies&lt;br /&gt;
&lt;br /&gt;
To enable it, edit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/sys/devices/system/cpu/cpufreq/boost&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And replace 0 by 1.&lt;br /&gt;
&lt;br /&gt;
It is possible to customise max/min/available frequencies editing files in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No other steps are needed and updates/upgrades work with boost mode.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Installing cpufrequtils is useful to change frequency governors.&lt;br /&gt;
&lt;br /&gt;
Prefer &amp;quot;conservative&amp;quot; instead of &amp;quot;ondemand&amp;quot; governor.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Performance&amp;quot; governor locks N900 at 805MHz.&lt;br /&gt;
&lt;br /&gt;
As root&lt;br /&gt;
&amp;lt;code&amp;gt;cpufreq-set -c 0 -g conservative&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: some devices can&#039;t run at 805MHz. For this specific case, select powersave governor instead of ondemand, activate boost mode, replace 805000 by 720000 in scaling_max_freq file and finally select conservative governor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Overclocking - Old method for testing purpose ==&lt;br /&gt;
&lt;br /&gt;
To be able to overclock two steps are needed:&lt;br /&gt;
&lt;br /&gt;
1) From Fremantle: add new Maemo Leste menu item (run as root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; /etc/bootmenu.d/30-maemo-leste-Overclock.item &amp;lt;&amp;lt; __EOF__&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(press enter at the end if necessary)&lt;br /&gt;
&lt;br /&gt;
And then run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
u-boot-update-bootmenu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) From Maemo Leste (run as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /usr/lib/linux-image-omap/omap3-n900.dtb /home/user&lt;br /&gt;
dtc -I dtb -O dts /home/user/omap3-n900.dtb -o /home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Now it&#039;s time to modify frequencies and voltage: be careful to do exactly the same)&lt;br /&gt;
&lt;br /&gt;
Replace all content in &amp;quot;opp-table { opp1 opp2 opp3 opp4 opp5 opp6 };&amp;quot; &lt;br /&gt;
&lt;br /&gt;
New opp-table for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opp-table {&lt;br /&gt;
		compatible = &amp;quot;operating-points-v2-ti-cpu&amp;quot;;&lt;br /&gt;
		syscon = &amp;lt; 0x05 &amp;gt;;&lt;br /&gt;
		phandle = &amp;lt; 0x03 &amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		opp1-250000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0xee6b280 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0xee098 0xee098 0xee098 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp2-500000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x1dcd6500 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x106738 0x106738 0x106738 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
			opp-suspend;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp3-600000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x23c34600 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x124f80 0x124f80 0x124f80 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp4-720000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x2aea5400 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x124f80 0x124f80 0x124f80 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp5-850000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x32a9f880 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x149970 0x149970 0x149970 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And still as root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /home/user/omap3-n900.dtb&lt;br /&gt;
dtc -I dts -O dtb /home/user/omap3-n900.dts -o /home/user/omap3-n900.dtb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check your kernel version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uname -r&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example if the result is 6.1.30, your vmlinuz version is vmlinuz-6.1.30&lt;br /&gt;
&lt;br /&gt;
In the next command, replace &amp;quot;vmlinuz-&amp;lt;version&amp;gt;&amp;quot; by yours (i.e vmlinuz-6.1.30)&lt;br /&gt;
&lt;br /&gt;
As root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /boot/vmlinuz-&amp;lt;version&amp;gt; /home/user/omap3-n900.dtb &amp;gt; /tmp/zImage_dtb&lt;br /&gt;
mkimage -A arm -O linux -T kernel -C none -a 80008000 -e 80008000 -d /tmp/zImage_dtb /boot/uImageX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now reboot and select &#039;Maemo Leste Overclock&#039; in bootmenu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;&#039;WARNING with old method:&#039;&#039;&#039; always use stock &amp;quot;Maemo Leste&amp;quot; in bootmenu before dist-upgrade / kernel update. (New uImageX must be created again and old uImageX must be removed))&lt;br /&gt;
&lt;br /&gt;
== Tips / Tweaks ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SD Card and first boot===&lt;br /&gt;
&lt;br /&gt;
To avoid overall slowness, SDXC U3 microSD card is a must. Class10 U1 cards are usually too slow to run Leste on N900 unfortunately.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: unresponsive / freezing screen is normal during Hildon-desktop loading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: do not use zram and/or zswap.&lt;br /&gt;
&lt;br /&gt;
First boot is a bit complicated because Leste is loading lot of things even if hildon-desktop is already visible (wait at least 3 min before clicking somewhere).&lt;br /&gt;
Connecting to Wi-Fi must be avoided until the second boot (otherwise apt-worker starts automatically and N900 is unresponsive for few minutes).&lt;br /&gt;
Don&#039;t forget to run /etc/expandcard.sh on first boot and check if swap is activated.&lt;br /&gt;
Then reboot.&lt;br /&gt;
&lt;br /&gt;
=== Gnome-tracker in $HOME ===&lt;br /&gt;
&lt;br /&gt;
By default trackers are indexing the entire $HOME folder, causing severe slowdown.&lt;br /&gt;
&lt;br /&gt;
To avoid this issue, the solution (until a proper fix) is to add a &amp;lt;code&amp;gt;.nomedia&amp;lt;/code&amp;gt; file in /home/user folder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /home/user/.nomedia&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Removing 250MHz CPU frequency (example) ===&lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Replace 250000 by 500000 in  &amp;lt;pre&amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== More SWAP / SWAP activation (testing purpose) ===&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;&#039;Note: SWAP is already activated by default and use a swap file on SD card&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a simple 1GB swap file on the SDcard if swap is missing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(It takes some time...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo chmod 600 /&lt;br /&gt;
sudo mkswap /swapfile&lt;br /&gt;
sudo swapon /swapfile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make the change permanent open &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo nano /etc/fstab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And add this line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/swapfile swap swap defaults 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To check if the swap is active:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo swapon --show&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tweaking Transitions (already optimized by default now) ===&lt;br /&gt;
&lt;br /&gt;
Many options are missing in CSSU Features package but it is possible to edit them in transitions.ini.&lt;br /&gt;
&lt;br /&gt;
As root&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See Fremantle documentation for perfect setup.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: like Fremantle, blur effect can cause lags and slowness.&#039;&#039;&#039; It is possible to deactivate/modify it through the transitions.ini file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[HOME]&lt;br /&gt;
&lt;br /&gt;
radius = 1&lt;br /&gt;
&lt;br /&gt;
radius_more = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video playing ===&lt;br /&gt;
&lt;br /&gt;
Video playing is working fine using SMPLAYER:&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / General:&lt;br /&gt;
&lt;br /&gt;
Media engine: Other: /user/bin/mplayer&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / Video:&lt;br /&gt;
&lt;br /&gt;
Output driver: xv (0 - OMAP Textured Video)&lt;br /&gt;
&lt;br /&gt;
Only unable Double buffering and Disable screensaver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / Audio:&lt;br /&gt;
&lt;br /&gt;
Output driver: pulse (or User defined)&lt;br /&gt;
&lt;br /&gt;
Disable everything else&lt;br /&gt;
&lt;br /&gt;
Channel by default: 2 (Stereo)&lt;br /&gt;
&lt;br /&gt;
High speed playback: Auto&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / Performance:&lt;br /&gt;
&lt;br /&gt;
Unable Allow frame drop&lt;br /&gt;
&lt;br /&gt;
Hardware decoding: None&lt;br /&gt;
&lt;br /&gt;
Prefer 360p - 480p max video format&lt;br /&gt;
&lt;br /&gt;
(With overclocking, Video is working well using KODI 17.6 with equivalent A/V settings)&lt;br /&gt;
&lt;br /&gt;
=== Voice Calls / SIP Calls ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now SIP calls and SIP messages are working out of the box using Twinkle.&lt;br /&gt;
&lt;br /&gt;
Voice calls are now working out of the box as well.&lt;br /&gt;
&lt;br /&gt;
If sound is distorted with Pulseaudio, run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo chrt -a -f -p 99 $(pgrep pulseaudio)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: Leste uses Pipewire by default now.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 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 || 6.18 LTS || Mainline + PowerVR Patches: https://github.com/maemo-leste/droid4-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 PowerVR driver&lt;br /&gt;
|-&lt;br /&gt;
| Overclock || Yes || up to 805MHz (stable &amp;amp; supported), 850MHz works with some devices (not supported), Turbo mode works&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), UCM support with Jack plug/unplug detection and FMTX&lt;br /&gt;
|-&lt;br /&gt;
| Video || Yes || Xv acceleration, up to 360-480p. Max 360p for online streaming with SMplayer.&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G/3.5G data || Yes || Works with ofono - UI is working, 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 Sphone or ofono scripts. Works with Conversations in -devel.&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || UCM support, sound is good. Works in 2G, 3G and 3.5G mode, works with Sphone&lt;br /&gt;
|-&lt;br /&gt;
| SIP calls / IM || Yes || Works with Twinkle, TLS transport is supported, Telepathy/Sphone integration is WIP&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver needs some work&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Select &#039;FM Transmitter&#039; in Pavucontrol&lt;br /&gt;
Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt; 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 || Depends on working Bluetooth stack&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Not used in Leste at the moment, since UI rotation does not work on N900&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 || &amp;lt;code&amp;gt;evdev&amp;lt;/code&amp;gt; interface not supported in mce since it depends on iio-sensor-proxy support. https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/issues/363 for possible &#039;fix&#039;&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 || &lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Yes || TX only (hardware limitation). Works with pwm-ir-tx driver (patched)&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~160mW / up to 30 hours || 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>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=3273</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=3273"/>
		<updated>2026-09-27T07:20:18Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* More SWAP / SWAP activation (testing purpose) */&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 &amp;lt;br&amp;gt;overclock @805MHz &amp;lt;br&amp;gt;Cortex-A8 &amp;lt;br&amp;gt;Armv7‑A&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=1320mAh&lt;br /&gt;
|sw_kernel=6.18&lt;br /&gt;
|sw_serial=Yes, UART under battery, 2.7V max!&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, single-touch&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, ucm, no speaker protection)&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes, firmware required&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=Yes, actually CIR, not  IrDA&lt;br /&gt;
|sw_2g3gdata=Yes&lt;br /&gt;
|sw_4gdata=&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=160mW (WIP)&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;
* Images built automatically can be obtained at the download page: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
* If you want to build a current image yourself use debos: https://git.maemo.org/leste-cicd/debos-leste but beware that downloadable images are genereally more stable than the most recent development build.&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 (dual boot mode):&lt;br /&gt;
&lt;br /&gt;
1. Either download 0xFFFF (binary for x86) from https://maedevu.maemo.org/images/n900/tools/ or build from source from https://github.com/pali/0xFFFF/ on *nix systems make sure to $ chmod a+x 0xFFFF&lt;br /&gt;
&lt;br /&gt;
2. Download u-boot from https://maedevu.maemo.org/images/n900/tools/ save it in a subfolder called test.&lt;br /&gt;
&lt;br /&gt;
3. Turn off Nokia N900, issue the following command on PC  &amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&amp;lt;/code&amp;gt;  you will get a message similar to the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0xFFFF v0.8  // Open Free Fiasco Firmware Flasher&lt;br /&gt;
Not a local device&lt;br /&gt;
Waiting for USB device...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the connect Nokia N900 to the PC. you will then get a message like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Found USB device: RX-51/RM-680/RM-696 (0x421:0x106) in Cold flashing mode&lt;br /&gt;
 USB device product string: Nokia USB ROM&lt;br /&gt;
 USB device serial number string: (not detected)&lt;br /&gt;
 Detected USB device: (not detected)   &lt;br /&gt;
 Waiting for ASIC ID...&lt;br /&gt;
 Detected OMAP3430 chip (revision 87)&lt;br /&gt;
 Device: (not detected)&lt;br /&gt;
 HW revision: (not detected)&lt;br /&gt;
 NOLO version: (not detected)&lt;br /&gt;
 Kernel version: (not detected)&lt;br /&gt;
 Initfs version: (not detected)&lt;br /&gt;
 Software release version: (not detected)&lt;br /&gt;
 Content eMMC version: (not detected)&lt;br /&gt;
 Root device: (not detected)&lt;br /&gt;
 USB host mode: (not detected)&lt;br /&gt;
 R&amp;amp;D mode: (not detected)&lt;br /&gt;
 Switching to NOLO mode...&lt;br /&gt;
 Sending OMAP memory boot message...&lt;br /&gt;
 Waiting for USB device...  &lt;br /&gt;
 Found USB device: SU-18/RX-34/RX-44/RX-48/RX-51/RM-680/RM-696 (0x421:0x105) in NOLO mode&lt;br /&gt;
 USB device product string: Nokia N900 (Update mode)&lt;br /&gt;
 USB device serial number string: MUN233033&lt;br /&gt;
 Detected USB device: RX-51            &lt;br /&gt;
 Initializing NOLO...&lt;br /&gt;
 Device: RX-51&lt;br /&gt;
 HW revision: 2204&lt;br /&gt;
 NOLO version: 1.4.14&lt;br /&gt;
 Kernel version: 2.6.28-20101501+0m5&lt;br /&gt;
 Initfs version: (not detected)&lt;br /&gt;
 Software release version: RX-51_2009SE_21.2011.38-1.203.1_PR_203&lt;br /&gt;
 Content eMMC version: RX-51_2009SE_10.2010.13-2.UK-IRELAND&lt;br /&gt;
 Root device: flash&lt;br /&gt;
 USB host mode: disabled&lt;br /&gt;
 R&amp;amp;D mode: disabled&lt;br /&gt;
 Load image:&lt;br /&gt;
 File: test/u-boot-2013.04-2.bin&lt;br /&gt;
 Image type: kernel&lt;br /&gt;
 Image size: 212864 bytes&lt;br /&gt;
 Sending image header...&lt;br /&gt;
 Sending image...&lt;br /&gt;
 100% [#################################################################]&lt;br /&gt;
 Done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. 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; you will get an output such as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 0xFFFF v0.8  // Open Free Fiasco Firmware Flasher&lt;br /&gt;
 Not a local device&lt;br /&gt;
 Waiting for USB device...  &lt;br /&gt;
 Found USB device: SU-18/RX-34/RX-44/RX-48/RX-51/RM-680/RM-696 (0x421:0x105) in NOLO mode&lt;br /&gt;
 USB device product string: Nokia N900 (Update mode)&lt;br /&gt;
 USB device serial number string: MUN233033&lt;br /&gt;
 Detected USB device: RX-51            &lt;br /&gt;
 Initializing NOLO...&lt;br /&gt;
 Device: RX-51&lt;br /&gt;
 HW revision: 2204&lt;br /&gt;
 NOLO version: 1.4.14&lt;br /&gt;
 Kernel version: 2.6.28-20101501+0m5&lt;br /&gt;
 Initfs version: (not detected)&lt;br /&gt;
 Software release version: RX-51_2009SE_21.2011.38-1.203.1_PR_203&lt;br /&gt;
 Content eMMC version: RX-51_2009SE_10.2010.13-2.UK-IRELAND&lt;br /&gt;
 Root device: flash&lt;br /&gt;
 USB host mode: disabled&lt;br /&gt;
 R&amp;amp;D mode: disabled&lt;br /&gt;
 Booting kernel with default cmdline...&lt;br /&gt;
&amp;lt;/pre&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. The screen might not be backlit so it will be difficult to read. 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;. The screen might be very dim and look off. So it might be difficult to see. Boot up the first time will take a long time full 2 min on test. Some text will show and will then go back to black screen but eventually you will see the splash screen and later the icons will show. &lt;br /&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;pre&amp;gt;&lt;br /&gt;
 sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have a functional Fremantle installation and you want to keep it, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;lt;code&amp;gt;u-boot-flasher&amp;lt;/code&amp;gt; (U-Boot with kernel 2.6.28-omap1). This will &#039;flash&#039; u-boot into the kernel area. This u-boot also contains the kernel itself, so doing this is safe.&lt;br /&gt;
&lt;br /&gt;
2. Check with &amp;lt;code&amp;gt;uname -a&amp;lt;/code&amp;gt; to be sure what kernel you are running. If you were running a power kernel, install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is important, to ensure that the correct kernel is booted, otherwise modules will not match and boot will fail.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; __EOF__&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(press enter at the end if necessary)&lt;br /&gt;
&lt;br /&gt;
And then run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
u-boot-update-bootmenu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device with the keyboard slide open (U-boot will boot the default option if the keyboard slide is closed)&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;
Use this command line (specifically the part after &amp;lt;code&amp;gt;rootwait&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p2 rootwait console=ttyS2,115200 verbose earlyprintk debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
=== Speakers ===&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. There is no clear consensus about this, but it is best to err on the side of caution.&lt;br /&gt;
=== Torch ===&lt;br /&gt;
&lt;br /&gt;
The N900 has an Analog Devices ADP1653 flash controller, mainly for use with the camera. It drives two white power LEDs connected in series, and has an additional red indicator led (referred to as a privacy indicator). The ADP1653 has a driver in mainline kernel, and it probes fine. However, some DTS changes are needed to make it work, since the driver requires it to be tied to a camera.&lt;br /&gt;
&lt;br /&gt;
In the meantime, the LEDs can be used as a torch manually using &amp;lt;code&amp;gt;i2cset&amp;lt;/code&amp;gt;. &lt;br /&gt;
However, &#039;&#039;&#039;BE WARNED:&#039;&#039;&#039; setting wrong values via i2c runs the risk of over-driving the LEDs and causing permanent hardware damage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;shell-session&amp;quot;&amp;gt;&lt;br /&gt;
# Install the prerequisites&lt;br /&gt;
$ sudo apk add i2c-tools&lt;br /&gt;
&lt;br /&gt;
# Unload the driver in case it is already loaded. We will use i2c manually&lt;br /&gt;
$ sudo modprobe -r adp1653&lt;br /&gt;
&lt;br /&gt;
# Enable the chip&lt;br /&gt;
$ echo 88 | sudo tee /sys/class/gpio/export&lt;br /&gt;
$ echo &amp;quot;out&amp;quot; | sudo tee /sys/class/gpio/gpio88/direction&lt;br /&gt;
$ echo 1 | sudo tee /sys/class/gpio/gpio88/value&lt;br /&gt;
&lt;br /&gt;
# Turn the torch on, using the lowest torch current - DO NOT use other values here or you risk burning the LED&lt;br /&gt;
# Values between 1 and 7 enable the red privacy/recording led, with different intensity&lt;br /&gt;
# 0x8 is the lowest torch intensity, and we do not recommend going above it&lt;br /&gt;
$ sudo i2cset -y 2 0x30 0x0 0x8&lt;br /&gt;
&lt;br /&gt;
# Turn the torch off&lt;br /&gt;
$ sudo i2cset -y 2 0x30 0x0 0x0&lt;br /&gt;
&lt;br /&gt;
# Disable the chip&lt;br /&gt;
$ echo 0 | sudo tee /sys/class/gpio/gpio88/value&lt;br /&gt;
$ echo 88 | sudo tee /sys/class/gpio/unexport&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
This ticket tracks hitting idle states for the N900: https://github.com/maemo-leste/bugtracker/issues/545&lt;br /&gt;
&lt;br /&gt;
Power usage right now is reported to be about 45mA (idle, modem ON and data ON). On a good battery this will last for about 30 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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
See this code for a work in progress power management script: https://github.com/maemo-leste/n900-pm&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 the Nokia N900&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 process 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, you will need to restart the calibration process from scratch.&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;
== Overclocking (optional) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overclocking is now available in -devel using cpufreq boost.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It uses 250-500-550-600-720-805MHz frequencies&lt;br /&gt;
&lt;br /&gt;
To enable it, edit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/sys/devices/system/cpu/cpufreq/boost&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And replace 0 by 1.&lt;br /&gt;
&lt;br /&gt;
It is possible to customise max/min/available frequencies editing files in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;No other steps are needed and updates/upgrades work with boost mode.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Installing cpufrequtils is useful to change frequency governors.&lt;br /&gt;
&lt;br /&gt;
Prefer &amp;quot;conservative&amp;quot; instead of &amp;quot;ondemand&amp;quot; governor.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Performance&amp;quot; governor locks N900 at 805MHz.&lt;br /&gt;
&lt;br /&gt;
As root&lt;br /&gt;
&amp;lt;code&amp;gt;cpufreq-set -c 0 -g conservative&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: some devices can&#039;t run at 805MHz. For this specific case, select powersave governor instead of ondemand, activate boost mode, replace 805000 by 720000 in scaling_max_freq file and finally select conservative governor&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Overclocking - Old method for testing purpose ==&lt;br /&gt;
&lt;br /&gt;
To be able to overclock two steps are needed:&lt;br /&gt;
&lt;br /&gt;
1) From Fremantle: add new Maemo Leste menu item (run as root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; /etc/bootmenu.d/30-maemo-leste-Overclock.item &amp;lt;&amp;lt; __EOF__&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;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(press enter at the end if necessary)&lt;br /&gt;
&lt;br /&gt;
And then run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
u-boot-update-bootmenu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) From Maemo Leste (run as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /usr/lib/linux-image-omap/omap3-n900.dtb /home/user&lt;br /&gt;
dtc -I dtb -O dts /home/user/omap3-n900.dtb -o /home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Now it&#039;s time to modify frequencies and voltage: be careful to do exactly the same)&lt;br /&gt;
&lt;br /&gt;
Replace all content in &amp;quot;opp-table { opp1 opp2 opp3 opp4 opp5 opp6 };&amp;quot; &lt;br /&gt;
&lt;br /&gt;
New opp-table for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
opp-table {&lt;br /&gt;
		compatible = &amp;quot;operating-points-v2-ti-cpu&amp;quot;;&lt;br /&gt;
		syscon = &amp;lt; 0x05 &amp;gt;;&lt;br /&gt;
		phandle = &amp;lt; 0x03 &amp;gt;;&lt;br /&gt;
&lt;br /&gt;
		opp1-250000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0xee6b280 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0xee098 0xee098 0xee098 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp2-500000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x1dcd6500 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x106738 0x106738 0x106738 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
			opp-suspend;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp3-600000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x23c34600 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x124f80 0x124f80 0x124f80 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp4-720000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x2aea5400 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x124f80 0x124f80 0x124f80 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		opp5-850000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x32a9f880 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x149970 0x149970 0x149970 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x03 &amp;gt;;&lt;br /&gt;
		};&lt;br /&gt;
	};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And still as root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rm /home/user/omap3-n900.dtb&lt;br /&gt;
dtc -I dts -O dtb /home/user/omap3-n900.dts -o /home/user/omap3-n900.dtb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check your kernel version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uname -r&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example if the result is 6.1.30, your vmlinuz version is vmlinuz-6.1.30&lt;br /&gt;
&lt;br /&gt;
In the next command, replace &amp;quot;vmlinuz-&amp;lt;version&amp;gt;&amp;quot; by yours (i.e vmlinuz-6.1.30)&lt;br /&gt;
&lt;br /&gt;
As root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /boot/vmlinuz-&amp;lt;version&amp;gt; /home/user/omap3-n900.dtb &amp;gt; /tmp/zImage_dtb&lt;br /&gt;
mkimage -A arm -O linux -T kernel -C none -a 80008000 -e 80008000 -d /tmp/zImage_dtb /boot/uImageX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now reboot and select &#039;Maemo Leste Overclock&#039; in bootmenu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;&#039;WARNING with old method:&#039;&#039;&#039; always use stock &amp;quot;Maemo Leste&amp;quot; in bootmenu before dist-upgrade / kernel update. (New uImageX must be created again and old uImageX must be removed))&lt;br /&gt;
&lt;br /&gt;
== Tips / Tweaks ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SD Card and first boot===&lt;br /&gt;
&lt;br /&gt;
To avoid overall slowness, SDXC U3 microSD card is a must. Class10 U1 cards are usually too slow to run Leste on N900 unfortunately.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: unresponsive / freezing screen is normal during Hildon-desktop loading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING&#039;&#039;&#039;: do not use zram and/or zswap.&lt;br /&gt;
&lt;br /&gt;
First boot is a bit complicated because Leste is loading lot of things even if hildon-desktop is already visible (wait at least 3 min before clicking somewhere).&lt;br /&gt;
Connecting to Wi-Fi must be avoided until the second boot (otherwise apt-worker starts automatically and N900 is unresponsive for few minutes).&lt;br /&gt;
Don&#039;t forget to run /etc/expandcard.sh on first boot and check if swap is activated.&lt;br /&gt;
Then reboot.&lt;br /&gt;
&lt;br /&gt;
=== Gnome-tracker in $HOME ===&lt;br /&gt;
&lt;br /&gt;
By default trackers are indexing the entire $HOME folder, causing severe slowdown.&lt;br /&gt;
&lt;br /&gt;
To avoid this issue, the solution (until a proper fix) is to add a &amp;lt;code&amp;gt;.nomedia&amp;lt;/code&amp;gt; file in /home/user folder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
touch /home/user/.nomedia&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Removing 250MHz CPU frequency (example) ===&lt;br /&gt;
&lt;br /&gt;
Install &amp;lt;code&amp;gt;cpufrequtils&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Replace 250000 by 500000 in  &amp;lt;pre&amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== More SWAP / SWAP activation (testing purpose) ===&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;&#039;Note: SWAP is already activated by default and use a swap file on SD card&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a simple 1GB swap file on the SDcard if swap is missing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(It takes some time...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo chmod 600 /&lt;br /&gt;
sudo mkswap /swapfile&lt;br /&gt;
sudo swapon /swapfile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make the change permanent open &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo nano /etc/fstab&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And add this line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/swapfile swap swap defaults 0 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To check if the swap is active:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo swapon --show&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tweaking Transitions (already optimized by default now) ===&lt;br /&gt;
&lt;br /&gt;
Many options are missing in CSSU Features package but it is possible to edit them in transitions.ini.&lt;br /&gt;
&lt;br /&gt;
As root&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See Fremantle documentation for perfect setup.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: like Fremantle, blur effect can cause lags and slowness.&#039;&#039;&#039; It is possible to deactivate/modify it through the transitions.ini file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[HOME]&lt;br /&gt;
&lt;br /&gt;
radius = 1&lt;br /&gt;
&lt;br /&gt;
radius_more = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video playing ===&lt;br /&gt;
&lt;br /&gt;
Video playing is working fine using SMPLAYER:&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / General:&lt;br /&gt;
&lt;br /&gt;
Media engine: Other: /user/bin/mplayer&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / Video:&lt;br /&gt;
&lt;br /&gt;
Output driver: xv (0 - OMAP Textured Video)&lt;br /&gt;
&lt;br /&gt;
Only unable Double buffering and Disable screensaver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / Audio:&lt;br /&gt;
&lt;br /&gt;
Output driver: pulse (or User defined)&lt;br /&gt;
&lt;br /&gt;
Disable everything else&lt;br /&gt;
&lt;br /&gt;
Channel by default: 2 (Stereo)&lt;br /&gt;
&lt;br /&gt;
High speed playback: Auto&lt;br /&gt;
&lt;br /&gt;
- In Options / Preferences / Performance:&lt;br /&gt;
&lt;br /&gt;
Unable Allow frame drop&lt;br /&gt;
&lt;br /&gt;
Hardware decoding: None&lt;br /&gt;
&lt;br /&gt;
Prefer 360p - 480p max video format&lt;br /&gt;
&lt;br /&gt;
(With overclocking, Video is working well using KODI 17.6 with equivalent A/V settings)&lt;br /&gt;
&lt;br /&gt;
=== Voice Calls / SIP Calls ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now SIP calls and SIP messages are working out of the box using Twinkle.&lt;br /&gt;
&lt;br /&gt;
Voice calls are now working out of the box as well.&lt;br /&gt;
&lt;br /&gt;
If sound is distorted, run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo chrt -a -f -p 99 $(pgrep pulseaudio)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 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 || 6.18 LTS || Mainline + PowerVR Patches: https://github.com/maemo-leste/droid4-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 PowerVR driver&lt;br /&gt;
|-&lt;br /&gt;
| Overclock || Yes || up to 805MHz (stable &amp;amp; supported), 850MHz works with some devices (not supported), Turbo mode works&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), UCM support with Jack plug/unplug detection and FMTX&lt;br /&gt;
|-&lt;br /&gt;
| Video || Yes || Xv acceleration, up to 360-480p. Max 360p for online streaming with SMplayer.&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G/3.5G data || Yes || Works with ofono - UI is working, 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 Sphone or ofono scripts. Works with Conversations in -devel.&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || UCM support, sound is good. Works in 2G, 3G and 3.5G mode, works with Sphone&lt;br /&gt;
|-&lt;br /&gt;
| SIP calls / IM || Yes || Works with Twinkle, TLS transport is supported, Telepathy/Sphone integration is WIP&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver needs some work&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Select &#039;FM Transmitter&#039; in Pavucontrol&lt;br /&gt;
Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt; 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 || Depends on working Bluetooth stack&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Not used in Leste at the moment, since UI rotation does not work on N900&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 || &amp;lt;code&amp;gt;evdev&amp;lt;/code&amp;gt; interface not supported in mce since it depends on iio-sensor-proxy support. https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/issues/363 for possible &#039;fix&#039;&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 || &lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Yes || TX only (hardware limitation). Works with pwm-ir-tx driver (patched)&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~160mW / up to 30 hours || 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>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_3&amp;diff=3272</id>
		<title>Motorola Droid 3</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Motorola_Droid_3&amp;diff=3272"/>
		<updated>2026-09-27T06:54:28Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Conversations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=&lt;br /&gt;
[[File:Motorola Droid 3 Leste Chimera.jpg|thumb]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Solana XT862 / XT860&lt;br /&gt;
|dimensions=todo&lt;br /&gt;
|release_date=todo&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=512MB 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=todo&lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=6.1.9&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=No&lt;br /&gt;
|sw_tv=&lt;br /&gt;
|sw_3daccel=Yes [https://github.com/maemo-leste/pvr-omap4] (closed)&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=No (needs modem work)&lt;br /&gt;
|sw_sms=No (needs modem work)&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=&lt;br /&gt;
|sw_2g3gdata=&lt;br /&gt;
|sw_4g=No&lt;br /&gt;
|sw_bluetooth=todo&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=&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_als=Yes&lt;br /&gt;
|sw_gps=No (needs modem work)&lt;br /&gt;
|sw_agps=No&lt;br /&gt;
|sw_frontcam=No&lt;br /&gt;
|sw_backcam=No&lt;br /&gt;
|sw_idlepower=&lt;br /&gt;
|sw_standbytime=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This device is called &amp;quot;Motorola Milestone 3&amp;quot; outside of the US.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Hardware requirements:&lt;br /&gt;
&lt;br /&gt;
* Droid 3 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;
&lt;br /&gt;
Download latest Chimera release from https://maedevu.maemo.org/images/droid3/&lt;br /&gt;
&lt;br /&gt;
# Latest maemo-leste-1.0-armhf-droid3-20240908.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/MerlijnWajer/bionic-clown-boot/tree/solana (solana branch!)&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;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: Set the USB mode to &amp;quot;PC mode&amp;quot; instead of &amp;quot;mass storage mode&amp;quot; on your device before running install.sh&lt;br /&gt;
on bionic-clown-boot&lt;br /&gt;
&lt;br /&gt;
Device is still heavy work in the progress. The following is known not to work:&lt;br /&gt;
&lt;br /&gt;
* Brightness control (screen is always max brightness) You can scale the brightness using xrandr:&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
   xrandr --output DSI-1 --brightness 0.5&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
* Keyboard backlight&lt;br /&gt;
* Modem interrupts, it is visible on USB but other communication with it doesn&#039;t work&lt;br /&gt;
* pstore (needs figuring out what the reserved memory is on Android)&lt;br /&gt;
* See if we can use 512MB ram instead of 509MB (see dts)&lt;br /&gt;
* &amp;lt;s&amp;gt;3d shows some frame lag / misdrawing, so probably powervr clock needs adjusting&amp;lt;/s&amp;gt; (seems solved on kernel 5.15)&lt;br /&gt;
* &amp;lt;s&amp;gt;touchscreen buttons do not work yet&amp;lt;/s&amp;gt; (fixed on 5.15)&lt;br /&gt;
* keyboard layout in Leste is not faithful to the icons on the keyboard, but rather mostly mimic droid 4&lt;br /&gt;
&lt;br /&gt;
Additionally, the device suffers from random hangs while in use, causing resets. When pstore works, we can hopefully figure this out. &amp;lt;s&amp;gt;(Haven&#039;t seen them on 5.15)&amp;lt;/s&amp;gt; (Came back on kernel 6.x) It might be a power-management-related issue, or a GPU issue (last log line shows something about OMAP complaining about DRM), or something else. The emergency shell works just fine with no hangs at all.&lt;br /&gt;
&lt;br /&gt;
There is a workaround to the random hangs that work for some in 6.1. Here is how to work around this.&lt;br /&gt;
&lt;br /&gt;
Download the latest Chimaera release: maemo-leste-1.0-armhf-droid3-20250608.img.xz and follow the same installation instructions provided above.&lt;br /&gt;
&lt;br /&gt;
*From the kexecboot menu, select the &amp;quot;emergency shell&amp;quot; startup.&lt;br /&gt;
*Bypass the login prompt, ALT-D, the kernel will continue to boot into the Hildon window manager.&lt;br /&gt;
*Immediately try and configure your wifi settings, the device might hang and reboot. Reset the battery and try again until you get it configured.&lt;br /&gt;
*Once wifi is configured, let the device sleep, having the screen off reduces the chances of it freezing up again.&lt;br /&gt;
*ssh/scp in to the D3 from another device.&lt;br /&gt;
*Replace the script in the /etc/init.d/powervr with this:&lt;br /&gt;
  &amp;lt;pre&amp;gt;&lt;br /&gt;
#!/sbin/openrc-run&lt;br /&gt;
&lt;br /&gt;
depend() {&lt;br /&gt;
        after eudev kmod&lt;br /&gt;
        before xorg xsession hildon-desktop&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        ebegin &amp;quot;Starting PowerVR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        modprobe pvrsrvkm_omap4_sgx540_120 || true&lt;br /&gt;
&lt;br /&gt;
        for i in 1 2 3 4 5; do&lt;br /&gt;
                [ -e /sys/bus/platform/devices/56000000.gpu/power/control ] &amp;amp;&amp;amp; break&lt;br /&gt;
                sleep 1&lt;br /&gt;
        done&lt;br /&gt;
&lt;br /&gt;
        #echo 0xffffffff &amp;gt; /sys/module/pvrsrvkm_omap4_sgx540_120/parameters/gPVRDebugLevel 2&amp;gt;/dev/null || true&lt;br /&gt;
        echo on &amp;gt; /sys/bus/platform/devices/56000000.gpu/power/control 2&amp;gt;/dev/null || true&lt;br /&gt;
&lt;br /&gt;
        /usr/bin/pvrsrvinit || true&lt;br /&gt;
&lt;br /&gt;
        eend 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
        ebegin &amp;quot;Stopping PowerVR&amp;quot;&lt;br /&gt;
        eend 0&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Reboot always using the &amp;quot;emergency shell&amp;quot; startup. Use xrandr to reduce the screen brightness. Chimaera should run without random hangs. &lt;br /&gt;
&lt;br /&gt;
Also, the device often comes network locked. [[User:Wizzup]] has access to Sigmakey software and can help remotely remove the network lock.&lt;br /&gt;
&lt;br /&gt;
If you run the battery dead, you cannot recharge using the MicroUSB cable. It is recommended to purchase a wall-wort to externally charge the battery.&lt;br /&gt;
&lt;br /&gt;
If you have got the device stuck, you should hold the power button for about 7 seconds. Droid3 will display a white LED letting you know that it is shutting down. Once the LED shuts off, power on the device at any time. If this doesn&#039;t work, remove the battery and reset it.&lt;br /&gt;
&lt;br /&gt;
== Conversations ==&lt;br /&gt;
&lt;br /&gt;
*You can join IRC channels in conversations.&lt;br /&gt;
*You can create contacts in osso-addressbook to send messages or make calls. &lt;br /&gt;
*XMPP works.&lt;br /&gt;
&lt;br /&gt;
== Music ==&lt;br /&gt;
&lt;br /&gt;
*Lollypop works very well for the droid3. The controls are a bit small but are manageable.&lt;br /&gt;
*CMUS works, but chews up a lot of battery. It uses some remote M3 CPUs which are not available to normal Linux.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
neofetch.png&lt;br /&gt;
Terminal.JPG&lt;br /&gt;
Htop.png&lt;br /&gt;
Main.png&lt;br /&gt;
Status.png&lt;br /&gt;
Lollypop.png&lt;br /&gt;
3600bat.JPG&lt;br /&gt;
irssi.JPG&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=3271</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=3271"/>
		<updated>2026-09-27T06:48:16Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &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 XT894&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430 &amp;lt;br&amp;gt;Cortex-A9 &amp;lt;br&amp;gt;Armv7‑A &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, &amp;lt;br&amp;gt;LIS3DH accelerometer, &amp;lt;br&amp;gt;TMP105 temperature, &amp;lt;br&amp;gt;ISL29030 proximity and illuminance &lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=6.18 LTS&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=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&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=&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=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;
* 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-excalibur-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;
# NOTE: be sure there&#039;s only one file matching maemo-leste-5.0-armhf-droid4-*.img.xz before running this command&lt;br /&gt;
xzcat maemo-leste-5.0-armhf-droid4-*.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://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;
&lt;br /&gt;
The keyboard layout is extended to provide more standard keys.&lt;br /&gt;
[[File:Maemo-leste-droid4-kbd-2021-07.png|center|620px|thumb|maemo-leste droid4 keyboard]]&lt;br /&gt;
Key mapping can be tested with the &#039;xev&#039; program.&lt;br /&gt;
&lt;br /&gt;
It may be necessary to run the follow commands as root in order to get the OK key to function correctly (see [https://github.com/maemo-leste/bugtracker/issues/510#issuecomment-815618591 here]):&lt;br /&gt;
 udevadm hwdb --update&lt;br /&gt;
 udevadm trigger&lt;br /&gt;
&lt;br /&gt;
This should survive a 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 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;
== Bluetooth ==&lt;br /&gt;
&lt;br /&gt;
Needs firmware - install latest firmware-ti-connectivity - See also https://git.maemo.org/leste/bugtracker/issues/290. Due to interference with WiFi, load driver manually, AFTER wifi module loaded. So you should do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install firmware-ti-connectivity&lt;br /&gt;
sudo modprobe hci_uart&lt;br /&gt;
sudo hciconfig hci0 up&lt;br /&gt;
sudo hcitool lescan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
15:04 &amp;lt; tmlind&amp;gt; Wizzup: i think the logo on droid4 can be flashed with fastboot flash logo logo.bin or something, can also be just written to logo partition from m-l&lt;br /&gt;
[snip]&lt;br /&gt;
09:24 &amp;lt; xsetiadi&amp;gt; https://github.com/xsetiadi/droid4-kexecboot/blob/master/logo.bin&lt;br /&gt;
09:25 &amp;lt; xsetiadi&amp;gt; becarefull, you can bootloop droid4 if you wrong flash partition&lt;br /&gt;
09:26 &amp;lt; xsetiadi&amp;gt; like i do last year&lt;br /&gt;
09:26 &amp;lt; xsetiadi&amp;gt; instead of flashing using command: fastboot flash logo.bin logo.bin i just flash it with command: fastboot flash logo logo.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
==== 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;
&lt;br /&gt;
If one wants to mirror the screen on HDMI, this can be done like so, for landscape:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --newmode &amp;quot;960x540_60.00&amp;quot;   40.75  960 992 1088 1216  540 543 548 562 -hsync +vsync&lt;br /&gt;
xrandr --addmode HDMI-1 &amp;quot;960x540_60.00&amp;quot;&lt;br /&gt;
xrandr --output HDMI-1 --mode &amp;quot;960x540_60.00&amp;quot; --same-as DSI-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For rotation, something like this might or might not work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --newmode &amp;quot;960x540_60.00ROT&amp;quot; 43.00  544 576 632 720  960 963 973 996 -hsync +vsync&lt;br /&gt;
xrandr --addmode HDMI-1 &amp;quot;960x540_60.00ROT&amp;quot;&lt;br /&gt;
xrandr --output HDMI-1 --mode &amp;quot;960x540_60.00&amp;quot; --same-as DSI-1 --rotate right&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;
==== BT Audio headset ====&lt;br /&gt;
&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. The quality seems a bit better in &#039;offline mode&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Torch ====&lt;br /&gt;
&lt;br /&gt;
The Droid 4 has a TI LM3559 flash torch controller. This provides flash functionality when taking pictures, usage as a torch, and provides privacy indication (in this mode, the LED flashes in a fast heartbeat pattern). A driver for it exists in mainline, but it requires some DTS work, since it is tied to a camera device. &lt;br /&gt;
&lt;br /&gt;
If you want to use it in the meantime, direct i2c access can be used as follows (since this is direct access, be careful about each of the commands below):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
##Install the prerequisites&lt;br /&gt;
$ sudo apt install i2c-tools&lt;br /&gt;
&lt;br /&gt;
## Turn LED on in torch mode&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x1a&lt;br /&gt;
&lt;br /&gt;
## Turn LED on in privacy indication mode&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x19&lt;br /&gt;
&lt;br /&gt;
## Turn LED off (in any mode)&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x18&lt;br /&gt;
&lt;br /&gt;
## Use LED for doing a hella bright flash for some time once and then turn off&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x1b&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using a configured Leste sdcard in a different Droid4 ==&lt;br /&gt;
&lt;br /&gt;
A configured Droid4 Leste installation is unique to the device that it was calibrated on.  Particularly the wlan firmware calibration will be incorrect if an existing Leste installation is transferred to a different device.  &lt;br /&gt;
&lt;br /&gt;
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 Droid4, 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;
&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;
Droid4_Daimonin_Hdmi.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status overview ==&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 || 6.18 LTS || Mainline + some patches not yet in mainline - see https://git.maemo.org/leste-upstream-forks/droid4-linux/src/branch/leste/maemo-6.18.y&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)&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, see https://git.maemo.org/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 and conversations UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), and sphone UI&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://git.maemo.org/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&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;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3270</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3270"/>
		<updated>2026-09-27T06:46:00Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|display=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, capacitive&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes&lt;br /&gt;
|sw_backcam=Yes&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Template:Infobox_Device&amp;diff=3269</id>
		<title>Template:Infobox Device</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Template:Infobox_Device&amp;diff=3269"/>
		<updated>2026-09-27T06:21:20Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
| abovestyle	= background: #dedede;&lt;br /&gt;
| headerstyle 	= background: #dedede;&lt;br /&gt;
&lt;br /&gt;
| above		= {{{name|&amp;lt;includeonly&amp;gt;{{PAGENAME}}&amp;lt;/includeonly&amp;gt;}}}&lt;br /&gt;
&lt;br /&gt;
| image		= {{{image|}}}&lt;br /&gt;
| caption	= {{{caption|}}}&lt;br /&gt;
| header2	=&lt;br /&gt;
| label2 	= Manufacturer&lt;br /&gt;
| data2		= {{{manufacturer|}}}&lt;br /&gt;
| header3	=&lt;br /&gt;
| label3	= Codename&lt;br /&gt;
| data3		= {{{codename|}}}&lt;br /&gt;
| header4	=&lt;br /&gt;
| label4	= Dimensions&lt;br /&gt;
| data4		= {{{dimensions|}}}&lt;br /&gt;
| header5	=&lt;br /&gt;
| label5	= Release Date&lt;br /&gt;
| data5		= {{{release_date|}}}&lt;br /&gt;
| header6 	=&lt;br /&gt;
| label6	= Website&lt;br /&gt;
| data6		= {{{website|}}}&lt;br /&gt;
| header7 	=&lt;br /&gt;
| label7	= Category&lt;br /&gt;
| data7 	= {{{category|}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| header8 	= Specifications&lt;br /&gt;
| label8	=&lt;br /&gt;
| data8		=&lt;br /&gt;
| header9	=&lt;br /&gt;
| label9	= SoC&lt;br /&gt;
| data9		= {{{soc|}}}&lt;br /&gt;
| header10 	=&lt;br /&gt;
| label10	= DRAM&lt;br /&gt;
| data10 	= {{{dram|}}}&lt;br /&gt;
| header11	=&lt;br /&gt;
| label11	= NAND&lt;br /&gt;
| data11	= {{{nand|}}}&lt;br /&gt;
| header12	=&lt;br /&gt;
| label12	= Power&lt;br /&gt;
| data12	= {{{power|}}}&lt;br /&gt;
&lt;br /&gt;
| header13	= Hardware Features&lt;br /&gt;
| label13	= &lt;br /&gt;
| data13	= &lt;br /&gt;
| header14	=&lt;br /&gt;
| label14	= Display&lt;br /&gt;
| data14	= {{{display|}}}&lt;br /&gt;
| header15 	= &lt;br /&gt;
| label15	= Input&lt;br /&gt;
| data15	= {{{input|}}}&lt;br /&gt;
| header16	=&lt;br /&gt;
| label16	= Video&lt;br /&gt;
| data16	= {{{video|}}}&lt;br /&gt;
| header17 	= &lt;br /&gt;
| label17	= Audio&lt;br /&gt;
| data17	= {{{audio|}}}&lt;br /&gt;
| header18	=&lt;br /&gt;
| label18	= Network&lt;br /&gt;
| data18	= {{{network|}}}&lt;br /&gt;
| header19	=&lt;br /&gt;
| label19	= Storage&lt;br /&gt;
| data19	= {{{storage|}}}&lt;br /&gt;
| header20	=&lt;br /&gt;
| label20	= USB&lt;br /&gt;
| data20	= {{{usb|}}}&lt;br /&gt;
| header21	=&lt;br /&gt;
| label21	= Camera&lt;br /&gt;
| data21	= {{{camera|}}}&lt;br /&gt;
| header22	=&lt;br /&gt;
| label22	= Sensors&lt;br /&gt;
| data22	= {{{sensors|}}}&lt;br /&gt;
| header23	= &lt;br /&gt;
| label23	= External Headers&lt;br /&gt;
| data23	= {{{headers|}}}&lt;br /&gt;
| header24	= &lt;br /&gt;
| label24	= Battery Capacity&lt;br /&gt;
| data24	= {{{battery|}}}&lt;br /&gt;
&lt;br /&gt;
| header25	= Software Features&lt;br /&gt;
| label25	= &lt;br /&gt;
| data25	=&lt;br /&gt;
| header26	= &lt;br /&gt;
| label26	= Kernel&lt;br /&gt;
| data26	= {{{sw_kernel|}}}&lt;br /&gt;
| header27	= &lt;br /&gt;
| label27	= Serial&lt;br /&gt;
| data27	= {{{sw_serial|}}}&lt;br /&gt;
| header28	= &lt;br /&gt;
| label28	= Charging&lt;br /&gt;
| data28	= {{{sw_charging|}}}&lt;br /&gt;
| header29	= &lt;br /&gt;
| label29	= USB Slave&lt;br /&gt;
| data29	= {{{sw_usb_slave|}}}&lt;br /&gt;
| header30	= &lt;br /&gt;
| label30	= USB Host&lt;br /&gt;
| data30	= {{{sw_usb_host|}}}&lt;br /&gt;
| header31	= &lt;br /&gt;
| label31	= Touchscreen&lt;br /&gt;
| data31	= {{{sw_touchscreen|}}}&lt;br /&gt;
| header32	= &lt;br /&gt;
| label32	= Keyboard&lt;br /&gt;
| data32	= {{{sw_keyboard|}}}&lt;br /&gt;
| header33	= &lt;br /&gt;
| label33	= Screen&lt;br /&gt;
| data33	= {{{sw_screen|}}}&lt;br /&gt;
| header34	= &lt;br /&gt;
| label34	= HDMI-out&lt;br /&gt;
| data34	= {{{sw_hdmi|}}}&lt;br /&gt;
| header35	= &lt;br /&gt;
| label35	= TV-out&lt;br /&gt;
| data35	= {{{sw_tv|}}}&lt;br /&gt;
| header36	= &lt;br /&gt;
| label36	= 3D acceleration&lt;br /&gt;
| data36	= {{{sw_3daccel|}}}&lt;br /&gt;
| header37	= &lt;br /&gt;
| label37	= Vibration motor&lt;br /&gt;
| data37	= {{{sw_vibration|}}}&lt;br /&gt;
| header38	= &lt;br /&gt;
| label38	= Audio&lt;br /&gt;
| data38	= {{{sw_audio|}}}&lt;br /&gt;
| header39	= &lt;br /&gt;
| label39	= Phone calls&lt;br /&gt;
| data39	= {{{sw_calls|}}}&lt;br /&gt;
| header40	= &lt;br /&gt;
| label40	= SMS&lt;br /&gt;
| data40	= {{{sw_sms|}}}&lt;br /&gt;
| header41	= &lt;br /&gt;
| label41	= Wifi&lt;br /&gt;
| data41	= {{{sw_wifi|}}}&lt;br /&gt;
| header42	= &lt;br /&gt;
| label42	= Ethernet&lt;br /&gt;
| data42  	= {{{sw_ethernet|}}}&lt;br /&gt;
| header43	= &lt;br /&gt;
| label43  	= IrDA&lt;br /&gt;
| data43  	= {{{sw_irda|}}}&lt;br /&gt;
| header44	= &lt;br /&gt;
| label44  	= 2G/3G data&lt;br /&gt;
| data44 	= {{{sw_2g3gdata|}}}&lt;br /&gt;
| header45	= &lt;br /&gt;
| label45  	= 4G data&lt;br /&gt;
| data45 	= {{{sw_4gdata|}}}&lt;br /&gt;
| header46	= &lt;br /&gt;
| label46  	= Bluetooth&lt;br /&gt;
| data46 	= {{{sw_bluetooth|}}}&lt;br /&gt;
| header47	= &lt;br /&gt;
| label47  	= FM transmitter&lt;br /&gt;
| data47	= {{{sw_fmtx|}}}&lt;br /&gt;
| header48	= &lt;br /&gt;
| label48  	= FM receiver&lt;br /&gt;
| data48	= {{{sw_fmrx|}}}&lt;br /&gt;
| header49	= &lt;br /&gt;
| label49  	= NFC&lt;br /&gt;
| data49	= {{{sw_nfc|}}}&lt;br /&gt;
| header50	= &lt;br /&gt;
| label50  	= Accelerometer&lt;br /&gt;
| data50	= {{{sw_accelerometer|}}}&lt;br /&gt;
| header51	= &lt;br /&gt;
| label51  	= Compass&lt;br /&gt;
| data51	= {{{sw_compass|}}}&lt;br /&gt;
| header52	= &lt;br /&gt;
| label52  	= Gryo&lt;br /&gt;
| data52	= {{{sw_gyro|}}}&lt;br /&gt;
| header53	= &lt;br /&gt;
| label53  	= Proximity Sensor&lt;br /&gt;
| data53	= {{{sw_proximity|}}}&lt;br /&gt;
| header54	= &lt;br /&gt;
| label54  	= Ambient Light Sensor&lt;br /&gt;
| data54	= {{{sw_als|}}}&lt;br /&gt;
| header55	= &lt;br /&gt;
| label55  	= GPS&lt;br /&gt;
| data55	= {{{sw_gps|}}}&lt;br /&gt;
| header56	= &lt;br /&gt;
| label56  	= A-GPS&lt;br /&gt;
| data56	= {{{sw_agps|}}}&lt;br /&gt;
| header57	= &lt;br /&gt;
| label57  	= Front Camera&lt;br /&gt;
| data57	= {{{sw_frontcam|}}}&lt;br /&gt;
| header58	= &lt;br /&gt;
| label58  	= Back Camera(s)&lt;br /&gt;
| data58	= {{{sw_backcam|}}}&lt;br /&gt;
| header59	= &lt;br /&gt;
| label59  	= Idle Power Consumption&lt;br /&gt;
| data59	= {{{sw_idlepower|}}}&lt;br /&gt;
| header60	= &lt;br /&gt;
| label60  	= Stand by time&lt;br /&gt;
| data60	= {{{sw_standbytime|}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Devices]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3268</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3268"/>
		<updated>2026-09-27T06:17:34Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|display=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Template:Infobox_Device&amp;diff=3267</id>
		<title>Template:Infobox Device</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Template:Infobox_Device&amp;diff=3267"/>
		<updated>2026-09-27T06:16:16Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox&lt;br /&gt;
| abovestyle	= background: #dedede;&lt;br /&gt;
| headerstyle 	= background: #dedede;&lt;br /&gt;
&lt;br /&gt;
| above		= {{{name|&amp;lt;includeonly&amp;gt;{{PAGENAME}}&amp;lt;/includeonly&amp;gt;}}}&lt;br /&gt;
&lt;br /&gt;
| image		= {{{image|}}}&lt;br /&gt;
| caption	= {{{caption|}}}&lt;br /&gt;
| header2	=&lt;br /&gt;
| label2 	= Manufacturer&lt;br /&gt;
| data2		= {{{manufacturer|}}}&lt;br /&gt;
| header3	=&lt;br /&gt;
| label3	= Codename&lt;br /&gt;
| data3		= {{{codename|}}}&lt;br /&gt;
| header4	=&lt;br /&gt;
| label4	= Dimensions&lt;br /&gt;
| data4		= {{{dimensions|}}}&lt;br /&gt;
| header5	=&lt;br /&gt;
| label5	= Release Date&lt;br /&gt;
| data5		= {{{release_date|}}}&lt;br /&gt;
| header6 	=&lt;br /&gt;
| label6	= Website&lt;br /&gt;
| data6		= {{{website|}}}&lt;br /&gt;
| header7 	=&lt;br /&gt;
| label7	= Category&lt;br /&gt;
| data7 	= {{{category|}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| header8 	= Specifications&lt;br /&gt;
| label8	=&lt;br /&gt;
| data8		=&lt;br /&gt;
| header9	=&lt;br /&gt;
| label9	= SoC&lt;br /&gt;
| data9		= {{{soc|}}}&lt;br /&gt;
| header10 	=&lt;br /&gt;
| label10	= DRAM&lt;br /&gt;
| data10 	= {{{dram|}}}&lt;br /&gt;
| header11	=&lt;br /&gt;
| label11	= NAND&lt;br /&gt;
| data11	= {{{nand|}}}&lt;br /&gt;
| header12	=&lt;br /&gt;
| label12	= Power&lt;br /&gt;
| data12	= {{{power|}}}&lt;br /&gt;
&lt;br /&gt;
| header13	= Hardware Features&lt;br /&gt;
| label13	= &lt;br /&gt;
| data13	= &lt;br /&gt;
| header14	=&lt;br /&gt;
| label14	= Display&lt;br /&gt;
| data14	= {{{display|}}}&lt;br /&gt;
| header15 	= &lt;br /&gt;
| label15	= Input&lt;br /&gt;
| data15	= {{{input|}}}&lt;br /&gt;
| header16	=&lt;br /&gt;
| label16	= Video&lt;br /&gt;
| data16	= {{{video|}}}&lt;br /&gt;
| header17 	= &lt;br /&gt;
| label17	= Audio&lt;br /&gt;
| data17	= {{{audio|}}}&lt;br /&gt;
| header18	=&lt;br /&gt;
| label18	= Network&lt;br /&gt;
| data18	= {{{network|}}}&lt;br /&gt;
| header19	=&lt;br /&gt;
| label19	= Storage&lt;br /&gt;
| data19	= {{{storage|}}}&lt;br /&gt;
| header20	=&lt;br /&gt;
| label20	= USB (&amp;lt;small&amp;gt;Host/OTG&amp;lt;/small&amp;gt;)&lt;br /&gt;
| data20	= {{{usb|}}}&lt;br /&gt;
| header21	=&lt;br /&gt;
| label21	= Camera&lt;br /&gt;
| data21	= {{{camera|}}}&lt;br /&gt;
| header22	=&lt;br /&gt;
| label22	= Sensors&lt;br /&gt;
| data22	= {{{sensors|}}}&lt;br /&gt;
| header23	= &lt;br /&gt;
| label23	= External Headers&lt;br /&gt;
| data23	= {{{headers|}}}&lt;br /&gt;
| header24	= &lt;br /&gt;
| label24	= Battery Capacity&lt;br /&gt;
| data24	= {{{battery|}}}&lt;br /&gt;
&lt;br /&gt;
| header25	= Software Features&lt;br /&gt;
| label25	= &lt;br /&gt;
| data25	=&lt;br /&gt;
| header26	= &lt;br /&gt;
| label26	= Kernel&lt;br /&gt;
| data26	= {{{sw_kernel|}}}&lt;br /&gt;
| header27	= &lt;br /&gt;
| label27	= Serial&lt;br /&gt;
| data27	= {{{sw_serial|}}}&lt;br /&gt;
| header28	= &lt;br /&gt;
| label28	= Charging&lt;br /&gt;
| data28	= {{{sw_charging|}}}&lt;br /&gt;
| header29	= &lt;br /&gt;
| label29	= USB Slave&lt;br /&gt;
| data29	= {{{sw_usb_slave|}}}&lt;br /&gt;
| header30	= &lt;br /&gt;
| label30	= USB Host&lt;br /&gt;
| data30	= {{{sw_usb_host|}}}&lt;br /&gt;
| header31	= &lt;br /&gt;
| label31	= Touchscreen&lt;br /&gt;
| data31	= {{{sw_touchscreen|}}}&lt;br /&gt;
| header32	= &lt;br /&gt;
| label32	= Keyboard&lt;br /&gt;
| data32	= {{{sw_keyboard|}}}&lt;br /&gt;
| header33	= &lt;br /&gt;
| label33	= Screen&lt;br /&gt;
| data33	= {{{sw_screen|}}}&lt;br /&gt;
| header34	= &lt;br /&gt;
| label34	= HDMI-out&lt;br /&gt;
| data34	= {{{sw_hdmi|}}}&lt;br /&gt;
| header35	= &lt;br /&gt;
| label35	= TV-out&lt;br /&gt;
| data35	= {{{sw_tv|}}}&lt;br /&gt;
| header36	= &lt;br /&gt;
| label36	= 3D acceleration&lt;br /&gt;
| data36	= {{{sw_3daccel|}}}&lt;br /&gt;
| header37	= &lt;br /&gt;
| label37	= Vibration motor&lt;br /&gt;
| data37	= {{{sw_vibration|}}}&lt;br /&gt;
| header38	= &lt;br /&gt;
| label38	= Audio&lt;br /&gt;
| data38	= {{{sw_audio|}}}&lt;br /&gt;
| header39	= &lt;br /&gt;
| label39	= Phone calls&lt;br /&gt;
| data39	= {{{sw_calls|}}}&lt;br /&gt;
| header40	= &lt;br /&gt;
| label40	= SMS&lt;br /&gt;
| data40	= {{{sw_sms|}}}&lt;br /&gt;
| header41	= &lt;br /&gt;
| label41	= Wifi&lt;br /&gt;
| data41	= {{{sw_wifi|}}}&lt;br /&gt;
| header42	= &lt;br /&gt;
| label42	= Ethernet&lt;br /&gt;
| data42  	= {{{sw_ethernet|}}}&lt;br /&gt;
| header43	= &lt;br /&gt;
| label43  	= IrDA&lt;br /&gt;
| data43  	= {{{sw_irda|}}}&lt;br /&gt;
| header44	= &lt;br /&gt;
| label44  	= 2G/3G data&lt;br /&gt;
| data44 	= {{{sw_2g3gdata|}}}&lt;br /&gt;
| header45	= &lt;br /&gt;
| label45  	= 4G data&lt;br /&gt;
| data45 	= {{{sw_4gdata|}}}&lt;br /&gt;
| header46	= &lt;br /&gt;
| label46  	= Bluetooth&lt;br /&gt;
| data46 	= {{{sw_bluetooth|}}}&lt;br /&gt;
| header47	= &lt;br /&gt;
| label47  	= FM transmitter&lt;br /&gt;
| data47	= {{{sw_fmtx|}}}&lt;br /&gt;
| header48	= &lt;br /&gt;
| label48  	= FM receiver&lt;br /&gt;
| data48	= {{{sw_fmrx|}}}&lt;br /&gt;
| header49	= &lt;br /&gt;
| label49  	= NFC&lt;br /&gt;
| data49	= {{{sw_nfc|}}}&lt;br /&gt;
| header50	= &lt;br /&gt;
| label50  	= Accelerometer&lt;br /&gt;
| data50	= {{{sw_accelerometer|}}}&lt;br /&gt;
| header51	= &lt;br /&gt;
| label51  	= Compass&lt;br /&gt;
| data51	= {{{sw_compass|}}}&lt;br /&gt;
| header52	= &lt;br /&gt;
| label52  	= Gryo&lt;br /&gt;
| data52	= {{{sw_gyro|}}}&lt;br /&gt;
| header53	= &lt;br /&gt;
| label53  	= Proximity Sensor&lt;br /&gt;
| data53	= {{{sw_proximity|}}}&lt;br /&gt;
| header54	= &lt;br /&gt;
| label54  	= Ambient Light Sensor&lt;br /&gt;
| data54	= {{{sw_als|}}}&lt;br /&gt;
| header55	= &lt;br /&gt;
| label55  	= GPS&lt;br /&gt;
| data55	= {{{sw_gps|}}}&lt;br /&gt;
| header56	= &lt;br /&gt;
| label56  	= A-GPS&lt;br /&gt;
| data56	= {{{sw_agps|}}}&lt;br /&gt;
| header57	= &lt;br /&gt;
| label57  	= Front Camera&lt;br /&gt;
| data57	= {{{sw_frontcam|}}}&lt;br /&gt;
| header58	= &lt;br /&gt;
| label58  	= Back Camera(s)&lt;br /&gt;
| data58	= {{{sw_backcam|}}}&lt;br /&gt;
| header59	= &lt;br /&gt;
| label59  	= Idle Power Consumption&lt;br /&gt;
| data59	= {{{sw_idlepower|}}}&lt;br /&gt;
| header60	= &lt;br /&gt;
| label60  	= Stand by time&lt;br /&gt;
| data60	= {{{sw_standbytime|}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Devices]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3266</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3266"/>
		<updated>2026-09-23T20:01:33Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* GPS with ModemManager and Geoclue (testing, not implemented, WIP) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install geoclue-2-demo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, &#039;&#039;&#039;where-am-i&#039;&#039;&#039; should show network coordinates and GPS coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or GPS coordinates appear in &#039;&#039;&#039;where-am-i&#039;&#039;&#039;, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3265</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3265"/>
		<updated>2026-09-23T19:54:10Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Tweaks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
=== GPS with ModemManager and Geoclue (testing, not implemented, WIP) ===&lt;br /&gt;
&lt;br /&gt;
To enable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-engine-lock=mt&lt;br /&gt;
qmicli -d qrtr://0 --loc-set-nmea-types=all&lt;br /&gt;
mmcli -m any --location-enable-gps-nmea&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To disable GPS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mmcli -m any --location-disable-gps-nmea&lt;br /&gt;
qmicli -d qrtr://0 --loc-stop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To start location:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qmicli -d qrtr://0 --loc-start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, in 2 different terminals:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/agent&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/libexec/geoclue-2.0/demos/where-am-i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After a while, where-am-i should show network coordinates and gps coordinates a bit later.&lt;br /&gt;
&lt;br /&gt;
Once network or gps coordinates appear in where-am-i, Firefox is able to report coordinates in location websites like Google Maps.&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3264</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3264"/>
		<updated>2026-09-23T19:37:25Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Tweaks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
=== Video recording (testing) ===&lt;br /&gt;
&lt;br /&gt;
Both back and front cameras work (more or less) and it is already possible to record some videos using gst-launch and libcamera:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install libcamera-tools&lt;br /&gt;
sudo apt install gstreamer1.0-libcamera&lt;br /&gt;
sudo apt install gstreamer1.0-plugins-ugly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First test to show video stream: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! queue ! videoconvert ! autovideosink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, to record a video: (sudo needed ATM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(i2c-bus@0 for back and i2c-bus@1 for front camera)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo gst-launch-1.0 -e libcamerasrc camera-name=&amp;quot;/base/soc@0/cci@ac4a000/i2c-bus@1/camera@1a&amp;quot; ! video/x-raw,framerate=17/2 ! queue ! videoconvert ! x264enc tune=zerolatency bitrate=4000 speed-preset=ultrafast ! h264parse ! mp4mux ! filesink location=videotest.mp4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is only an example and a WIP. Lot of parameters need to be added or modified. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: libcamera-tools provides qcam which can be used to take some pictures. Colors are a bit wrong and rotation seems not calibrated properly.&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3263</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3263"/>
		<updated>2026-09-20T10:11:52Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation with fastboot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here] &#039;&#039;&#039;(.tar.xz archive includes both sargo and bonito img&#039;s files)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3262</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3262"/>
		<updated>2026-09-20T10:06:11Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It is recommended to upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here]&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3261</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3261"/>
		<updated>2026-09-20T10:05:39Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended t0 upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here]&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3260</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3260"/>
		<updated>2026-09-20T07:52:52Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation with fastboot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended that you upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here]&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3259</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3259"/>
		<updated>2026-09-20T07:51:41Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation with fastboot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended that you upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here]&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning:&#039;&#039;&#039; TODO it is confusing how to use fastboot flash boot/boot_a/boot_b command. Needs clarifications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3258</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3258"/>
		<updated>2026-09-20T07:44:48Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended that you upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here]&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3257</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3257"/>
		<updated>2026-09-20T07:44:20Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Flash mode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended that you upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here]&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3256</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3256"/>
		<updated>2026-09-20T07:40:21Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation with fastboot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended that you upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here]&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0: &#039;fastboot oem uart enable&#039;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3255</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3255"/>
		<updated>2026-09-20T07:34:09Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended that you upgrade Android to the latest available version and install all system updates before installing Maemo-leste, because Maemo-leste uses FW files from Android partitions for enabling various peripherals, as mentioned in Mobian [https://wiki.debian.org/InstallingDebianOn/Google/Pixel3a wiki]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here]&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3254</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3254"/>
		<updated>2026-09-20T07:21:59Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation with fastboot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here]&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3253</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3253"/>
		<updated>2026-09-20T07:17:02Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation with fastboot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here]&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot_b &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3252</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3252"/>
		<updated>2026-09-20T07:16:02Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation with fastboot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here]&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot_b &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039; The bootloader on the Pixel 3a appends console=null to the kernel cmdline by default, which hides the boot logs on the screen. A custom manufacturer fastboot command can configure console=tty0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot oem uart enable&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3251</id>
		<title>Google Pixel 3a</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Google_Pixel_3a&amp;diff=3251"/>
		<updated>2026-09-20T07:11:13Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation with fastboot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:300px-Google-sargo.png|300px]]&lt;br /&gt;
|manufacturer=Google&lt;br /&gt;
|codename=Pixel 3a/3a XL, Google sargo/bonito&lt;br /&gt;
|release_date=2019&lt;br /&gt;
|category=Supported&lt;br /&gt;
|dram=4GB&lt;br /&gt;
|soc=2 x 2 GHz, 6 x 1.7GHz&lt;br /&gt;
|lcd=1080x2220 OLED&lt;br /&gt;
|video= adreno 615&lt;br /&gt;
|audio=yes&lt;br /&gt;
|network=yes&lt;br /&gt;
|storage=64GB&lt;br /&gt;
|usb=Micro USB C&lt;br /&gt;
|camera=yes&lt;br /&gt;
|sensors=yes&lt;br /&gt;
|battery=3000/3700mAh&lt;br /&gt;
|sw_kernel=6.12&lt;br /&gt;
|sw_charging=Yes&lt;br /&gt;
|sw_touchscreen=Yes, multitouch&lt;br /&gt;
|sw_screen=Yes&lt;br /&gt;
|sw_3daccel=Yes&lt;br /&gt;
|sw_vibration=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_irda=No&lt;br /&gt;
|sw_2g3gdata=Yes, ModemManager only&lt;br /&gt;
|sw_4gdata=Yes, ModemManager only&lt;br /&gt;
|sw_bluetooth=Yes&lt;br /&gt;
|sw_fmtx=No&lt;br /&gt;
|sw_fmrx=No&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_proximity=Yes&lt;br /&gt;
|sw_gps=Yes, ModemManager only&lt;br /&gt;
|sw_agps=Yes, ModemManager only&lt;br /&gt;
|sw_frontcam=Yes, qcam only&lt;br /&gt;
|sw_backcam=Yes, qcam only&lt;br /&gt;
|sw_idlepower=280mW&lt;br /&gt;
|sw_standbytime=40/50h&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNING: Flashing Maemo Leste to your device will erase your Android installation and all the data contained in it.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Install fastboot and last android-sdk-platform-tools on your computer.&lt;br /&gt;
&lt;br /&gt;
Then connect your PC and your phone through USB.&lt;br /&gt;
&lt;br /&gt;
=== Flash mode ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
To enter flash mode (fastboot):&lt;br /&gt;
&lt;br /&gt;
Hold &amp;quot;Volume Down&amp;quot; and &amp;quot;Power&amp;quot; buttons until fastboot appears.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader setup ===&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
Device bootloader needs to be unlocked: from Android, go to &amp;quot;About phone&amp;quot; page in Settings app. Then, click 7 times on the build number to enable developer settings.&lt;br /&gt;
From Setting main page, go to &amp;quot;System&amp;quot;, &amp;quot;Developer options&amp;quot; and enable OEM unlocking.&lt;br /&gt;
&lt;br /&gt;
Before flashing Maemo Leste, you need to unlock the bootloader in fastboot mode with this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flashing unlock&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation with fastboot ===&lt;br /&gt;
&lt;br /&gt;
Fastboot (useful) commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot getvar current-slot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot set_active b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download necessary img&#039;s files [https://maedevu.maemo.org/images/pixel3a/20260906-excalibur/ here]&lt;br /&gt;
&lt;br /&gt;
From fastboot menu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastboot flash boot_b &amp;lt;boot.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot flash userdata &amp;lt;excalibur-sdm670.img&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fastboot reboot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tweaks ==&lt;br /&gt;
&lt;br /&gt;
WIP&lt;br /&gt;
&lt;br /&gt;
=== First boot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recommanded useful apps ===&lt;br /&gt;
&lt;br /&gt;
coolkbd, brightness applet, orientation lock applet&lt;br /&gt;
&lt;br /&gt;
=== Firefox(-esr) tips ===&lt;br /&gt;
&lt;br /&gt;
To activate touchscreen scrolling:&lt;br /&gt;
&lt;br /&gt;
Edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/applications/hildon/firefox-esr.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
modify &amp;quot;Exec&amp;quot; line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Exec=bash -c &#039;MOZ_USE_XINPUT2=1 /usr/bin/firefox-esr&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To modify scaling and fit to Pixel 3a screen in portrait mode, go to &amp;quot;about:config&amp;quot; and edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layout.css.devPixelsPerPx 0.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mobile data (workaround) ===&lt;br /&gt;
&lt;br /&gt;
Ofono doesn&#039;t handle qrtr properly unfortunately, however it is possible to run ModemManager just for mobile data, as a workaround.&lt;br /&gt;
&lt;br /&gt;
(Note: network-manager package is needed)&lt;br /&gt;
&lt;br /&gt;
See PMOS page [https://wiki.postmarketos.org/wiki/Modem#Mobile_Data Mobile data]&lt;br /&gt;
&lt;br /&gt;
and [https://wiki.postmarketos.org/wiki/Modem#Getting_ModemManager_logs ModemManager init script]&lt;br /&gt;
&lt;br /&gt;
That works fine even with ofono running at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Portrait VS Landscape ===&lt;br /&gt;
&lt;br /&gt;
Almost all apps can run in portrait mode with hildon-desktop, however few apps like osso-addressbook or chromium need to be added by-hand in transitions.ini whitelist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/share/hildon-desktop/transitions.ini&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some apps can be also locked in landscape mode if needed (blacklist). It is particulary useful for video apps like smplayer.&lt;br /&gt;
&lt;br /&gt;
Rotation is currently chaotic, it is recommanded to lock the device in portrait mode using Orientation Lock Applet and allow automatic landscape rotation for specific apps in transitions.ini file if needed (until a proper rotation fix).&lt;br /&gt;
&lt;br /&gt;
== Remaining issues ==&lt;br /&gt;
&lt;br /&gt;
Mobile data not working with ofono (qrtr implementation).&lt;br /&gt;
&lt;br /&gt;
Rotation accuracy.&lt;br /&gt;
&lt;br /&gt;
GPS with geoclue implementation for Maemo location apps.&lt;br /&gt;
&lt;br /&gt;
Phone calls work nicely with ofono/sphone, however incoming calls work only if you make an outgoing call first (after boot).&lt;br /&gt;
&lt;br /&gt;
Current draw is a bit high out of the box. fixed in newer kernel. (6.12 patched kernel is available however)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=3250</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=3250"/>
		<updated>2026-09-19T21:33:21Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Installation */&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 XT894&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430 &amp;lt;br&amp;gt;Cortex-A9 &amp;lt;br&amp;gt;Armv7‑A &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, &amp;lt;br&amp;gt;LIS3DH accelerometer, &amp;lt;br&amp;gt;TMP105 temperature, &amp;lt;br&amp;gt;ISL29030 proximity and illuminance &lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=5.18.x&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=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&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=&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=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;
* 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-excalibur-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;
# NOTE: be sure there&#039;s only one file matching maemo-leste-5.0-armhf-droid4-*.img.xz before running this command&lt;br /&gt;
xzcat maemo-leste-5.0-armhf-droid4-*.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://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;
&lt;br /&gt;
The keyboard layout is extended to provide more standard keys.&lt;br /&gt;
[[File:Maemo-leste-droid4-kbd-2021-07.png|center|620px|thumb|maemo-leste droid4 keyboard]]&lt;br /&gt;
Key mapping can be tested with the &#039;xev&#039; program.&lt;br /&gt;
&lt;br /&gt;
It may be necessary to run the follow commands as root in order to get the OK key to function correctly (see [https://github.com/maemo-leste/bugtracker/issues/510#issuecomment-815618591 here]):&lt;br /&gt;
 udevadm hwdb --update&lt;br /&gt;
 udevadm trigger&lt;br /&gt;
&lt;br /&gt;
This should survive a 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 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;
== Bluetooth ==&lt;br /&gt;
&lt;br /&gt;
Needs firmware - install latest firmware-ti-connectivity - See also https://git.maemo.org/leste/bugtracker/issues/290. Due to interference with WiFi, load driver manually, AFTER wifi module loaded. So you should do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install firmware-ti-connectivity&lt;br /&gt;
sudo modprobe hci_uart&lt;br /&gt;
sudo hciconfig hci0 up&lt;br /&gt;
sudo hcitool lescan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
15:04 &amp;lt; tmlind&amp;gt; Wizzup: i think the logo on droid4 can be flashed with fastboot flash logo logo.bin or something, can also be just written to logo partition from m-l&lt;br /&gt;
[snip]&lt;br /&gt;
09:24 &amp;lt; xsetiadi&amp;gt; https://github.com/xsetiadi/droid4-kexecboot/blob/master/logo.bin&lt;br /&gt;
09:25 &amp;lt; xsetiadi&amp;gt; becarefull, you can bootloop droid4 if you wrong flash partition&lt;br /&gt;
09:26 &amp;lt; xsetiadi&amp;gt; like i do last year&lt;br /&gt;
09:26 &amp;lt; xsetiadi&amp;gt; instead of flashing using command: fastboot flash logo.bin logo.bin i just flash it with command: fastboot flash logo logo.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
==== 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;
&lt;br /&gt;
If one wants to mirror the screen on HDMI, this can be done like so, for landscape:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --newmode &amp;quot;960x540_60.00&amp;quot;   40.75  960 992 1088 1216  540 543 548 562 -hsync +vsync&lt;br /&gt;
xrandr --addmode HDMI-1 &amp;quot;960x540_60.00&amp;quot;&lt;br /&gt;
xrandr --output HDMI-1 --mode &amp;quot;960x540_60.00&amp;quot; --same-as DSI-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For rotation, something like this might or might not work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --newmode &amp;quot;960x540_60.00ROT&amp;quot; 43.00  544 576 632 720  960 963 973 996 -hsync +vsync&lt;br /&gt;
xrandr --addmode HDMI-1 &amp;quot;960x540_60.00ROT&amp;quot;&lt;br /&gt;
xrandr --output HDMI-1 --mode &amp;quot;960x540_60.00&amp;quot; --same-as DSI-1 --rotate right&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;
==== BT Audio headset ====&lt;br /&gt;
&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. The quality seems a bit better in &#039;offline mode&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Torch ====&lt;br /&gt;
&lt;br /&gt;
The Droid 4 has a TI LM3559 flash torch controller. This provides flash functionality when taking pictures, usage as a torch, and provides privacy indication (in this mode, the LED flashes in a fast heartbeat pattern). A driver for it exists in mainline, but it requires some DTS work, since it is tied to a camera device. &lt;br /&gt;
&lt;br /&gt;
If you want to use it in the meantime, direct i2c access can be used as follows (since this is direct access, be careful about each of the commands below):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
##Install the prerequisites&lt;br /&gt;
$ sudo apt install i2c-tools&lt;br /&gt;
&lt;br /&gt;
## Turn LED on in torch mode&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x1a&lt;br /&gt;
&lt;br /&gt;
## Turn LED on in privacy indication mode&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x19&lt;br /&gt;
&lt;br /&gt;
## Turn LED off (in any mode)&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x18&lt;br /&gt;
&lt;br /&gt;
## Use LED for doing a hella bright flash for some time once and then turn off&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x1b&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using a configured Leste sdcard in a different Droid4 ==&lt;br /&gt;
&lt;br /&gt;
A configured Droid4 Leste installation is unique to the device that it was calibrated on.  Particularly the wlan firmware calibration will be incorrect if an existing Leste installation is transferred to a different device.  &lt;br /&gt;
&lt;br /&gt;
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 Droid4, 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;
&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;
Droid4_Daimonin_Hdmi.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status overview ==&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 || 6.18 LTS || Mainline + some patches not yet in mainline - see https://git.maemo.org/leste-upstream-forks/droid4-linux/src/branch/leste/maemo-6.18.y&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)&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, see https://git.maemo.org/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 and conversations UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), and sphone UI&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://git.maemo.org/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&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;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=3249</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=3249"/>
		<updated>2026-09-19T21:21:08Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Bluetooth */&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 XT894&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430 &amp;lt;br&amp;gt;Cortex-A9 &amp;lt;br&amp;gt;Armv7‑A &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, &amp;lt;br&amp;gt;LIS3DH accelerometer, &amp;lt;br&amp;gt;TMP105 temperature, &amp;lt;br&amp;gt;ISL29030 proximity and illuminance &lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=5.18.x&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=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&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=&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=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;
* 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;
# NOTE: be sure there&#039;s only one file matching maemo-leste-5.0-armhf-droid4-*.img.xz before running this command&lt;br /&gt;
xzcat maemo-leste-5.0-armhf-droid4-*.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://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;
&lt;br /&gt;
The keyboard layout is extended to provide more standard keys.&lt;br /&gt;
[[File:Maemo-leste-droid4-kbd-2021-07.png|center|620px|thumb|maemo-leste droid4 keyboard]]&lt;br /&gt;
Key mapping can be tested with the &#039;xev&#039; program.&lt;br /&gt;
&lt;br /&gt;
It may be necessary to run the follow commands as root in order to get the OK key to function correctly (see [https://github.com/maemo-leste/bugtracker/issues/510#issuecomment-815618591 here]):&lt;br /&gt;
 udevadm hwdb --update&lt;br /&gt;
 udevadm trigger&lt;br /&gt;
&lt;br /&gt;
This should survive a 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 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;
== Bluetooth ==&lt;br /&gt;
&lt;br /&gt;
Needs firmware - install latest firmware-ti-connectivity - See also https://git.maemo.org/leste/bugtracker/issues/290. Due to interference with WiFi, load driver manually, AFTER wifi module loaded. So you should do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install firmware-ti-connectivity&lt;br /&gt;
sudo modprobe hci_uart&lt;br /&gt;
sudo hciconfig hci0 up&lt;br /&gt;
sudo hcitool lescan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
15:04 &amp;lt; tmlind&amp;gt; Wizzup: i think the logo on droid4 can be flashed with fastboot flash logo logo.bin or something, can also be just written to logo partition from m-l&lt;br /&gt;
[snip]&lt;br /&gt;
09:24 &amp;lt; xsetiadi&amp;gt; https://github.com/xsetiadi/droid4-kexecboot/blob/master/logo.bin&lt;br /&gt;
09:25 &amp;lt; xsetiadi&amp;gt; becarefull, you can bootloop droid4 if you wrong flash partition&lt;br /&gt;
09:26 &amp;lt; xsetiadi&amp;gt; like i do last year&lt;br /&gt;
09:26 &amp;lt; xsetiadi&amp;gt; instead of flashing using command: fastboot flash logo.bin logo.bin i just flash it with command: fastboot flash logo logo.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
==== 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;
&lt;br /&gt;
If one wants to mirror the screen on HDMI, this can be done like so, for landscape:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --newmode &amp;quot;960x540_60.00&amp;quot;   40.75  960 992 1088 1216  540 543 548 562 -hsync +vsync&lt;br /&gt;
xrandr --addmode HDMI-1 &amp;quot;960x540_60.00&amp;quot;&lt;br /&gt;
xrandr --output HDMI-1 --mode &amp;quot;960x540_60.00&amp;quot; --same-as DSI-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For rotation, something like this might or might not work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --newmode &amp;quot;960x540_60.00ROT&amp;quot; 43.00  544 576 632 720  960 963 973 996 -hsync +vsync&lt;br /&gt;
xrandr --addmode HDMI-1 &amp;quot;960x540_60.00ROT&amp;quot;&lt;br /&gt;
xrandr --output HDMI-1 --mode &amp;quot;960x540_60.00&amp;quot; --same-as DSI-1 --rotate right&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;
==== BT Audio headset ====&lt;br /&gt;
&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. The quality seems a bit better in &#039;offline mode&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Torch ====&lt;br /&gt;
&lt;br /&gt;
The Droid 4 has a TI LM3559 flash torch controller. This provides flash functionality when taking pictures, usage as a torch, and provides privacy indication (in this mode, the LED flashes in a fast heartbeat pattern). A driver for it exists in mainline, but it requires some DTS work, since it is tied to a camera device. &lt;br /&gt;
&lt;br /&gt;
If you want to use it in the meantime, direct i2c access can be used as follows (since this is direct access, be careful about each of the commands below):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
##Install the prerequisites&lt;br /&gt;
$ sudo apt install i2c-tools&lt;br /&gt;
&lt;br /&gt;
## Turn LED on in torch mode&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x1a&lt;br /&gt;
&lt;br /&gt;
## Turn LED on in privacy indication mode&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x19&lt;br /&gt;
&lt;br /&gt;
## Turn LED off (in any mode)&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x18&lt;br /&gt;
&lt;br /&gt;
## Use LED for doing a hella bright flash for some time once and then turn off&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x1b&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using a configured Leste sdcard in a different Droid4 ==&lt;br /&gt;
&lt;br /&gt;
A configured Droid4 Leste installation is unique to the device that it was calibrated on.  Particularly the wlan firmware calibration will be incorrect if an existing Leste installation is transferred to a different device.  &lt;br /&gt;
&lt;br /&gt;
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 Droid4, 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;
&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;
Droid4_Daimonin_Hdmi.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status overview ==&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 || 6.18 LTS || Mainline + some patches not yet in mainline - see https://git.maemo.org/leste-upstream-forks/droid4-linux/src/branch/leste/maemo-6.18.y&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)&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, see https://git.maemo.org/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 and conversations UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), and sphone UI&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://git.maemo.org/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&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;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=3248</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=3248"/>
		<updated>2026-09-19T21:17:27Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Updating */&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 XT894&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430 &amp;lt;br&amp;gt;Cortex-A9 &amp;lt;br&amp;gt;Armv7‑A &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, &amp;lt;br&amp;gt;LIS3DH accelerometer, &amp;lt;br&amp;gt;TMP105 temperature, &amp;lt;br&amp;gt;ISL29030 proximity and illuminance &lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=5.18.x&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=Yes&lt;br /&gt;
|sw_audio=Yes&lt;br /&gt;
|sw_calls=Yes&lt;br /&gt;
|sw_sms=Yes&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=&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=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;
* 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;
# NOTE: be sure there&#039;s only one file matching maemo-leste-5.0-armhf-droid4-*.img.xz before running this command&lt;br /&gt;
xzcat maemo-leste-5.0-armhf-droid4-*.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://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;
&lt;br /&gt;
The keyboard layout is extended to provide more standard keys.&lt;br /&gt;
[[File:Maemo-leste-droid4-kbd-2021-07.png|center|620px|thumb|maemo-leste droid4 keyboard]]&lt;br /&gt;
Key mapping can be tested with the &#039;xev&#039; program.&lt;br /&gt;
&lt;br /&gt;
It may be necessary to run the follow commands as root in order to get the OK key to function correctly (see [https://github.com/maemo-leste/bugtracker/issues/510#issuecomment-815618591 here]):&lt;br /&gt;
 udevadm hwdb --update&lt;br /&gt;
 udevadm trigger&lt;br /&gt;
&lt;br /&gt;
This should survive a 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 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;
== 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. So you should do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt install firmware-ti-connectivity&lt;br /&gt;
sudo modprobe hci_uart&lt;br /&gt;
sudo hciconfig hci0 up&lt;br /&gt;
sudo hcitool lescan&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
15:04 &amp;lt; tmlind&amp;gt; Wizzup: i think the logo on droid4 can be flashed with fastboot flash logo logo.bin or something, can also be just written to logo partition from m-l&lt;br /&gt;
[snip]&lt;br /&gt;
09:24 &amp;lt; xsetiadi&amp;gt; https://github.com/xsetiadi/droid4-kexecboot/blob/master/logo.bin&lt;br /&gt;
09:25 &amp;lt; xsetiadi&amp;gt; becarefull, you can bootloop droid4 if you wrong flash partition&lt;br /&gt;
09:26 &amp;lt; xsetiadi&amp;gt; like i do last year&lt;br /&gt;
09:26 &amp;lt; xsetiadi&amp;gt; instead of flashing using command: fastboot flash logo.bin logo.bin i just flash it with command: fastboot flash logo logo.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
==== 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;
&lt;br /&gt;
If one wants to mirror the screen on HDMI, this can be done like so, for landscape:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --newmode &amp;quot;960x540_60.00&amp;quot;   40.75  960 992 1088 1216  540 543 548 562 -hsync +vsync&lt;br /&gt;
xrandr --addmode HDMI-1 &amp;quot;960x540_60.00&amp;quot;&lt;br /&gt;
xrandr --output HDMI-1 --mode &amp;quot;960x540_60.00&amp;quot; --same-as DSI-1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For rotation, something like this might or might not work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --newmode &amp;quot;960x540_60.00ROT&amp;quot; 43.00  544 576 632 720  960 963 973 996 -hsync +vsync&lt;br /&gt;
xrandr --addmode HDMI-1 &amp;quot;960x540_60.00ROT&amp;quot;&lt;br /&gt;
xrandr --output HDMI-1 --mode &amp;quot;960x540_60.00&amp;quot; --same-as DSI-1 --rotate right&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;
==== BT Audio headset ====&lt;br /&gt;
&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. The quality seems a bit better in &#039;offline mode&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Torch ====&lt;br /&gt;
&lt;br /&gt;
The Droid 4 has a TI LM3559 flash torch controller. This provides flash functionality when taking pictures, usage as a torch, and provides privacy indication (in this mode, the LED flashes in a fast heartbeat pattern). A driver for it exists in mainline, but it requires some DTS work, since it is tied to a camera device. &lt;br /&gt;
&lt;br /&gt;
If you want to use it in the meantime, direct i2c access can be used as follows (since this is direct access, be careful about each of the commands below):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
##Install the prerequisites&lt;br /&gt;
$ sudo apt install i2c-tools&lt;br /&gt;
&lt;br /&gt;
## Turn LED on in torch mode&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x1a&lt;br /&gt;
&lt;br /&gt;
## Turn LED on in privacy indication mode&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x19&lt;br /&gt;
&lt;br /&gt;
## Turn LED off (in any mode)&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x18&lt;br /&gt;
&lt;br /&gt;
## Use LED for doing a hella bright flash for some time once and then turn off&lt;br /&gt;
$ sudo i2cset -y 2 0x53 0x10 0x1b&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using a configured Leste sdcard in a different Droid4 ==&lt;br /&gt;
&lt;br /&gt;
A configured Droid4 Leste installation is unique to the device that it was calibrated on.  Particularly the wlan firmware calibration will be incorrect if an existing Leste installation is transferred to a different device.  &lt;br /&gt;
&lt;br /&gt;
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 Droid4, 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;
&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;
Droid4_Daimonin_Hdmi.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status overview ==&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 || 6.18 LTS || Mainline + some patches not yet in mainline - see https://git.maemo.org/leste-upstream-forks/droid4-linux/src/branch/leste/maemo-6.18.y&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)&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, see https://git.maemo.org/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 and conversations UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), and sphone UI&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://git.maemo.org/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&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;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Main_Page&amp;diff=3247</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Main_Page&amp;diff=3247"/>
		<updated>2026-09-19T16:16:27Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&lt;br /&gt;
Welcome to the Maemo Leste wiki; Maemo Leste continues the legacy of Maemo Fremantle. We aim to provide a free Maemo experience on mobile phones and tablets like the Nokia N900, Motorola Droid 4, PinePhone, Pixel 3a (and XL), Allwinner Tablets and more.&lt;br /&gt;
&lt;br /&gt;
You can find us on &#039;&#039;&#039;irc.libera.chat&#039;&#039;&#039;, channel &#039;&#039;&#039;#maemo-leste&#039;&#039;&#039;, you can [[IRC channel|use IRC]] to connect if you wish.&lt;br /&gt;
&lt;br /&gt;
For an overview of the current status, you might want to check out: [[Status]]&lt;br /&gt;
&lt;br /&gt;
Maemo Leste is based on Devuan Daedalus and all the &amp;quot;supported&amp;quot; devices ship with recent Linux (mainline-based) kernels.&lt;br /&gt;
&lt;br /&gt;
The project is currently not usable as a daily driver for your device. Maemo Leste is currently in development phase and we are actively searching for developers.&lt;br /&gt;
&lt;br /&gt;
For some devices, we have development images available, such as the [[Nokia N900]], the [[Motorola Droid 4]], the [[Google Pixel 3a]] and the [[PinePhone]]. So far we have set up Devuan/Debian repositories for our packages, with builds for armhf, arm64 and amd64. We have FOSS replacements for some closed Maemo packages, further building on the Maemo community efforts to replace all closed bits by open software.&lt;br /&gt;
&lt;br /&gt;
If you have not used Maemo before, you might want to check out some of the tips on the [[HowTo]] page.&lt;br /&gt;
&lt;br /&gt;
== Useful resources, lists and pages ==&lt;br /&gt;
&lt;br /&gt;
* To get started with a new install, see [[Getting_Started|Getting Started]].&lt;br /&gt;
* Read our [[Leste_FAQ|Frequently Asked Questions]]&lt;br /&gt;
* List of [[:Category:Device]] with support to varying degrees&lt;br /&gt;
* Latest downloadable images: https://maedevu.maemo.org/images/&lt;br /&gt;
* List of &amp;quot;extras&amp;quot; software packages that have a wiki page: https://leste.maemo.org/Category:Extras&lt;br /&gt;
* Read how to get started with [[Development]]&lt;br /&gt;
* You have an application you want to see in Leste? Please let us know [[Wishlist|here]].&lt;br /&gt;
* For a list of presentations/talks featuring Maemo Leste, see [[Talks]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
The central point of meeting and talking is &#039;&#039;&#039;IRC&#039;&#039;&#039; (&#039;&#039;&#039;irc.libera.chat&#039;&#039;&#039; in &#039;&#039;&#039;#maemo-leste&#039;&#039;&#039;) and this thread: https://talk.maemo.org/showthread.php?t=100192.&lt;br /&gt;
&lt;br /&gt;
* Our Blog: [https://maemo-leste.github.io https://maemo-leste.github.io]&lt;br /&gt;
&lt;br /&gt;
* Our Bugtracker: [https://git.maemo.org/leste/bugtracker/issues https://git.maemo.org/leste/bugtracker/issues]&lt;br /&gt;
&lt;br /&gt;
* Our Forgejo: [https://git.maemo.org/leste https://git.maemo.org/leste]&lt;br /&gt;
&lt;br /&gt;
* Our Github subdomain: [https://maemo-leste.github.io/ https://maemo-leste.github.io/]&lt;br /&gt;
&lt;br /&gt;
* Our Extras Forgejo: [https://git.maemo.org/leste-extras https://git.maemo.org/leste-extras]&lt;br /&gt;
&lt;br /&gt;
* Our Images: [http://maedevu.maemo.org/images/ http://maedevu.maemo.org/images/] and https://phoenix.maemo.org/view/Images/&lt;br /&gt;
&lt;br /&gt;
* Our Jenkins build server: [https://phoenix.maemo.org/ https://phoenix.maemo.org/]&lt;br /&gt;
&lt;br /&gt;
* Our IRC chat history: [http://maedevu.maemo.org/irc.txt http://maedevu.maemo.org/irc.txt] and https://libera.irclog.whitequark.org/maemo-leste/ (previously: https://freenode.irclog.whitequark.org/maemo-leste/)&lt;br /&gt;
&lt;br /&gt;
* Our YouTube channel: [https://www.youtube.com/channel/UCgAWiHvWSuJAg5hjk7JYn1w https://www.youtube.com/channel/UCgAWiHvWSuJAg5hjk7JYn1w] (via [https://www.invidio.us/channel/UCgAWiHvWSuJAg5hjk7JYn1w Invidious] )&lt;br /&gt;
&lt;br /&gt;
* Our Package index and info: [https://maedevu.maemo.org/pkgweb/ https://maedevu.maemo.org/pkgweb/] which runs https://git.maemo.org/leste/mpi&lt;br /&gt;
&lt;br /&gt;
* Mailing List: [https://lists.dyne.org/lurker/list/maemo-leste.en.html https://lists.dyne.org/lurker/list/maemo-leste.en.html]&lt;br /&gt;
&lt;br /&gt;
* Our Forum [https://talk.maemo.org/forumdisplay.php?f=66 https://talk.maemo.org/forumdisplay.php?f=66]&lt;br /&gt;
&lt;br /&gt;
* RSS Leste feed: https://git.maemo.org/leste.rss&lt;br /&gt;
&lt;br /&gt;
* RSS bugtracker feed: https://git.maemo.org/leste/bugtracker.rss&lt;br /&gt;
&lt;br /&gt;
* Our Twitter: [https://twitter.com/maemoleste @maemoleste]&lt;br /&gt;
&lt;br /&gt;
* Distrowatch: [https://distrowatch.com/dwres.php?resource=submit Maemo Leste] (give us an upvote)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Building_Packages&amp;diff=3246</id>
		<title>Development/Building Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Building_Packages&amp;diff=3246"/>
		<updated>2026-09-19T15:14:19Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* Maemo Leste Extras */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Maintenance workflow =&lt;br /&gt;
&lt;br /&gt;
Each package in Maemo Leste uses a specific git-based workflow which makes it easy to track history and maintain in an easy way.&lt;br /&gt;
&lt;br /&gt;
Taking the https://git.maemo.org/leste/libcal package as an example - a valid repository contains at least two git branches:&lt;br /&gt;
&lt;br /&gt;
# master&lt;br /&gt;
# maemo/beowulf&lt;br /&gt;
&lt;br /&gt;
Ideally, the branches should have no difference, but sometimes this may vary.&lt;br /&gt;
Your git repository should contain your code, and a &#039;&#039;&#039;debian&#039;&#039;&#039; directory - which contains the debian package build logic.&lt;br /&gt;
The &amp;lt;i&amp;gt;compat&amp;lt;/i&amp;gt; level of the package should be no less than &#039;&#039;&#039;9&#039;&#039;&#039; and preferably it should use &#039;&#039;&#039;debhelper&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Once you have your package ready and it builds locally on your Maemo Leste VM/device, there are just a couple more things to&lt;br /&gt;
do to make it ready for building on Jenkins:&lt;br /&gt;
&lt;br /&gt;
== The git tag ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;debian/changelog&#039;&#039;&#039; you should have your package version. It is very important to have a git tag that reflects this version&lt;br /&gt;
so Jenkins and jenkins-debian-glue can figure out which revision to build.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that the git tag should &#039;&#039;&#039;only&#039;&#039;&#039; contain the upstream version and no package revisions or epochs, for example if we have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;libcal (0.3-2) unstable; urgency=medium&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our git tag would be &amp;lt;i&amp;gt;0.3&amp;lt;/i&amp;gt;, and &#039;&#039;&#039;not&#039;&#039;&#039; &amp;lt;i&amp;gt;0.3-2&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once tagged, push the tag to git origin.&lt;br /&gt;
&lt;br /&gt;
NB: The tags are used to checkout the source code itself, the debian directory is always taken from git HEAD, so there is no need to update the tag when changing the packaging (i.e. in debian directory). Tag shall be updated only when there are changes to the source files.&lt;br /&gt;
&lt;br /&gt;
== gbp.conf ==&lt;br /&gt;
&lt;br /&gt;
Your &#039;&#039;&#039;debian&#039;&#039;&#039; directory should contain a file called &#039;&#039;&#039;gbp.conf&#039;&#039;&#039; with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once all this is in place, make sure that you have a &#039;&#039;&#039;maemo/$codename&#039;&#039;&#039; branch containing all this ready and pushed.&lt;br /&gt;
&lt;br /&gt;
= How you can build packages =&lt;br /&gt;
&lt;br /&gt;
Building a packages is easier than one might think, it requires roughly the following steps:&lt;br /&gt;
&lt;br /&gt;
#. Access to a Devuan/Debian system (you can use a [[Virtual_Machine|VM running Maemo Leste]] or a [[:Category:Device|Device running Maemo Leste]].&lt;br /&gt;
#. Source code of a package, obtain either via &#039;&#039;&#039;git&#039;&#039;&#039; or &#039;&#039;&#039;apt source &amp;lt;packagename&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
#. Install build dependencies (run from source directory): &#039;&#039;&#039;sudo apt-get build-dep .&#039;&#039;&#039;&lt;br /&gt;
#. Build a package using &#039;&#039;&#039;dpkg-buildpackage -uc -b&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can now install the package you have just built with &#039;&#039;&#039;dpkg -i somename.deb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Also see: https://wiki.debian.org/HowToPackageForDebian&lt;br /&gt;
&lt;br /&gt;
== Submitting changes ==&lt;br /&gt;
&lt;br /&gt;
If you make changes to a package, please submit a pull request for the repository of that package, likely: https://git.maemo.org/leste-extras/PACKAGENAME&lt;br /&gt;
&lt;br /&gt;
For now, we will take care of updating tags and branches.&lt;br /&gt;
&lt;br /&gt;
= How packages end up in the repository =&lt;br /&gt;
&lt;br /&gt;
There are currently two repositories:&lt;br /&gt;
&lt;br /&gt;
* The main repository: https://maedevu.maemo.org/leste&lt;br /&gt;
* The extras repository: https://maedevu.maemo.org/extras&lt;br /&gt;
&lt;br /&gt;
The packages in the extras repository are not core, but useful applications nonetheless.&lt;br /&gt;
&lt;br /&gt;
The codenames and an /etc/apt/sources.list file entry would look like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
deb https://maedevu.maemo.org/leste beowulf main contrib non-free&lt;br /&gt;
&lt;br /&gt;
deb https://maedevu.maemo.org/extras beowulf main contrib non-free&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Packages in this repository get build by Jenkins, to which a select group of people has access. (Parazyd, Wizzup)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How packages are built using Jenkins ==&lt;br /&gt;
&lt;br /&gt;
Read only access to the http frontend: https://phoenix.maemo.org/ (write-access can be granted)&lt;br /&gt;
&lt;br /&gt;
All packages are hosted on https://git.maemo.org/explore/repos and a current list of all the packages in Jenkins can be found here:&lt;br /&gt;
&lt;br /&gt;
https://git.maemo.org/leste/jenkins-integration/src/branch/master/config.py&lt;br /&gt;
&lt;br /&gt;
Every repository has a branch for each release, for example:&lt;br /&gt;
&lt;br /&gt;
# maemo/beowulf - main branch for Devuan Beowulf target&lt;br /&gt;
# maemo/beowulf-devel - optional branch for Devuan Beowulf with unstable/testing version&lt;br /&gt;
&lt;br /&gt;
See [[Development/Branches]] for more information on the usual branches flow.&lt;br /&gt;
&lt;br /&gt;
= Maemo Leste Extras =&lt;br /&gt;
&lt;br /&gt;
If you wish to maintain your own package in Maemo Leste, you can apply a package at https://git.maemo.org/leste-extras/bugtracker&lt;br /&gt;
Have a look at the README in that repository and open a ticket.&lt;br /&gt;
&lt;br /&gt;
== Consideration for HAM ==&lt;br /&gt;
For packages built for extras to appear correctly in Hildon Application Manager, be aware that Maemo packaging system &lt;br /&gt;
included a few enhancements that HAM assumes. The most important one is that your application will &#039;&#039;&#039;only&#039;&#039;&#039; appear in HAM if the &lt;br /&gt;
&amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt; file has a correct &amp;lt;code&amp;gt;section&amp;lt;/code&amp;gt; clause as explained on the [https://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Packaging,_Deploying_and_Distributing#Sections|Maemo Packaging Wiki]. This wiki page also explains how to have HAM show your application&#039;s icon. Note that having an icon showing in HAM is a separate issue from having an icon show up in the application list (Hildon Home). The latter is done through &lt;br /&gt;
&amp;lt;code&amp;gt;.desktop&amp;lt;/code&amp;gt; files, while the former is done in &amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Adding an icon to the package in HAM ==&lt;br /&gt;
&lt;br /&gt;
In case you want to add an icon that is shown in HAM when listing the packages, we provide a debhelper plugin that can&lt;br /&gt;
handle this with a simple PNG file. In your package&#039;s debian directory, add your PNG icon as &#039;&#039;&#039;maemo-icon.png&#039;&#039;&#039;.&lt;br /&gt;
Next, have your Build-Depends contain &#039;&#039;&#039;maemo-system-services-dev&#039;&#039;&#039;. maemo-system-services-dev will pull in the debhelper plugin.&lt;br /&gt;
Following this, in your &#039;&#039;&#039;debian/control&#039;&#039;&#039;, under your &#039;&#039;&#039;Package&#039;&#039;&#039;, add the following entry:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XB-Maemo-Icon-26: ${maemo:icon26}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally, in &#039;&#039;&#039;debian/rules&#039;&#039;&#039;, assuming you&#039;re using debhelper, add this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
override_dh_gencontrol:&lt;br /&gt;
    dh_maemo_icon&lt;br /&gt;
    dh_gencontrol&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, if using quilt, add the icon in &#039;&#039;&#039;debian/source/include-binaries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo debian/maemo-icon.png &amp;gt;&amp;gt; debian/source/include-binaries&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further reading: https://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Packaging,_Deploying_and_Distributing#Sections&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Building_Packages&amp;diff=3245</id>
		<title>Development/Building Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Building_Packages&amp;diff=3245"/>
		<updated>2026-09-19T15:13:02Z</updated>

		<summary type="html">&lt;p&gt;Arno11-n900: /* How packages are built using Jenkins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Maintenance workflow =&lt;br /&gt;
&lt;br /&gt;
Each package in Maemo Leste uses a specific git-based workflow which makes it easy to track history and maintain in an easy way.&lt;br /&gt;
&lt;br /&gt;
Taking the https://git.maemo.org/leste/libcal package as an example - a valid repository contains at least two git branches:&lt;br /&gt;
&lt;br /&gt;
# master&lt;br /&gt;
# maemo/beowulf&lt;br /&gt;
&lt;br /&gt;
Ideally, the branches should have no difference, but sometimes this may vary.&lt;br /&gt;
Your git repository should contain your code, and a &#039;&#039;&#039;debian&#039;&#039;&#039; directory - which contains the debian package build logic.&lt;br /&gt;
The &amp;lt;i&amp;gt;compat&amp;lt;/i&amp;gt; level of the package should be no less than &#039;&#039;&#039;9&#039;&#039;&#039; and preferably it should use &#039;&#039;&#039;debhelper&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Once you have your package ready and it builds locally on your Maemo Leste VM/device, there are just a couple more things to&lt;br /&gt;
do to make it ready for building on Jenkins:&lt;br /&gt;
&lt;br /&gt;
== The git tag ==&lt;br /&gt;
&lt;br /&gt;
In &#039;&#039;&#039;debian/changelog&#039;&#039;&#039; you should have your package version. It is very important to have a git tag that reflects this version&lt;br /&gt;
so Jenkins and jenkins-debian-glue can figure out which revision to build.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that the git tag should &#039;&#039;&#039;only&#039;&#039;&#039; contain the upstream version and no package revisions or epochs, for example if we have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;libcal (0.3-2) unstable; urgency=medium&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our git tag would be &amp;lt;i&amp;gt;0.3&amp;lt;/i&amp;gt;, and &#039;&#039;&#039;not&#039;&#039;&#039; &amp;lt;i&amp;gt;0.3-2&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once tagged, push the tag to git origin.&lt;br /&gt;
&lt;br /&gt;
NB: The tags are used to checkout the source code itself, the debian directory is always taken from git HEAD, so there is no need to update the tag when changing the packaging (i.e. in debian directory). Tag shall be updated only when there are changes to the source files.&lt;br /&gt;
&lt;br /&gt;
== gbp.conf ==&lt;br /&gt;
&lt;br /&gt;
Your &#039;&#039;&#039;debian&#039;&#039;&#039; directory should contain a file called &#039;&#039;&#039;gbp.conf&#039;&#039;&#039; with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once all this is in place, make sure that you have a &#039;&#039;&#039;maemo/$codename&#039;&#039;&#039; branch containing all this ready and pushed.&lt;br /&gt;
&lt;br /&gt;
= How you can build packages =&lt;br /&gt;
&lt;br /&gt;
Building a packages is easier than one might think, it requires roughly the following steps:&lt;br /&gt;
&lt;br /&gt;
#. Access to a Devuan/Debian system (you can use a [[Virtual_Machine|VM running Maemo Leste]] or a [[:Category:Device|Device running Maemo Leste]].&lt;br /&gt;
#. Source code of a package, obtain either via &#039;&#039;&#039;git&#039;&#039;&#039; or &#039;&#039;&#039;apt source &amp;lt;packagename&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
#. Install build dependencies (run from source directory): &#039;&#039;&#039;sudo apt-get build-dep .&#039;&#039;&#039;&lt;br /&gt;
#. Build a package using &#039;&#039;&#039;dpkg-buildpackage -uc -b&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can now install the package you have just built with &#039;&#039;&#039;dpkg -i somename.deb&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Also see: https://wiki.debian.org/HowToPackageForDebian&lt;br /&gt;
&lt;br /&gt;
== Submitting changes ==&lt;br /&gt;
&lt;br /&gt;
If you make changes to a package, please submit a pull request for the repository of that package, likely: https://git.maemo.org/leste-extras/PACKAGENAME&lt;br /&gt;
&lt;br /&gt;
For now, we will take care of updating tags and branches.&lt;br /&gt;
&lt;br /&gt;
= How packages end up in the repository =&lt;br /&gt;
&lt;br /&gt;
There are currently two repositories:&lt;br /&gt;
&lt;br /&gt;
* The main repository: https://maedevu.maemo.org/leste&lt;br /&gt;
* The extras repository: https://maedevu.maemo.org/extras&lt;br /&gt;
&lt;br /&gt;
The packages in the extras repository are not core, but useful applications nonetheless.&lt;br /&gt;
&lt;br /&gt;
The codenames and an /etc/apt/sources.list file entry would look like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
deb https://maedevu.maemo.org/leste beowulf main contrib non-free&lt;br /&gt;
&lt;br /&gt;
deb https://maedevu.maemo.org/extras beowulf main contrib non-free&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Packages in this repository get build by Jenkins, to which a select group of people has access. (Parazyd, Wizzup)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How packages are built using Jenkins ==&lt;br /&gt;
&lt;br /&gt;
Read only access to the http frontend: https://phoenix.maemo.org/ (write-access can be granted)&lt;br /&gt;
&lt;br /&gt;
All packages are hosted on https://git.maemo.org/explore/repos and a current list of all the packages in Jenkins can be found here:&lt;br /&gt;
&lt;br /&gt;
https://git.maemo.org/leste/jenkins-integration/src/branch/master/config.py&lt;br /&gt;
&lt;br /&gt;
Every repository has a branch for each release, for example:&lt;br /&gt;
&lt;br /&gt;
# maemo/beowulf - main branch for Devuan Beowulf target&lt;br /&gt;
# maemo/beowulf-devel - optional branch for Devuan Beowulf with unstable/testing version&lt;br /&gt;
&lt;br /&gt;
See [[Development/Branches]] for more information on the usual branches flow.&lt;br /&gt;
&lt;br /&gt;
= Maemo Leste Extras =&lt;br /&gt;
&lt;br /&gt;
If you wish to maintain your own package in Maemo Leste, you can apply a package at https://github.com/maemo-leste-extras/bugtracker&lt;br /&gt;
Have a look at the README in that repository and open a ticket.&lt;br /&gt;
&lt;br /&gt;
== Consideration for HAM ==&lt;br /&gt;
For packages built for extras to appear correctly in Hildon Application Manager, be aware that Maemo packaging system &lt;br /&gt;
included a few enhancements that HAM assumes. The most important one is that your application will &#039;&#039;&#039;only&#039;&#039;&#039; appear in HAM if the &lt;br /&gt;
&amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt; file has a correct &amp;lt;code&amp;gt;section&amp;lt;/code&amp;gt; clause as explained on the [https://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Packaging,_Deploying_and_Distributing#Sections|Maemo Packaging Wiki]. This wiki page also explains how to have HAM show your application&#039;s icon. Note that having an icon showing in HAM is a separate issue from having an icon show up in the application list (Hildon Home). The latter is done through &lt;br /&gt;
&amp;lt;code&amp;gt;.desktop&amp;lt;/code&amp;gt; files, while the former is done in &amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Adding an icon to the package in HAM ==&lt;br /&gt;
&lt;br /&gt;
In case you want to add an icon that is shown in HAM when listing the packages, we provide a debhelper plugin that can&lt;br /&gt;
handle this with a simple PNG file. In your package&#039;s debian directory, add your PNG icon as &#039;&#039;&#039;maemo-icon.png&#039;&#039;&#039;.&lt;br /&gt;
Next, have your Build-Depends contain &#039;&#039;&#039;maemo-system-services-dev&#039;&#039;&#039;. maemo-system-services-dev will pull in the debhelper plugin.&lt;br /&gt;
Following this, in your &#039;&#039;&#039;debian/control&#039;&#039;&#039;, under your &#039;&#039;&#039;Package&#039;&#039;&#039;, add the following entry:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XB-Maemo-Icon-26: ${maemo:icon26}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And finally, in &#039;&#039;&#039;debian/rules&#039;&#039;&#039;, assuming you&#039;re using debhelper, add this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
override_dh_gencontrol:&lt;br /&gt;
    dh_maemo_icon&lt;br /&gt;
    dh_gencontrol&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, if using quilt, add the icon in &#039;&#039;&#039;debian/source/include-binaries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo debian/maemo-icon.png &amp;gt;&amp;gt; debian/source/include-binaries&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further reading: https://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Packaging,_Deploying_and_Distributing#Sections&lt;/div&gt;</summary>
		<author><name>Arno11-n900</name></author>
	</entry>
</feed>