<?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=Sicelo</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=Sicelo"/>
	<link rel="alternate" type="text/html" href="https://leste.maemo.org/Special:Contributions/Sicelo"/>
	<updated>2026-04-25T06:12:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.0</generator>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1781</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1781"/>
		<updated>2026-01-07T14:58:35Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Existing Fremantle */&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.6&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;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card.&lt;br /&gt;
&lt;br /&gt;
If using a Windows machine, you can use [https://etcher.io/ Etcher]&lt;br /&gt;
&lt;br /&gt;
See the next section on how to boot. (using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613)&lt;br /&gt;
&lt;br /&gt;
=== Bootloader (U-Boot) setup ===&lt;br /&gt;
&lt;br /&gt;
==== Quick ====&lt;br /&gt;
&lt;br /&gt;
If you don'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;
'''(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)''')&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 'flash' 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, '''BE WARNED:''' 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'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'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'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's how the battery calibration works in low level: it can't change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it'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;
'''Overclocking is now available in -devel using cpufreq boost.'''&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;
'''No other steps are needed and updates/upgrades work with boost mode.'''&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;
'''WARNING: some devices can'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'''&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;
(wait for a few seconds...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +w /home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(then the funny part...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Now it's time to modify frequencies and voltage: be careful to do exactly the same)&lt;br /&gt;
&lt;br /&gt;
Find &amp;quot;opp-table&amp;quot; with &amp;lt;code&amp;gt;ctl+w&amp;lt;/code&amp;gt; and 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;
Then &amp;lt;code&amp;gt;ctl+x&amp;lt;/code&amp;gt; to save and close.&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;
That's it !&lt;br /&gt;
&lt;br /&gt;
Now reboot and select 'Maemo Leste Overclock' in bootmenu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
('''WARNING with old method:''' 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;
'''WARNING''': unresponsive / freezing screen is normal during Hildon-desktop loading.&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'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;
&lt;br /&gt;
'''Note for Chimaera image:''' it is recommended to dist-upgrade to -devel to enable more features by adding&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb https://maedevu.maemo.org/leste chimaera-devel main contrib non-free  n900&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
('''Warning:''' don't remove other sources in this file)&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;
('''Note: SWAP is already activated by default''')&lt;br /&gt;
&lt;br /&gt;
Enabling swap on eMMC 768MB partition if not already activated on first boot (works on the fly):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo swapon /dev/mmcblk1p3&amp;lt;/pre&amp;gt;   (editing /etc/fstab/ is not needed and done automatically on next reboot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Other possibility:''' 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 ===&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;
'''Note: like Fremantle, blur effect can cause lags and slowness.''' 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;
- Only for Chimaera: Dist-upgrade to -devel (not working without)&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.6 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 'FM Transmitter' 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 'fix'&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>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1780</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1780"/>
		<updated>2026-01-07T14:17:05Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Existing Fremantle */&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.6&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;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card.&lt;br /&gt;
&lt;br /&gt;
If using a Windows machine, you can use [https://etcher.io/ Etcher]&lt;br /&gt;
&lt;br /&gt;
See the next section on how to boot. (using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613)&lt;br /&gt;
&lt;br /&gt;
=== Bootloader (U-Boot) setup ===&lt;br /&gt;
&lt;br /&gt;
==== Quick ====&lt;br /&gt;
&lt;br /&gt;
If you don'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;
'''(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)''')&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;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;. This will 'flash' 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, '''BE WARNED:''' 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'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'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'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's how the battery calibration works in low level: it can't change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it'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;
'''Overclocking is now available in -devel using cpufreq boost.'''&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;
'''No other steps are needed and updates/upgrades work with boost mode.'''&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;
'''WARNING: some devices can'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'''&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;
(wait for a few seconds...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +w /home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(then the funny part...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Now it's time to modify frequencies and voltage: be careful to do exactly the same)&lt;br /&gt;
&lt;br /&gt;
Find &amp;quot;opp-table&amp;quot; with &amp;lt;code&amp;gt;ctl+w&amp;lt;/code&amp;gt; and 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;
Then &amp;lt;code&amp;gt;ctl+x&amp;lt;/code&amp;gt; to save and close.&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;
That's it !&lt;br /&gt;
&lt;br /&gt;
Now reboot and select 'Maemo Leste Overclock' in bootmenu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
('''WARNING with old method:''' 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;
'''WARNING''': unresponsive / freezing screen is normal during Hildon-desktop loading.&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'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;
&lt;br /&gt;
'''Note for Chimaera image:''' it is recommended to dist-upgrade to -devel to enable more features by adding&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb https://maedevu.maemo.org/leste chimaera-devel main contrib non-free  n900&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
('''Warning:''' don't remove other sources in this file)&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;
('''Note: SWAP is already activated by default''')&lt;br /&gt;
&lt;br /&gt;
Enabling swap on eMMC 768MB partition if not already activated on first boot (works on the fly):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo swapon /dev/mmcblk1p3&amp;lt;/pre&amp;gt;   (editing /etc/fstab/ is not needed and done automatically on next reboot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Other possibility:''' 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 ===&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;
'''Note: like Fremantle, blur effect can cause lags and slowness.''' 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;
- Only for Chimaera: Dist-upgrade to -devel (not working without)&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.6 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 'FM Transmitter' 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 'fix'&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>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1779</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1779"/>
		<updated>2026-01-07T14:15:27Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Existing Fremantle */&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.6&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;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card.&lt;br /&gt;
&lt;br /&gt;
If using a Windows machine, you can use [https://etcher.io/ Etcher]&lt;br /&gt;
&lt;br /&gt;
See the next section on how to boot. (using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613)&lt;br /&gt;
&lt;br /&gt;
=== Bootloader (U-Boot) setup ===&lt;br /&gt;
&lt;br /&gt;
==== Quick ====&lt;br /&gt;
&lt;br /&gt;
If you don'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;
'''(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)''')&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;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;. This will 'flash' 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. If you were not running the stock 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, '''BE WARNED:''' 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'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'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'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's how the battery calibration works in low level: it can't change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it'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;
'''Overclocking is now available in -devel using cpufreq boost.'''&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;
'''No other steps are needed and updates/upgrades work with boost mode.'''&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;
'''WARNING: some devices can'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'''&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;
(wait for a few seconds...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +w /home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(then the funny part...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /home/user/omap3-n900.dts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Now it's time to modify frequencies and voltage: be careful to do exactly the same)&lt;br /&gt;
&lt;br /&gt;
Find &amp;quot;opp-table&amp;quot; with &amp;lt;code&amp;gt;ctl+w&amp;lt;/code&amp;gt; and 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;
Then &amp;lt;code&amp;gt;ctl+x&amp;lt;/code&amp;gt; to save and close.&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;
That's it !&lt;br /&gt;
&lt;br /&gt;
Now reboot and select 'Maemo Leste Overclock' in bootmenu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
('''WARNING with old method:''' 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;
'''WARNING''': unresponsive / freezing screen is normal during Hildon-desktop loading.&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'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;
&lt;br /&gt;
'''Note for Chimaera image:''' it is recommended to dist-upgrade to -devel to enable more features by adding&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb https://maedevu.maemo.org/leste chimaera-devel main contrib non-free  n900&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
('''Warning:''' don't remove other sources in this file)&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;
('''Note: SWAP is already activated by default''')&lt;br /&gt;
&lt;br /&gt;
Enabling swap on eMMC 768MB partition if not already activated on first boot (works on the fly):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo swapon /dev/mmcblk1p3&amp;lt;/pre&amp;gt;   (editing /etc/fstab/ is not needed and done automatically on next reboot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Other possibility:''' 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 ===&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;
'''Note: like Fremantle, blur effect can cause lags and slowness.''' 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;
- Only for Chimaera: Dist-upgrade to -devel (not working without)&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.6 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 'FM Transmitter' 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 'fix'&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>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Status/GPS&amp;diff=1771</id>
		<title>Status/GPS</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Status/GPS&amp;diff=1771"/>
		<updated>2025-06-29T20:03:57Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: migrate links to git.maemo.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Fremantle Gypsy ==&lt;br /&gt;
&lt;br /&gt;
is actually not gypsy. Rather (some) gypsy calls implemented as &amp;quot;location-daemon&amp;quot;.&lt;br /&gt;
location-daemon/gypsy gets spawned after an application requests GPS. How exactly - TBD.&lt;br /&gt;
&lt;br /&gt;
== Setting up GPSD with gpsfake on a VM ==&lt;br /&gt;
&lt;br /&gt;
Install gpsd and gpsd-clients:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install gpsd gpsd-clients&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop apparmor (for testing only!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/apparmor stop&lt;br /&gt;
aa-teardown&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And then you can run gpsfake using test files from the gpsd repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://git.maemo.org/leste-upstream-forks/pkg-gpsd&lt;br /&gt;
gpsfake -c 1 pkg-gpsd/test/daemon/nokia-ld-4w.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then in another terminal, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cgps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And you should see the information from the GPS log be replayed.&lt;br /&gt;
&lt;br /&gt;
== Relevant URLs ==&lt;br /&gt;
&lt;br /&gt;
* https://git.maemo.org/leste/bugtracker/issues/151&lt;br /&gt;
* https://git.maemo.org/leste/bugtracker/issues/57&lt;br /&gt;
* http://talk.maemo.org/showthread.php?t=100363&lt;br /&gt;
* &amp;lt;s&amp;gt;(On combining multiple gps sources such as A-GPS/SUPL and gpsd) https://lists.gnu.org/archive/html/gpsd-dev/2012-07/msg00018.html&amp;lt;/s&amp;gt; (not actually relevant, A-GPS needs to fed to the GPS driver/subsystem, not merged as info into gpsd)&lt;br /&gt;
* supl implementation: https://github.com/tajuma/supl&lt;br /&gt;
* https://talk.maemo.org/showthread.php?t=93910&lt;br /&gt;
&lt;br /&gt;
== Regarding Droid 4 GPS == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
17:05 &amp;lt; Wizzup&amp;gt; tmlind: wrt gps on the droid, you said there is currently a bug that allows opening&lt;br /&gt;
                /dev/gnss* only once?&lt;br /&gt;
17:09 &amp;lt; tmlind&amp;gt; Wizzup: i think that was a bug in gpsd, did not happen last time i tried. if you hit&lt;br /&gt;
                that one, opening secondary clients like gpspipe -R won't output anything&lt;br /&gt;
17:09 &amp;lt; Wizzup&amp;gt; ah, so it's not a kernel problem, ok&lt;br /&gt;
17:10 &amp;lt; Wizzup&amp;gt; once maemo-input-sounds is done (hopefully tonight) I will work on location stuff in&lt;br /&gt;
                case I can go on vacation and need gps, or until fmg is done with abook and we then&lt;br /&gt;
                look at rtcom&lt;br /&gt;
17:10 &amp;lt; Wizzup&amp;gt; in any case, I was wondering what the gps status is, but I think we'll start gpsd on&lt;br /&gt;
                demand, so that's fine&lt;br /&gt;
17:11 &amp;lt; Wizzup&amp;gt; from a pm pov, I assume closing the fd will stop gps recv?&lt;br /&gt;
17:11 &amp;lt; Wizzup&amp;gt; also, this is on the wiki: 22:30 &amp;lt; tmlind&amp;gt; hmm there's a probably kernel gnss bug for&lt;br /&gt;
                gsp access fyi, you can currently only open one connection before you have to restart&lt;br /&gt;
                gpsd :)&lt;br /&gt;
17:13 &amp;lt; tmlind&amp;gt; Wizzup: yeah so if hiking, you probably want to modprobe gnss_motmdm rate_ms=3000 or&lt;br /&gt;
                even higher to allow the soc to sleep inbetween&lt;br /&gt;
17:14 &amp;lt; tmlind&amp;gt; Wizzup: the default gpsd options only open device if there's a client and times out&lt;br /&gt;
                automatically&lt;br /&gt;
17:14 &amp;lt; Wizzup&amp;gt; interesting.&lt;br /&gt;
17:14 &amp;lt; Wizzup&amp;gt; regarding module - well noted&lt;br /&gt;
17:14 &amp;lt; Wizzup&amp;gt; I didn't know gpsd auto closed, that's nice.&lt;br /&gt;
17:15 &amp;lt; tmlind&amp;gt; i think i measured about 200 - 250 mW with gps enabled screen blanked etc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Regarding A-GPS in general, but also N900 and Droid 4 specifics ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
17:15 &amp;lt; Wizzup&amp;gt; also ran into this: https://lists.gnu.org/archive/html/gpsd-dev/2012-07/msg00018.html&lt;br /&gt;
17:15 &amp;lt; Entitlement&amp;gt; Wizzup - [ Re: [gpsd-dev] Using multiple location sources to improve accuracy and&lt;br /&gt;
                     r ]&lt;br /&gt;
17:15 &amp;lt; Wizzup&amp;gt; (regarding agps)&lt;br /&gt;
17:15 &amp;lt; tmlind&amp;gt; Wizzup: yeah so don't enable gpsd -n option, that will keep the gps open&lt;br /&gt;
17:15 &amp;lt; Wizzup&amp;gt; looks like ESR suggests to write a daemon that sits in the middle and mixes in agps&lt;br /&gt;
                info&lt;br /&gt;
17:15 &amp;lt; Wizzup&amp;gt; ok&lt;br /&gt;
17:16 &amp;lt; Wizzup&amp;gt; regarding rate_ms, I wonder if it makes more sense to keep it lower until a proper fix&lt;br /&gt;
                is found&lt;br /&gt;
17:16 &amp;lt; Wizzup&amp;gt; although I suppose that's only the reporting rate, so it probably doesn't matter&lt;br /&gt;
17:16 &amp;lt; tmlind&amp;gt; yeah it defaults to 1s so just leave it out by default&lt;br /&gt;
17:16 &amp;lt; tmlind&amp;gt; it will be some generic option eventually and not a module param&lt;br /&gt;
17:17 -!- z3ntu_ [z3ntumatri@gateway/shell/matrix.org/x-lnssiqwycssoqteb] has quit [Quit: Idle for 30+&lt;br /&gt;
          days]&lt;br /&gt;
17:18 &amp;lt; tmlind&amp;gt; not sure how much stuff i'll get done over next few months in general, but at some&lt;br /&gt;
                point i'm planning to continue on the droid4-agps tool..&lt;br /&gt;
17:19 &amp;lt; Wizzup&amp;gt; tmlind: what would that do?&lt;br /&gt;
17:19 &amp;lt; Wizzup&amp;gt; I figured agps could be done via with https://github.com/tajuma/supl&lt;br /&gt;
17:19 &amp;lt; Entitlement&amp;gt; Wizzup - [ GitHub - tajuma/supl ]&lt;br /&gt;
17:19 &amp;lt; Wizzup&amp;gt; s/via with/with this/&lt;br /&gt;
17:20 -!- peetah [~peetah@cha92-9-82-236-202-86.fbx.proxad.net] has joined #maemo-leste&lt;br /&gt;
17:22 &amp;lt; bencoh&amp;gt; (tested and more or less working on maemo5, btw)&lt;br /&gt;
17:22 &amp;lt; Wizzup&amp;gt; bencoh: just now?&lt;br /&gt;
17:22 &amp;lt; bencoh&amp;gt; no&lt;br /&gt;
17:22 &amp;lt; Wizzup&amp;gt; :)&lt;br /&gt;
17:23 &amp;lt; bencoh&amp;gt; I used it to proxify supl requests to google&lt;br /&gt;
17:23 &amp;lt; tmlind&amp;gt; Wizzup: hmm maybe not sure. in this case we need to download qcom provided up to date&lt;br /&gt;
                xtra2.bin file for the gnss, not sure if the older formats work at all for the gnss&lt;br /&gt;
17:25 &amp;lt; bencoh&amp;gt; tmlind: I'd tend to think you would need to keep gps &amp;quot;always on&amp;quot; before the first fix&lt;br /&gt;
17:25 &amp;lt; bencoh&amp;gt; otherwise you will never get enough information from satellites&lt;br /&gt;
17:25 &amp;lt; bencoh&amp;gt; (unless you have agps/supl, of course)&lt;br /&gt;
17:26 &amp;lt; Wizzup&amp;gt; tmlind: from what I can tell that tool just takes lac/mcc/mns and such (like we can&lt;br /&gt;
                get from ofono or from modem directly) and just calls to a SUPL service?&lt;br /&gt;
17:27 &amp;lt; bencoh&amp;gt; Wizzup: google would even return you a rough position with those&lt;br /&gt;
17:27 &amp;lt; tmlind&amp;gt; bencoh: yes it does that already automatically and won't start idling until the fix is&lt;br /&gt;
                done&lt;br /&gt;
17:27 &amp;lt; bencoh&amp;gt; tmlind: ah, I see&lt;br /&gt;
17:28 &amp;lt; tmlind&amp;gt; Wizzup: yeh i figured, not sure if the modem nvram settings for supl are working or&lt;br /&gt;
                not, i somehow have an impression they're only working for some older modems, could be&lt;br /&gt;
                wrong&lt;br /&gt;
17:28 &amp;lt; Wizzup&amp;gt; I don't know enough about AGPS clearly, but from what I currently understand, it's&lt;br /&gt;
                just a data connection to a server with some cell data&lt;br /&gt;
17:29 &amp;lt; Wizzup&amp;gt; so I am not sure what the modem would do specifically&lt;br /&gt;
17:29 &amp;lt; Wizzup&amp;gt; I suppose there are probably many &amp;quot;assisted&amp;quot; methods&lt;br /&gt;
17:29 &amp;lt; bencoh&amp;gt; Wizzup: you're supposed to receive orbital data / almanac&lt;br /&gt;
17:30 &amp;lt; Wizzup&amp;gt; ah&lt;br /&gt;
17:30 &amp;lt; bencoh&amp;gt; and feed it to the gps subsystem&lt;br /&gt;
17:30 &amp;lt; tmlind&amp;gt; yeah this xtra2.bin stuff is an almanac in some proprietary format for a week i think&lt;br /&gt;
17:30 &amp;lt; Wizzup&amp;gt; oh, right, to actually feed it&lt;br /&gt;
17:30 &amp;lt; Wizzup&amp;gt; I get it now.&lt;br /&gt;
17:30 &amp;lt; Wizzup&amp;gt; when I was searching for methods to tell gpsd about agps nothing turned out, explains&lt;br /&gt;
                it now&lt;br /&gt;
17:31 &amp;lt; Wizzup&amp;gt; s/turned out/turned up/&lt;br /&gt;
17:31 &amp;lt; bencoh&amp;gt; iiuc on n900, the modem itself manages the supl connection; the location daemon only&lt;br /&gt;
                acts as a proxy to provide it a tcp connection&lt;br /&gt;
17:31 &amp;lt; Wizzup&amp;gt; ok, yeah, so for the n900 we will have to RE some stuff&lt;br /&gt;
17:31 &amp;lt; bencoh&amp;gt; yeah&lt;br /&gt;
17:31 &amp;lt; tmlind&amp;gt; bencoh: afaik also mdm6600 nvram has something for supl server, not sure if it works&lt;br /&gt;
                though&lt;br /&gt;
17:32 &amp;lt; tmlind&amp;gt; bencoh: if you want to try it, you can tweak the nvram values with tcmdrw on&lt;br /&gt;
                github.com/tmlind&lt;br /&gt;
17:32 &amp;lt; bencoh&amp;gt; tmlind: meaning implementing/RE-ing such a proxy would make sense for both platforms&lt;br /&gt;
17:33 &amp;lt; tmlind&amp;gt; bencoh: hmm proxy running where? on the device?&lt;br /&gt;
17:33 &amp;lt; bencoh&amp;gt; on n900/maemo5, yeah&lt;br /&gt;
17:33 &amp;lt; bencoh&amp;gt; iirc it is location-proxy (forked on demand I think)&lt;br /&gt;
17:33 &amp;lt; tmlind&amp;gt; well i think the modem uses the supl server directly probably based on some&lt;br /&gt;
                requirements from the ministry of silly walks&lt;br /&gt;
17:34 &amp;lt; Wizzup&amp;gt; bencoh: there is location-proxy and location-daemon btw&lt;br /&gt;
17:34 &amp;lt; bencoh&amp;gt; it does; the &amp;quot;proxy&amp;quot; only provides the modem with a mean to open a tcp socket and&lt;br /&gt;
                read/write to it&lt;br /&gt;
17:34 &amp;lt; bencoh&amp;gt; Wizzup: indeed&lt;br /&gt;
17:34 &amp;lt; Wizzup&amp;gt; if you have more info please share :)&lt;br /&gt;
17:34 &amp;lt; Wizzup&amp;gt; I can RE some stuff, but want to RE the right things only&lt;br /&gt;
17:35 &amp;lt; bencoh&amp;gt; I haven't toyed with those for quite some time, but lemme see&lt;br /&gt;
17:35 &amp;lt; tmlind&amp;gt; well the thing to try with droid4 mdm6600 would be to configure supl server in nvram,&lt;br /&gt;
                start modem data connection, then gps and see how fast it gets a fix&lt;br /&gt;
17:38 &amp;lt; tmlind&amp;gt; i'd try clearing openpst NV_AAGPS_XTRA_ENABLED_I value to try to disable xtra2.bin&lt;br /&gt;
                use, then try to configure whatever nvram values there might be for a supl server,&lt;br /&gt;
                sorry no idea what those entries might be but i see the dumps contain some url in hex&lt;br /&gt;
                format&lt;br /&gt;
17:40 &amp;lt; bencoh&amp;gt; Wizzup: see /usr/lib/liblas.so.0.0.0&lt;br /&gt;
17:41 &amp;lt; bencoh&amp;gt; especially the las_socket_*&lt;br /&gt;
17:41 &amp;lt; bencoh&amp;gt; location-proxy refers to those&lt;br /&gt;
17:42 &amp;lt; Wizzup&amp;gt; hm 32K&lt;br /&gt;
17:42 &amp;lt; Wizzup&amp;gt; this is likely all n900 specific though right?&lt;br /&gt;
17:42 &amp;lt; bencoh&amp;gt; Wizzup: http://pastebin.notk.org/pastebin.php?show=f7f7b371d&lt;br /&gt;
17:42 &amp;lt; Entitlement&amp;gt; bencoh - [ pastebin private pastebin - collaborative debugging tool ]&lt;br /&gt;
17:42 &amp;lt; bencoh&amp;gt; most likely n900-specific yeah&lt;br /&gt;
17:42 &amp;lt; tmlind&amp;gt; hmm so a quick search for the NV_AAGPS_XTRA_ENABLED_I points to some earlier pastebin&lt;br /&gt;
                page at https://pastebin.com/dyfsUcHc, maybe try configuring those and disable xtra&lt;br /&gt;
                stuff?&lt;br /&gt;
17:42 &amp;lt; Entitlement&amp;gt; tmlind - [ QPST 378 NV Items that are in i535 but NOT in i535 dev ed -&lt;br /&gt;
                     Pastebin.com ]&lt;br /&gt;
17:43 &amp;lt; bencoh&amp;gt; tmlind: I don't think supl server address would go into nvram&lt;br /&gt;
17:43 &amp;lt; Wizzup&amp;gt; bencoh: ah, so you're suggesting we make some generic &amp;quot;how to write supl data to a&lt;br /&gt;
                modem&amp;quot; lib?&lt;br /&gt;
17:43 &amp;lt; bencoh&amp;gt; tmlind: well, unless it has a mean to actually ask for a specific supl server from the&lt;br /&gt;
                AP processor&lt;br /&gt;
17:43 &amp;lt; tmlind&amp;gt; bencoh: i'm pretty sure the uri goes to nvram, see NV_CGPS_UMTS_PDE_SERVER_ADDR_URL_I&lt;br /&gt;
                in the link above&lt;br /&gt;
17:43 &amp;lt; bencoh&amp;gt; oh&lt;br /&gt;
17:44 &amp;lt; bencoh&amp;gt; well, on n900/maemo5, the host gets to decide on that&lt;br /&gt;
17:44 &amp;lt; tmlind&amp;gt; ok&lt;br /&gt;
17:45 &amp;lt; bencoh&amp;gt; Wizzup: I guess we would want a &amp;quot;generic&amp;quot; glue lib with support for various (two?)&lt;br /&gt;
                platforms&lt;br /&gt;
17:45 &amp;lt; tmlind&amp;gt; bencoh: there seems to be a bunch PDE related nvram entries, see libopenpst dm_nv.h&lt;br /&gt;
                file&lt;br /&gt;
17:46 &amp;lt; bencoh&amp;gt; right&lt;br /&gt;
17:47 &amp;lt; bencoh&amp;gt; Actually I wonder if the supl connection would need to go through the host cpu at all&lt;br /&gt;
                on the mdm6600&lt;br /&gt;
17:47 &amp;lt; tmlind&amp;gt; bencoh: no afaik it can't&lt;br /&gt;
17:48 &amp;lt; bencoh&amp;gt; it might try and use the gprs/umts data channels&lt;br /&gt;
17:48 &amp;lt; tmlind&amp;gt; i think it has to&lt;br /&gt;
17:48 &amp;lt; bencoh&amp;gt; without even bothering with the host&lt;br /&gt;
17:48 &amp;lt; tmlind&amp;gt; right&lt;br /&gt;
17:48 &amp;lt; bencoh&amp;gt; it's a completely different design then&lt;br /&gt;
17:48 &amp;lt; bencoh&amp;gt; meaning it should work automagically once we setup pde server properly&lt;br /&gt;
17:49 &amp;lt; tmlind&amp;gt; yeah it should hopefully unless it's working only in the xtra2.bin mode&lt;br /&gt;
17:49 &amp;lt; bencoh&amp;gt; and that it'll stop working forever once supl servers break support for it&lt;br /&gt;
17:49 &amp;lt; tmlind&amp;gt; bencoh: so i did also a tool for the xtra2.bin stuff but it's not complete, also on my&lt;br /&gt;
                github page droid4-agps or something like that&lt;br /&gt;
17:49 &amp;lt; bencoh&amp;gt; (unlike n900, where we managed to somehow get some kind of support using supl-proxy&lt;br /&gt;
                from tajuma)&lt;br /&gt;
17:50 &amp;lt; tmlind&amp;gt; bencoh: at least the supl stuff is a standard format, let's hope it works :)&lt;br /&gt;
17:51 &amp;lt; bencoh&amp;gt; it's &amp;quot;standard&amp;quot; until google decides some input fields become mandatory&lt;br /&gt;
17:51 &amp;lt; bencoh&amp;gt; but yeah&lt;br /&gt;
17:51 &amp;lt; tmlind&amp;gt; i think there are other supl servers available too, right?&lt;br /&gt;
17:51 &amp;lt; Wizzup&amp;gt; bencoh: there were other supl servers I think&lt;br /&gt;
17:51 &amp;lt; bencoh&amp;gt; (I think that's the reason supl.google.com doesn't work on n900 without any proxy)&lt;br /&gt;
17:51 &amp;lt; Wizzup&amp;gt; bencoh: oh?&lt;br /&gt;
17:51 &amp;lt; bencoh&amp;gt; well, it depends on your phone service provider&lt;br /&gt;
17:52 &amp;lt; bencoh&amp;gt; vodaphone has (had?) one for their customers, but it's not available from outside&lt;br /&gt;
                their network&lt;br /&gt;
17:52 &amp;lt; bencoh&amp;gt; nokia died&lt;br /&gt;
17:52 &amp;lt; bencoh&amp;gt; I think sony had one, but ...&lt;br /&gt;
17:53 &amp;lt; bencoh&amp;gt; we could also run one, but we'd need to write a fair bit of code for that&lt;br /&gt;
17:53 &amp;lt; Wizzup&amp;gt; didn't see any code for it so far&lt;br /&gt;
17:53 &amp;lt; Wizzup&amp;gt; (googling around)&lt;br /&gt;
17:54 &amp;lt; Wizzup&amp;gt; as in, for a supl server&lt;br /&gt;
17:54 &amp;lt; bencoh&amp;gt; Wizzup: https://github.com/fairwaves/RRLP-2.8&lt;br /&gt;
17:54 &amp;lt; Entitlement&amp;gt; bencoh - [ GitHub - fairwaves/RRLP-2.8: OpenBTS 2.8 RRLP server, Fairwaves&lt;br /&gt;
                     version ]&lt;br /&gt;
17:55 &amp;lt; bencoh&amp;gt; that's for the rrlp part&lt;br /&gt;
17:56 &amp;lt; bencoh&amp;gt; I don't remember whether they implemented the SUPL part, but if not, one would need to&lt;br /&gt;
                wrap the RRLP payload in SUPL packets&lt;br /&gt;
17:56 &amp;lt; tmlind&amp;gt; well just having a server proxying the supl data from various sources should do, sort&lt;br /&gt;
                of what ntpd does&lt;br /&gt;
17:57 &amp;lt; Wizzup&amp;gt; it would be nice to have a supl server one can just run, though&lt;br /&gt;
17:57 &amp;lt; tmlind&amp;gt; yup&lt;br /&gt;
17:57 &amp;lt; bencoh&amp;gt; tmlind: yup, that's exactly what we started doing on maemo5/n900&lt;br /&gt;
17:57 &amp;lt; Wizzup&amp;gt; all of this sounds like we will just do GPS with A-GPS first though ;)&lt;br /&gt;
17:57 &amp;lt; Wizzup&amp;gt; (for leste, to at least get the frameworks in place)&lt;br /&gt;
17:58 &amp;lt; bencoh&amp;gt; I ran a supl-proxy everytime I needed to get a gps fix&lt;br /&gt;
17:54 &amp;lt; bencoh&amp;gt; Wizzup: https://github.com/fairwaves/RRLP-2.8&lt;br /&gt;
17:54 &amp;lt; Entitlement&amp;gt; bencoh - [ GitHub - fairwaves/RRLP-2.8: OpenBTS 2.8 RRLP server, Fairwaves&lt;br /&gt;
                     version ]&lt;br /&gt;
17:55 &amp;lt; bencoh&amp;gt; that's for the rrlp part&lt;br /&gt;
17:56 &amp;lt; bencoh&amp;gt; I don't remember whether they implemented the SUPL part, but if not, one would need to&lt;br /&gt;
                wrap the RRLP payload in SUPL packets&lt;br /&gt;
17:56 &amp;lt; tmlind&amp;gt; well just having a server proxying the supl data from various sources should do, sort&lt;br /&gt;
                of what ntpd does&lt;br /&gt;
17:57 &amp;lt; Wizzup&amp;gt; it would be nice to have a supl server one can just run, though&lt;br /&gt;
17:57 &amp;lt; tmlind&amp;gt; yup&lt;br /&gt;
17:57 &amp;lt; bencoh&amp;gt; tmlind: yup, that's exactly what we started doing on maemo5/n900&lt;br /&gt;
17:57 &amp;lt; Wizzup&amp;gt; all of this sounds like we will just do GPS with A-GPS first though ;)&lt;br /&gt;
17:57 &amp;lt; Wizzup&amp;gt; (for leste, to at least get the frameworks in place)&lt;br /&gt;
17:58 &amp;lt; bencoh&amp;gt; I ran a supl-proxy everytime I needed to get a gps fix&lt;br /&gt;
17:58 &amp;lt; Wizzup&amp;gt; I should probably do it on fremantle too, didn't look at the proxying&lt;br /&gt;
17:58 &amp;lt; bencoh&amp;gt; (I think it stopped working at some point, but I haven't investigated it. It might be&lt;br /&gt;
                a cert issue)&lt;br /&gt;
17:58 &amp;lt; tmlind&amp;gt; well i meant running a proxying supl server on maemo.org picking data from various&lt;br /&gt;
                sources so devices would just point to the maemo supl server&lt;br /&gt;
17:58 &amp;lt; bencoh&amp;gt; Wizzup: Sicelo eventually wrote a howto https://wiki.maemo.org/N900_GPS_Proxy&lt;br /&gt;
17:58 &amp;lt; Entitlement&amp;gt; bencoh - [ N900 GPS Proxy - maemo.org wiki ]&lt;br /&gt;
17:59 &amp;lt; bencoh&amp;gt; tmlind: *nod*&lt;br /&gt;
17:59 &amp;lt; Wizzup&amp;gt; check&lt;br /&gt;
17:59 &amp;lt; Wizzup&amp;gt; tmlind: ah, right&lt;br /&gt;
17:59 &amp;lt; Wizzup&amp;gt; that's definitely a good stopgap at least&lt;br /&gt;
18:00 &amp;lt; bencoh&amp;gt; We almost have the code for that&lt;br /&gt;
18:00 &amp;lt; tmlind&amp;gt; yeah then adding supl data from some open source data feed could be just added&lt;br /&gt;
18:00 &amp;lt; bencoh&amp;gt; we just need to add multi-client support to supl-proxy&lt;br /&gt;
18:00 &amp;lt; tmlind&amp;gt; cool&lt;br /&gt;
18:01 &amp;lt; bencoh&amp;gt; err, except that supl-proxy will actually fetch data for every request&lt;br /&gt;
18:01 &amp;lt; tmlind&amp;gt; heh that probably creates a google maps traffic jam to where that server is hosted :)&lt;br /&gt;
18:01 &amp;lt; bencoh&amp;gt; :))&lt;br /&gt;
18:02 &amp;lt; tmlind&amp;gt; not sure if there are some legal aspects to consider there, not familiar with the supl&lt;br /&gt;
                stuff really&lt;br /&gt;
18:02 &amp;lt; bencoh&amp;gt; you need to supply a valid cell (mnc/lac/whatever) coordinate, and supl response is&lt;br /&gt;
                customized accordingly&lt;br /&gt;
18:02 &amp;lt; bencoh&amp;gt; afaict&lt;br /&gt;
18:02 &amp;lt; tmlind&amp;gt; huh why do you need mnc/lac?&lt;br /&gt;
18:03 &amp;lt; tmlind&amp;gt; to limit the data size?&lt;br /&gt;
18:03 &amp;lt; bencoh&amp;gt; I'm pretty certain you wouldn't need it in theory to get a full ephemeric/almanac dump&lt;br /&gt;
18:03 &amp;lt; tmlind&amp;gt; bbl&lt;br /&gt;
18:03 &amp;lt; bencoh&amp;gt; but iirc it's mandatory for supl.google.com&lt;br /&gt;
18:04 &amp;lt; bencoh&amp;gt; (I can see a pretty good reason for that, actually ... google loves knowing where you&lt;br /&gt;
                are)&lt;br /&gt;
18:06 &amp;lt; Wizzup&amp;gt; yeah&lt;br /&gt;
18:06 &amp;lt; Wizzup&amp;gt; from 3) A-GPS here , there seem to be only a few&lt;br /&gt;
                https://www.reddit.com/r/privacy/comments/cldrym/how_to_degoogle_lineageos_in_2019/&lt;br /&gt;
18:06 &amp;lt; Entitlement&amp;gt; Wizzup - [ How to deGoogle LineageOS in 2019 : privacy ]&lt;br /&gt;
18:06 &amp;lt; Wizzup&amp;gt; (providers that run a supl server)&lt;br /&gt;
18:12 &amp;lt; bencoh&amp;gt; wow, supl.sonyericsson.com actually works as well&lt;br /&gt;
18:13 &amp;lt; bencoh&amp;gt; and vodafone too. funny, last time I tried I couldn't use it&lt;br /&gt;
18:17 &amp;lt; tmlind&amp;gt; cool, anyways multiple source for the proxying supl server would be best, sort of like&lt;br /&gt;
                with nptd&lt;br /&gt;
18:17  * bencoh nods&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Status/GPS&amp;diff=1770</id>
		<title>Status/GPS</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Status/GPS&amp;diff=1770"/>
		<updated>2025-06-29T20:02:48Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: migrate links to git.maemo.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Fremantle Gypsy ==&lt;br /&gt;
&lt;br /&gt;
is actually not gypsy. Rather (some) gypsy calls implemented as &amp;quot;location-daemon&amp;quot;.&lt;br /&gt;
location-daemon/gypsy gets spawned after an application requests GPS. How exactly - TBD.&lt;br /&gt;
&lt;br /&gt;
== Setting up GPSD with gpsfake on a VM ==&lt;br /&gt;
&lt;br /&gt;
Install gpsd and gpsd-clients:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install gpsd gpsd-clients&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stop apparmor (for testing only!):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/apparmor stop&lt;br /&gt;
aa-teardown&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And then you can run gpsfake using test files from the gpsd repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://git.maemo.org/leste-upstream-forks/pkg-gpsd&lt;br /&gt;
gpsfake -c 1 pkg-gpsd/test/daemon/nokia-ld-4w.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then in another terminal, type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cgps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And you should see the information from the GPS log be replayed.&lt;br /&gt;
&lt;br /&gt;
== Relevant URLs ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/maemo-leste/bugtracker/issues/151&lt;br /&gt;
* https://github.com/maemo-leste/bugtracker/issues/57&lt;br /&gt;
* http://talk.maemo.org/showthread.php?t=100363&lt;br /&gt;
* &amp;lt;s&amp;gt;(On combining multiple gps sources such as A-GPS/SUPL and gpsd) https://lists.gnu.org/archive/html/gpsd-dev/2012-07/msg00018.html&amp;lt;/s&amp;gt; (not actually relevant, A-GPS needs to fed to the GPS driver/subsystem, not merged as info into gpsd)&lt;br /&gt;
* supl implementation: https://github.com/tajuma/supl&lt;br /&gt;
* https://talk.maemo.org/showthread.php?t=93910&lt;br /&gt;
* https://github.com/postmarketOS/gps-nokia-n900/blob/master/gps-nokia-n900.c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Regarding Droid 4 GPS == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
17:05 &amp;lt; Wizzup&amp;gt; tmlind: wrt gps on the droid, you said there is currently a bug that allows opening&lt;br /&gt;
                /dev/gnss* only once?&lt;br /&gt;
17:09 &amp;lt; tmlind&amp;gt; Wizzup: i think that was a bug in gpsd, did not happen last time i tried. if you hit&lt;br /&gt;
                that one, opening secondary clients like gpspipe -R won't output anything&lt;br /&gt;
17:09 &amp;lt; Wizzup&amp;gt; ah, so it's not a kernel problem, ok&lt;br /&gt;
17:10 &amp;lt; Wizzup&amp;gt; once maemo-input-sounds is done (hopefully tonight) I will work on location stuff in&lt;br /&gt;
                case I can go on vacation and need gps, or until fmg is done with abook and we then&lt;br /&gt;
                look at rtcom&lt;br /&gt;
17:10 &amp;lt; Wizzup&amp;gt; in any case, I was wondering what the gps status is, but I think we'll start gpsd on&lt;br /&gt;
                demand, so that's fine&lt;br /&gt;
17:11 &amp;lt; Wizzup&amp;gt; from a pm pov, I assume closing the fd will stop gps recv?&lt;br /&gt;
17:11 &amp;lt; Wizzup&amp;gt; also, this is on the wiki: 22:30 &amp;lt; tmlind&amp;gt; hmm there's a probably kernel gnss bug for&lt;br /&gt;
                gsp access fyi, you can currently only open one connection before you have to restart&lt;br /&gt;
                gpsd :)&lt;br /&gt;
17:13 &amp;lt; tmlind&amp;gt; Wizzup: yeah so if hiking, you probably want to modprobe gnss_motmdm rate_ms=3000 or&lt;br /&gt;
                even higher to allow the soc to sleep inbetween&lt;br /&gt;
17:14 &amp;lt; tmlind&amp;gt; Wizzup: the default gpsd options only open device if there's a client and times out&lt;br /&gt;
                automatically&lt;br /&gt;
17:14 &amp;lt; Wizzup&amp;gt; interesting.&lt;br /&gt;
17:14 &amp;lt; Wizzup&amp;gt; regarding module - well noted&lt;br /&gt;
17:14 &amp;lt; Wizzup&amp;gt; I didn't know gpsd auto closed, that's nice.&lt;br /&gt;
17:15 &amp;lt; tmlind&amp;gt; i think i measured about 200 - 250 mW with gps enabled screen blanked etc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Regarding A-GPS in general, but also N900 and Droid 4 specifics ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
17:15 &amp;lt; Wizzup&amp;gt; also ran into this: https://lists.gnu.org/archive/html/gpsd-dev/2012-07/msg00018.html&lt;br /&gt;
17:15 &amp;lt; Entitlement&amp;gt; Wizzup - [ Re: [gpsd-dev] Using multiple location sources to improve accuracy and&lt;br /&gt;
                     r ]&lt;br /&gt;
17:15 &amp;lt; Wizzup&amp;gt; (regarding agps)&lt;br /&gt;
17:15 &amp;lt; tmlind&amp;gt; Wizzup: yeah so don't enable gpsd -n option, that will keep the gps open&lt;br /&gt;
17:15 &amp;lt; Wizzup&amp;gt; looks like ESR suggests to write a daemon that sits in the middle and mixes in agps&lt;br /&gt;
                info&lt;br /&gt;
17:15 &amp;lt; Wizzup&amp;gt; ok&lt;br /&gt;
17:16 &amp;lt; Wizzup&amp;gt; regarding rate_ms, I wonder if it makes more sense to keep it lower until a proper fix&lt;br /&gt;
                is found&lt;br /&gt;
17:16 &amp;lt; Wizzup&amp;gt; although I suppose that's only the reporting rate, so it probably doesn't matter&lt;br /&gt;
17:16 &amp;lt; tmlind&amp;gt; yeah it defaults to 1s so just leave it out by default&lt;br /&gt;
17:16 &amp;lt; tmlind&amp;gt; it will be some generic option eventually and not a module param&lt;br /&gt;
17:17 -!- z3ntu_ [z3ntumatri@gateway/shell/matrix.org/x-lnssiqwycssoqteb] has quit [Quit: Idle for 30+&lt;br /&gt;
          days]&lt;br /&gt;
17:18 &amp;lt; tmlind&amp;gt; not sure how much stuff i'll get done over next few months in general, but at some&lt;br /&gt;
                point i'm planning to continue on the droid4-agps tool..&lt;br /&gt;
17:19 &amp;lt; Wizzup&amp;gt; tmlind: what would that do?&lt;br /&gt;
17:19 &amp;lt; Wizzup&amp;gt; I figured agps could be done via with https://github.com/tajuma/supl&lt;br /&gt;
17:19 &amp;lt; Entitlement&amp;gt; Wizzup - [ GitHub - tajuma/supl ]&lt;br /&gt;
17:19 &amp;lt; Wizzup&amp;gt; s/via with/with this/&lt;br /&gt;
17:20 -!- peetah [~peetah@cha92-9-82-236-202-86.fbx.proxad.net] has joined #maemo-leste&lt;br /&gt;
17:22 &amp;lt; bencoh&amp;gt; (tested and more or less working on maemo5, btw)&lt;br /&gt;
17:22 &amp;lt; Wizzup&amp;gt; bencoh: just now?&lt;br /&gt;
17:22 &amp;lt; bencoh&amp;gt; no&lt;br /&gt;
17:22 &amp;lt; Wizzup&amp;gt; :)&lt;br /&gt;
17:23 &amp;lt; bencoh&amp;gt; I used it to proxify supl requests to google&lt;br /&gt;
17:23 &amp;lt; tmlind&amp;gt; Wizzup: hmm maybe not sure. in this case we need to download qcom provided up to date&lt;br /&gt;
                xtra2.bin file for the gnss, not sure if the older formats work at all for the gnss&lt;br /&gt;
17:25 &amp;lt; bencoh&amp;gt; tmlind: I'd tend to think you would need to keep gps &amp;quot;always on&amp;quot; before the first fix&lt;br /&gt;
17:25 &amp;lt; bencoh&amp;gt; otherwise you will never get enough information from satellites&lt;br /&gt;
17:25 &amp;lt; bencoh&amp;gt; (unless you have agps/supl, of course)&lt;br /&gt;
17:26 &amp;lt; Wizzup&amp;gt; tmlind: from what I can tell that tool just takes lac/mcc/mns and such (like we can&lt;br /&gt;
                get from ofono or from modem directly) and just calls to a SUPL service?&lt;br /&gt;
17:27 &amp;lt; bencoh&amp;gt; Wizzup: google would even return you a rough position with those&lt;br /&gt;
17:27 &amp;lt; tmlind&amp;gt; bencoh: yes it does that already automatically and won't start idling until the fix is&lt;br /&gt;
                done&lt;br /&gt;
17:27 &amp;lt; bencoh&amp;gt; tmlind: ah, I see&lt;br /&gt;
17:28 &amp;lt; tmlind&amp;gt; Wizzup: yeh i figured, not sure if the modem nvram settings for supl are working or&lt;br /&gt;
                not, i somehow have an impression they're only working for some older modems, could be&lt;br /&gt;
                wrong&lt;br /&gt;
17:28 &amp;lt; Wizzup&amp;gt; I don't know enough about AGPS clearly, but from what I currently understand, it's&lt;br /&gt;
                just a data connection to a server with some cell data&lt;br /&gt;
17:29 &amp;lt; Wizzup&amp;gt; so I am not sure what the modem would do specifically&lt;br /&gt;
17:29 &amp;lt; Wizzup&amp;gt; I suppose there are probably many &amp;quot;assisted&amp;quot; methods&lt;br /&gt;
17:29 &amp;lt; bencoh&amp;gt; Wizzup: you're supposed to receive orbital data / almanac&lt;br /&gt;
17:30 &amp;lt; Wizzup&amp;gt; ah&lt;br /&gt;
17:30 &amp;lt; bencoh&amp;gt; and feed it to the gps subsystem&lt;br /&gt;
17:30 &amp;lt; tmlind&amp;gt; yeah this xtra2.bin stuff is an almanac in some proprietary format for a week i think&lt;br /&gt;
17:30 &amp;lt; Wizzup&amp;gt; oh, right, to actually feed it&lt;br /&gt;
17:30 &amp;lt; Wizzup&amp;gt; I get it now.&lt;br /&gt;
17:30 &amp;lt; Wizzup&amp;gt; when I was searching for methods to tell gpsd about agps nothing turned out, explains&lt;br /&gt;
                it now&lt;br /&gt;
17:31 &amp;lt; Wizzup&amp;gt; s/turned out/turned up/&lt;br /&gt;
17:31 &amp;lt; bencoh&amp;gt; iiuc on n900, the modem itself manages the supl connection; the location daemon only&lt;br /&gt;
                acts as a proxy to provide it a tcp connection&lt;br /&gt;
17:31 &amp;lt; Wizzup&amp;gt; ok, yeah, so for the n900 we will have to RE some stuff&lt;br /&gt;
17:31 &amp;lt; bencoh&amp;gt; yeah&lt;br /&gt;
17:31 &amp;lt; tmlind&amp;gt; bencoh: afaik also mdm6600 nvram has something for supl server, not sure if it works&lt;br /&gt;
                though&lt;br /&gt;
17:32 &amp;lt; tmlind&amp;gt; bencoh: if you want to try it, you can tweak the nvram values with tcmdrw on&lt;br /&gt;
                github.com/tmlind&lt;br /&gt;
17:32 &amp;lt; bencoh&amp;gt; tmlind: meaning implementing/RE-ing such a proxy would make sense for both platforms&lt;br /&gt;
17:33 &amp;lt; tmlind&amp;gt; bencoh: hmm proxy running where? on the device?&lt;br /&gt;
17:33 &amp;lt; bencoh&amp;gt; on n900/maemo5, yeah&lt;br /&gt;
17:33 &amp;lt; bencoh&amp;gt; iirc it is location-proxy (forked on demand I think)&lt;br /&gt;
17:33 &amp;lt; tmlind&amp;gt; well i think the modem uses the supl server directly probably based on some&lt;br /&gt;
                requirements from the ministry of silly walks&lt;br /&gt;
17:34 &amp;lt; Wizzup&amp;gt; bencoh: there is location-proxy and location-daemon btw&lt;br /&gt;
17:34 &amp;lt; bencoh&amp;gt; it does; the &amp;quot;proxy&amp;quot; only provides the modem with a mean to open a tcp socket and&lt;br /&gt;
                read/write to it&lt;br /&gt;
17:34 &amp;lt; bencoh&amp;gt; Wizzup: indeed&lt;br /&gt;
17:34 &amp;lt; Wizzup&amp;gt; if you have more info please share :)&lt;br /&gt;
17:34 &amp;lt; Wizzup&amp;gt; I can RE some stuff, but want to RE the right things only&lt;br /&gt;
17:35 &amp;lt; bencoh&amp;gt; I haven't toyed with those for quite some time, but lemme see&lt;br /&gt;
17:35 &amp;lt; tmlind&amp;gt; well the thing to try with droid4 mdm6600 would be to configure supl server in nvram,&lt;br /&gt;
                start modem data connection, then gps and see how fast it gets a fix&lt;br /&gt;
17:38 &amp;lt; tmlind&amp;gt; i'd try clearing openpst NV_AAGPS_XTRA_ENABLED_I value to try to disable xtra2.bin&lt;br /&gt;
                use, then try to configure whatever nvram values there might be for a supl server,&lt;br /&gt;
                sorry no idea what those entries might be but i see the dumps contain some url in hex&lt;br /&gt;
                format&lt;br /&gt;
17:40 &amp;lt; bencoh&amp;gt; Wizzup: see /usr/lib/liblas.so.0.0.0&lt;br /&gt;
17:41 &amp;lt; bencoh&amp;gt; especially the las_socket_*&lt;br /&gt;
17:41 &amp;lt; bencoh&amp;gt; location-proxy refers to those&lt;br /&gt;
17:42 &amp;lt; Wizzup&amp;gt; hm 32K&lt;br /&gt;
17:42 &amp;lt; Wizzup&amp;gt; this is likely all n900 specific though right?&lt;br /&gt;
17:42 &amp;lt; bencoh&amp;gt; Wizzup: http://pastebin.notk.org/pastebin.php?show=f7f7b371d&lt;br /&gt;
17:42 &amp;lt; Entitlement&amp;gt; bencoh - [ pastebin private pastebin - collaborative debugging tool ]&lt;br /&gt;
17:42 &amp;lt; bencoh&amp;gt; most likely n900-specific yeah&lt;br /&gt;
17:42 &amp;lt; tmlind&amp;gt; hmm so a quick search for the NV_AAGPS_XTRA_ENABLED_I points to some earlier pastebin&lt;br /&gt;
                page at https://pastebin.com/dyfsUcHc, maybe try configuring those and disable xtra&lt;br /&gt;
                stuff?&lt;br /&gt;
17:42 &amp;lt; Entitlement&amp;gt; tmlind - [ QPST 378 NV Items that are in i535 but NOT in i535 dev ed -&lt;br /&gt;
                     Pastebin.com ]&lt;br /&gt;
17:43 &amp;lt; bencoh&amp;gt; tmlind: I don't think supl server address would go into nvram&lt;br /&gt;
17:43 &amp;lt; Wizzup&amp;gt; bencoh: ah, so you're suggesting we make some generic &amp;quot;how to write supl data to a&lt;br /&gt;
                modem&amp;quot; lib?&lt;br /&gt;
17:43 &amp;lt; bencoh&amp;gt; tmlind: well, unless it has a mean to actually ask for a specific supl server from the&lt;br /&gt;
                AP processor&lt;br /&gt;
17:43 &amp;lt; tmlind&amp;gt; bencoh: i'm pretty sure the uri goes to nvram, see NV_CGPS_UMTS_PDE_SERVER_ADDR_URL_I&lt;br /&gt;
                in the link above&lt;br /&gt;
17:43 &amp;lt; bencoh&amp;gt; oh&lt;br /&gt;
17:44 &amp;lt; bencoh&amp;gt; well, on n900/maemo5, the host gets to decide on that&lt;br /&gt;
17:44 &amp;lt; tmlind&amp;gt; ok&lt;br /&gt;
17:45 &amp;lt; bencoh&amp;gt; Wizzup: I guess we would want a &amp;quot;generic&amp;quot; glue lib with support for various (two?)&lt;br /&gt;
                platforms&lt;br /&gt;
17:45 &amp;lt; tmlind&amp;gt; bencoh: there seems to be a bunch PDE related nvram entries, see libopenpst dm_nv.h&lt;br /&gt;
                file&lt;br /&gt;
17:46 &amp;lt; bencoh&amp;gt; right&lt;br /&gt;
17:47 &amp;lt; bencoh&amp;gt; Actually I wonder if the supl connection would need to go through the host cpu at all&lt;br /&gt;
                on the mdm6600&lt;br /&gt;
17:47 &amp;lt; tmlind&amp;gt; bencoh: no afaik it can't&lt;br /&gt;
17:48 &amp;lt; bencoh&amp;gt; it might try and use the gprs/umts data channels&lt;br /&gt;
17:48 &amp;lt; tmlind&amp;gt; i think it has to&lt;br /&gt;
17:48 &amp;lt; bencoh&amp;gt; without even bothering with the host&lt;br /&gt;
17:48 &amp;lt; tmlind&amp;gt; right&lt;br /&gt;
17:48 &amp;lt; bencoh&amp;gt; it's a completely different design then&lt;br /&gt;
17:48 &amp;lt; bencoh&amp;gt; meaning it should work automagically once we setup pde server properly&lt;br /&gt;
17:49 &amp;lt; tmlind&amp;gt; yeah it should hopefully unless it's working only in the xtra2.bin mode&lt;br /&gt;
17:49 &amp;lt; bencoh&amp;gt; and that it'll stop working forever once supl servers break support for it&lt;br /&gt;
17:49 &amp;lt; tmlind&amp;gt; bencoh: so i did also a tool for the xtra2.bin stuff but it's not complete, also on my&lt;br /&gt;
                github page droid4-agps or something like that&lt;br /&gt;
17:49 &amp;lt; bencoh&amp;gt; (unlike n900, where we managed to somehow get some kind of support using supl-proxy&lt;br /&gt;
                from tajuma)&lt;br /&gt;
17:50 &amp;lt; tmlind&amp;gt; bencoh: at least the supl stuff is a standard format, let's hope it works :)&lt;br /&gt;
17:51 &amp;lt; bencoh&amp;gt; it's &amp;quot;standard&amp;quot; until google decides some input fields become mandatory&lt;br /&gt;
17:51 &amp;lt; bencoh&amp;gt; but yeah&lt;br /&gt;
17:51 &amp;lt; tmlind&amp;gt; i think there are other supl servers available too, right?&lt;br /&gt;
17:51 &amp;lt; Wizzup&amp;gt; bencoh: there were other supl servers I think&lt;br /&gt;
17:51 &amp;lt; bencoh&amp;gt; (I think that's the reason supl.google.com doesn't work on n900 without any proxy)&lt;br /&gt;
17:51 &amp;lt; Wizzup&amp;gt; bencoh: oh?&lt;br /&gt;
17:51 &amp;lt; bencoh&amp;gt; well, it depends on your phone service provider&lt;br /&gt;
17:52 &amp;lt; bencoh&amp;gt; vodaphone has (had?) one for their customers, but it's not available from outside&lt;br /&gt;
                their network&lt;br /&gt;
17:52 &amp;lt; bencoh&amp;gt; nokia died&lt;br /&gt;
17:52 &amp;lt; bencoh&amp;gt; I think sony had one, but ...&lt;br /&gt;
17:53 &amp;lt; bencoh&amp;gt; we could also run one, but we'd need to write a fair bit of code for that&lt;br /&gt;
17:53 &amp;lt; Wizzup&amp;gt; didn't see any code for it so far&lt;br /&gt;
17:53 &amp;lt; Wizzup&amp;gt; (googling around)&lt;br /&gt;
17:54 &amp;lt; Wizzup&amp;gt; as in, for a supl server&lt;br /&gt;
17:54 &amp;lt; bencoh&amp;gt; Wizzup: https://github.com/fairwaves/RRLP-2.8&lt;br /&gt;
17:54 &amp;lt; Entitlement&amp;gt; bencoh - [ GitHub - fairwaves/RRLP-2.8: OpenBTS 2.8 RRLP server, Fairwaves&lt;br /&gt;
                     version ]&lt;br /&gt;
17:55 &amp;lt; bencoh&amp;gt; that's for the rrlp part&lt;br /&gt;
17:56 &amp;lt; bencoh&amp;gt; I don't remember whether they implemented the SUPL part, but if not, one would need to&lt;br /&gt;
                wrap the RRLP payload in SUPL packets&lt;br /&gt;
17:56 &amp;lt; tmlind&amp;gt; well just having a server proxying the supl data from various sources should do, sort&lt;br /&gt;
                of what ntpd does&lt;br /&gt;
17:57 &amp;lt; Wizzup&amp;gt; it would be nice to have a supl server one can just run, though&lt;br /&gt;
17:57 &amp;lt; tmlind&amp;gt; yup&lt;br /&gt;
17:57 &amp;lt; bencoh&amp;gt; tmlind: yup, that's exactly what we started doing on maemo5/n900&lt;br /&gt;
17:57 &amp;lt; Wizzup&amp;gt; all of this sounds like we will just do GPS with A-GPS first though ;)&lt;br /&gt;
17:57 &amp;lt; Wizzup&amp;gt; (for leste, to at least get the frameworks in place)&lt;br /&gt;
17:58 &amp;lt; bencoh&amp;gt; I ran a supl-proxy everytime I needed to get a gps fix&lt;br /&gt;
17:54 &amp;lt; bencoh&amp;gt; Wizzup: https://github.com/fairwaves/RRLP-2.8&lt;br /&gt;
17:54 &amp;lt; Entitlement&amp;gt; bencoh - [ GitHub - fairwaves/RRLP-2.8: OpenBTS 2.8 RRLP server, Fairwaves&lt;br /&gt;
                     version ]&lt;br /&gt;
17:55 &amp;lt; bencoh&amp;gt; that's for the rrlp part&lt;br /&gt;
17:56 &amp;lt; bencoh&amp;gt; I don't remember whether they implemented the SUPL part, but if not, one would need to&lt;br /&gt;
                wrap the RRLP payload in SUPL packets&lt;br /&gt;
17:56 &amp;lt; tmlind&amp;gt; well just having a server proxying the supl data from various sources should do, sort&lt;br /&gt;
                of what ntpd does&lt;br /&gt;
17:57 &amp;lt; Wizzup&amp;gt; it would be nice to have a supl server one can just run, though&lt;br /&gt;
17:57 &amp;lt; tmlind&amp;gt; yup&lt;br /&gt;
17:57 &amp;lt; bencoh&amp;gt; tmlind: yup, that's exactly what we started doing on maemo5/n900&lt;br /&gt;
17:57 &amp;lt; Wizzup&amp;gt; all of this sounds like we will just do GPS with A-GPS first though ;)&lt;br /&gt;
17:57 &amp;lt; Wizzup&amp;gt; (for leste, to at least get the frameworks in place)&lt;br /&gt;
17:58 &amp;lt; bencoh&amp;gt; I ran a supl-proxy everytime I needed to get a gps fix&lt;br /&gt;
17:58 &amp;lt; Wizzup&amp;gt; I should probably do it on fremantle too, didn't look at the proxying&lt;br /&gt;
17:58 &amp;lt; bencoh&amp;gt; (I think it stopped working at some point, but I haven't investigated it. It might be&lt;br /&gt;
                a cert issue)&lt;br /&gt;
17:58 &amp;lt; tmlind&amp;gt; well i meant running a proxying supl server on maemo.org picking data from various&lt;br /&gt;
                sources so devices would just point to the maemo supl server&lt;br /&gt;
17:58 &amp;lt; bencoh&amp;gt; Wizzup: Sicelo eventually wrote a howto https://wiki.maemo.org/N900_GPS_Proxy&lt;br /&gt;
17:58 &amp;lt; Entitlement&amp;gt; bencoh - [ N900 GPS Proxy - maemo.org wiki ]&lt;br /&gt;
17:59 &amp;lt; bencoh&amp;gt; tmlind: *nod*&lt;br /&gt;
17:59 &amp;lt; Wizzup&amp;gt; check&lt;br /&gt;
17:59 &amp;lt; Wizzup&amp;gt; tmlind: ah, right&lt;br /&gt;
17:59 &amp;lt; Wizzup&amp;gt; that's definitely a good stopgap at least&lt;br /&gt;
18:00 &amp;lt; bencoh&amp;gt; We almost have the code for that&lt;br /&gt;
18:00 &amp;lt; tmlind&amp;gt; yeah then adding supl data from some open source data feed could be just added&lt;br /&gt;
18:00 &amp;lt; bencoh&amp;gt; we just need to add multi-client support to supl-proxy&lt;br /&gt;
18:00 &amp;lt; tmlind&amp;gt; cool&lt;br /&gt;
18:01 &amp;lt; bencoh&amp;gt; err, except that supl-proxy will actually fetch data for every request&lt;br /&gt;
18:01 &amp;lt; tmlind&amp;gt; heh that probably creates a google maps traffic jam to where that server is hosted :)&lt;br /&gt;
18:01 &amp;lt; bencoh&amp;gt; :))&lt;br /&gt;
18:02 &amp;lt; tmlind&amp;gt; not sure if there are some legal aspects to consider there, not familiar with the supl&lt;br /&gt;
                stuff really&lt;br /&gt;
18:02 &amp;lt; bencoh&amp;gt; you need to supply a valid cell (mnc/lac/whatever) coordinate, and supl response is&lt;br /&gt;
                customized accordingly&lt;br /&gt;
18:02 &amp;lt; bencoh&amp;gt; afaict&lt;br /&gt;
18:02 &amp;lt; tmlind&amp;gt; huh why do you need mnc/lac?&lt;br /&gt;
18:03 &amp;lt; tmlind&amp;gt; to limit the data size?&lt;br /&gt;
18:03 &amp;lt; bencoh&amp;gt; I'm pretty certain you wouldn't need it in theory to get a full ephemeric/almanac dump&lt;br /&gt;
18:03 &amp;lt; tmlind&amp;gt; bbl&lt;br /&gt;
18:03 &amp;lt; bencoh&amp;gt; but iirc it's mandatory for supl.google.com&lt;br /&gt;
18:04 &amp;lt; bencoh&amp;gt; (I can see a pretty good reason for that, actually ... google loves knowing where you&lt;br /&gt;
                are)&lt;br /&gt;
18:06 &amp;lt; Wizzup&amp;gt; yeah&lt;br /&gt;
18:06 &amp;lt; Wizzup&amp;gt; from 3) A-GPS here , there seem to be only a few&lt;br /&gt;
                https://www.reddit.com/r/privacy/comments/cldrym/how_to_degoogle_lineageos_in_2019/&lt;br /&gt;
18:06 &amp;lt; Entitlement&amp;gt; Wizzup - [ How to deGoogle LineageOS in 2019 : privacy ]&lt;br /&gt;
18:06 &amp;lt; Wizzup&amp;gt; (providers that run a supl server)&lt;br /&gt;
18:12 &amp;lt; bencoh&amp;gt; wow, supl.sonyericsson.com actually works as well&lt;br /&gt;
18:13 &amp;lt; bencoh&amp;gt; and vodafone too. funny, last time I tried I couldn't use it&lt;br /&gt;
18:17 &amp;lt; tmlind&amp;gt; cool, anyways multiple source for the proxying supl server would be best, sort of like&lt;br /&gt;
                with nptd&lt;br /&gt;
18:17  * bencoh nods&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1769</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=1769"/>
		<updated>2025-06-29T20:01:20Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: migrate links to git.maemo.org&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;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=5.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'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'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'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 ('Speaker Right' set to 'HiFi' and 'HiFi' 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>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_Bionic&amp;diff=1768</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=1768"/>
		<updated>2025-06-29T19:59:18Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: migrate links to git.maemo.org&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;
|lcd=960x540 4.3&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, Kionix KXTf9 accelerometer, St L3GD20H Gyro, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=5.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'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'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's how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Old status table ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.10.4 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| USB slave || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| USB host (OTG) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Switch around in alsamixer to get the right outputs working ('Speaker Right' set to 'HiFi' and 'HiFi' set to above 0 gets you output)&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Untested&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Wifi || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| IrDA || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Due to interference with WiFi, load driver manually, AFTER wifi module loaded&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Nfc || No || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || No || needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| AGPS || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Front Camera || No || &lt;br /&gt;
|-&lt;br /&gt;
| Back Camera(s) || No || &lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~70 mW || Needs sim inserted&lt;br /&gt;
|-&lt;br /&gt;
| Idle Battery life on new battery || 91.8 h || With HW4X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Tasks&amp;diff=1767</id>
		<title>Development/Tasks</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Tasks&amp;diff=1767"/>
		<updated>2025-06-29T19:58:31Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: migrate links to git.maemo.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applications ==&lt;br /&gt;
&lt;br /&gt;
This page lists some of the more important open issues for Maemo Leste. We have a complete list here, on github, but it's a bit hard to navigate: https://git.maemo.org/leste/bugtracker/issues&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task&lt;br /&gt;
! Description&lt;br /&gt;
! Task Status&lt;br /&gt;
! User(s) working on task&lt;br /&gt;
! GH Bug&lt;br /&gt;
! URLs&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| Gtk3 port of theme and hildon widgets || Big task, port hildon widgets and theme from gtk2 to gtk3. &amp;lt;b&amp;gt;Funding is available for this task&amp;lt;/b&amp;gt; || WIP || || https://git.maemo.org/leste/bugtracker/issues/261 || || Parayzd was working on this&lt;br /&gt;
|-&lt;br /&gt;
| Qt5 of theme and hildon widgets || Significant task || MOSTLY || [[User:freemangordon]] made a start, [[User:Wizzup]] picked up some of the work  ||  || https://git.maemo.org/leste/qtstyleplugins/ + https://git.maemo.org/leste/qt-platform-maemo/tree/qmenu || Mainly usable already!&lt;br /&gt;
|-&lt;br /&gt;
| libicd-network-ofono should set up ipv4 upon connect || Required to get usable cellular data. Provisioning is done, but the actual link itself is not yet set up. Once we have this, we should have usable cellular data on all devices with a supported modem. || DONE ||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| Extend ofono droid4 modem support  || This is done and should be stable. || DONE || Tony, Pavel, [[User:freemangordon]] and [[User:Wizzup]] are working on this ||  || https://github.com/pavelmachek/ofono/commits/d4-v1.29  ||&lt;br /&gt;
|-&lt;br /&gt;
| Finish connui-cellular port to ofono  || Porting of connui libraries, status and home applets, settings applets and pincode applets to ofono || WIP || [[User:Wizzup]] || https://git.maemo.org/leste/bugtracker/issues/256 || https://git.maemo.org/leste/connui-cellular  ||&lt;br /&gt;
|-&lt;br /&gt;
| Test phone calls on the N900  || Figure out cmtspeechdata magic || WORKS || [[User:Wizzup]], [[User:Sicelo]], Pavel ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Create simple phone UI to test dialing/accepting phone calls using Telepathy || Can use sphone, which works for calls right now, just not using Telepathy. || WORKS || ? ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;hildonize&amp;quot; surf2 or create a simple &amp;quot;hildonized&amp;quot; webkit browser || See &amp;quot;Jib&amp;quot; || DONE || [[User:Wizzup]], dsc ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Look at N900 power saving || We do not hit omap off modes nearly as much as we should (in fact, we never do), this should be looked at || WIP || [[User:Wizzup]], tmlind ||  ||  || Actually works quite well on the droid4. Let's do the same for Droid4. :) &lt;br /&gt;
|-&lt;br /&gt;
| osso-abook || We need osso-abook in place for all applications that need contacts (phone ui, sms ui, email ui, more) || DONE || [[User:freemangordon]] ||  ||https://git.maemo.org/leste/osso-abook  || Making good progress&lt;br /&gt;
|-&lt;br /&gt;
| Port all packages for maemo-leste to debhelper 9 or higher || Requires for us to migrate to a newer Debian (Buster) / Devuan (Beowulf) || DONE || [[User:Parazyd]], [[User:Wizzup]], [[User:meridion]], [[User:Spinal84]] || https://git.maemo.org/leste/bugtracker/issues/234 ||  || &lt;br /&gt;
|-&lt;br /&gt;
| Monitor keyboard slide and attached state || Required on devices with a keyboard like [[Nokia_N900]] and [[Motorola_Droid_4]] to show specific parts of the virtual keyboard, or rotate || DONE || [[User:ThomasAH]], Spinal84 || https://git.maemo.org/leste/ke-recv/pull/2 ; https://git.maemo.org/leste/bugtracker/issues/17#issuecomment-528497018 || ke-recv part for slide monitoring is in place, we just need live keyboard-attached monitoring now. https://git.maemo.org/leste/mce/blob/master/event-input.c#L474 https://git.maemo.org/leste/ke-recv-extra/blob/master/src/input-device.c || mce has quite some usable code for this already, resulting code should probably go into ke-recv-extra (aka hulda). mer-core (sailfish/nemomobile) has keyboard monitoring integrated into mce, so we could also look at (using) that&lt;br /&gt;
|-&lt;br /&gt;
| Forward-port clutter patches from Nokia N900 clutter 0.8 to libclutter1.0 ? || *MAYBE* Required on devices with a PowerVR GPU like [[Nokia_N900]] and [[Motorola_Droid_4]] for hildon-desktop to work. In particular important for Droid 4 to get accelerated hildon-desktop || DONE (by staying at clutter 0.8) ||  || || https://github.com/spinal84/clutter-0.8/tree/blit/debian/patches   ||  &lt;br /&gt;
|-&lt;br /&gt;
| Set up leste &amp;quot;extras&amp;quot; repository  || A repository with non-core applications, games, etc would be very welcome || DONE || [[User:Wizzup]], [[User:Parazyd]] ||  || https://git.maemo.org/leste-extras ; https://maemo.org/downloads/score/Maemo5/25/   ||&lt;br /&gt;
|-&lt;br /&gt;
| hildon-application-manager usable || We currently have HAM packaged, but it needs fixes for various compile issues we hacked around, cssu-specific parts need to be removed, and we need to figure out what we need to do for our repositories to make it work well || DONE || [[User:minicom]], [[User:Wizzup]], [[User:Parazyd]] ||  ||  || Goal is to have a usable app manager, so let's just use it, fix it, use it, etc.&lt;br /&gt;
|-&lt;br /&gt;
| Fix virtual keyboard rendering || On a screen that is not the same of the N900 (800x480), the virtual keyboard doesn't look very pretty. Lets just make it work on any display size || DONE ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| Fix remaining hildon-desktop portait mode issues || The application launcher results in a black screen, and osso-xterm in portait mode is also resulting in a black screen || DONE || [[User:freemangordon]] ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| Test phone calls on the droid4  || Phone calls should work, with audio, when alsamixer is set up properly, let's test it! || DONE || [[User:Wizzup]], [[User:Sicelo]] ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1766</id>
		<title>Development/Porting Packages</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Porting_Packages&amp;diff=1766"/>
		<updated>2025-06-29T19:52:59Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: migrate links to git.maemo.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Porting / Creating packages =&lt;br /&gt;
&lt;br /&gt;
If you're looking at creating your own package, or porting software, the first things to do are:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Check if there already are Debian packaging scripts/files. Debian packages a LOT of software, so it's likely that the software is already in the Maemo repository, or someone at least has build scripts for it.&lt;br /&gt;
# (TODO)&lt;br /&gt;
&lt;br /&gt;
= Porting existing Maemo Fremantle packages =&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle (&amp;quot;Nokia Maemo for the N900&amp;quot;) contains a lot of packages that are open source. Most of them should run with very few changes on Maemo Leste, the main changes you will need to make will be:&lt;br /&gt;
&lt;br /&gt;
# Check if someone already ported the package (if it in the repository? Is there an issue for it?)&lt;br /&gt;
# Updating of the Debian packaging files/scripts.&lt;br /&gt;
# Porting to newer libraries if old libraries are used (OpenSSL 0.9.8 -&amp;gt; OpenSSL 1.1.x, Qt4 -&amp;gt; Qt5, etc)&lt;br /&gt;
# Fixing any compile errors/warnings due to more strict compile flags&lt;br /&gt;
&lt;br /&gt;
Source of the packages can be found at one of these places:&lt;br /&gt;
&lt;br /&gt;
* http://maemo.org/packages/&lt;br /&gt;
* https://garage.maemo.org/&lt;br /&gt;
* http://repository.maemo.org/extras/pool/fremantle/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.2/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.3/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-devel/pool/fremantle-1.2/free/source/&lt;br /&gt;
* http://repository.maemo.org/extras-testing/pool/fremantle-1.3/free/source/&lt;br /&gt;
&lt;br /&gt;
= Example =&lt;br /&gt;
&lt;br /&gt;
== Getting the source package ==&lt;br /&gt;
Let's say we'd like to port a package &amp;quot;msid&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
it's here: &amp;lt;pre&amp;gt;http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
get the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://repository.maemo.org/extras/pool/fremantle/free/source/m/msid/msid_0.4.8-2.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar zxvf msid_0.4.8-2.tar.gz&lt;br /&gt;
cd msid-0.4.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating new repo ==&lt;br /&gt;
&lt;br /&gt;
init a git repo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
git add *&lt;br /&gt;
git commit -a -m &amp;quot;initial commit from fremantle sources&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
change content of `debian/compat` to `9`.&lt;br /&gt;
&lt;br /&gt;
edit &amp;lt;pre&amp;gt;debian/changelog&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
let's say the last release was:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
now the release should be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
msid (0.4.8-2+leste1) unstable; urgency=low&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
record your changes, add your name.&lt;br /&gt;
&lt;br /&gt;
look if &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; dependency versions should be changed.&lt;br /&gt;
&lt;br /&gt;
== installing build dependencies==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt build-dep .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== building ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-buildpackage -b -uc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
add &amp;lt;pre&amp;gt;gbp.conf&amp;lt;/pre&amp;gt; file in &amp;lt;pre&amp;gt;debian&amp;lt;/pre&amp;gt; directory with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; file add (if not added)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XSBC-Bugtracker: mailto:yourname@yourserver.am&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== icon ==&lt;br /&gt;
and the icon (this is not necessary if you port existing maemo5 package).&lt;br /&gt;
&lt;br /&gt;
it is done [http://wiki.maemo.org/Maemo_packaging#Displaying_an_icon_in_the_Application_Manager_next_to_your_package this] way.&lt;br /&gt;
&lt;br /&gt;
you need to have `optipng` installed. (media-gfx/optipng in gentoo).&lt;br /&gt;
&lt;br /&gt;
* prepare a `48x48` png file.&lt;br /&gt;
&lt;br /&gt;
* optimize it: &amp;lt;pre&amp;gt;optipng -strip all&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* base64 encode it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m maeFat.png maeFat.png &amp;gt; maeFat.png.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add the field &amp;lt;pre&amp;gt;XB-Maemo-Icon-26&amp;lt;/pre&amp;gt; to your &amp;lt;pre&amp;gt;debian/control&amp;lt;/pre&amp;gt; (in Maemo 4 the size of the icons was 26×26 pixels, hence the name of the field, which has not changed in Maemo 5)&lt;br /&gt;
&lt;br /&gt;
* Open the &amp;lt;pre&amp;gt;base64&amp;lt;/pre&amp;gt; version of your image and copy from the line under &amp;lt;pre&amp;gt;begin-base64 644 &amp;lt;name of 48×48 image&amp;gt;&amp;lt;/pre&amp;gt; to the line above the &amp;lt;pre&amp;gt;===&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Add this to the XB-Maemo-Icon-26 field&lt;br /&gt;
&lt;br /&gt;
* Add a space in front of every line of the encoded icon. You can do that automatically using sed when you base64 encode the image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uuencode -m &amp;lt;name of 48×48 image&amp;gt; &amp;lt;name of 48×48 image&amp;gt; | sed -e s,^,\ ,  &amp;gt; &amp;lt;name of 48×48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== cli apps ==&lt;br /&gt;
if the program that is being ported is a &amp;lt;code&amp;gt;cli&amp;lt;/code&amp;gt; application, then &amp;lt;code&amp;gt;cli icon&amp;lt;/code&amp;gt; can be used.&lt;br /&gt;
&lt;br /&gt;
[http://lists.maemo.org/pipermail/maemo-community/2010-January/003870.html cli icon announcement]&lt;br /&gt;
&lt;br /&gt;
[http://n900.tannerlab.com/tools/cli.icon.txt old unexistent in archive.org too, txt file]&lt;br /&gt;
&lt;br /&gt;
[http://samoff.com/random/maemo/cli_icon/ icons as images]&lt;br /&gt;
&lt;br /&gt;
this is how the icon looks in &amp;lt;code&amp;gt;ham&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-cli_icon_appman_sample_v002.png]]&lt;br /&gt;
&lt;br /&gt;
and this is the &amp;lt;code&amp;gt;48x48&amp;lt;/code&amp;gt; size icon:&lt;br /&gt;
&lt;br /&gt;
[[File:Maemo-term_icon_v002_a001_48p.png]]&lt;br /&gt;
&lt;br /&gt;
its &amp;lt;code&amp;gt;base64&amp;lt;/code&amp;gt; encoded and shifted for &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;text file&amp;lt;/code&amp;gt; is [http://norayr.am/tips/port_maemo_package_to_leste/maemo-term_icon_v002_a001_48p.png.base64 here]&lt;br /&gt;
&lt;br /&gt;
or here:&lt;br /&gt;
&amp;lt;pre&amp;gt; begin-base64 644 maemo-term_icon_v002_a001_48p.png&lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0&lt;br /&gt;
 d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACYtJREFUeNrUWkurZUcVXvXY&lt;br /&gt;
 59zbtyXpICEiaFrJQFDo6CDOHAi2UQdOFBw4CAqCDhU0DuIPEBtCRupIBxk4&lt;br /&gt;
 MBMHgpIMnChE1OAD2uADEkFpUM9z710vv7Wq6ty6u09f0+nb3Tcb6u7Hqb33&lt;br /&gt;
 96361qq1al/1vscfp+Ac3fjH6+S9v3owP/iYMfqyMaabz2ax62wwtnPDOPgY&lt;br /&gt;
 ok8pxpQoKKW9UhRC8IFI+UQ4ds7HFKLW1mujffDexRi9MXiGMQG34uborbEO&lt;br /&gt;
 515pckopZ7RxuN8RyflgtBrxfKeNGlNMY0ppxItGUnowSm3Rr7ezubfdnCwe&lt;br /&gt;
 SuMw2EsPPvi9x957+SlrNAXvCCTIWkMKvQP6JEYdorQoG6gkUIpo+SgkStyV&lt;br /&gt;
 SQb0RwOolACOQdBIlAaQ7XGtT4q2lGhDDCjRGsZYg8Qa71sR75WSPe5Z411o&lt;br /&gt;
 doPfN1rrDs/q8MaVVt5Z5T1dnM++8sEPXHnqXzduxOuv/iVutlsGKeCxJbyE&lt;br /&gt;
 jxN2uJc3FfkcJzHviBlG5sq/kUq8D4qvyzWKpQ/fzn94H/Mzub88L0hfJc/w&lt;br /&gt;
 OPc8Ijh3is8xUhqIMZr+woULscMwRmjCwoDdY+959xcXiwX9/KVfRAyV0gYD&lt;br /&gt;
 xTBVeY2mjJuvAR3+aMrgjPRQKtVzrRSDwE1Kl1uEuBADKCX34g5VzKLk/ihk&lt;br /&gt;
 lQBl8CKt3IQA5MMEICttPIY5XDw6glSVspv15tGLRxcu/+rl3/D4q9lsJtjl&lt;br /&gt;
 1WyTA7TxBKRYfjZEO2IMTufRosxdVcoCPvEIQTaBrYlLjuWFH0Z0Y433LC3Y&lt;br /&gt;
 occ5a3ybz7EvmjdaD9IfvudG57d6G4E12fmse+d6tT76z38XcC6TwcOdEtvj&lt;br /&gt;
 EGL7jif/fU3x1yaDmWejNuCpEI4ilZT3AFPAwifgA9gPuGMIFAESfqDUBpw2&lt;br /&gt;
 inWuVNY+6z4l7NkX1ApWgI/QlvuD/qDZoWMEeRskaODBlmJ4oB9HGoYxycCy&lt;br /&gt;
 1R9OavYtT92nweIRotnn4ZkvBhqfRvc/oM8MUJIQqC00zeemWL/FutRnq8Jp&lt;br /&gt;
 uam0BtA1yC5x8xLHS7xa9sREEjsy+ogTg4CiASQGpZVDjBMJcTDEEajEeDSM&lt;br /&gt;
 DjxCHm/s5s96mn0W0ekF3PZ2eSR1n0qk3+/U5koXaQU9G6q6nwCXcMgWF/CF&lt;br /&gt;
 QAVfQHGESSsmQHTcUiYi0QfH6K8YfF8iGEASnBjagPGgp4SoTdra7tAhEnFc&lt;br /&gt;
 ZIdVhxD3h3GI1/afgcV/B/pfsnG4plP8pU7q0s76twTPsbyAL3quwKUJUIBa&lt;br /&gt;
 4HiBvrLHNd6DFI9MqpbvAWsANifPR2iGUnA6JDiwRAcLz547FwQThihxpE5/&lt;br /&gt;
 Bol3YSS+G0g/iuuPQLxftUHEb9HRngDvmv0O/EQ2FfyqtTg3oBGrcyvgNzje&lt;br /&gt;
 8nMYKT8XGANvmGhzGG68DzIKc4fJNAmDHC+Gr1kKf1Q0/0Kk7qOJDl/y+vAn&lt;br /&gt;
 mDyfwOj5E1av4MVJG/CnAW8tn7XfWL6A7xvwwO134GmycUye8+y6+9FCG7/V&lt;br /&gt;
 kbW+eRJzxcsYlb+q1H0yqQs/852+Ehm2b2QzNpavkmkJTMHv9F4IrCqBBvzY&lt;br /&gt;
 gOe5aS94IYDOMw7R0oH/HqRkPhJJfyiS+yl+/j3i2FXr+meQ+7wN/J5MWlKE&lt;br /&gt;
 4xFgy/eNbE61fNF7Bc9EBDzA7sDnWRfx3rlTwYu9Met2nNmIvj1m0YeSPXzR&lt;br /&gt;
 6fRPIHiii3LrDO49pzyNDSecdtij+XUhsdqneb7GwIvmN9wYPPb8nLHMwCyZ&lt;br /&gt;
 WHCdull0xghIHgPBk0l/V3H8tlHzrwd9dN1ZhmA/Hg/0OyD26xTdj2Eplo1T&lt;br /&gt;
 rNFW8xm8Bngrx8tCYNGCLwR2Dgvw/RQ8W/6NgBcCmH2ZgJd8RkmESeM3kW+8&lt;br /&gt;
 orS9GpX9RNTxFRXG57RzP9Tr9Lra6IcxIg8kg/s4XYXXgHqNSivI6QZAqx34&lt;br /&gt;
 VRvjJ5bvS7gdVc6Dbgt8HgEE1JRvyK2kYP55ONDzOsyv+QN3zazia5KbsIV6&lt;br /&gt;
 +zn/UPflcKmZiVPJg8i9oF8dv2H/pDqRUXXYKhukxVFi/EQ2bwq8EAB4Sfkl&lt;br /&gt;
 rc0kJLNRs2zR8Rm7gKs6nDN4KS7cD8xr/kf6b6mJOJK3ECzb078xV6xvBb5G&lt;br /&gt;
 GgbPDssZprxn5Een2wIvBJgxW6CkxabMEqk4aYBrSk7DecjOWVe0TQu1Po44&lt;br /&gt;
 kAVxZEFMZ+mYYwKtbJhkBY/mKni2fDoxPd0mAS73mqSspgmZgJYYz+YZdpGG&lt;br /&gt;
 HVW3sT6tbxE6V8XyN4Fnh71T8DmMah13TpzTYt0QqOBrmGzj/KbG8X2hskab&lt;br /&gt;
 Ap5lw5rnRGbkephLzjsFn30AD2IHypUThJJ9IRTnOmn5mg4XSxfwiwJ20ZCR&lt;br /&gt;
 jHKqebZ8BQ/Nx9MmqDdMQAoOPLg+rJRSgXaVEg3T3KZoejVNhat8JrKpSRk7&lt;br /&gt;
 rMxObPmzAL8jUPKZpgTMs+wey68ay7fpwLLR/qa1fMlr7gr4EwSK5WNOV2VE&lt;br /&gt;
 hgJ6O3HQ3ew6Ab8rRKrm26SMl18APp0l+ErAFZ2rov3YyGczyWv2WX65J5c/&lt;br /&gt;
 kVEiIYu3SofvmECxds/1sKQGx/l967DLKfg9hQjLpm9yeV/Ah7sFvh2BPvuv&lt;br /&gt;
 LJz4Rj7VYZdTy59SRY37qii6S5tNOaPcFgkxCY5KbMl1ydX3hsry+02yKRnl&lt;br /&gt;
 /y1Ezm4EkqzZMAj2Xl0WWLcFaAt+57CTdJjJD/cDfK0HhryEsdvGMiInnHYP&lt;br /&gt;
 +Dq79jU1aMBHukebLbPkuoTRVB24AbwsSx7rPYVIXzPKJh1OdA83Wxx4nYNQ&lt;br /&gt;
 DqGs7zJhtaFyva+KmoCPdI83duKq91iW0nn9vs0qV00hcqsSMNxry7cFzaaA&lt;br /&gt;
 5HqA1/T71KyiVctPqig3qV/vC/hcD2QJLWsWWvKfOgKbAn5qeV+qqPhmqqiz&lt;br /&gt;
 deJs8WVd6yyzabU6E7jJ8qUQSfcbfIlCPOuqKiH+gtKu72wby0sJWAqRcwH+&lt;br /&gt;
 mECCD+yqMLVbpGoKEUmHzxv4UlIalEZhjVosmKT5i2OtA1rLn2kVdbYE+IOS&lt;br /&gt;
 0uyknEp7HfUYVeQlQ65fRTZ3oxA5w2xUeaNpw18tEf99UFHWf/iLSLH8uQVf&lt;br /&gt;
 RyBARltrDaaEEPhbbI408jURmh/TeQWf10ZtF9iRu86mAAImSi4WeLklr5ad&lt;br /&gt;
 X/BCoOsMf/cdZ11HKJ/4HwdiMHyg0/2cYW8nG+X1IDefzxUI8P9ySP2KITj3&lt;br /&gt;
 4PMnpqT4ozZrP3bWxq7rUlmle0tsVv6xgWkg/Bg7IxPr/2K8Nbb/CTAAF12f&lt;br /&gt;
 5l7y6xMAAAAASUVORK5CYII=&lt;br /&gt;
 ====&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also add the field:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;XSBC-Maemo-Display-Name: Photo light meter&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== pushing to maemo-leste-extras ==&lt;br /&gt;
go to [https://git.maemo.org/leste-extras/ maemo-leste-extras] and [https://git.maemo.org/leste-extras/bugtracker/issues/ open an issue] in the [https://git.maemo.org/leste-extras/bugtracker extras bugtracker] repo to request a repository.&lt;br /&gt;
&lt;br /&gt;
ping &amp;lt;code&amp;gt;Wizzup&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;#maemo-leste@irc.libera.chat&amp;lt;/code&amp;gt; to open you repo[s]. then try to be attentive to emails, because you may get an invite which you need to accept, otherwise it’ll time out(not sure when).&lt;br /&gt;
&lt;br /&gt;
push your code to the newly opened repo in &amp;lt;code&amp;gt;maemo/beowulf&amp;lt;/code&amp;gt; branch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;beowulf&amp;lt;/code&amp;gt; is the codename of the &amp;lt;code&amp;gt;devuan&amp;lt;/code&amp;gt; release on which &amp;lt;code&amp;gt;maemo&amp;lt;/code&amp;gt; is based.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$ git remote -v&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git remote add maemo git@git.maemo.org:leste-extras/msid&lt;br /&gt;
&lt;br /&gt;
$ git remote -v&lt;br /&gt;
maemo   git@git.maemo.org:leste-extras/msid (fetch)&lt;br /&gt;
maemo   git@git.maemo.org:leste-extras/msid (push)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (fetch)&lt;br /&gt;
origin  git@github.com:norayr/msid.git (push)&lt;br /&gt;
&lt;br /&gt;
$ git push maemo main&lt;br /&gt;
Enumerating objects: 176, done.&lt;br /&gt;
Counting objects: 100% (176/176), done.&lt;br /&gt;
Delta compression using up to 4 threads&lt;br /&gt;
Compressing objects: 100% (86/86), done.&lt;br /&gt;
Writing objects: 100% (176/176), 578.92 KiB | 4.71 MiB/s, done.&lt;br /&gt;
Total 176 (delta 105), reused 141 (delta 85)&lt;br /&gt;
remote: Resolving deltas: 100% (105/105), done.&lt;br /&gt;
To git.maemo.org:leste-extras/msid&lt;br /&gt;
 * [new branch]      main -&amp;amp;gt; main&lt;br /&gt;
&lt;br /&gt;
$ git checkout -b maemo/beowulf&lt;br /&gt;
Switched to a new branch 'maemo/beowulf'&lt;br /&gt;
&lt;br /&gt;
$ git push maemo maemo/beowulf&lt;br /&gt;
Total 0 (delta 0), reused 0 (delta 0)&lt;br /&gt;
remote:&lt;br /&gt;
remote: Create a pull request for 'maemo/beowulf' by visiting:&lt;br /&gt;
remote:      https://git.maemo.org/leste-extras/msid/pull/new/maemo/beowulf&lt;br /&gt;
remote:&lt;br /&gt;
To git.maemo.org:leste-extras/msid&lt;br /&gt;
 * [new branch]      maemo/beowulf -&amp;amp;gt; maemo/beowulf&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the repo needs to be tagged.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
and then the tag has to be pushed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git push maemo 0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
in case you did some changes but don’t want to bump a tag/changelog version, you need to delete the tag locally:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;git tag -d 0.0.1&lt;br /&gt;
git push maemo :refs/tags/0.0.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== phoenix ==&lt;br /&gt;
login https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
the build sequence is:&lt;br /&gt;
&lt;br /&gt;
* source&lt;br /&gt;
* binaries&lt;br /&gt;
* repos&lt;br /&gt;
&lt;br /&gt;
find your project. let’s say https://phoenix.maemo.org/job/msid-source/&lt;br /&gt;
&lt;br /&gt;
it has to have ‘build with parameters’ button on the left.&lt;br /&gt;
&lt;br /&gt;
if everything is right it’ll trigger build of binaries https://phoenix.maemo.org/job/msid-binaries/&lt;br /&gt;
&lt;br /&gt;
that link, for instance, will contain &amp;lt;code&amp;gt;arm64&amp;lt;/code&amp;gt; build console output: https://phoenix.maemo.org/job/msid-binaries/architecture=arm64,label=arm64/1/console&lt;br /&gt;
&lt;br /&gt;
== wiki ==&lt;br /&gt;
add a wiki page about the package [https://leste.maemo.org/Category:Extras here].&lt;br /&gt;
&lt;br /&gt;
links:&lt;br /&gt;
&lt;br /&gt;
https://leste.maemo.org/Development https://leste.maemo.org/Development/Porting_Packages https://leste.maemo.org/Development/Building_Packages https://leste.maemo.org/Development/Modified_Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you import a package, please try to preserve history if possible (converting from svn -&amp;gt; git is not too hard)&lt;br /&gt;
&lt;br /&gt;
= Forking Debian/Devuan packages =&lt;br /&gt;
&lt;br /&gt;
(TODO - Describe what branches need to be set up, Jenkins integration, etc)&lt;br /&gt;
&lt;br /&gt;
= Preparing package for the repositories =&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Development/Building_Packages&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Main_Page&amp;diff=1765</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Main_Page&amp;diff=1765"/>
		<updated>2025-06-29T16:21:08Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: focus on our Git instance&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, Allwinner Tablets and more.&lt;br /&gt;
&lt;br /&gt;
You can find us on '''irc.libera.chat''', channel '''#maemo-leste''', you can [[IRC channel|use Matrix]] 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 Chimaera (Debian Chimaera) 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]] 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://phoenix.maemo.org/view/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 '''IRC''' ('''irc.libera.chat''' in '''#maemo-leste''') 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 Github: [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 Github: [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://github.com/maemo-leste/mpi https://github.com/maemo-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 feed: [https://maemo-leste.github.io/feeds/all.atom.xml https://maemo-leste.github.io/feeds/all.atom.xml]&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>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1728</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1728"/>
		<updated>2025-03-08T18:48:14Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: corrections wrt. fuel gauge&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.6&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;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card.&lt;br /&gt;
&lt;br /&gt;
If using a Windows machine, you can use [https://etcher.io/ Etcher]&lt;br /&gt;
&lt;br /&gt;
See the next section on how to boot. (using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613)&lt;br /&gt;
&lt;br /&gt;
=== Bootloader (U-Boot) setup ===&lt;br /&gt;
&lt;br /&gt;
==== Quick ====&lt;br /&gt;
&lt;br /&gt;
If you don'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;code&amp;gt;0xFFFF v0.8  // Open Free Fiasco Firmware Flasher&lt;br /&gt;
Not a local device&lt;br /&gt;
Waiting for USB device... &amp;lt;/code&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;code&amp;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;/code&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;
&lt;br /&gt;
 &amp;lt;code&amp;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;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. 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;
'''(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)''')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have a functional Fremantle installation, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device 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 rootwait):&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, '''BE WARNED:''' 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;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
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'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'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'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's how the battery calibration works in low level: it can't change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it'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;
'''Overclocking is now available in -devel using cpufreq boost.'''&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;
'''No other steps are needed and updates/upgrades work with boost mode.'''&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;
'''WARNING: some devices can'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'''&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;
&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste-Overclock.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste Overclock&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImageX&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
2) From Maemo Leste (run as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cp /usr/lib/linux-image-omap/omap3-n900.dtb /home/user&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dtc -I dtb -O dts /home/user/omap3-n900.dtb -o /home/user/omap3-n900.dts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(wait for a few seconds...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod +w /home/user/omap3-n900.dts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(then the funny part...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano /home/user/omap3-n900.dts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Now it's time to modify frequencies and voltage: be careful to do exactly the same)&lt;br /&gt;
&lt;br /&gt;
Find &amp;quot;opp-table&amp;quot; with &amp;lt;code&amp;gt;ctl+w&amp;lt;/code&amp;gt; and 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;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;
	};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then &amp;lt;code&amp;gt;ctl+x&amp;lt;/code&amp;gt; to save and close.&lt;br /&gt;
&lt;br /&gt;
And still as root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rm /home/user/omap3-n900.dtb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dtc -I dts -O dtb /home/user/omap3-n900.dts -o /home/user/omap3-n900.dtb&amp;lt;/code&amp;gt;&lt;br /&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 (ie vmlinuz-6.1.30)&lt;br /&gt;
&lt;br /&gt;
As root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cat /boot/vmlinuz-&amp;lt;version&amp;gt; /home/user/omap3-n900.dtb &amp;gt; /tmp/zImage_dtb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkimage -A arm -O linux -T kernel -C none -a 80008000 -e 80008000 -d /tmp/zImage_dtb /boot/uImageX&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it !&lt;br /&gt;
&lt;br /&gt;
Now reboot and select &amp;quot;Maemo Leste Overclock in bootmenu&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
('''WARNING with old method:''' 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, most probably because of their lower build quality.&lt;br /&gt;
&lt;br /&gt;
'''WARNING''': unresponsive / freezing screen is normal during Hildon-desktop loading.&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'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;
&lt;br /&gt;
'''Note:''' it is recommended to dist-upgrade to -devel to enable more features by adding&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;deb https://maedevu.maemo.org/leste chimaera-devel main contrib non-free  n900&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in &amp;lt;pre&amp;gt;/etc/apt/sources.list&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
('''Warning:''' don't remove other sources in this file)&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 .nomedia file in /home/user folder:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;touch /home/user/.nomedia&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deactivating apt-worker ===&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;gconftool -s --type int /apps/hildon/update-notifier/check_interval 2147483647&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Removing 250MHz CPU frequency (example) ===&lt;br /&gt;
&lt;br /&gt;
Install cpufrequtils.&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;
('''Note: SWAP is already activated by default''')&lt;br /&gt;
&lt;br /&gt;
Enabling swap on eMMC 768MB partition if not already activated on first boot (works on the fly):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo swapon /dev/mmcblk1p3&amp;lt;/pre&amp;gt;   (editing /etc/fstab/ is not needed and done automatically on next reboot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Other possibility:''' 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;sudo chmod 600 /swapfile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo mkswap /swapfile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo swapon /swapfile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make the change permanent open:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /etc/fstab&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;/swapfile swap swap defaults 0 0&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;sudo swapon --show&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tweaking Transitions ===&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;code&amp;gt;nano /usr/share/hildon-desktop/transitions.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See Fremantle documentation for perfect setup.&lt;br /&gt;
&lt;br /&gt;
'''Note: like Fremantle, blur effect can cause lags and slowness.''' It is possible to deactivate/modify it through the transitions.ini file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;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;
=== Web browsing ===&lt;br /&gt;
&lt;br /&gt;
Links2 is currently the fastest and the most usable web browser on N900 -using an easy tweak-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install links2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use it in graphical mode, run in terminal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;links2 -g&amp;lt;/pre&amp;gt; or press the hildon desktop icon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then press &amp;lt;code&amp;gt;Ctl + Shift + N&amp;lt;/code&amp;gt; to disable Hildon composition -links2 performances will increase a lot-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Press &amp;lt;code&amp;gt;Ctl + Shift + N&amp;lt;/code&amp;gt; if you want to enable Hildon composition again.&lt;br /&gt;
&lt;br /&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;
- Dist-upgrade to -devel (not working without)&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;code&amp;gt;sudo chrt -a -f -p 99 $(pgrep pulseaudio)&amp;lt;/code&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.6 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 'FM Transmitter' 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 || evdev 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 'fix'&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>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Status&amp;diff=1720</id>
		<title>Status</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Status&amp;diff=1720"/>
		<updated>2024-09-19T21:21:32Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
For Device specific status pages, see See [[:Category:Device]]&lt;br /&gt;
&lt;br /&gt;
The table below documents what features work on Maemo Leste on at least one device, without (a lot of) console hackery. This usually means that the feature should be decently integrated and that there has to be a UI available. This is *independent* of specific device drivers or just specified devices and doesn't mean that it necessarily works on a device&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Status&lt;br /&gt;
! Leste software&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Desktop environment || OK ||  hildon || hildon home, hildon desktop, .&lt;br /&gt;
|-&lt;br /&gt;
| [[Terminal]] || OK || [https://github.com/maemo-leste/osso-xterm osso-xterm] || &lt;br /&gt;
|-&lt;br /&gt;
| [[Status/VirtualKeyboard|Virtual keyboard]] || WIP || [https://github.com/maemo-leste/hildon-input-meta hildon-input-meta] || Should work fine for all devices, GTK2 only.&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Wireless|Wireless]] || OK || [https://github.com/maemo-leste/libicd-network-wpasupplicant libicd-network-wpasupplicant] || Works out of the box&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || WIP || Just works if supported in the kernel, but no Maemo UI available to configure it, blueman-manager can be used || &lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Browser|Browser]] || WIP || jib || due to CPU/RAM, N900 uses Dillo &lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Audio|Audio]] || OK || ? || [Basic audio/sounds work (like, notifications, charging notification, etc); will need to import alsa-policy-enforcement, port OHM&lt;br /&gt;
|-&lt;br /&gt;
| Battery / charging || OK || [https://github.com/maemo-leste/status-area-applet-battery status-area-applet-battery], [https://github.com/maemo-leste/mce mce], [https://github.com/maemo-leste-upstream-forks/upower upower] ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/USB Peripheral|USB Peripheral]] || OK || [https://github.com/maemo-leste/hildon-status-bar-usb hildon-status-bar-usb], [https://github.com/maemo-leste/ke-recv ke-recv] || Basic support in place for N900/Droid4/Allwinner, see https://github.com/maemo-leste/bugtracker/issues/39 ; https://github.com/maemo-leste/bugtracker/issues/179 ; https://github.com/maemo-leste/ke-recv &lt;br /&gt;
|-&lt;br /&gt;
| LED control || OK || mce || Make sure the notifications are enabled in settings.&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Mobile Data|Mobile Data]] || OK || [https://github.com/maemo-leste/connui-cellular connui-cellular] [https://github.com/maemo-leste/libicd-network-ofono libicd-network-ofono] ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/GPS|GPS]] || OK || gpsd, liblocation, location-daemon ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/SMS|SMS]] || OK || sphone, conversations, ofono, telepathy-ring ? ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Phone Calls|Phone Calls]] || OK || sphone, ofono, telepathy-ring ? || &lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Application Manager|Application Manager]] || OK || [https://github.com/maemo-leste/hildon-application-manager hildon-application-manager] || Works fine, theme might look a bit off on higher resolution displays&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Media Player|Media Player]] || WIP || OMP (open media player):listening to radio streams and local music/video works || [https://github.com/maemo-leste/bugtracker/issues/25 tracking issue]&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/PDF Viewer|PDF Viewer]] || Mostly works || osso-pdf-viewer || [https://github.com/maemo-leste/osso-pdf-viewer osso-pdf-viewer]&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Games|Games &amp;amp; Entertainment]] || OK || Works (available in [[Leste Extras]] || [https://github.com/maemo-leste/bugtracker/issues/18 sdl fullscreen] [https://github.com/maemo-leste/bugtracker/issues/238 game importing]&lt;br /&gt;
|-&lt;br /&gt;
| [[Status/Theming|Theming]] || OK || Works with themes (available in [[Leste Extras]] ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Calendar|Calendar]] || OK || Qalendar UI, syncing works. (UI needs some scrolling work) ||&lt;br /&gt;
|-&lt;br /&gt;
| [[Qt|Qt]] || OK || Qt5 port mostly works || https://github.com/maemo-leste/qtstyleplugins/ + https://github.com/maemo-leste/qt-platform-maemo&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Leste_FAQ&amp;diff=1719</id>
		<title>Leste FAQ</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Leste_FAQ&amp;diff=1719"/>
		<updated>2024-09-19T21:12:41Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: fix typos; drop systemd vs openrc section since we are somewhat willing to support systemd in future&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
=== What is Maemo Leste? ===&lt;br /&gt;
&lt;br /&gt;
Maemo Leste is an operating system based on GNU/Linux that is currently in development.  It is aimed at mobile devices with touch screens such as smartphones, tablets and PDAs.&lt;br /&gt;
&lt;br /&gt;
It is built on top of '''[https://devuan.org/ Devuan]''', and thus indirectly based on [https://www.debian.org/ Debian].  Essentially, it is a modernised and liberated version of '''[https://en.wikipedia.org/wiki/Maemo#Maemo_5 Maemo 5/Fremantle]'''; the last version of the mobile Linux OS from Nokia that was released in 2009 for the [https://en.wikipedia.org/wiki/Nokia_N900 Nokia N900] internet tablet/smartphone.  Unlike its predecessor which only ran on a single device, Maemo Leste runs on a variety of devices.  It also uses a '''[[#What_is_mainline_Linux.3F|mainline Linux]]''' kernel.&lt;br /&gt;
&lt;br /&gt;
In Maemo Leste, closed-source packages that originate from Fremantle have been reverse engineered, liberated, updated and rebuilt; whilst open-source Fremantle packages have been updated to newer libraries and APIs, including [https://en.wikipedia.org/wiki/Hildon Hildon], the mobile user interface from Fremantle.  &lt;br /&gt;
&lt;br /&gt;
Building on top of an actively developed Linux distribution makes Maemo Leste maintenance sustainable.  Fremantle was built on top of Debian packages forked from several versions of Debian, leaving the onus on Nokia to maintain every single package. However Leste utilises Devuan's package repositories, meaning that much of the heavy lifting is already done by upstream; we only have to manage and maintain a limited set of packages.  This also gives us the benefit of having access to over 20,000 packages from upstream immediately available for installation in Maemo Leste.&lt;br /&gt;
&lt;br /&gt;
All in all, Maemo Leste aims to provide an unconstrained and free mobile Linux distribution for hackers, developers and even just casual users.&lt;br /&gt;
&lt;br /&gt;
=== Why do we need another mobile operating system? ===&lt;br /&gt;
&lt;br /&gt;
Today's smartphone industry is dominated by the duopoly of Apple and Google with their iOS and Android operating systems.  This leaves those of us who value information privacy and software freedoms with virtually no options when it comes to choosing a smartphone.  Some pretenders have tried to change this but have ultimately [[#How_about_other_popular_non-Android_mobile_Linux_distributions.3F|fallen short in some areas]].  Maemo Leste aims to put an end to this dire situation.  We provide a ''true'' GNU/Linux experience which evolves along with the base Linux distribution from which it is built on top of.  We hope that Maemo Leste will help to raise awareness of the [[#Why_is_it_important_to_run_mainline_Linux.3F|importance of running mainline Linux]] which may eventually lead to increased consumer demand for devices that are compatible with mainline Linux, leading to improved options when choosing a smartphone.&lt;br /&gt;
&lt;br /&gt;
=== Why not add/extend new packages to Fremantle instead? ===&lt;br /&gt;
&lt;br /&gt;
Fremantle is ancient, and quite a few packages are [https://wiki.maemo.org/Fremantle_closed_packages closed source] and also outdated.&lt;br /&gt;
Many are in dire need of a replacement, either for interoperability sake (browser, closed wifi stack, closed phone stack) or need a lot of updates to be even reasonably secure: ancient (vulnerable) browser, unsupported crypto libraries, ancient Linux kernel are just a few.&lt;br /&gt;
&lt;br /&gt;
Beyond that, Fremantle was never truly &amp;quot;Debian&amp;quot; -- although it used a lot of the Debian ecosystem. We realise that we do not have the time to maintain all kinds of core packages, so it made a lot of sense to base Maemo Leste on a modern and community-run distribution. We can't run an entire distribution without a good base distribution like Debian.&lt;br /&gt;
&lt;br /&gt;
Furthermore, adding lots of updated and new packages mixed together with the old Fremantle packages is likely to become a big hell. Old packages need an older glibc (even though it claims to be backwards compatible, it isn't always), other libraries might depend on other specific libraries). That will also make it very hard to keep track of what old and new packages are in place, we would still be stuck with many other outdated packages - permanently frozen kernel interface, and so forth. This only gets more complicated with the new C++ ABI with newer GCC, and so on. We'd also ideally have all packages be Position Independent Executables (PIE), further complicating mixing with Fremantle.&lt;br /&gt;
&lt;br /&gt;
We went for a distribution based on Debian because it would provide a clean base; and Fremantle already used a large part of the Debian ecosystem. Right now it is very easy to figure out what packages Maemo Leste adds on top of Devuan/Debian, which also makes the life of developers (and even users) easier.&lt;br /&gt;
&lt;br /&gt;
=== Does Maemo Leste use Halium? ===&lt;br /&gt;
&lt;br /&gt;
No.  Halium aims to build a common base for mobile GNU/Linux distributions.  This is great idea in principle but their choice of components leaves a lot to be desired.&lt;br /&gt;
&lt;br /&gt;
Halium uses kernels from Android.  See [[#What.27s_wrong_with_Android_.28vendor.29_kernels.3F|below]] for a description of some of the problems of Android kernels.  By embracing the use of Android kernels, Halium can provide working device ports fairly quickly but this may have a negative effect in the long run.  A developer who has a fully working device running GNU/Linux with an Android kernel may be less inclined to help get that device running on mainline Linux, thus the reliance on Android continues.  The shortage of mainline Linux kernel contributions from the developers of Halium and other libhybris-based Linux distributions is evident.&lt;br /&gt;
&lt;br /&gt;
=== What is mainline Linux? ===&lt;br /&gt;
&lt;br /&gt;
Mainline Linux is pure Linux, taken and built from Linus Torvalds' Git tree (kernel.org).  It has an organic development model which provides new releases every two to three months and also less frequent long-term supported stable releases.&lt;br /&gt;
&lt;br /&gt;
=== What's wrong with Android (vendor) kernels? ===&lt;br /&gt;
&lt;br /&gt;
The Android Open Source Project (AOSP) leeches off Linux.  Hundreds, if not thousands, of out-of-tree kernel forks are maintained by vendors with almost no effort to contribute back to mainline Linux.  This not only hurts the Linux development ecosystem but we as users also suffer as a consequence of this.  There are thousands of different Android devices on the market, all with kernels based on Linux; yet only a handful of those devices are able to run on mainline Linux, and most of those that do, have very limited hardware support.  Linux kernels are [https://source.android.com/devices/architecture/kernel/android-common#branch-hierarchy forked up to five times by AOSP, before finally being forked once more by the device manufacturer].  This results in kernels that have diverged significantly from mainline.  This means that it is likely not possible to install an up-to-date mainline kernel on any given Android device.  Also, it often means that kernel updates are not timely, nor frequent.  When the device manufacturer decides to stop supporting the device, no further kernel updates are provided.  This allow the manufacturers of Android devices to practise [https://en.wikipedia.org/wiki/Planned_obsolescence planned obsolescence].  This practice is a huge contributor to our society's [https://en.wikipedia.org/wiki/Throw-away_society throw-away culture], forcing consumers to replace their devices every year or two and has a [https://www.fastcodesign.com/90165365/smartphones-are-wrecking-the-planet-faster-than-anyone-expected big impact on our planet].  The vast majority of users of Android devices are not even made aware when their kernel has reached end-of-life, leaving them vulnerable to known exploits.&lt;br /&gt;
&lt;br /&gt;
=== Why is it important to run mainline Linux? ===&lt;br /&gt;
&lt;br /&gt;
Using mainline Linux keeps us in touch with [https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git cutting-edge kernel development], allows us to provide [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git normal stable releases] which helps to accelerate development, whilst also giving us the option of providing [https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git long-term supported stable releases].  Mainline Linux does not suffer from any of the problems associated with Android kernels listed above.  The first rule of Linux kernel development is [https://felipec.wordpress.com/2013/10/07/the-linux-way/ &amp;quot;don't break userspace&amp;quot;].  Regressions are not allowed and this ensures kernel-to-userspace API and ABI stability.  By running mainline Linux, once a device is supported, we can be sure that it will continue to work and we will receive regular kernel updates for decades to come, just like running Linux on your PC.  See also the official explanation on [https://www.kernel.org/doc/html/latest/process/1.Intro.html#the-importance-of-getting-code-into-the-mainline the importance of getting code into the mainline].&lt;br /&gt;
&lt;br /&gt;
=== Does Maemo Leste run with pure mainline Linux? ===&lt;br /&gt;
&lt;br /&gt;
The primary devices that we support can run with a pure mainline Linux kernel. However right now our images use mainline plus a few patches.  As we are still in the early phases of development, our current priority is to ensure that our supported devices are as fully functional as they can possibly be, thus the additional patches help to achieve this.  We continuously upstream our patches (for the kernel and other software) and our goal is to upstream the remaining ones to be able to switch to using a 100% mainline kernel on our devices.&lt;br /&gt;
&lt;br /&gt;
=== Is Maemo Leste completely free? ===&lt;br /&gt;
&lt;br /&gt;
Unfortunately not.  There is still no smartphone available that is fully functional without the use of [https://en.wikipedia.org/wiki/Proprietary_device_driver binary blobs].  Our primary supported devices currently require closed firmware to be able to use Wi-Fi and Bluetooth, and the TI OMAP-based devices have integrated PowerVR video hardware which require closed user space drivers for video acceleration.  It's an unfortunate state of affairs, however progress is being made, and the PinePhone is a great example of this as it can have video acceleration with the Lima driver which is 100% free software.&lt;br /&gt;
&lt;br /&gt;
Our current goal is to provide full functionality for our supported devices, however there are plans to additionally provide a blob-free, libre version of Maemo Leste with missing functionality where blobs would be required.&lt;br /&gt;
&lt;br /&gt;
=== How does Maemo Leste compare with postmarketOS? ===&lt;br /&gt;
&lt;br /&gt;
postmarketOS is mobile GNU/Linux distribution which runs mainline Linux kernels and also supports Android kernels.  We share several goals in common with postmarketOS, particularly the use of mainline Linux.  This presents a great opportunity for collaboration.  Both Maemo Leste and postmarketOS have great working relationship and have already benefited from each other's work.&lt;br /&gt;
&lt;br /&gt;
=== How does Maemo Leste compare with PureOS? ===&lt;br /&gt;
&lt;br /&gt;
Purism's PureOS is currently in development for the Librem 5 phone.  Purism have stated their plans to upstream all work to parent projects.  This naturally presents another opportunity for collaboration, especially with PureOS also being based on Debian.  We would welcome any collaborations with Purism.  Work on a Maemo Leste port for the Librem 5 phone is in progress ([https://github.com/Daniel-Abrecht/image-builder image-builder], [https://github.com/Daniel-Abrecht/arm-sdk arm-sdk]).&lt;br /&gt;
&lt;br /&gt;
=== How about other popular non-Android mobile Linux distributions? ===&lt;br /&gt;
&lt;br /&gt;
The majority of initiatives to create a mobile Linux distribution as an alternative to Android have often made questionable decisions on the components they have chosen to include in their distributions.  Some of these distributions are built for profit which means they often do not have the best interests of the end-user at heart.  This has resulted in the inclusion of closed source components where they could have been avoided.&lt;br /&gt;
&lt;br /&gt;
One of the most popular alternatives is the worst offender.  It includes a proprietary GUI and a proprietary application framework which means that apps developed for that platform will run only on that platform and nowhere else.  Its base distribution, which is actually open source, deliberately uses unsupported/unmaintained GNU General Public License (GPL) version 2 licensed packages (even though they have long since been superseded by newer versions relicensed as GPL v3) for the purpose of [https://en.wikipedia.org/wiki/Tivoization Tivoisation].  This allows a vendor to use hardware restrictions to prevent users from running modified versions of the software on their hardware.  This distribution has a counterpart distribution which is open source, however it is unfortunately also based on the same Tivoised base distribution.&lt;br /&gt;
&lt;br /&gt;
Another popular alternative distribution decided that instead of working together with the community on a common display manager, Wayland, to replace X11, they would develop their own.  In the process, they heavily criticised Wayland.  Some of the criticism was unfounded, and even though other points may have been fair, Wayland could have been adapted to suit their needs.  They since retracted that criticism, nevertheless they continue to work on their own display manager in preference of working with the greater community on Wayland.&lt;br /&gt;
&lt;br /&gt;
Finally, the vast majority of alternative distributions have decided to go the route of using [[#What.27s_wrong_with_Android_.28vendor.29_kernels.3F|Android kernels]], which favours device compatibility and ease of device porting, at the expense of software freedoms.&lt;br /&gt;
&lt;br /&gt;
=== Why is Maemo Leste based on Devuan rather than Debian? ===&lt;br /&gt;
&lt;br /&gt;
Convenience for developers, and a little bit of politics (but this is not really noticeable in the project).&lt;br /&gt;
&lt;br /&gt;
Maemo Fremantle uses the ''upstart'' init system. We initially chose Devuan because we figured Devuan might support upstart to some degree as well, so we would not have to deal with rewriting the init scripts (although we ended up rewriting them anyway as Maemo Leste now uses OpenRC). Another reason is that some people who initiated the project are either working on Devuan or are close with people who work on Devuan.&lt;br /&gt;
&lt;br /&gt;
As you may know, the Devuan project focuses on providing a Debian alternative that can be used without systemd.  Although Debian can be installed without systemd, Devuan provides a much more stable and tested system in this regard.  Key system components such as PolicyKit, UPower and udisks2 have been known to be broken in Debian when it is used without systemd, whereas Devuan provides working replacements.&lt;br /&gt;
&lt;br /&gt;
=== Can Maemo Leste work with a Debian/systemd base? ===&lt;br /&gt;
&lt;br /&gt;
Several users and developers have expressed interest in using Maemo Leste with Debian and systemd.  Proof-of-concept work was started to make this possible.  We do not want to restrict the reach of Maemo Leste, therefore we welcome contributions for Debian/systemd compatibility and provide assistance with it.  It is hoped that eventually we will be able to provide users with a choice of Devuan and Debian bases for Maemo Leste.&lt;br /&gt;
&lt;br /&gt;
=== musl libc kicks arse.  Can I use Maemo Leste with musl? ===&lt;br /&gt;
&lt;br /&gt;
We love musl libc too.  musl provides a lean, efficient and standards-compliant implementation of libc.  What's not to like?  Well unfortunately a lot of software built for Linux is glibc-dependent and is not standards-compliant.  Rebuilding this software with musl can result in unexpected runtime behaviour or bugs.  musl would be an extra hurdle that we don't really need right now.  Still, it would be nice to one day see Maemo Leste rebuilt against musl and might make for an interesting future project, but until then, make sure you check out postmarketOS.&lt;br /&gt;
&lt;br /&gt;
=== What devices does Maemo Leste work on? ===&lt;br /&gt;
&lt;br /&gt;
Our current list of (semi) supported devices can be found here: [[:Category:Device]]&lt;br /&gt;
&lt;br /&gt;
Maemo Leste could work on your device, and we'd like to link you to a porting guide here, but we don't have one yet.&lt;br /&gt;
&lt;br /&gt;
Maemo Leste focuses on providing support for devices that can run on mainline Linux, with an emphasis on supporting mobile/cellular phones.  There are a limited number of mobile phones supported by mainline Linux at present, all with varying degrees of hardware support.  Although you may be disappointed by the lack of devices currently supported by Maemo Leste, we hope this will expand and  we strongly believe that running on top of mainline Linux is the right way forward for building a mobile OS that respects software freedoms.&lt;br /&gt;
&lt;br /&gt;
Maemo Leste has also been shown to run on the Gemini PDA which uses an Android kernel with libhybris.  It should be possible to run Maemo Leste on other Android devices using this method, however this falls outside of the scope of this project and what we are trying to achieve.  As such, only limited support would be provided.&lt;br /&gt;
&lt;br /&gt;
=== Can I run an alternative desktop environment or window manager instead of Hildon? ===&lt;br /&gt;
&lt;br /&gt;
The Devuan base of Maemo Leste provides a variety of desktop environments and window managers.  There are some issues at the moment with running these whilst Hildon is installed, however it has been proven that it is possible to run them after making a few minor hacks.  For now, if you choose to do this, limited support will be provided, if any. Don't expect any alternatives to provide the same level of device integration and optimisation that Hildon provides.&lt;br /&gt;
&lt;br /&gt;
=== Are ARM packages Thumb-compiled? ===&lt;br /&gt;
&lt;br /&gt;
Yes. This is very useful for N900 since it only has 256MB RAM. https://www.embedded.com/electronics-blogs/beginner-s-corner/4024632/Introduction-to-ARM-thumb&lt;br /&gt;
&lt;br /&gt;
=== How to translate Maemo Leste into my language? ===&lt;br /&gt;
&lt;br /&gt;
We have our translation source files on Weblate, so anyone can contribute. See our [[Localization]] page for more information.&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Purism_Librem5&amp;diff=1616</id>
		<title>Purism Librem5</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Purism_Librem5&amp;diff=1616"/>
		<updated>2024-03-15T22:02:32Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: New device - Librem5&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;
|lcd=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>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Image_Builder&amp;diff=1609</id>
		<title>Image Builder</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Image_Builder&amp;diff=1609"/>
		<updated>2024-02-12T19:40:29Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Maemo 7 Leste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How to build your own images =&lt;br /&gt;
&lt;br /&gt;
== Maemo 7 Leste ==&lt;br /&gt;
&lt;br /&gt;
'''[https://github.com/maemo-leste/image-builder Github]'''&lt;br /&gt;
&lt;br /&gt;
1.) Install the following packages: &amp;lt;pre&amp;gt;debootstrap curl git wget qemu-user-static build-essential rsync gcc-arm-none-eabi gcc-multilib lib32z1 u-boot-tools device-tree-compiler lzop dosfstools vboot-utils vboot-kernel-utils libftdi-dev libfdt-dev swig libpython-dev bc bison flex libssl-dev zsh git&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1.1) If you're using a distribution that is not Devuan, you will have to add a beowulf target to its scripts until the patch is merged upstream&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# wget -O /usr/share/debootstrap/scripts/ceres https://salsa.debian.org/installer-team/debootstrap/-/raw/e835c655006881af69de5476455ac0e7c824bcc4/scripts/ceres&lt;br /&gt;
# ln -s /usr/share/debootstrap/scripts/ceres /usr/share/debootstrap/scripts/chimaera&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.) In your terminal, run the following commands: &lt;br /&gt;
 $ git clone --recurse-submodules https://github.com/maemo-leste/image-builder.git&lt;br /&gt;
 $ cd image-builder/arm-sdk&lt;br /&gt;
 $ zsh -f&lt;br /&gt;
 $ source sdk&lt;br /&gt;
 $ load devuan DEVICE_NAME maemo&lt;br /&gt;
 $ build_arm_dist&lt;br /&gt;
&lt;br /&gt;
Note: replace &amp;lt;code&amp;gt;DEVICE_NAME&amp;lt;/code&amp;gt; with your board name:&lt;br /&gt;
&lt;br /&gt;
* n900&lt;br /&gt;
* n950&lt;br /&gt;
* n9&lt;br /&gt;
* droid4&lt;br /&gt;
* odroidxu&lt;br /&gt;
* odroidxu4&lt;br /&gt;
* ouya&lt;br /&gt;
* raspi1&lt;br /&gt;
* raspi2&lt;br /&gt;
* raspi3&lt;br /&gt;
* raspi4&lt;br /&gt;
* rock64&lt;br /&gt;
* pinephone-dontbeevil&lt;br /&gt;
* pinephone&lt;br /&gt;
* pinetab&lt;br /&gt;
* sunxi&lt;br /&gt;
* turbox-twister&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1560</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1560"/>
		<updated>2023-09-04T09:45:14Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Status table */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|category=Supported&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
overclock @850MHz&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.1&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/WIP&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;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card.&lt;br /&gt;
&lt;br /&gt;
If using a Windows machine, you can use [https://etcher.io/ Etcher]&lt;br /&gt;
&lt;br /&gt;
See the next section on how to boot. (using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613)&lt;br /&gt;
&lt;br /&gt;
=== Bootloader (U-Boot) setup ===&lt;br /&gt;
&lt;br /&gt;
==== Quick ====&lt;br /&gt;
&lt;br /&gt;
If you don't want to configure u-boot from Fremantle, or your Fremantle rootfs is broken), or you just want to install quickly:&lt;br /&gt;
&lt;br /&gt;
1. Either download 0xFFFF (binary for x86) from https://maedevu.maemo.org/images/n900/tools/ or build from source from https://github.com/pali/0xFFFF/&lt;br /&gt;
&lt;br /&gt;
2. Download u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
3. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: &amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type &amp;lt;code&amp;gt;run sdboot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command&lt;br /&gt;
&lt;br /&gt;
'''(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)''')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have a functional Fremantle installation, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device with the keyboard slide open (U-boot will boot the default option if the keyboard slide is closed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
&lt;br /&gt;
Run the following script: &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serial ==&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
Use this command line (specifically the part after rootwait):&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, '''BE WARNED:''' 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;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
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 Nokia N900. Don't detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don't attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don'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's fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It's how the battery calibration works in low level: it can't change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it'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 ==&lt;br /&gt;
&lt;br /&gt;
Nokia N900 with Leste is stable using following scalable frequencies and is much, much faster:&lt;br /&gt;
&lt;br /&gt;
250-500-600-720-850MHz&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;
&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste-Overclock.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste Overclock&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImageX&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
2) From Maemo Leste (run as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cp /usr/lib/linux-image-omap/omap3-n900.dtb /home/user&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dtc -I dtb -O dts /home/user/omap3-n900.dtb -o /home/user/omap3-n900.dts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(wait for a few seconds...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod +w /home/user/omap3-n900.dts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(then the funny part...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano /home/user/omap3-n900.dts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Now it's time to modify frequencies and voltage: be careful to do exactly the same)&lt;br /&gt;
&lt;br /&gt;
Find &amp;quot;opp-table&amp;quot; with &amp;lt;code&amp;gt;ctl+w&amp;lt;/code&amp;gt; and 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;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;
		opp6-720000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x2aea5400 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x149970 0x149970 0x149970 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x02 &amp;gt;;&lt;br /&gt;
			turbo-mode;&lt;br /&gt;
		};&lt;br /&gt;
	};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then &amp;lt;code&amp;gt;ctl+x&amp;lt;/code&amp;gt; to save and close.&lt;br /&gt;
&lt;br /&gt;
And still as root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rm /home/user/omap3-n900.dtb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dtc -I dts -O dtb /home/user/omap3-n900.dts -o /home/user/omap3-n900.dtb&amp;lt;/code&amp;gt;&lt;br /&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 (ie vmlinuz-6.1.30)&lt;br /&gt;
&lt;br /&gt;
As root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cat /boot/vmlinuz-&amp;lt;version&amp;gt; /home/user/omap3-n900.dtb &amp;gt; /tmp/zImage_dtb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkimage -A arm -O linux -T kernel -C none -a 80008000 -e 80008000 -d /tmp/zImage_dtb /boot/uImageX&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it !&lt;br /&gt;
&lt;br /&gt;
Now reboot and select &amp;quot;Maemo Leste Overclock in bootmenu&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
('''WARNING:''' 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;
&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 850MHz.&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;
== Tips / Tweaks ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SD Card ===&lt;br /&gt;
&lt;br /&gt;
To avoid overall slowness, please only use SDHC Class 10 or better.&lt;br /&gt;
&lt;br /&gt;
=== Social messaging ===&lt;br /&gt;
&lt;br /&gt;
Conversations app is compatible with libpurple and irc/bitlbee server.&lt;br /&gt;
&lt;br /&gt;
Twitter, Signal, Telegram, FB Messenger and others are working.&lt;br /&gt;
&lt;br /&gt;
(most audio and video links are playable)&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&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&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: No&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;
=== Tweaking Transitions ===&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;code&amp;gt;nano /usr/share/hildon-desktop/transitions.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See Fremantle documentation for perfect setup.&lt;br /&gt;
&lt;br /&gt;
=== More SWAP ===&lt;br /&gt;
&lt;br /&gt;
To create a simple swap file 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;sudo chmod 600 /swapfile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo mkswap /swapfile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo swapon /swapfile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make the change permanent open:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /etc/fstab&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;/swapfile swap swap defaults 0 0&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;sudo swapon --show&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Web browsing ===&lt;br /&gt;
&lt;br /&gt;
Links2 is currently the fastest and the most usable web browser on N900 -using few tweaks-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt install links2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use it in graphical mode, run in terminal:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;links2 -g&amp;lt;/pre&amp;gt; or press the hildon desktop icon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then press &amp;lt;code&amp;gt;Ctl + Shift + N&amp;lt;/code&amp;gt; to disable Hildon composition -links2 performances will increase a lot-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Press &amp;lt;code&amp;gt;Ctl + Shift + N&amp;lt;/code&amp;gt; if you want to enable Hildon composition again.&lt;br /&gt;
&lt;br /&gt;
=== Retroarch ===&lt;br /&gt;
&lt;br /&gt;
'''First things to do:'''&lt;br /&gt;
&lt;br /&gt;
Edit  &amp;lt;pre&amp;gt;/home/user/.config/retroarch/retroarch.cfg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
menu_driver = &amp;quot;glui&amp;quot;&lt;br /&gt;
&lt;br /&gt;
menu_show_core_updater = &amp;quot;true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
video_driver = &amp;quot;gl&amp;quot;&lt;br /&gt;
&lt;br /&gt;
video_vsync = &amp;quot;true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
menu_unified_control = &amp;quot;true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
menu_core_enable = &amp;quot;true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
quick_menu_show_options = &amp;quot;true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Some emulators are working well:&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
- QuickNES (NES/Famicom)&lt;br /&gt;
&lt;br /&gt;
- Snes9x 2005 (SNES/Super Famicom)&lt;br /&gt;
&lt;br /&gt;
Others at 70-80% speed:&lt;br /&gt;
&lt;br /&gt;
- Genesis Plus GX (SEGA MS/GG/MD/CD)&lt;br /&gt;
&lt;br /&gt;
Go to Online Updater / Core Updater to download emulators&lt;br /&gt;
&lt;br /&gt;
'''Retroarch recommended settings:'''&lt;br /&gt;
&lt;br /&gt;
To avoid crashes, use only &amp;quot;glui&amp;quot; Menu Driver&lt;br /&gt;
&lt;br /&gt;
'''Driver'''&lt;br /&gt;
&lt;br /&gt;
Input driver &amp;quot;X&amp;quot;, joypad driver &amp;quot;linuxraw&amp;quot;, video driver &amp;quot;gl&amp;quot;, audio driver &amp;quot;null&amp;quot;, location driver &amp;quot;null&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Video'''&lt;br /&gt;
&lt;br /&gt;
Aspect ratio &amp;quot;core provided&amp;quot;, Integer scaler &amp;quot;no&amp;quot;, Threaded Video &amp;quot;yes&amp;quot;, Vertical Sync &amp;quot;yes&amp;quot;, Hard gpu Sync &amp;quot;no&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
'''Audio'''&lt;br /&gt;
&lt;br /&gt;
Audio Enable &amp;quot;no&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Input''' (very important)&lt;br /&gt;
&lt;br /&gt;
Unified Menu Controls &amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Input User 1 Binds (keyboard settings)&lt;br /&gt;
&lt;br /&gt;
'''Directory''' (very important)&lt;br /&gt;
&lt;br /&gt;
Core &amp;quot;/home/user&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Default keyboard keys'''&lt;br /&gt;
&lt;br /&gt;
'''X''' validate/ok&lt;br /&gt;
&lt;br /&gt;
'''C''' cancel/back&lt;br /&gt;
&lt;br /&gt;
'''F''' fullscreen (never close Retroarch in fullscreen mode)&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.1.30 || 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;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), UCM support with Jack plug/unplug detection&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 ofono and Conversations UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works well using ofono scripts, UCM support, some integration and bug fixing still remains with Sphone, sound is good. Works in 2G, 3G and 3.5G mode, low latency. &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 'FM Transmitter' 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 || evdev 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 'fix'&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/WIP || TX only (hardware limitation). Works with specific dts parameters and pwm-ir-tx driver. Unstable&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>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Tweaking&amp;diff=1550</id>
		<title>Tweaking</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Tweaking&amp;diff=1550"/>
		<updated>2023-07-20T18:55:19Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Switch clock display to 24h - no longer needed. UI supports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maemo Leste is very tweakable/hackable/versatile, this page lists some of the things you could change, hopefully grouped in a meaningful manner.&lt;br /&gt;
&lt;br /&gt;
==== Prevent autoremoval of downloaded .deb files ====&lt;br /&gt;
The tool 'apt' as an alternative to apt-get uses different configuration.&lt;br /&gt;
To prevent apt from auto-deleting downloaded .deb packages do this:&lt;br /&gt;
&amp;lt;pre&amp;gt;echo 'Binary::apt::APT::Keep-Downloaded-Packages &amp;quot;true&amp;quot;;' \ &amp;gt; /etc/apt/apt.conf.d/01keep-debs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GConf Settings =====&lt;br /&gt;
&lt;br /&gt;
==== Show current gconf settings ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;gconftool-2 -R / |less&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;gconftool -S \* |less&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Battery icon ====&lt;br /&gt;
&lt;br /&gt;
You can change the animation of the charging icon to show the current charge capacity:&lt;br /&gt;
&amp;lt;pre&amp;gt;gconftool-2 -s /apps/osso/status-area-applet-battery/show_charge_charging -t bool true&amp;lt;/pre&amp;gt; [edit] ''This doesn't do anything for me - clort''&lt;br /&gt;
&lt;br /&gt;
==== Disable screen rotate ====&lt;br /&gt;
&lt;br /&gt;
You can lock screen orientation to the current (disabling screen rotation) with&lt;br /&gt;
&amp;lt;pre&amp;gt;gconftool-2 -s  /apps/osso/hildon-desktop/orientation_lock -t bool true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Prevent user rearranging of app menu ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;gconftool-2 -s /apps/osso/hildon-desktop/key-actions/disable_edit -t bool true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hide toolbar at bottom of osso-xterm (to get more lines) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;gconftool-2 -s  /apps/osso/xterm/toolbar -t bool false&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Virtual_Machine&amp;diff=1549</id>
		<title>Virtual Machine</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Virtual_Machine&amp;diff=1549"/>
		<updated>2023-07-20T18:54:00Z</updated>

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

		<summary type="html">&lt;p&gt;Sicelo: /* Status table */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|category=Supported&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
|headers=&lt;br /&gt;
|battery=1320mAh&lt;br /&gt;
|sw_kernel=6.1&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, no ucm, no speaker protection)&lt;br /&gt;
|sw_calls=WIP&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;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card.&lt;br /&gt;
&lt;br /&gt;
If using a Windows machine, you can use [https://etcher.io/ Etcher]&lt;br /&gt;
&lt;br /&gt;
See the next section on how to boot. (using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613)&lt;br /&gt;
&lt;br /&gt;
=== Bootloader (U-Boot) setup ===&lt;br /&gt;
&lt;br /&gt;
==== Quick ====&lt;br /&gt;
&lt;br /&gt;
If you don't want to configure u-boot from Fremantle, or your Fremantle rootfs is broken), or you just want to install quickly:&lt;br /&gt;
&lt;br /&gt;
1. Either download 0xFFFF (binary for x86) from https://maedevu.maemo.org/images/n900/tools/ or build from source from https://github.com/pali/0xFFFF/&lt;br /&gt;
&lt;br /&gt;
2. Download u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
3. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: &amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type &amp;lt;code&amp;gt;run sdboot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command&lt;br /&gt;
&lt;br /&gt;
'''(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)''')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have a functional Fremantle installation, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
&lt;br /&gt;
Run the following script: &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serial ==&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
Use this command line (specifically the part after rootwait):&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, '''BE WARNED:''' 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;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
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 Nokia N900. Don't detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don't attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don'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's fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It's how the battery calibration works in low level: it can't change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it'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 ==&lt;br /&gt;
&lt;br /&gt;
Nokia N900 with Leste is stable using following scalable frequencies and is much, much faster:&lt;br /&gt;
&lt;br /&gt;
250-500-600-720-850MHz&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;
&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste-Overclock.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste Overclock&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImageX&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
2) From Maemo Leste (run as root):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cp /usr/lib/linux-image-omap/omap3-n900.dtb /home/user&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dtc -I dtb -O dts /home/user/omap3-n900.dtb -o /home/user/omap3-n900.dts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(wait for a few seconds...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;chmod +w /home/user/omap3-n900.dts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(then the funny part...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano /home/user/omap3-n900.dts&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Now it's time to modify frequencies and voltage: be careful to do exactly the same)&lt;br /&gt;
&lt;br /&gt;
Find &amp;quot;opp-table&amp;quot; with &amp;lt;code&amp;gt;ctl+w&amp;lt;/code&amp;gt; and 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;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;
		opp6-720000000 {&lt;br /&gt;
			opp-hz = &amp;lt; 0x00 0x2aea5400 &amp;gt;;&lt;br /&gt;
			opp-microvolt = &amp;lt; 0x149970 0x149970 0x149970 &amp;gt;;&lt;br /&gt;
			opp-supported-hw = &amp;lt; 0xffffffff 0x02 &amp;gt;;&lt;br /&gt;
			turbo-mode;&lt;br /&gt;
		};&lt;br /&gt;
	};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then &amp;lt;code&amp;gt;ctl+x&amp;lt;/code&amp;gt; to save and close.&lt;br /&gt;
&lt;br /&gt;
And still as root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;rm /home/user/omap3-n900.dtb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dtc -I dts -O dtb /home/user/omap3-n900.dts -o /home/user/omap3-n900.dtb&amp;lt;/code&amp;gt;&lt;br /&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 5-18.9, your vmlinuz version is vmlinuz-5.18.9&lt;br /&gt;
&lt;br /&gt;
In the next command, replace &amp;quot;vmlinuz-&amp;lt;version&amp;gt;&amp;quot; by yours (ie vmlinuz-5.18.9)&lt;br /&gt;
&lt;br /&gt;
As root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cat /boot/vmlinuz-&amp;lt;version&amp;gt; /home/user/omap3-n900.dtb &amp;gt; /tmp/zImage_dtb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkimage -A arm -O linux -T kernel -C none -a 80008000 -e 80008000 -d /tmp/zImage_dtb /boot/uImageX&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That's it !&lt;br /&gt;
&lt;br /&gt;
Now reboot and select &amp;quot;Maemo Leste Overclock in bootmenu&amp;quot;.&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 850MHz.&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;
== Tips / Tweaks ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SD Card ===&lt;br /&gt;
&lt;br /&gt;
To avoid overall slowness, please only use SDHC Class 10 or better.&lt;br /&gt;
&lt;br /&gt;
=== Social messaging ===&lt;br /&gt;
&lt;br /&gt;
Conversations app is compatible with libpurple and irc/bitlbee server.&lt;br /&gt;
&lt;br /&gt;
Twitter, Signal, Telegram, FB Messenger and others are working.&lt;br /&gt;
&lt;br /&gt;
(most audio and video links are playable)&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&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&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: No&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;
=== Tweaking Transitions ===&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;code&amp;gt;nano /usr/share/hildon-desktop/transitions.ini&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See Fremantle documentation for perfect setup.&lt;br /&gt;
&lt;br /&gt;
=== More SWAP ===&lt;br /&gt;
&lt;br /&gt;
First method:&lt;br /&gt;
&lt;br /&gt;
To create a simple swap file 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;sudo chmod 600 /swapfile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo mkswap /swapfile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo swapon /swapfile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make the change permanent open:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /etc/fstab&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;/swapfile swap swap defaults 0 0&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;sudo swapon --show&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Second method:&lt;br /&gt;
&lt;br /&gt;
To extand existing zswap you can install zram-tools from the repo, and edit &amp;lt;pre&amp;gt;/etc/default/zramswap&amp;lt;/pre&amp;gt; as necessary. It's probably convenient to set allocation to 768 or 1024.&lt;br /&gt;
&lt;br /&gt;
See Get Started Wiki.&lt;br /&gt;
&lt;br /&gt;
=== Web browsing ===&lt;br /&gt;
&lt;br /&gt;
Opera Mini 8 is a temporary solution.&lt;br /&gt;
&lt;br /&gt;
To get it working, install openjdk from repo and microemulator-2.0.4 from the web (.jar)&lt;br /&gt;
&lt;br /&gt;
Then from microemulator directory run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;java -jar microemulator-2.0.4.jar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the main screen: / File / Open Midlet File and choose your Opera Mini jar file&lt;br /&gt;
&lt;br /&gt;
Click Start (the first loading is quite long and an old Nokia smartphone will appear on the screen)&lt;br /&gt;
&lt;br /&gt;
Once loaded and installed, click on resize button to fit  to N900 screen.&lt;br /&gt;
&lt;br /&gt;
(Be patient, first loading and settings are slow)&lt;br /&gt;
&lt;br /&gt;
=== Retroarch ===&lt;br /&gt;
&lt;br /&gt;
'''First thing to do:'''&lt;br /&gt;
&lt;br /&gt;
Edit  &amp;lt;pre&amp;gt;/home/user/.config/retroarch/retroarch.cfg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
menu_driver = &amp;quot;glui&amp;quot;&lt;br /&gt;
&lt;br /&gt;
menu_show_core_updater = &amp;quot;true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
video_driver = &amp;quot;gl&amp;quot;&lt;br /&gt;
&lt;br /&gt;
video_vsync = &amp;quot;true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
menu_unified_control = &amp;quot;true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
menu_core_enable = &amp;quot;true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
quick_menu_show_options = &amp;quot;true&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Some emulators are working well:&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
- QuickNES (NES/Famicom)&lt;br /&gt;
&lt;br /&gt;
- Snes9x 2005 (SNES/Super Famicom)&lt;br /&gt;
&lt;br /&gt;
Others at 70-80% speed:&lt;br /&gt;
&lt;br /&gt;
- Genesis Plus GX (SEGA MS/GG/MD/CD)&lt;br /&gt;
&lt;br /&gt;
Go to Online Updater / Core Updater to download emulators&lt;br /&gt;
&lt;br /&gt;
'''Retroarch recommended settings:'''&lt;br /&gt;
&lt;br /&gt;
To avoid crashes, use only &amp;quot;glui&amp;quot; Menu Driver&lt;br /&gt;
&lt;br /&gt;
'''Driver'''&lt;br /&gt;
&lt;br /&gt;
Input driver &amp;quot;X&amp;quot;, joypad driver &amp;quot;linuxraw&amp;quot;, video driver &amp;quot;gl&amp;quot;, audio driver &amp;quot;null&amp;quot;, location driver &amp;quot;null&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Video'''&lt;br /&gt;
&lt;br /&gt;
Aspect ratio &amp;quot;core provided&amp;quot;, Integer scaler &amp;quot;no&amp;quot;, Threaded Video &amp;quot;yes&amp;quot;, Vertical Sync &amp;quot;yes&amp;quot;, Hard gpu Sync &amp;quot;no&amp;quot;, &lt;br /&gt;
&lt;br /&gt;
'''Audio'''&lt;br /&gt;
&lt;br /&gt;
Audio Enable &amp;quot;no&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Input''' (very important)&lt;br /&gt;
&lt;br /&gt;
Unified Menu Controls &amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Input User 1 Binds (keyboard settings)&lt;br /&gt;
&lt;br /&gt;
'''Directory''' (very important)&lt;br /&gt;
&lt;br /&gt;
Core &amp;quot;/home/user&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Default keyboard keys'''&lt;br /&gt;
&lt;br /&gt;
'''X''' validate/ok&lt;br /&gt;
&lt;br /&gt;
'''C''' cancel/back&lt;br /&gt;
&lt;br /&gt;
'''F''' fullscreen (never close Retroarch in fullscreen mode)&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.1.20 || 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;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), but requires complex alsa configuration and currently no ucm support&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono - UI is 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 ofono and Conversations UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, might require pulseaudio audio filters&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver needs some work&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Not really used in Leste at the moment, since UI rotation does not work&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A|| No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || evdev interface not supported in mce since it depends on iio-sensor-proxy support. https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/issues/363 for possible 'fix'&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 || Broken || TX only (hardware limitation). Sending pulses causes a kernel oops&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>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=1279</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=1279"/>
		<updated>2022-03-12T12:16:43Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Torch = */&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&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=5.15.0&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=WIP&lt;br /&gt;
|sw_sms=Yes, no UI&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=&lt;br /&gt;
|sw_2g3gdata=Yes&lt;br /&gt;
|sw_4g=No&lt;br /&gt;
|sw_bluetooth=Yes,  [[#Bluetooth|see notes]] &lt;br /&gt;
|sw_fmtx=No, but apparently exists, needs serdev kernel modules/drivers&lt;br /&gt;
|sw_fmrx=&lt;br /&gt;
|sw_nfc=&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_compass=Yes, no integration&lt;br /&gt;
|sw_gyro=&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't, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
=== Install Maemo Leste to the sdcard ===&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
&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 'xev' 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;
== 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&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 ''exit 0'' 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 'hdd led' 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's how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HDMI ====&lt;br /&gt;
Move output to external 1080p monitor.  Disabling DSI-1 output gets xorg pointer displayed on HDMI, for use with a mouse or barrier.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output HDMI-1 --mode 1920x1080 --output DSI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return to internal touchscreen display.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output DSI-1 --auto --rotate right --output HDMI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Keyboard / Mouse sharing with PC ====&lt;br /&gt;
To use droid4 while working at desktop it can be convenient to share mouse and keyboard of the host pc with droid4.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[https://github.com/debauchee/barrier Barrier software-KVM switch]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Developers and testers may wish to disable the googley bits before compiling.&lt;br /&gt;
&lt;br /&gt;
==== 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 'offline mode'.&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;
&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;
== Old 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 || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Implemented with Pulseaudio and UCM files&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Due to interference with WiFi, load driver manually, AFTER wifi module loaded&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available in /sys, and as input device via iio-uinput&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A || &lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || See https://elektranox.org/2018/02/0025-droid-camera/&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~120mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=1278</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=1278"/>
		<updated>2022-03-12T12:15:41Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: Removed manual modem/gps methods, wifi calibration, add torch&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&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=5.15.0&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=WIP&lt;br /&gt;
|sw_sms=Yes, no UI&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=&lt;br /&gt;
|sw_2g3gdata=Yes&lt;br /&gt;
|sw_4g=No&lt;br /&gt;
|sw_bluetooth=Yes,  [[#Bluetooth|see notes]] &lt;br /&gt;
|sw_fmtx=No, but apparently exists, needs serdev kernel modules/drivers&lt;br /&gt;
|sw_fmrx=&lt;br /&gt;
|sw_nfc=&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_compass=Yes, no integration&lt;br /&gt;
|sw_gyro=&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't, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
=== Install Maemo Leste to the sdcard ===&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
&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 'xev' 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;
== 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&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 ''exit 0'' 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 'hdd led' 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's how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HDMI ====&lt;br /&gt;
Move output to external 1080p monitor.  Disabling DSI-1 output gets xorg pointer displayed on HDMI, for use with a mouse or barrier.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output HDMI-1 --mode 1920x1080 --output DSI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return to internal touchscreen display.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output DSI-1 --auto --rotate right --output HDMI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Keyboard / Mouse sharing with PC ====&lt;br /&gt;
To use droid4 while working at desktop it can be convenient to share mouse and keyboard of the host pc with droid4.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[https://github.com/debauchee/barrier Barrier software-KVM switch]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Developers and testers may wish to disable the googley bits before compiling.&lt;br /&gt;
&lt;br /&gt;
==== 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 'offline mode'.&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;
&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;
== Old 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 || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Implemented with Pulseaudio and UCM files&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Due to interference with WiFi, load driver manually, AFTER wifi module loaded&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available in /sys, and as input device via iio-uinput&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A || &lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || See https://elektranox.org/2018/02/0025-droid-camera/&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~120mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1277</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1277"/>
		<updated>2022-03-12T11:52:21Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Torch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|category=Supported&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
|headers=&lt;br /&gt;
|battery=1320mAh&lt;br /&gt;
|sw_kernel=5.1&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, no ucm, no speaker protection)&lt;br /&gt;
|sw_calls=WIP&lt;br /&gt;
|sw_sms=Yes, no UI&lt;br /&gt;
|sw_wifi=Yes, firmware required&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=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=300mW (needs kernel work)&lt;br /&gt;
|sw_standbytime=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The installation consists of two steps: copying the image to the microsd card, and setting up the bootloader on the phone.&lt;br /&gt;
&lt;br /&gt;
=== Image installation ===&lt;br /&gt;
&lt;br /&gt;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card.&lt;br /&gt;
&lt;br /&gt;
If using a Windows machine, you can use [https://etcher.io/ Etcher]&lt;br /&gt;
&lt;br /&gt;
See the next section on how to boot. (using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613)&lt;br /&gt;
&lt;br /&gt;
=== Bootloader (U-Boot) setup ===&lt;br /&gt;
&lt;br /&gt;
==== Quick ====&lt;br /&gt;
&lt;br /&gt;
If you don't want to configure u-boot from Fremantle, or your Fremantle rootfs is broken), or you just want to install quickly:&lt;br /&gt;
&lt;br /&gt;
1. Either download 0xFFFF (binary for x86) from https://maedevu.maemo.org/images/n900/tools/ or build from source from https://github.com/pali/0xFFFF/&lt;br /&gt;
&lt;br /&gt;
2. Download u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
3. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: &amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type &amp;lt;code&amp;gt;run sdboot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command&lt;br /&gt;
&lt;br /&gt;
'''(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)''')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have a functional Fremantle installation, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
&lt;br /&gt;
Run the following script: &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serial ==&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
Use this command line (specifically the part after rootwait):&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, '''BE WARNED:''' 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 80mA, which is quite a lot. On a good battery this will last for about 15 hours. Power management on the N900 is being worked on: https://github.com/maemo-leste/bugtracker/issues/170&lt;br /&gt;
&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_management&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_Consumption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
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 Nokia N900. Don't detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don't attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don'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's fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It's how the battery calibration works in low level: it can't change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it's needed to repeat the calibration cycle several times to get more accurate value. It may take about 3-7 calibration cycles to get the proper mAh value for fully charged battery. If you spend some time on this process, you will get really accurate battery gauge and you will always know how much charge is remaining.&lt;br /&gt;
&lt;br /&gt;
Tip 1. If for any reason you want to reset the battery calibration value to see the message “Battery is not calibrated” again, you should remove the battery from the device for about 6 hours.&lt;br /&gt;
Tip 2. If you replace the battery, you may want to do 1-2 calibration cycles described above to update the gauge for your new battery.&lt;br /&gt;
&lt;br /&gt;
== Accessing MTD ==&lt;br /&gt;
&lt;br /&gt;
List devices:&lt;br /&gt;
 cat /proc/mtd&lt;br /&gt;
&lt;br /&gt;
Mount:&lt;br /&gt;
 apt install mtd-utils&lt;br /&gt;
 mkdir -vp /mnt/fremantle&lt;br /&gt;
 ubiattach -p /dev/mtd5&lt;br /&gt;
 mount -t ubifs ubi:rootfs /mnt/fremantle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Old status table ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.15 || Mainline + PowerVR Patches: https://github.com/maemo-leste/n9xx-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Requires special hardware&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes || Firmware is non-free&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || USB Network, Mass Storage. OTG not working, although it might be possible&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || closed driver&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), but requires complex alsa configuration and currently no ucm support&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono - UI is WIP, see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || N/A || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, might require pulseaudio audio filters&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver needs some work&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A|| No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || evdev interface not supported in mce&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || Yes || Enable in alsamixer (Jack Function in alsamixer to TV OUT), enable with &amp;lt;code&amp;gt;xrandr --output TV --mode 800x480 --same-as LCD&amp;lt;/code&amp;gt;. Set PAL/NTSC with &amp;lt;code&amp;gt;xrandr --output TV --set SignalProperties PAL&amp;lt;/code&amp;gt;, and scale with &amp;lt;code&amp;gt;xrandr --output TV --set TVScale 90&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Broken || TX only (hardware limitation). Sending pulses causes a kernel oops&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~300mW || Device does not enter RET or OFF mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1276</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1276"/>
		<updated>2022-03-12T11:42:58Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|category=Supported&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
|headers=&lt;br /&gt;
|battery=1320mAh&lt;br /&gt;
|sw_kernel=5.1&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, no ucm, no speaker protection)&lt;br /&gt;
|sw_calls=WIP&lt;br /&gt;
|sw_sms=Yes, no UI&lt;br /&gt;
|sw_wifi=Yes, firmware required&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=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=300mW (needs kernel work)&lt;br /&gt;
|sw_standbytime=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The installation consists of two steps: copying the image to the microsd card, and setting up the bootloader on the phone.&lt;br /&gt;
&lt;br /&gt;
=== Image installation ===&lt;br /&gt;
&lt;br /&gt;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card.&lt;br /&gt;
&lt;br /&gt;
If using a Windows machine, you can use [https://etcher.io/ Etcher]&lt;br /&gt;
&lt;br /&gt;
See the next section on how to boot. (using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613)&lt;br /&gt;
&lt;br /&gt;
=== Bootloader (U-Boot) setup ===&lt;br /&gt;
&lt;br /&gt;
==== Quick ====&lt;br /&gt;
&lt;br /&gt;
If you don't want to configure u-boot from Fremantle, or your Fremantle rootfs is broken), or you just want to install quickly:&lt;br /&gt;
&lt;br /&gt;
1. Either download 0xFFFF (binary for x86) from https://maedevu.maemo.org/images/n900/tools/ or build from source from https://github.com/pali/0xFFFF/&lt;br /&gt;
&lt;br /&gt;
2. Download u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
3. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: &amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type &amp;lt;code&amp;gt;run sdboot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command&lt;br /&gt;
&lt;br /&gt;
'''(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)''')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have a functional Fremantle installation, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
&lt;br /&gt;
Run the following script: &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serial ==&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
Use this command line (specifically the part after rootwait):&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 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, '''BE WARNED:''' 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 80mA, which is quite a lot. On a good battery this will last for about 15 hours. Power management on the N900 is being worked on: https://github.com/maemo-leste/bugtracker/issues/170&lt;br /&gt;
&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_management&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_Consumption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
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 Nokia N900. Don't detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don't attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don'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's fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It's how the battery calibration works in low level: it can't change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it's needed to repeat the calibration cycle several times to get more accurate value. It may take about 3-7 calibration cycles to get the proper mAh value for fully charged battery. If you spend some time on this process, you will get really accurate battery gauge and you will always know how much charge is remaining.&lt;br /&gt;
&lt;br /&gt;
Tip 1. If for any reason you want to reset the battery calibration value to see the message “Battery is not calibrated” again, you should remove the battery from the device for about 6 hours.&lt;br /&gt;
Tip 2. If you replace the battery, you may want to do 1-2 calibration cycles described above to update the gauge for your new battery.&lt;br /&gt;
&lt;br /&gt;
== Accessing MTD ==&lt;br /&gt;
&lt;br /&gt;
List devices:&lt;br /&gt;
 cat /proc/mtd&lt;br /&gt;
&lt;br /&gt;
Mount:&lt;br /&gt;
 apt install mtd-utils&lt;br /&gt;
 mkdir -vp /mnt/fremantle&lt;br /&gt;
 ubiattach -p /dev/mtd5&lt;br /&gt;
 mount -t ubifs ubi:rootfs /mnt/fremantle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Old status table ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.15 || Mainline + PowerVR Patches: https://github.com/maemo-leste/n9xx-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Requires special hardware&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes || Firmware is non-free&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || USB Network, Mass Storage. OTG not working, although it might be possible&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || closed driver&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), but requires complex alsa configuration and currently no ucm support&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono - UI is WIP, see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || N/A || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, might require pulseaudio audio filters&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver needs some work&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A|| No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || evdev interface not supported in mce&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || Yes || Enable in alsamixer (Jack Function in alsamixer to TV OUT), enable with &amp;lt;code&amp;gt;xrandr --output TV --mode 800x480 --same-as LCD&amp;lt;/code&amp;gt;. Set PAL/NTSC with &amp;lt;code&amp;gt;xrandr --output TV --set SignalProperties PAL&amp;lt;/code&amp;gt;, and scale with &amp;lt;code&amp;gt;xrandr --output TV --set TVScale 90&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Broken || TX only (hardware limitation). Sending pulses causes a kernel oops&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~300mW || Device does not enter RET or OFF mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1275</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1275"/>
		<updated>2022-02-27T15:24:44Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Old status table */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|category=Supported&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
|headers=&lt;br /&gt;
|battery=1320mAh&lt;br /&gt;
|sw_kernel=5.1&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, no ucm, no speaker protection)&lt;br /&gt;
|sw_calls=WIP&lt;br /&gt;
|sw_sms=Yes, no UI&lt;br /&gt;
|sw_wifi=Yes, firmware required&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=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=300mW (needs kernel work)&lt;br /&gt;
|sw_standbytime=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The installation consists of two steps: copying the image to the microsd card, and setting up the bootloader on the phone.&lt;br /&gt;
&lt;br /&gt;
=== Image installation ===&lt;br /&gt;
&lt;br /&gt;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card.&lt;br /&gt;
&lt;br /&gt;
If using a Windows machine, you can use [https://etcher.io/ Etcher]&lt;br /&gt;
&lt;br /&gt;
See the next section on how to boot. (using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613)&lt;br /&gt;
&lt;br /&gt;
=== Bootloader (U-Boot) setup ===&lt;br /&gt;
&lt;br /&gt;
==== Quick ====&lt;br /&gt;
&lt;br /&gt;
If you don't want to configure u-boot from Fremantle, or your Fremantle rootfs is broken), or you just want to install quickly:&lt;br /&gt;
&lt;br /&gt;
1. Either download 0xFFFF (binary for x86) from https://maedevu.maemo.org/images/n900/tools/ or build from source from https://github.com/pali/0xFFFF/&lt;br /&gt;
&lt;br /&gt;
2. Download u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
3. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: &amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type &amp;lt;code&amp;gt;run sdboot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command&lt;br /&gt;
&lt;br /&gt;
'''(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)''')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have a functional Fremantle installation, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
&lt;br /&gt;
Run the following script: &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serial ==&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
Use this command line (specifically the part after rootwait):&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;
&lt;br /&gt;
* Speakers are enabled by default, but be careful of very high frequencies/levels - there are concerns regarding the possibility to blow them&lt;br /&gt;
&lt;br /&gt;
Also see: https://elinux.org/N900&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
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 80mA, which is quite a lot. On a good battery this will last for about 15 hours. Power management on the N900 is being worked on: https://github.com/maemo-leste/bugtracker/issues/170&lt;br /&gt;
&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_management&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_Consumption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
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 Nokia N900. Don't detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don't attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don'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's fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It's how the battery calibration works in low level: it can't change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it's needed to repeat the calibration cycle several times to get more accurate value. It may take about 3-7 calibration cycles to get the proper mAh value for fully charged battery. If you spend some time on this process, you will get really accurate battery gauge and you will always know how much charge is remaining.&lt;br /&gt;
&lt;br /&gt;
Tip 1. If for any reason you want to reset the battery calibration value to see the message “Battery is not calibrated” again, you should remove the battery from the device for about 6 hours.&lt;br /&gt;
Tip 2. If you replace the battery, you may want to do 1-2 calibration cycles described above to update the gauge for your new battery.&lt;br /&gt;
&lt;br /&gt;
== Accessing MTD ==&lt;br /&gt;
&lt;br /&gt;
List devices:&lt;br /&gt;
 cat /proc/mtd&lt;br /&gt;
&lt;br /&gt;
Mount:&lt;br /&gt;
 apt install mtd-utils&lt;br /&gt;
 mkdir -vp /mnt/fremantle&lt;br /&gt;
 ubiattach -p /dev/mtd5&lt;br /&gt;
 mount -t ubifs ubi:rootfs /mnt/fremantle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Old status table ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.15 || Mainline + PowerVR Patches: https://github.com/maemo-leste/n9xx-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Requires special hardware&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes || Firmware is non-free&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || USB Network, Mass Storage. OTG not working, although it might be possible&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || closed driver&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), but requires complex alsa configuration and currently no ucm support&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono - UI is WIP, see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || N/A || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, might require pulseaudio audio filters&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver needs some work&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A|| No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || evdev interface not supported in mce&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || Yes || Enable in alsamixer (Jack Function in alsamixer to TV OUT), enable with &amp;lt;code&amp;gt;xrandr --output TV --mode 800x480 --same-as LCD&amp;lt;/code&amp;gt;. Set PAL/NTSC with &amp;lt;code&amp;gt;xrandr --output TV --set SignalProperties PAL&amp;lt;/code&amp;gt;, and scale with &amp;lt;code&amp;gt;xrandr --output TV --set TVScale 90&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Broken || TX only (hardware limitation). Sending pulses causes a kernel oops&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~300mW || Device does not enter RET or OFF mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1274</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1274"/>
		<updated>2022-02-27T15:24:03Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Old status table */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|category=Supported&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
|headers=&lt;br /&gt;
|battery=1320mAh&lt;br /&gt;
|sw_kernel=5.1&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, no ucm, no speaker protection)&lt;br /&gt;
|sw_calls=WIP&lt;br /&gt;
|sw_sms=Yes, no UI&lt;br /&gt;
|sw_wifi=Yes, firmware required&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=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=300mW (needs kernel work)&lt;br /&gt;
|sw_standbytime=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
The installation consists of two steps: copying the image to the microsd card, and setting up the bootloader on the phone.&lt;br /&gt;
&lt;br /&gt;
=== Image installation ===&lt;br /&gt;
&lt;br /&gt;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card.&lt;br /&gt;
&lt;br /&gt;
If using a Windows machine, you can use [https://etcher.io/ Etcher]&lt;br /&gt;
&lt;br /&gt;
See the next section on how to boot. (using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613)&lt;br /&gt;
&lt;br /&gt;
=== Bootloader (U-Boot) setup ===&lt;br /&gt;
&lt;br /&gt;
==== Quick ====&lt;br /&gt;
&lt;br /&gt;
If you don't want to configure u-boot from Fremantle, or your Fremantle rootfs is broken), or you just want to install quickly:&lt;br /&gt;
&lt;br /&gt;
1. Either download 0xFFFF (binary for x86) from https://maedevu.maemo.org/images/n900/tools/ or build from source from https://github.com/pali/0xFFFF/&lt;br /&gt;
&lt;br /&gt;
2. Download u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
3. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: &amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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;&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type &amp;lt;code&amp;gt;run sdboot&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command&lt;br /&gt;
&lt;br /&gt;
'''(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)''')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
If you have a functional Fremantle installation, you can follow these steps instead:&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
&lt;br /&gt;
Run the following script: &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serial ==&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
Use this command line (specifically the part after rootwait):&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;
&lt;br /&gt;
* Speakers are enabled by default, but be careful of very high frequencies/levels - there are concerns regarding the possibility to blow them&lt;br /&gt;
&lt;br /&gt;
Also see: https://elinux.org/N900&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
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 80mA, which is quite a lot. On a good battery this will last for about 15 hours. Power management on the N900 is being worked on: https://github.com/maemo-leste/bugtracker/issues/170&lt;br /&gt;
&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_management&lt;br /&gt;
* https://wiki.maemo.org/N900_Hardware_Power_Consumption&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
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 Nokia N900. Don't detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don't attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don'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's fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It's how the battery calibration works in low level: it can't change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it's needed to repeat the calibration cycle several times to get more accurate value. It may take about 3-7 calibration cycles to get the proper mAh value for fully charged battery. If you spend some time on this process, you will get really accurate battery gauge and you will always know how much charge is remaining.&lt;br /&gt;
&lt;br /&gt;
Tip 1. If for any reason you want to reset the battery calibration value to see the message “Battery is not calibrated” again, you should remove the battery from the device for about 6 hours.&lt;br /&gt;
Tip 2. If you replace the battery, you may want to do 1-2 calibration cycles described above to update the gauge for your new battery.&lt;br /&gt;
&lt;br /&gt;
== Accessing MTD ==&lt;br /&gt;
&lt;br /&gt;
List devices:&lt;br /&gt;
 cat /proc/mtd&lt;br /&gt;
&lt;br /&gt;
Mount:&lt;br /&gt;
 apt install mtd-utils&lt;br /&gt;
 mkdir -vp /mnt/fremantle&lt;br /&gt;
 ubiattach -p /dev/mtd5&lt;br /&gt;
 mount -t ubifs ubi:rootfs /mnt/fremantle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Old status table ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.1 || Mainline + PowerVR Patches: https://github.com/maemo-leste/n9xx-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Requires special hardware&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes || Firmware is non-free&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || USB Network, Mass Storage. OTG not working, although it might be possible&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || closed driver&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), but requires complex alsa configuration and currently no ucm support&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono - UI is WIP, see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || N/A || no hardware&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, might require pulseaudio audio filters&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver needs some work&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A|| No hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || evdev interface not supported in mce&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || N/A || No hardware&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || Yes || Enable in alsamixer (Jack Function in alsamixer to TV OUT), enable with &amp;lt;code&amp;gt;xrandr --output TV --mode 800x480 --same-as LCD&amp;lt;/code&amp;gt;. Set PAL/NTSC with &amp;lt;code&amp;gt;xrandr --output TV --set SignalProperties PAL&amp;lt;/code&amp;gt;, and scale with &amp;lt;code&amp;gt;xrandr --output TV --set TVScale 90&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Broken || TX only (hardware limitation). Sending pulses causes a kernel oops&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || Needs complex v4l work, no leste integration&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~300mW || Device does not enter RET or OFF mode&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=1255</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=1255"/>
		<updated>2022-01-07T15:06:21Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Stuff to try */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Device&lt;br /&gt;
|image=[[File:Motorola Droid 4 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Motorola&lt;br /&gt;
|codename=Maserati XT894&lt;br /&gt;
|dimensions=127x67.3x12.7mm&lt;br /&gt;
|release_date=2012-02-10&lt;br /&gt;
|soc=TI OMAP4430&lt;br /&gt;
|dram=1024MB DDR2&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=960x540 4&amp;quot;&lt;br /&gt;
|video=PowerVR SGX540 &lt;br /&gt;
|audio=&lt;br /&gt;
|network=&lt;br /&gt;
|storage=16GB flash&lt;br /&gt;
|usb=&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=AK8975 compass, LIS3DH accelerometer, ISL29030 proximity and illuminance, TMP105 temperature sensor&lt;br /&gt;
|other=&lt;br /&gt;
|category=Supported&lt;br /&gt;
|sw_kernel=5.11.0&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=WIP&lt;br /&gt;
|sw_sms=Yes, no UI&lt;br /&gt;
|sw_wifi=Yes&lt;br /&gt;
|sw_ethernet=&lt;br /&gt;
|sw_irda=&lt;br /&gt;
|sw_2g3gdata=Yes&lt;br /&gt;
|sw_4g=No&lt;br /&gt;
|sw_bluetooth=Yes,  [[#Bluetooth|see notes]] &lt;br /&gt;
|sw_fmtx=No, but apparently exists, needs serdev kernel modules/drivers&lt;br /&gt;
|sw_fmrx=&lt;br /&gt;
|sw_nfc=&lt;br /&gt;
|sw_accelerometer=Yes&lt;br /&gt;
|sw_compass=Yes, no integration&lt;br /&gt;
|sw_gyro=&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't, the device should reboot and show kexecboot menu for a few seconds before it boots to Android.&lt;br /&gt;
&lt;br /&gt;
=== Install Maemo Leste to the sdcard ===&lt;br /&gt;
&lt;br /&gt;
Now, flash the Maemo Leste image to your sdcard:&lt;br /&gt;
&lt;br /&gt;
On Linux:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
sync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On Windows: Use Etcher&lt;br /&gt;
&lt;br /&gt;
Wait for sync to complete and insert MicroSD card into Droid4. Reboot the device and select Maemo Leste from the kexecboot menu.&lt;br /&gt;
&lt;br /&gt;
You should now see Maemo Leste booting up, and it will show you hildon-desktop after a minute.&lt;br /&gt;
&lt;br /&gt;
== Updating ==&lt;br /&gt;
&lt;br /&gt;
Normally you can just apt update &amp;amp;&amp;amp; apt dist-upgrade to update to the latest version. If for some reason this fails:&lt;br /&gt;
&lt;br /&gt;
* Poweroff device, grab the SD card&lt;br /&gt;
* Backup any important files&lt;br /&gt;
* Grab the latest image from https://phoenix.maemo.org/view/Images/&lt;br /&gt;
* Write it as before : xzcat maemo-leste-1.0-armhf-droid4-20190227.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The battery in Droid4 is not easily removable. If you got the device stuck, use this combo: power button + bottom volume key. You should hold them for about 7 seconds. Droid4 will then reboot.&lt;br /&gt;
&lt;br /&gt;
If Maemo is still running, you can also hold just the power button for ~10 seconds, and the device will run poweroff.&lt;br /&gt;
&lt;br /&gt;
Some users reported that Bluetooth kernel module interfere badly with the WiFi driver on their devices.&lt;br /&gt;
Blacklisting the module may help if you have such problems:&lt;br /&gt;
 echo &amp;quot;blacklist hci_uart&amp;quot; &amp;gt;&amp;gt; /etc/modprobe.d/blacklist.conf&lt;br /&gt;
&lt;br /&gt;
Also see [[Motorola_Droid_4/Modem]] [[Motorola_Droid_4/PowerVR]]&lt;br /&gt;
&lt;br /&gt;
Also see: http://elektranox.org/droid4/ and http://muru.com/linux/d4/&lt;br /&gt;
&lt;br /&gt;
&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 'xev' 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;
== 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&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stuff to try ==&lt;br /&gt;
&lt;br /&gt;
==== Using a battery without built-in sensors ====&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 ''exit 0'' 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 'hdd led' of the SD card on the capslock light&lt;br /&gt;
&lt;br /&gt;
==== Wifi ====&lt;br /&gt;
&lt;br /&gt;
The WL1285C Wifi chip in the droid 4 has no onboard nvmem to save its calibration parameters or its MAC address. Instead it gets these parameters from a configuration file provided by the kernel. By default a generic file is provided but for optimal range and a correct persistent MAC address a calibration procedure must be performed.&lt;br /&gt;
&lt;br /&gt;
Install necessary tools: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ti-utils-wilink6 droid4-wlanconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run calibration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo maserati-calibrate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Phone Call ====&lt;br /&gt;
&lt;br /&gt;
These can be used to talk to the modem manually... But we really should have ofono and sphone GUI doing that job. [[Status/Phone]] mentions current status. Make sure there is a SIM in the phone.&lt;br /&gt;
&lt;br /&gt;
Run this:&lt;br /&gt;
&lt;br /&gt;
Read modem output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /dev/motmdm1 &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Online modem:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf &amp;quot;AT+CFUN=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Connect to network:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf &amp;quot;AT+COPS=1\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Print connected network:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
printf &amp;quot;AT+COPS?\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&lt;br /&gt;
Turn off signal reporting:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# printf &amp;quot;AT+SCRN=0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dial a number:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf &amp;quot;ATD+1234567890\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hang up:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf &amp;quot;ATH\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer incoming call:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf &amp;quot;ATA\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio wise, in a pulsaudio of you choice switch to the make a phone call profile, and set the output device as desired.&lt;br /&gt;
&lt;br /&gt;
==== 3G Internet ====&lt;br /&gt;
&lt;br /&gt;
Using qmicli:&lt;br /&gt;
&lt;br /&gt;
 qmicli -d /dev/cdc-wdm0 --wds-follow-network --wds-start-network=apn=internet.t-mobile.cz&lt;br /&gt;
 route del default&lt;br /&gt;
 sudo ifconfig wwan0 up&lt;br /&gt;
 dhclient wwan0&lt;br /&gt;
&lt;br /&gt;
Alternatively if updated to devel icd2 and the maemo gui should allow 3g data connection, if the sim is unlocked and the relevant packages are installed.&lt;br /&gt;
&lt;br /&gt;
==== GPS ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
modprobe gnss-motmdm and point gpsd to use /dev/gnss0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
22:30 &amp;lt; tmlind&amp;gt; hmm there'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's how to send USSD to query balance for example: printf &amp;quot;AT+CUSD=1,#999#,0\r&amp;quot; &amp;gt; /dev/motmdm1&lt;br /&gt;
22:47 &amp;lt; tmlind&amp;gt; fyi, for parsing incoming USSD, this web interface works if set to utf-8: &lt;br /&gt;
                https://www.mobilefish.com/services/latin_utf_base64_to_hex/latin_utf_base64_to_hex.php#text_hex_output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HDMI ====&lt;br /&gt;
Move output to external 1080p monitor.  Disabling DSI-1 output gets xorg pointer displayed on HDMI, for use with a mouse or barrier.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output HDMI-1 --mode 1920x1080 --output DSI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return to internal touchscreen display.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xrandr --output DSI-1 --auto --rotate right --output HDMI-1 --off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Keyboard / Mouse sharing with PC ====&lt;br /&gt;
To use droid4 while working at desktop it can be convenient to share mouse and keyboard of the host pc with droid4.  &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[https://github.com/debauchee/barrier Barrier software-KVM switch]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Developers and testers may wish to disable the googley bits before compiling.&lt;br /&gt;
&lt;br /&gt;
==== 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 'offline mode'.&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;
== Old 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 || 5.9.0 || Mainline + some patches not yet in mainline - see https://github.com/maemo-leste/droid4-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || On MicroUSB port, requires [[#Serial Cable|special cable]]&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || OTG and USB network&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes || Slightly modified keyboard layout, see https://www.spinics.net/lists/linux-omap/msg135137.html (TLDR; Shift key produces CTRL, SYM produces ALT, and Caps lock produces SHIFT)&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || PowerVR SGX540 (closed driver) - https://github.com/maemo-leste/pvr-omap4/&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Capacitive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Implemented with Pulseaudio and UCM files&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono, no UI yet - see https://github.com/maemo-leste/connui-cellular/&lt;br /&gt;
|-&lt;br /&gt;
| 4G data || No || Needs kernel work&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono. Needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || Yes || Works with ofono (good call quality, too), needs Leste UI&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || Yes || Needs firmware - install latest firmware-ti-connectivity - See also https://github.com/maemo-leste/bugtracker/issues/290. Due to interference with WiFi, load driver manually, AFTER wifi module loaded&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || No || Apparently exists, and will need serdev kernel modules/drivers&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || Not yet ||&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available in /sys, and as input device via iio-uinput&lt;br /&gt;
|-&lt;br /&gt;
| Compass || Yes || Available in /sys (after loading ak8975 module. No Leste integration applications using it yet)&lt;br /&gt;
|-&lt;br /&gt;
| Gyro || N/A || &lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Ambient Light Sensor || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Vibration Motor || Yes || &lt;br /&gt;
|-&lt;br /&gt;
| HDMI-out || Yes || No UI integration&lt;br /&gt;
|-&lt;br /&gt;
| TV-out || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| GPS || Yes || Works with gpsd but is not integrated yet, see [[#GPS|GPS]]&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Camera || No || See https://elektranox.org/2018/02/0025-droid-camera/&lt;br /&gt;
|-&lt;br /&gt;
| Idle power consumption || ~120mW || Needs sim inserted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Getting_Started&amp;diff=1117</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Getting_Started&amp;diff=1117"/>
		<updated>2021-06-16T16:23:20Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: Make cal issue clear&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installation to SD Card =&lt;br /&gt;
&lt;br /&gt;
After updating device firmware with included script (eg. flash-droid-4-fw.sh):&lt;br /&gt;
&lt;br /&gt;
Download an image appropriate for your device from [http://maedevu.maemo.org/images/]&lt;br /&gt;
&lt;br /&gt;
Insert a microsd card into your computer and find the device with cat /proc/partitions&lt;br /&gt;
&lt;br /&gt;
Decompress and write the image to your microsd card device:&lt;br /&gt;
&lt;br /&gt;
xzcat maemo-leste-VERSION.img.xz | sudo dd status=progress bs=1M of=/dev/MICROSDCARD-DEVICE&lt;br /&gt;
&lt;br /&gt;
= Expand the root partition to fill SD card =&lt;br /&gt;
&lt;br /&gt;
A helpful script is included to expand the root partition to fill the microSD card.&lt;br /&gt;
After booting and logging in to root, execute: /etc/expandcard.sh&lt;br /&gt;
&lt;br /&gt;
This will expand the root partition to fill the microSD card using resize2fs.&lt;br /&gt;
&lt;br /&gt;
= (SSH) Login =&lt;br /&gt;
&lt;br /&gt;
User credentials are: '''user:user'''&lt;br /&gt;
&lt;br /&gt;
Root credentials are: '''root:toor'''&lt;br /&gt;
&lt;br /&gt;
You should prefer logging in as user and then escalating to root with sudo as necessary.&lt;br /&gt;
&lt;br /&gt;
In images newer than 17 January 2021, root SSH is disabled by default.&lt;br /&gt;
&lt;br /&gt;
= Useful Bits = &lt;br /&gt;
== Lock Code (applies to N900 only) ==&lt;br /&gt;
* Default lockcode is &amp;quot;12345&amp;quot;&lt;br /&gt;
* Lockcode can only be changed/used on [[Nokia_N900|N900]], since the current implementation depends on a special &amp;quot;cal&amp;quot; partition. QEMU and all other Leste supported devices do not have it. (TODO: Confirm if N9 and N950 have it too)&lt;br /&gt;
&lt;br /&gt;
= More RAM =&lt;br /&gt;
&lt;br /&gt;
You can install '''zram-tools''' from the repo, and edit '''/etc/default/zramswap''' as necessary. It's probably convenient to set allocation to 1024.&lt;br /&gt;
hildon-base (and it's hildon-env-setup initscript) are aware if zramswap in installed and will activate zram.&lt;br /&gt;
If you have an image older than 17 January 2021, you should remove the existing zram initscript and install zram-tools to utilize this functionality.&lt;br /&gt;
&lt;br /&gt;
Remove it with:&lt;br /&gt;
&lt;br /&gt;
 rc-update del zram&lt;br /&gt;
 rm /etc/init.d/zram&lt;br /&gt;
&lt;br /&gt;
= Tweaking =&lt;br /&gt;
&lt;br /&gt;
See [[Tweaking]]&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1082</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=1082"/>
		<updated>2021-05-23T13:00:58Z</updated>

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

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

		<summary type="html">&lt;p&gt;Sicelo: /* The git tag */&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://github.com/maemo-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 '''debian''' 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 '''9''' and preferably it should use '''debhelper'''.&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 '''debian/changelog''' 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 '''only''' 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 '''not''' &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 '''debian''' directory should contain a file called '''gbp.conf''' 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 '''maemo/$codename''' 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 '''git''' or '''apt source &amp;lt;packagename&amp;gt;'''&lt;br /&gt;
#. Install build dependencies (run from source directory): '''sudo apt-get build-dep .'''&lt;br /&gt;
#. Build a package using '''dpkg-buildpackage -uc -b'''&lt;br /&gt;
&lt;br /&gt;
You can now install the package you have just built with '''dpkg -i somename.deb'''&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://github.com/maemo-leste/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://github.com/maemo-leste and a current list of all the packages in Jenkins can be found here:&lt;br /&gt;
&lt;br /&gt;
https://github.com/maemo-leste/jenkins-integration/blob/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 '''only''' 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'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's debian directory, add your PNG icon as '''maemo-icon.png'''.&lt;br /&gt;
Next, have your Build-Depends contain '''maemo-system-services-dev'''. maemo-system-services-dev will pull in the debhelper plugin.&lt;br /&gt;
Following this, in your '''debian/control''', under your '''Package''', 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 '''debian/rules''', assuming you'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 '''debian/source/include-binaries'''&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>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Building_Packages&amp;diff=990</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=990"/>
		<updated>2021-04-14T16:02:25Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* The git tag */&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://github.com/maemo-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 '''debian''' 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 '''9''' and preferably it should use '''debhelper'''.&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 '''debian/changelog''' 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 '''only''' 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 '''not''' &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&lt;br /&gt;
&lt;br /&gt;
== gbp.conf ==&lt;br /&gt;
&lt;br /&gt;
Your '''debian''' directory should contain a file called '''gbp.conf''' 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 '''maemo/$codename''' 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 '''git''' or '''apt source &amp;lt;packagename&amp;gt;'''&lt;br /&gt;
#. Install build dependencies (run from source directory): '''sudo apt-get build-dep .'''&lt;br /&gt;
#. Build a package using '''dpkg-buildpackage -uc -b'''&lt;br /&gt;
&lt;br /&gt;
You can now install the package you have just built with '''dpkg -i somename.deb'''&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://github.com/maemo-leste/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://github.com/maemo-leste and a current list of all the packages in Jenkins can be found here:&lt;br /&gt;
&lt;br /&gt;
https://github.com/maemo-leste/jenkins-integration/blob/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 '''only''' 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'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's debian directory, add your PNG icon as '''maemo-icon.png'''.&lt;br /&gt;
Next, have your Build-Depends contain '''maemo-system-services-dev'''. maemo-system-services-dev will pull in the debhelper plugin.&lt;br /&gt;
Following this, in your '''debian/control''', under your '''Package''', 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 '''debian/rules''', assuming you'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 '''debian/source/include-binaries'''&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>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Packaging&amp;diff=989</id>
		<title>Packaging</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Packaging&amp;diff=989"/>
		<updated>2021-04-13T22:33:21Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Workflow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The packages we build for Maemo Leste are hosted on Github: https://github.com/maemo-leste&lt;br /&gt;
&lt;br /&gt;
We use the Jenkins CI https://phoenix.maemo.org along with helper scripts that can be found at https://github.com/maemo-leste/jenkins-integration&lt;br /&gt;
The base logic of buildng Debian packages in Jenkins comes from https://jenkins-debian-glue.org&lt;br /&gt;
&lt;br /&gt;
= Workflow =&lt;br /&gt;
&lt;br /&gt;
Our workflow consists of having the packages in Git, along with respective branches.&lt;br /&gt;
The master branch in git should represent the latest development. When the sources are ready, we create a new branch called &amp;quot;maemo/ascii&amp;quot;, which represents the Devuan suite we base it on.&lt;br /&gt;
&lt;br /&gt;
Being git-based, our packages require the gbp.conf file inside the debian directory.&lt;br /&gt;
&lt;br /&gt;
All of our packages contain the exact same gbp.conf, which is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
upstream-tag=%(version)s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is used by gbp, which in turn is used by jenkins-debian-glue.&lt;br /&gt;
&lt;br /&gt;
The rest is standard Debian packaging.&lt;br /&gt;
&lt;br /&gt;
= Initial packaging =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
= Updating a package =&lt;br /&gt;
&lt;br /&gt;
TODO&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=User:Sicelo/Snippets&amp;diff=970</id>
		<title>User:Sicelo/Snippets</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=User:Sicelo/Snippets&amp;diff=970"/>
		<updated>2021-03-27T14:10:06Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Possible N900 USB host mode&lt;br /&gt;
&lt;br /&gt;
  echo 'force host full-speed' &amp;gt; /sys/kernel/debug/musb-hdrc.0.auto/testmode&lt;br /&gt;
  echo host &amp;gt; /sys/bus/platform/devices/musb-hdrc.0.auto/mode&lt;br /&gt;
  echo 1 &amp;gt; /sys/kernel/debug/musb-hdrc.0.auto/softconnect&lt;br /&gt;
  echo disconnect &amp;gt; /sys/bus/platform/devices/musb-hdrc.0.auto/musb-hdrc.0.auto/soft_connect&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Force N900 to stop charging while connected to power&lt;br /&gt;
&lt;br /&gt;
  echo off &amp;gt; /sys/class/power_supply/bq24150a-0/mode&lt;br /&gt;
&lt;br /&gt;
N900 bluetooth&lt;br /&gt;
&lt;br /&gt;
  00:26 &amp;lt; sicelo&amp;gt; sre: hi. (this isn't too important compared to the task at hand, but) iirc getting N900 bluetooth working with mainline needed some serdev work. do you know what still &lt;br /&gt;
                needs to be done?&lt;br /&gt;
  00:28 &amp;lt; sre&amp;gt; enabling CONFIG_BT_HCIUART_NOKIA should give you a somewhat working bluetooth device. IIRC there were some issues that need to be debugged.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Application wishlist from Wizzup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Maybe fun to port:&lt;br /&gt;
 &lt;br /&gt;
desktop:&lt;br /&gt;
 &lt;br /&gt;
battery-eye (in vm al)&lt;br /&gt;
catorise http://maemo.org/downloads/product/Maemo5/catorise/ (evt &amp;quot;Debian&amp;quot; category)&lt;br /&gt;
live wallpaper? http://maemo.org/downloads/product/Maemo5/live-wallpaper/&lt;br /&gt;
datetoday home widget http://maemo.org/downloads/product/Maemo5/datetoday-home-widget/&lt;br /&gt;
personal gprs monitor maemo.org/downloads/product/Maemo5/personal-gprs-mon/&lt;br /&gt;
humanity theme http://maemo.org/downloads/product/Maemo5/humanity-theme/&lt;br /&gt;
DONE personal ip address http://maemo.org/downloads/product/Maemo5/personal-ip-address/&lt;br /&gt;
custom operator name widget http://maemo.org/downloads/product/Maemo5/custom-operator-name-widget/&lt;br /&gt;
advanced clock http://maemo.org/downloads/product/Maemo5/advanced-clock-plugin/&lt;br /&gt;
app search widget http://maemo.org/downloads/product/Maemo5/app-search-widget/&lt;br /&gt;
qtlockscreen (?) and qtlockscreenconfig -- http://maemo.org/downloads/product/Maemo5/qtlockscreenconfig/&lt;br /&gt;
DONE http://maemo.org/downloads/product/Maemo5/miku-theme/&lt;br /&gt;
 &lt;br /&gt;
education:&lt;br /&gt;
 &lt;br /&gt;
dorian http://maemo.org/downloads/product/Maemo5/dorian/&lt;br /&gt;
evopedia http://maemo.org/downloads/product/Maemo5/evopedia/&lt;br /&gt;
e-book reader http://maemo.org/downloads/product/Maemo5/epubreader/&lt;br /&gt;
gtranslate? http://maemo.org/downloads/product/Maemo5/gtranslate/ - gtk/glib/espeak&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
games&lt;br /&gt;
 &lt;br /&gt;
smw - http://maemo.org/downloads/product/Maemo5/smw/&lt;br /&gt;
warmux - http://maemo.org/downloads/product/Maemo5/wormux/&lt;br /&gt;
battle gweled - http://maemo.org/downloads/product/Maemo5/battlegweled/&lt;br /&gt;
drnoksnes (!!!)&lt;br /&gt;
freecell4maemo ?&lt;br /&gt;
prboom&lt;br /&gt;
bullshit bingo http://maemo.org/downloads/product/Maemo5/bullshitbingo/&lt;br /&gt;
puzzles http://maemo.org/downloads/product/Maemo5/sgt-puzzles/&lt;br /&gt;
rocks n diamond shttp://maemo.org/downloads/product/Maemo5/rocksndiamonds/&lt;br /&gt;
uae4all goed laten werken&lt;br /&gt;
neverball - http://maemo.org/downloads/product/Maemo5/neverball/&lt;br /&gt;
 &lt;br /&gt;
graphics&lt;br /&gt;
 &lt;br /&gt;
mypaint (?)&lt;br /&gt;
raw viewer? http://maemo.org/downloads/product/Maemo5/mrawviewer/&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
multimedia&lt;br /&gt;
 &lt;br /&gt;
Boel coole/nuttige music players&lt;br /&gt;
 &lt;br /&gt;
qspot http://maemo.org/downloads/product/Maemo5/qspot/&lt;br /&gt;
recorder http://maemo.org/downloads/product/Maemo5/recorder/&lt;br /&gt;
qmidictl http://maemo.org/downloads/product/Maemo5/qmidictl/&lt;br /&gt;
maetronome http://maemo.org/downloads/product/Maemo5/maetronome/&lt;br /&gt;
 &lt;br /&gt;
location and navigation&lt;br /&gt;
 &lt;br /&gt;
modrana&lt;br /&gt;
marble? http://maemo.org/downloads/product/Maemo5/marble/&lt;br /&gt;
marble maps? http://maemo.org/downloads/product/Maemo5/marble-maps/&lt;br /&gt;
maep for sure http://maemo.org/downloads/product/Maemo5/maep/&lt;br /&gt;
gps track logger http://maemo.org/downloads/product/Maemo5/gps-data-logger/&lt;br /&gt;
OSM2Go - http://maemo.org/downloads/product/Maemo5/osm2go/&lt;br /&gt;
interessant http://maemo.org/downloads/product/Maemo5/snuggle/&lt;br /&gt;
 &lt;br /&gt;
internet and networking&lt;br /&gt;
 &lt;br /&gt;
google voice dialer written in Qt http://maemo.org/downloads/product/Maemo5/qgvdial/&lt;br /&gt;
meer google voice http://maemo.org/downloads/product/Maemo5/dialcentral/&lt;br /&gt;
twitter clienter http://maemo.org/downloads/product/Maemo5/khweeteur/&lt;br /&gt;
zoutube -- http://maemo.org/downloads/product/Maemo5/zoutube/&lt;br /&gt;
witter -- twitter client in python http://maemo.org/downloads/product/Maemo5/witter/&lt;br /&gt;
vncviewer -- http://maemo.org/downloads/product/Maemo5/vncviewer/&lt;br /&gt;
wifi eye http://maemo.org/downloads/product/Maemo5/wifieye/&lt;br /&gt;
qnetman -- http://maemo.org/downloads/product/Maemo5/qnetman/&lt;br /&gt;
xchat irc http://maemo.org/downloads/product/Maemo5/xchat/&lt;br /&gt;
 &lt;br /&gt;
office&lt;br /&gt;
 &lt;br /&gt;
xournal http://maemo.org/downloads/product/Maemo5/xournal/&lt;br /&gt;
quicknote http://maemo.org/downloads/product/Maemo5/quicknote/&lt;br /&gt;
mebook http://maemo.org/downloads/product/Maemo5/mebook/&lt;br /&gt;
portabase? http://maemo.org/downloads/product/Maemo5/portabase/&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
other&lt;br /&gt;
 &lt;br /&gt;
--&lt;br /&gt;
 &lt;br /&gt;
science&lt;br /&gt;
 &lt;br /&gt;
orrery -- http://maemo.org/downloads/product/Maemo5/orrery/&lt;br /&gt;
accdisplay http://maemo.org/downloads/product/Maemo5/accdisplay/&lt;br /&gt;
 &lt;br /&gt;
system&lt;br /&gt;
 &lt;br /&gt;
(lots of themes)&lt;br /&gt;
 &lt;br /&gt;
theme-customizer -- http://maemo.org/downloads/product/Maemo5/theme-customizer/&lt;br /&gt;
matrix theme -- http://maemo.org/downloads/product/Maemo5/matrix-pr12/&lt;br /&gt;
borg sounds -- http://maemo.org/downloads/product/Maemo5/borg-sounds/&lt;br /&gt;
okuda theme -- http://maemo.org/downloads/product/Maemo5/hildon-theme-okuda/&lt;br /&gt;
cellular modem control buttons -- http://maemo.org/downloads/product/Maemo5/cell-modem-ui/&lt;br /&gt;
qtlockscreen -- http://maemo.org/downloads/product/Maemo5/qtlockscreen/&lt;br /&gt;
maemeemo theme -- http://maemo.org/downloads/product/Maemo5/maemeemo-theme/&lt;br /&gt;
 &lt;br /&gt;
extra translations / languages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other stuff to do/test:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
- N900 flashlight&lt;br /&gt;
- WiFi direct (p2p) on N900 &amp;amp; Droid 4 - https://kasiviswanathanblog.wordpress.com/wifi-p2p-in-linux/&lt;br /&gt;
- WiFi monitor mode (N900 &amp;amp; Droid 4)&lt;br /&gt;
- WiFi hotspot (Droid 4)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://gavv.github.io/articles/pulseaudio-under-the-hood/  &amp;lt;-- might be handy for voice calls&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=IRC_channel&amp;diff=967</id>
		<title>IRC channel</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=IRC_channel&amp;diff=967"/>
		<updated>2021-03-13T15:00:52Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: info for matrix users&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We are on '''irc.freenode.net''' ; channel '''#maemo-leste'''&lt;br /&gt;
&lt;br /&gt;
You can connect from your browser using the [https://webchat.freenode.net/ webchat]. However, a dedicated IRC client is recommended for long-term use.&lt;br /&gt;
&lt;br /&gt;
We want everyone to feel free in our channel, but also remain productive. Therefore, while we do not 'police' the channel, it is also good etiquette to remain on-topic as far as possible.&lt;br /&gt;
&lt;br /&gt;
If you use Matrix, then you can connect to the IRC channel via Freenode's bridge. Simply join the room '''#freenode_#maemo-leste:matrix.org'''. However, please note the following caveats when using the bridge:&lt;br /&gt;
* Matrix allows a message to have multiple lines (i.e. include returns). This does not look good on IRC clients. Therefore, please refrain from sending multi-line messages&lt;br /&gt;
* Matrix allows sending media and files within the chat, while IRC does not. On IRC, this will appear as an URL. Please do not send any media or files directly into an IRC room. Use a pastebin, and paste the URL to the item, and include a brief explanation about the link. Otherwise no one might be willing to open it&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=957</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=957"/>
		<updated>2021-01-29T16:19:23Z</updated>

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

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

		<summary type="html">&lt;p&gt;Sicelo: specify arch explicitly&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maemo Leste development is split up in a few different places.&lt;br /&gt;
&lt;br /&gt;
== Communication and organising ==&lt;br /&gt;
&lt;br /&gt;
* Our https://maemo-leste.github.io website is where we post (news) updates, as well as on talk.maemo.org (see this subforum https://talk.maemo.org/forumdisplay.php?f=66 and this maemo.org thread: https://talk.maemo.org/showthread.php?t=100192)&lt;br /&gt;
* There is the issue tracker; for filing bugs and keeping track of issues/milestones. https://github.com/maemo-leste/bugtracker&lt;br /&gt;
* The day-to-day development and user chatter mostly takes place in the [[IRC channel]]&lt;br /&gt;
* We also have a mailing list, at [https://lists.dyne.org/lurker/list/maemo-leste.en.html https://lists.dyne.org/lurker/list/maemo-leste.en.html]&lt;br /&gt;
* This wiki: for documenting the status of various long-running projects, status per device, etc.&lt;br /&gt;
&lt;br /&gt;
== Task Summary ==&lt;br /&gt;
&lt;br /&gt;
For current (semi) impactful tasks, see&lt;br /&gt;
&lt;br /&gt;
[[Development/Tasks]]&lt;br /&gt;
&lt;br /&gt;
== Codename ==&lt;br /&gt;
&lt;br /&gt;
* Maemo Leste is currently based on Devuan Beowulf, which is based on Debian Buster.&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
&lt;br /&gt;
* [[Development/Porting Packages]]&lt;br /&gt;
* [[Development/Building Packages]]&lt;br /&gt;
* [[Development/Modified Software]]&lt;br /&gt;
* [[Development/Device Bringup]]&lt;br /&gt;
* https://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide&lt;br /&gt;
&lt;br /&gt;
== Technical ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All our git repositories can be found here: https://github.com/maemo-leste&lt;br /&gt;
&lt;br /&gt;
=== Jenkins ===&lt;br /&gt;
&lt;br /&gt;
To aid development and provide &amp;quot;continous integration&amp;quot; we have a build server, which takes a git repository and builds software and packages it, and will automatically make said package end up in Maemo Leste repositories. This is done by Jenkins, and the instance can be found here: https://phoenix.maemo.org/&lt;br /&gt;
&lt;br /&gt;
=== Developing on a device ===&lt;br /&gt;
&lt;br /&gt;
Actual development is mostly done from within Maemo Leste itself. (For Maemo Fremantle developers, this might sound weird, but there is essentially no need for a 'scratchbox' type VM)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current developers mostly work in a [[Virtual_Machine|Virtual Machine]] or on a [[Raspberry Pi 2|Raspberry Pi]].&lt;br /&gt;
&lt;br /&gt;
=== Building a Maemo Leste image ===&lt;br /&gt;
&lt;br /&gt;
See https://leste.maemo.org/Image_Builder&lt;br /&gt;
&lt;br /&gt;
=== Crossbuilding ===&lt;br /&gt;
&lt;br /&gt;
Multiarch is an ability present on modern Debian systems that allows you to build native packages for different architectures. This is nice because you can build packages for an ARM based phone using the full power of your x86 based PC/Mac/Notebook or a server.&lt;br /&gt;
&lt;br /&gt;
Here we show how you can easily setup a multiarch environment and build a native package for Maemo Leste running on Nokia N900. We are going to make a container (chroot) for this job. It's because we don't want to pollute our main system.&lt;br /&gt;
&lt;br /&gt;
 # Make a container for our development system&lt;br /&gt;
 DIR=/var/lib/container/stretch&lt;br /&gt;
 sudo apt-get install qemu-user-static debootstrap &amp;amp;&amp;amp;&lt;br /&gt;
 sudo debootstrap --arch=armhf stretch $DIR http://deb.debian.org/debian &amp;amp;&amp;amp;&lt;br /&gt;
 echo &amp;quot;strech_cross&amp;quot; | sudo tee $DIR/etc/debian_chroot &amp;amp;&amp;amp;&lt;br /&gt;
 sudo systemd-nspawn --bind /usr/bin/qemu-arm-static -D $DIR&lt;br /&gt;
 &lt;br /&gt;
 # Setup build environment inside the container&lt;br /&gt;
 cat &amp;gt;&amp;gt; ~/.bashrc &amp;lt;&amp;lt; EOF &amp;amp;&amp;amp;&lt;br /&gt;
 export PKG_CONFIG_PATH=/usr/lib/pkgconfig&lt;br /&gt;
 export CC=arm-linux-gnueabihf-gcc&lt;br /&gt;
 export JOBS=$(grep processor /proc/cpuinfo | wc -l)&lt;br /&gt;
 EOF&lt;br /&gt;
 dpkg --add-architecture armhf &amp;amp;&amp;amp;&lt;br /&gt;
 apt-get -y install --no-install-recommends build-essential crossbuild-essential-armhf ca-certificates &amp;amp;&amp;amp;&lt;br /&gt;
 cat &amp;gt;&amp;gt; /etc/apt/sources.list &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 deb http://maedevu.maemo.org/leste ascii main contrib non-free n900&lt;br /&gt;
 deb http://maedevu.maemo.org/leste ascii-devel main contrib non-free n900&lt;br /&gt;
 &lt;br /&gt;
 deb-src http://deb.debian.org/debian stretch main&lt;br /&gt;
 deb-src http://maedevu.maemo.org/leste ascii main contrib non-free n900&lt;br /&gt;
 deb-src http://maedevu.maemo.org/leste ascii-devel main contrib non-free n900&lt;br /&gt;
 EOF&lt;br /&gt;
 wget https://maedevu.maemo.org/testing-key.asc &amp;amp;&amp;amp;&lt;br /&gt;
 apt-key add testing-key.asc &amp;amp;&amp;amp;&lt;br /&gt;
 rm -f testing-key.asc &amp;amp;&amp;amp;&lt;br /&gt;
 rm -f /var/cache/apt/archives/*.deb &amp;amp;&amp;amp;&lt;br /&gt;
 apt-get update &amp;amp;&amp;amp;&lt;br /&gt;
 exec bash&lt;br /&gt;
 &lt;br /&gt;
 # Build Xorg for Nokia N900&lt;br /&gt;
 apt-get source xserver-xorg-core &amp;amp;&amp;amp;&lt;br /&gt;
 cd xorg-server-1.19.2 &amp;amp;&amp;amp;&lt;br /&gt;
 wget https://raw.githubusercontent.com/buildroot/buildroot/88e0f214dcb7c2a99a4425a70673d2aa5f48d720/package/x11r7/xserver_xorg-server/1.20.4/0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch &amp;amp;&amp;amp;&lt;br /&gt;
 mv -v 0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch debian/patches &amp;amp;&amp;amp;&lt;br /&gt;
 echo -e &amp;quot;# crossbuild fix\n0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch&amp;quot; &amp;gt;&amp;gt; debian/patches/series &amp;amp;&amp;amp;&lt;br /&gt;
 apt-get -y build-dep -a armhf . &amp;amp;&amp;amp;&lt;br /&gt;
 time dpkg-buildpackage -aarmhf -j$JOBS -b &amp;amp;&amp;amp;&lt;br /&gt;
 echo OK || echo FAIL&lt;br /&gt;
&lt;br /&gt;
To login the container later:&lt;br /&gt;
 sudo systemd-nspawn --bind /usr/bin/qemu-arm-static -D /var/lib/container/stretch&lt;br /&gt;
&lt;br /&gt;
To remove the container:&lt;br /&gt;
 sudo rm -fr /var/lib/container/stretch&lt;br /&gt;
&lt;br /&gt;
=== Cross-distro solution for development inside an ARM/ARM64 chroot on a PC ===&lt;br /&gt;
&lt;br /&gt;
It's possible to set up an emulated chroot development environment for ARM on x86/amd64 that will work on almost any Linux distro with just a few simple steps.  This will work for systemd-less distros including Devuan and even Maemo Leste on x86/amd64.  This guide provides an example for how to set up a generic ARM64 development chroot on a Debian-based distro.  This method can similarly be used with images (tarballs) for other devices.&lt;br /&gt;
&lt;br /&gt;
1. Install the QEMU full system emulation static binaries and [http://binfmt-support.nongnu.org/ support for foreign binaries]:&lt;br /&gt;
&lt;br /&gt;
 $ sudo apt-get install qemu-user-static binfmt-support&lt;br /&gt;
&lt;br /&gt;
The installation should register ARM binaries for automatic execution via QEMU.  You can verify this with '''update-binfmts''':&lt;br /&gt;
&lt;br /&gt;
 $ sudo update-binfmts --display qemu-arm&lt;br /&gt;
 qemu-arm (enabled):&lt;br /&gt;
      package = qemu-user-static&lt;br /&gt;
         type = magic&lt;br /&gt;
       offset = 0&lt;br /&gt;
        magic = \x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00&lt;br /&gt;
         mask = \xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff&lt;br /&gt;
  interpreter = /usr/bin/qemu-arm-static&lt;br /&gt;
     detector =&lt;br /&gt;
&lt;br /&gt;
2. Find the [http://maedevu.maemo.org/images/arm64-generic/ latest] Maemo Leste ARM64 tarball and download and extract it:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir leste-arm64&lt;br /&gt;
 $ cd leste-arm64&lt;br /&gt;
 $ curl http://maedevu.maemo.org/images/arm64-generic/20190226/maemo-leste-1.0-arm64-generic-20190226.tar.gz | gunzip -c | sudo tar xvf -&lt;br /&gt;
&lt;br /&gt;
3. From the same directory, configure the chroot with a few resources from your host system:&lt;br /&gt;
&lt;br /&gt;
 $ sudo mount -t proc proc proc&lt;br /&gt;
 $ sudo mount -o bind /dev dev&lt;br /&gt;
 $ sudo mount -o bind /dev/pts dev/pts&lt;br /&gt;
&lt;br /&gt;
4. From the same directory, create a symlink for the mount table:&lt;br /&gt;
&lt;br /&gt;
 $ sudo ln -s /proc/mounts etc/mtab&lt;br /&gt;
&lt;br /&gt;
5. From the same directory, set the locale, enter the chroot and switch to the unprivileged user:&lt;br /&gt;
&lt;br /&gt;
 $ sudo LC_ALL=C chroot . /bin/su - user&lt;br /&gt;
&lt;br /&gt;
You'll now be ready to use your Maemo Leste ARM64 development environment:&lt;br /&gt;
&lt;br /&gt;
 $ uname -m&lt;br /&gt;
 aarch64&lt;br /&gt;
&lt;br /&gt;
Once you have finished with it, you can exit and unmount the resources you previously mounted:&lt;br /&gt;
&lt;br /&gt;
 $ exit&lt;br /&gt;
 $ sudo umount dev/pts dev proc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
* Discuss where people look to pick up issues (clear answer is the bugtracker, but still)&lt;br /&gt;
* How people can make changes and how to send them in&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=870</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=870"/>
		<updated>2020-11-27T21:23:22Z</updated>

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

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

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

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

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

		<summary type="html">&lt;p&gt;Sicelo: n900 bluetooth&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Possible N900 USB host mode&lt;br /&gt;
&lt;br /&gt;
  echo 'force host full-speed' &amp;gt; /sys/kernel/debug/musb-hdrc.0.auto/testmode&lt;br /&gt;
  echo host &amp;gt; /sys/bus/platform/devices/musb-hdrc.0.auto/mode&lt;br /&gt;
  echo 1 &amp;gt; /sys/kernel/debug/musb-hdrc.0.auto/softconnect&lt;br /&gt;
  echo disconnect &amp;gt; /sys/bus/platform/devices/musb-hdrc.0.auto/musb-hdrc.0.auto/soft_connect&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Force N900 to stop charging while connected to power&lt;br /&gt;
&lt;br /&gt;
  echo off &amp;gt; /sys/class/power_supply/bq24150a-0/mode&lt;br /&gt;
&lt;br /&gt;
N900 bluetooth&lt;br /&gt;
&lt;br /&gt;
  00:26 &amp;lt; sicelo&amp;gt; sre: hi. (this isn't too important compared to the task at hand, but) iirc getting N900 bluetooth working with mainline needed some serdev work. do you know what still &lt;br /&gt;
                needs to be done?&lt;br /&gt;
  00:28 &amp;lt; sre&amp;gt; enabling CONFIG_BT_HCIUART_NOKIA should give you a somewhat working bluetooth device. IIRC there were some issues that need to be debugged.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Application wishlist from Wizzup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Maybe fun to port:&lt;br /&gt;
 &lt;br /&gt;
desktop:&lt;br /&gt;
 &lt;br /&gt;
battery-eye (in vm al)&lt;br /&gt;
catorise http://maemo.org/downloads/product/Maemo5/catorise/ (evt &amp;quot;Debian&amp;quot; category)&lt;br /&gt;
live wallpaper? http://maemo.org/downloads/product/Maemo5/live-wallpaper/&lt;br /&gt;
datetoday home widget http://maemo.org/downloads/product/Maemo5/datetoday-home-widget/&lt;br /&gt;
personal gprs monitor maemo.org/downloads/product/Maemo5/personal-gprs-mon/&lt;br /&gt;
humanity theme http://maemo.org/downloads/product/Maemo5/humanity-theme/&lt;br /&gt;
DONE personal ip address http://maemo.org/downloads/product/Maemo5/personal-ip-address/&lt;br /&gt;
custom operator name widget http://maemo.org/downloads/product/Maemo5/custom-operator-name-widget/&lt;br /&gt;
advanced clock http://maemo.org/downloads/product/Maemo5/advanced-clock-plugin/&lt;br /&gt;
app search widget http://maemo.org/downloads/product/Maemo5/app-search-widget/&lt;br /&gt;
qtlockscreen (?) and qtlockscreenconfig -- http://maemo.org/downloads/product/Maemo5/qtlockscreenconfig/&lt;br /&gt;
DONE http://maemo.org/downloads/product/Maemo5/miku-theme/&lt;br /&gt;
 &lt;br /&gt;
education:&lt;br /&gt;
 &lt;br /&gt;
dorian http://maemo.org/downloads/product/Maemo5/dorian/&lt;br /&gt;
evopedia http://maemo.org/downloads/product/Maemo5/evopedia/&lt;br /&gt;
e-book reader http://maemo.org/downloads/product/Maemo5/epubreader/&lt;br /&gt;
gtranslate? http://maemo.org/downloads/product/Maemo5/gtranslate/ - gtk/glib/espeak&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
games&lt;br /&gt;
 &lt;br /&gt;
smw - http://maemo.org/downloads/product/Maemo5/smw/&lt;br /&gt;
warmux - http://maemo.org/downloads/product/Maemo5/wormux/&lt;br /&gt;
battle gweled - http://maemo.org/downloads/product/Maemo5/battlegweled/&lt;br /&gt;
drnoksnes (!!!)&lt;br /&gt;
freecell4maemo ?&lt;br /&gt;
prboom&lt;br /&gt;
bullshit bingo http://maemo.org/downloads/product/Maemo5/bullshitbingo/&lt;br /&gt;
puzzles http://maemo.org/downloads/product/Maemo5/sgt-puzzles/&lt;br /&gt;
rocks n diamond shttp://maemo.org/downloads/product/Maemo5/rocksndiamonds/&lt;br /&gt;
uae4all goed laten werken&lt;br /&gt;
neverball - http://maemo.org/downloads/product/Maemo5/neverball/&lt;br /&gt;
 &lt;br /&gt;
graphics&lt;br /&gt;
 &lt;br /&gt;
mypaint (?)&lt;br /&gt;
raw viewer? http://maemo.org/downloads/product/Maemo5/mrawviewer/&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
multimedia&lt;br /&gt;
 &lt;br /&gt;
Boel coole/nuttige music players&lt;br /&gt;
 &lt;br /&gt;
qspot http://maemo.org/downloads/product/Maemo5/qspot/&lt;br /&gt;
recorder http://maemo.org/downloads/product/Maemo5/recorder/&lt;br /&gt;
qmidictl http://maemo.org/downloads/product/Maemo5/qmidictl/&lt;br /&gt;
maetronome http://maemo.org/downloads/product/Maemo5/maetronome/&lt;br /&gt;
 &lt;br /&gt;
location and navigation&lt;br /&gt;
 &lt;br /&gt;
modrana&lt;br /&gt;
marble? http://maemo.org/downloads/product/Maemo5/marble/&lt;br /&gt;
marble maps? http://maemo.org/downloads/product/Maemo5/marble-maps/&lt;br /&gt;
maep for sure http://maemo.org/downloads/product/Maemo5/maep/&lt;br /&gt;
gps track logger http://maemo.org/downloads/product/Maemo5/gps-data-logger/&lt;br /&gt;
OSM2Go - http://maemo.org/downloads/product/Maemo5/osm2go/&lt;br /&gt;
interessant http://maemo.org/downloads/product/Maemo5/snuggle/&lt;br /&gt;
 &lt;br /&gt;
internet and networking&lt;br /&gt;
 &lt;br /&gt;
google voice dialer written in Qt http://maemo.org/downloads/product/Maemo5/qgvdial/&lt;br /&gt;
meer google voice http://maemo.org/downloads/product/Maemo5/dialcentral/&lt;br /&gt;
twitter clienter http://maemo.org/downloads/product/Maemo5/khweeteur/&lt;br /&gt;
zoutube -- http://maemo.org/downloads/product/Maemo5/zoutube/&lt;br /&gt;
witter -- twitter client in python http://maemo.org/downloads/product/Maemo5/witter/&lt;br /&gt;
vncviewer -- http://maemo.org/downloads/product/Maemo5/vncviewer/&lt;br /&gt;
wifi eye http://maemo.org/downloads/product/Maemo5/wifieye/&lt;br /&gt;
qnetman -- http://maemo.org/downloads/product/Maemo5/qnetman/&lt;br /&gt;
xchat irc http://maemo.org/downloads/product/Maemo5/xchat/&lt;br /&gt;
 &lt;br /&gt;
office&lt;br /&gt;
 &lt;br /&gt;
xournal http://maemo.org/downloads/product/Maemo5/xournal/&lt;br /&gt;
quicknote http://maemo.org/downloads/product/Maemo5/quicknote/&lt;br /&gt;
mebook http://maemo.org/downloads/product/Maemo5/mebook/&lt;br /&gt;
portabase? http://maemo.org/downloads/product/Maemo5/portabase/&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
other&lt;br /&gt;
 &lt;br /&gt;
--&lt;br /&gt;
 &lt;br /&gt;
science&lt;br /&gt;
 &lt;br /&gt;
orrery -- http://maemo.org/downloads/product/Maemo5/orrery/&lt;br /&gt;
accdisplay http://maemo.org/downloads/product/Maemo5/accdisplay/&lt;br /&gt;
 &lt;br /&gt;
system&lt;br /&gt;
 &lt;br /&gt;
(lots of themes)&lt;br /&gt;
 &lt;br /&gt;
theme-customizer -- http://maemo.org/downloads/product/Maemo5/theme-customizer/&lt;br /&gt;
matrix theme -- http://maemo.org/downloads/product/Maemo5/matrix-pr12/&lt;br /&gt;
borg sounds -- http://maemo.org/downloads/product/Maemo5/borg-sounds/&lt;br /&gt;
okuda theme -- http://maemo.org/downloads/product/Maemo5/hildon-theme-okuda/&lt;br /&gt;
cellular modem control buttons -- http://maemo.org/downloads/product/Maemo5/cell-modem-ui/&lt;br /&gt;
qtlockscreen -- http://maemo.org/downloads/product/Maemo5/qtlockscreen/&lt;br /&gt;
maemeemo theme -- http://maemo.org/downloads/product/Maemo5/maemeemo-theme/&lt;br /&gt;
 &lt;br /&gt;
extra translations / languages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other stuff to do/test:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
- N900 flashlight&lt;br /&gt;
- WiFi direct (p2p) on N900 &amp;amp; Droid 4 - https://kasiviswanathanblog.wordpress.com/wifi-p2p-in-linux/&lt;br /&gt;
- WiFi monitor mode (N900 &amp;amp; Droid 4)&lt;br /&gt;
- WiFi hotspot (Droid 4)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=842</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=842"/>
		<updated>2020-10-22T18:14:34Z</updated>

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

		<summary type="html">&lt;p&gt;Sicelo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Calendar =&lt;br /&gt;
&lt;br /&gt;
Data is stored in /home/user/.calendar/calendardb - in SQLite3 format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Qalendar ==&lt;br /&gt;
&lt;br /&gt;
Qalendar is Qt5 implementation of the Maemo Calendar, source is here: https://github.com/maemo-leste/qalendar&lt;br /&gt;
&lt;br /&gt;
It should mostly function as the Maemo calendar, see the feature comparison here: https://wiki.maemo.org/Qalendar&lt;br /&gt;
&lt;br /&gt;
* cal-home-widget has also been ported&lt;br /&gt;
&lt;br /&gt;
== Synchronising ==&lt;br /&gt;
&lt;br /&gt;
(On maemo/beowulf-devel with a radicale server set up)&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install qalendar syncevolution&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example URL is &amp;lt;pre&amp;gt;http://localhost:5223&amp;lt;/pre&amp;gt; - using ssh tunneling to forward the remote radicale port to a local port. This is no by means required for operation - just pick any host that works for you.&lt;br /&gt;
&lt;br /&gt;
For reference, this can be used to set up the ssh port forward if you're keen on using it (but again, just pick whatever host you want to use):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh myhost -L 5223:localhost:5223&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OK, so let's configure syncevolution and do the initial sync:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
              --template webdav \&lt;br /&gt;
             username=USER \&lt;br /&gt;
             password=PASS \&lt;br /&gt;
             syncURL=http://localhost:5223/ \&lt;br /&gt;
             target-config@radicale&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             database=http://localhost:5223/USER/UUID/ \&lt;br /&gt;
             backend=caldavtodo \&lt;br /&gt;
             target-config@radicale radicaletodo&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             database=http://localhost:5223/USER/UUID/ \&lt;br /&gt;
             backend=caldavjournal \&lt;br /&gt;
             target-config@radicale radicalejournal&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             database=http://localhost:5223/USER/UUID/ \&lt;br /&gt;
             backend=caldav \&lt;br /&gt;
             target-config@radicale radicalecal&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             --template SyncEvolution_Client \&lt;br /&gt;
             sync=none \&lt;br /&gt;
             syncURL=local://@radicale \&lt;br /&gt;
             username= \&lt;br /&gt;
             password= \&lt;br /&gt;
             radicale&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             sync=two-way \&lt;br /&gt;
             backend=maemo-tasks \&lt;br /&gt;
             database= \&lt;br /&gt;
             radicale radicaletodo&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             sync=two-way \&lt;br /&gt;
             backend=maemo-notes\&lt;br /&gt;
             database= \&lt;br /&gt;
             radicale radicalejournal&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             sync=two-way \&lt;br /&gt;
             backend=maemo-events \&lt;br /&gt;
             database= \&lt;br /&gt;
             radicale radicalecal&lt;br /&gt;
&lt;br /&gt;
syncevolution --sync refresh-from-client radicale radicalejournal&lt;br /&gt;
syncevolution --sync refresh-from-client radicale radicaletodo&lt;br /&gt;
syncevolution --sync refresh-from-client radicale radicalecal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the next time you want to synchronise, just call:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
syncevolution --sync two-way radicale radicalecal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* port Syncevolution GUI&lt;br /&gt;
&lt;br /&gt;
Random resources:&lt;br /&gt;
&lt;br /&gt;
* https://www.mail-archive.com/syncevolution@syncevolution.org/msg03379.html&lt;br /&gt;
* https://wiki.maemo.org/Calendar_database&lt;br /&gt;
* https://wiki.maemo.org/Sync&lt;br /&gt;
* http://maemo.org/packages/source/view/fremantle_extras-devel_free_source/syncevolution-frontend/0.12/&lt;br /&gt;
* https://talk.maemo.org/showthread.php?t=75810&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Calendar&amp;diff=828</id>
		<title>Calendar</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Calendar&amp;diff=828"/>
		<updated>2020-10-05T17:42:54Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Calendar =&lt;br /&gt;
&lt;br /&gt;
Data is stored in /home/user/.calendar/calendardb - in SQLite3 format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Qalendar ==&lt;br /&gt;
&lt;br /&gt;
Qalendar is Qt5 implementation of the Maemo Calendar, source is here: https://github.com/maemo-leste/qalendar&lt;br /&gt;
&lt;br /&gt;
It should mostly function as the Maemo calendar, see the feature comparison here: https://wiki.maemo.org/Qalendar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Synchronising ==&lt;br /&gt;
&lt;br /&gt;
(On maemo/beowulf-devel with a radicale server set up)&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install qalendar syncevolution&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example URL is &amp;lt;pre&amp;gt;http://localhost:5223&amp;lt;/pre&amp;gt; - using ssh tunneling to forward the remote radicale port to a local port. This is no by means required for operation - just pick any host that works for you.&lt;br /&gt;
&lt;br /&gt;
For reference, this can be used to set up the ssh port forward if you're keen on using it (but again, just pick whatever host you want to use):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh myhost -L 5223:localhost:5223&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OK, so let's configure syncevolution and do the initial sync:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
              --template webdav \&lt;br /&gt;
             username=USER \&lt;br /&gt;
             password=PASS \&lt;br /&gt;
             syncURL=http://localhost:5223/ \&lt;br /&gt;
             target-config@radicale&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             database=http://localhost:5223/USER/UUID/ \&lt;br /&gt;
             backend=caldavtodo \&lt;br /&gt;
             target-config@radicale radicaletodo&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             database=http://localhost:5223/USER/UUID/ \&lt;br /&gt;
             backend=caldavjournal \&lt;br /&gt;
             target-config@radicale radicalejournal&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             database=http://localhost:5223/USER/UUID/ \&lt;br /&gt;
             backend=caldav \&lt;br /&gt;
             target-config@radicale radicalecal&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             --template SyncEvolution_Client \&lt;br /&gt;
             sync=none \&lt;br /&gt;
             syncURL=local://@radicale \&lt;br /&gt;
             username= \&lt;br /&gt;
             password= \&lt;br /&gt;
             radicale&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             sync=two-way \&lt;br /&gt;
             backend=maemo-tasks \&lt;br /&gt;
             database= \&lt;br /&gt;
             radicale radicaletodo&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             sync=two-way \&lt;br /&gt;
             backend=maemo-notes\&lt;br /&gt;
             database= \&lt;br /&gt;
             radicale radicalejournal&lt;br /&gt;
&lt;br /&gt;
syncevolution --configure \&lt;br /&gt;
             sync=two-way \&lt;br /&gt;
             backend=maemo-events \&lt;br /&gt;
             database= \&lt;br /&gt;
             radicale radicalecal&lt;br /&gt;
&lt;br /&gt;
syncevolution --sync refresh-from-client radicale radicalejournal&lt;br /&gt;
syncevolution --sync refresh-from-client radicale radicaletodo&lt;br /&gt;
syncevolution --sync refresh-from-client radicale radicalecal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the next time you want to synchronise, just call:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
syncevolution --sync two-way radicale radicalecal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* cal-home-widget has also been ported&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* port Syncevolution GUI&lt;br /&gt;
&lt;br /&gt;
Random resources:&lt;br /&gt;
&lt;br /&gt;
* https://www.mail-archive.com/syncevolution@syncevolution.org/msg03379.html&lt;br /&gt;
* https://wiki.maemo.org/Calendar_database&lt;br /&gt;
* https://wiki.maemo.org/Sync&lt;br /&gt;
* http://maemo.org/packages/source/view/fremantle_extras-devel_free_source/syncevolution-frontend/0.12/&lt;br /&gt;
* https://talk.maemo.org/showthread.php?t=75810&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Development/Tasks&amp;diff=816</id>
		<title>Development/Tasks</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Development/Tasks&amp;diff=816"/>
		<updated>2020-08-16T10:44:46Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Applications ==&lt;br /&gt;
&lt;br /&gt;
This page lists some of the more important open issues for Maemo Leste. We have a complete list here, on github, but it's a bit hard to navigate: https://github.com/maemo-leste/bugtracker/issues&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task&lt;br /&gt;
! Description&lt;br /&gt;
! Task Status&lt;br /&gt;
! User(s) working on task&lt;br /&gt;
! GH Bug&lt;br /&gt;
! URLs&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Monitor keyboard slide and attached state || Required on devices with a keyboard like [[Nokia_N900]] and [[Motorola_Droid_4]] to show specific parts of the virtual keyboard, or rotate || DONE || [[User:ThomasAH]], Spinal84 || https://github.com/maemo-leste/ke-recv/pull/2 ; https://github.com/maemo-leste/bugtracker/issues/17#issuecomment-528497018 || ke-recv part for slide monitoring is in place, we just need live keyboard-attached monitoring now. https://github.com/maemo-leste/mce/blob/master/event-input.c#L474 https://github.com/maemo-leste/ke-recv-extra/blob/master/src/input-device.c || mce has quite some usable code for this already, resulting code should probably go into ke-recv-extra (aka hulda). mer-core (sailfish/nemomobile) has keyboard monitoring integrated into mce, so we could also look at (using) that&lt;br /&gt;
|-&lt;br /&gt;
| Gtk3 port of theme and hildon widgets || Big task, port hildon widgets and theme from gtk2 to gtk3. &amp;lt;b&amp;gt;Funding is available for this task&amp;lt;/b&amp;gt; || WIP/TODO || || https://github.com/maemo-leste/bugtracker/issues/261 || || Some work was done in the past&lt;br /&gt;
|-&lt;br /&gt;
| Qt5 of theme and hildon widgets || Big task, port hildon widgets and theme from qt4 to qt5. &amp;lt;b&amp;gt;Funding is available for this task&amp;lt;/b&amp;gt; || WIP || [[User:freemangordon]] made a start, [[User:Wizzup]] picking up some of the work  ||  || https://github.com/maemo-leste/qtstyleplugins/  || Mainly usable already!&lt;br /&gt;
|-&lt;br /&gt;
| Forward-port clutter patches from Nokia N900 clutter 0.8 to libclutter1.0 ? || *MAYBE* Required on devices with a PowerVR GPU like [[Nokia_N900]] and [[Motorola_Droid_4]] for hildon-desktop to work. In particular important for Droid 4 to get accelerated hildon-desktop || DONE (by staying at clutter 0.8) ||  || || https://github.com/spinal84/clutter-0.8/tree/blit/debian/patches   ||  &lt;br /&gt;
|-&lt;br /&gt;
| libicd-network-ofono should set up ipv4 (and ipv6) upon connect || Required to get usable cellular data. Provisioning is done, but the actual link itself is not yet set up. Once we have this, we should have usable cellular data on all devices with a supported modem. || TODO ||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| Extend ofono droid4 modem support  || There is some ofono support in a branch, but it lacks a sim manager and some other interfaces required for maemo userspace || wIP || Tony, Pavel and [[User:Wizzup]] are working on this ||  || https://github.com/pavelmachek/ofono/commits/d4-v1.29  ||&lt;br /&gt;
|-&lt;br /&gt;
| Set up leste &amp;quot;extras&amp;quot; repository  || A repository with non-core applications, games, etc would be very welcome || DONE || [[User:Wizzup]], [[User:Parazyd]] ||  || https://github.com/maemo-leste-extras ; https://maemo.org/downloads/score/Maemo5/25/   ||&lt;br /&gt;
|-&lt;br /&gt;
| Finish connui-cellular port to ofono  || Porting of connui libraries, status and home applets, settings applets and pincode applets to ofono || WIP || [[User:Wizzup]] || https://github.com/maemo-leste/bugtracker/issues/256 || https://github.com/maemo-leste/connui-cellular  ||&lt;br /&gt;
|-&lt;br /&gt;
| Test phone calls on the N900  || Figure out cmtspeechdata magic || WIP? || [[User:Wizzup]], [[User:Sicelo]], Pavel ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Test phone calls on the droid4  || Phone calls should work, with audio, when alsamixer is set up properly, let's test it! || WORKS || [[User:Wizzup]], [[User:Sicelo]] ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Create simple phone UI to test dialing/accepting phone calls using Telepathy || Would be good to test phone calls, can be simple/not-pretty, using telepathy is good, could be sip or real calls || WIP || ? ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;hildonize&amp;quot; surf2 or create a simple &amp;quot;hildonized&amp;quot; gtk2 webkit browser || We'll need a basic browser. surf2 (in Debian) could be a good start, but the current package needs gtk3, and we only have a hildon (maemo ui) port for gtk2 right now. So let's make sure we can build something with webkit against gtk2. || WIP || [[User:Parazyd]] ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| Look at N900 power saving || We do not hit omap off modes nearly as much as we should (in fact, we never do), this should be looked at || WIP || [[User:Wizzup]], tmlind ||  ||  || Actually works quite well on the droid4. Let's do the same for Droid4. :) &lt;br /&gt;
|-&lt;br /&gt;
| osso-abook || We need osso-abook in place for all applications that need contacts (phone ui, sms ui, email ui, more) || WIP || [[User:freemangordon]] ||  ||https://github.com/maemo-leste/osso-abook  || Making good progress&lt;br /&gt;
|-&lt;br /&gt;
| hildon-application-manager usable || We currently have HAM packaged, but it needs fixes for various compile issues we hacked around, cssu-specific parts need to be removed, and we need to figure out what we need to do for our repositories to make it work well || DONE || [[User:minicom]], [[User:Wizzup]], [[User:Parazyd]] ||  ||  || Goal is to have a usable app manager, so let's just use it, fix it, use it, etc.&lt;br /&gt;
|-&lt;br /&gt;
| Fix virtual keyboard rendering || On a screen that is not the same of the N900 (800x480), the virtual keyboard doesn't look very pretty. Lets just make it work on any display size || DONE ||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| Fix remaining hildon-desktop portait mode issues || The application launcher results in a black screen, and osso-xterm in portait mode is also resulting in a black screen || WIP? || [[User:freemangordon]] ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| Port all packages for maemo-leste to debhelper 9 or higher || Requires for us to migrate to a newer Debian (Buster) / Devuan (Beowulf) || DONE || [[User:Parazyd]], [[User:Wizzup]], [[User:meridion]], [[User:Spinal84]] || https://github.com/maemo-leste/bugtracker/issues/234 ||  || &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Motorola_Droid_4&amp;diff=815</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=815"/>
		<updated>2020-08-16T10:30:51Z</updated>

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

		<summary type="html">&lt;p&gt;Sicelo: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Nokia N900.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.1 || Mainline + PowerVR Patches: https://github.com/maemo-leste/n9xx-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Requires special hardware&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes || Firmware is non-free&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || USB Network, Mass Storage. OTG not working, although it might be possible&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes || Uses omapfb, not omapdrmfb yet&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || Works fast(!)&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), but requires complex alsa configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || Yes || Works with ofono; UI under way: https://github.com/maemo-leste/connui-cellular ; see https://github.com/maemo-leste/bugtracker/issues/76&lt;br /&gt;
|-&lt;br /&gt;
| SMS || Yes || Works with ofono, will be implemented using telepathy-ring, no UI yet&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, not enabled by default (might require pulseaudio audio filters)&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver problems in mainline&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No || Depends on Bluetooth.  [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/staging?id=757c2bf597a8e9f859f8efceda9c5108607fd98d Removed in Linux 5.4-rc1.]&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available as input device, no integration yet. Needs MCE work&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || No integration yet&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 || Missing in 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 || WIP || Works using gps3 and gpsd, needs integration still, and work on a-gps&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Yes || TX only (hardware limitation). &lt;br /&gt;
|-&lt;br /&gt;
| Camera ||  || Needs complex v4l work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card. If using a Windows machine, you can use [https://etcher.io/ Etcher] '''NB:''' Etcher does not warn you before starting the flashing operation, so please be extra careful that you choose the correct device to flash to&lt;br /&gt;
&lt;br /&gt;
Then boot from the sd card using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613&lt;br /&gt;
&lt;br /&gt;
=== U-Boot setup ===&lt;br /&gt;
&lt;br /&gt;
==== If you don't want to use/install Fremantle, or want to install quickly ====&lt;br /&gt;
&lt;br /&gt;
1. Download 0xFFFF and u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
2. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: '''sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l'''&lt;br /&gt;
&lt;br /&gt;
3. Open the keyboard slider on the N900, and then issue following command on PC to test boot: '''./0xFFFF -b'''&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type '''run sdboot'''.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command '''(BE CAREFUL THOUGH, AS THIS WILL REPLACE THE EXISTING FREMANTLE KERNEL, ONLY DO THIS IF YOU DO NOT CARE ABOUT THE EXISTING MAEMO INSTALLATION)''':&lt;br /&gt;
&lt;br /&gt;
 '''sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f'''&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
As of 2018/11, the latest pre-alpha image results in a 1.2GB root filesystem with about 100MB to spare. This can be extended, provided that your SD card is big enough.&lt;br /&gt;
Perform the following steps on a Linux machine with none of the SD card's partitions mounted:&lt;br /&gt;
* assumption: /dev/sda2 is Leste root partition&lt;br /&gt;
* e2fsck -f /dev/sda2&lt;br /&gt;
* use parted/gparted/cfdisk/... to enlarge /dev/sda2 to the desired size&lt;br /&gt;
* resize2fs -p /dev/sda2&lt;br /&gt;
* e2fsck -f /dev/sda2&lt;br /&gt;
&lt;br /&gt;
The latest images have a script, &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt; from https://github.com/maemo-leste/image-builder/blob/master/rootfs-overlay/common/etc/expandcard.sh&lt;br /&gt;
&lt;br /&gt;
=== Serial ===&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* Speakers are enabled by default, but be careful of very high frequencies/levels - there are possible concerns regarding the possibility to blow them&lt;br /&gt;
&lt;br /&gt;
Also see: https://elinux.org/N900&lt;br /&gt;
&lt;br /&gt;
Power usage right now is reported to be about 80mA, which is quite a lot, but on a good battery last for about 15 hours, this 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;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
== Battery calibration ==&lt;br /&gt;
&lt;br /&gt;
Nokia N900 has bq27200 integrated circuit for monitoring battery state. The datasheet can be found here: http://www.ti.com/lit/ds/symlink/bq27200.pdf. If you are curious, check the section called &amp;quot;Gas Gauge Operation&amp;quot; for how the battery calibration is done in a low level.&lt;br /&gt;
&lt;br /&gt;
Here are described the steps necessary to calibrate your battery. This should help if you see &amp;quot;Battery not calibrated&amp;quot; message in the status applet.&lt;br /&gt;
&lt;br /&gt;
* Fully charge Nokia N900. Don't detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don't attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don'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's fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It's how the battery calibration works in low level: it can't change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it's needed to repeat the calibration cycle several times to get more accurate value. It may take about 3-7 calibration cycles to get the proper mAh value for fully charged battery. If you spend some time on this process, you will get really accurate battery gauge and you will always know how much charge is remaining.&lt;br /&gt;
&lt;br /&gt;
Tip 1. If for any reason you want to reset the battery calibration value to see the message “Battery is not calibrated” again, you should remove the battery from the device for about 6 hours.&lt;br /&gt;
Tip 2. If you replace the battery, you may want to do 1-2 calibration cycles described above to update the gauge for your new battery.&lt;br /&gt;
&lt;br /&gt;
== Accessing MTD ==&lt;br /&gt;
&lt;br /&gt;
List devices:&lt;br /&gt;
 cat /proc/mtd&lt;br /&gt;
&lt;br /&gt;
Mount:&lt;br /&gt;
 apt install mtd-utils&lt;br /&gt;
 mkdir -vp /mnt/fremantle&lt;br /&gt;
 ubiattach -p /dev/mtd5&lt;br /&gt;
 mount -t ubifs ubi:rootfs /mnt/fremantle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
	<entry>
		<id>https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=813</id>
		<title>Nokia N900</title>
		<link rel="alternate" type="text/html" href="https://leste.maemo.org/index.php?title=Nokia_N900&amp;diff=813"/>
		<updated>2020-08-16T10:21:46Z</updated>

		<summary type="html">&lt;p&gt;Sicelo: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox Device&lt;br /&gt;
|image=[[File:Nokia N900 - Leste pre-alpha.jpg|250px]]&lt;br /&gt;
|manufacturer=Nokia&lt;br /&gt;
|codename=Rover, RX-51&lt;br /&gt;
|dimensions=110.9mm x 59.8mm x 18mm&lt;br /&gt;
|release_date=2009-11-11&lt;br /&gt;
|soc=TI OMAP 3430 @600MHz&lt;br /&gt;
|dram=256 MB Mobile DDR&lt;br /&gt;
|power=&lt;br /&gt;
|lcd=800x480 3.5&amp;quot; Resistive TFT&lt;br /&gt;
|video=PowerVR SGX530&lt;br /&gt;
|audio=&lt;br /&gt;
|network=WL1251&lt;br /&gt;
|storage=32GB&lt;br /&gt;
|usb=Micro USB 2.0 Slave&lt;br /&gt;
|camera=&lt;br /&gt;
|sensors=&lt;br /&gt;
|other=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The Nokia N900.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature&lt;br /&gt;
! Leste supported&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Kernel version || 5.1 || Mainline + PowerVR Patches: https://github.com/maemo-leste/n9xx-linux&lt;br /&gt;
|-&lt;br /&gt;
| Serial || Yes || Requires special hardware&lt;br /&gt;
|-&lt;br /&gt;
| Charging || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Wireless || Yes || Firmware is non-free&lt;br /&gt;
|-&lt;br /&gt;
| Ethernet || N/A ||&lt;br /&gt;
|-&lt;br /&gt;
| Micro USB || Yes || USB Network, Mass Storage. OTG not working, although it might be possible&lt;br /&gt;
|-&lt;br /&gt;
| Keyboard || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Screen || Yes || Uses omapfb, not omapdrmfb yet&lt;br /&gt;
|-&lt;br /&gt;
| 3D Acceleration || Yes || Works fast(!)&lt;br /&gt;
|-&lt;br /&gt;
| Touchscreen || Yes || Resistive&lt;br /&gt;
|-&lt;br /&gt;
| Audio || Yes || Works (minus speaker protection), but requires complex alsa configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2G/3G data || WIP || Works with ofono; UI under way: https://github.com/maemo-leste/connui-cellular ; see https://github.com/maemo-leste/bugtracker/issues/76&lt;br /&gt;
|-&lt;br /&gt;
| SMS || WIP || Works with ofono, will be implemented using telepathy-ring, no UI yet&lt;br /&gt;
|-&lt;br /&gt;
| Phone calls || WIP || Works, no UI, poor quality for upstream audio, not enabled by default (might require pulseaudio audio filters)&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || No || Driver problems in mainline&lt;br /&gt;
|-&lt;br /&gt;
| FM Transmitter || Yes || Install &amp;lt;code&amp;gt;v4l-utils&amp;lt;/code&amp;gt;, then enable chip and set frequency using: &amp;lt;code&amp;gt;v4l2-ctl -d /dev/radio0 -c mute=0,tune_power_level=120 -f &amp;lt;freq&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FM Receiver || No || Depends on Bluetooth.  [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/staging?id=757c2bf597a8e9f859f8efceda9c5108607fd98d Removed in Linux 5.4-rc1.]&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || Yes || Available as input device, no integration yet. Needs MCE work&lt;br /&gt;
|-&lt;br /&gt;
| Compass || N/A || Missing in hardware&lt;br /&gt;
|-&lt;br /&gt;
| Proximity sensor || Yes || No integration yet&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 || Missing in 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 || WIP || Works using gps3 and gpsd, needs integration still, and work on a-gps&lt;br /&gt;
|-&lt;br /&gt;
| Infrared || Yes || TX only (hardware limitation). &lt;br /&gt;
|-&lt;br /&gt;
| Camera ||  || Needs complex v4l work&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* Latest image: https://phoenix.maemo.org/job/leste-image-n900/lastSuccessfulBuild/artifact/arm-sdk/dist/&lt;br /&gt;
* Image archive: https://maedevu.maemo.org/images/n900/&lt;br /&gt;
&lt;br /&gt;
dd the image to an sd card. If using a Windows machine, you can use [https://etcher.io/ Etcher] '''NB:''' Etcher does not warn you before starting the flashing operation, so please be extra careful that you choose the correct device to flash to&lt;br /&gt;
&lt;br /&gt;
Then boot from the sd card using either 0xFFFF/flasher-3.5 or u-boot/bootmenu: http://talk.maemo.org/showthread.php?t=81613&lt;br /&gt;
&lt;br /&gt;
=== U-Boot setup ===&lt;br /&gt;
&lt;br /&gt;
==== If you don't want to use/install Fremantle, or want to install quickly ====&lt;br /&gt;
&lt;br /&gt;
1. Download 0xFFFF and u-boot from https://maedevu.maemo.org/images/n900/tools/&lt;br /&gt;
&lt;br /&gt;
2. Turn off Nokia N900, issue the following command on PC and connect Nokia N900 to the PC: '''sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -l'''&lt;br /&gt;
&lt;br /&gt;
3. Open the keyboard slider on the N900, and then issue following command on PC to test boot: '''./0xFFFF -b'''&lt;br /&gt;
&lt;br /&gt;
This should present u-boot from which you can select external SD card and boot to Maemo Leste. If you are presented with a menu, select the option to boot from External SD card. If you just get a command prompt, type '''run sdboot'''.&lt;br /&gt;
&lt;br /&gt;
To flash u-boot permanently, you can issue the following command '''(BE CAREFUL THOUGH, AS THIS WILL REPLACE THE EXISTING FREMANTLE KERNEL, ONLY DO THIS IF YOU DO NOT CARE ABOUT THE EXISTING MAEMO INSTALLATION)''':&lt;br /&gt;
&lt;br /&gt;
 '''sudo ./0xFFFF -m test/u-boot-2013.04-2.bin -f'''&lt;br /&gt;
&lt;br /&gt;
==== Existing Fremantle ====&lt;br /&gt;
&lt;br /&gt;
1. Install &amp;quot;U-Boot with kernel 2.6.28-omap1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
2. Install &amp;quot;Linux kernel for power user (boot image for U-Boot)&amp;quot;. This is optional, but recommended.&lt;br /&gt;
&lt;br /&gt;
3. Add Maemo Leste menu item (run as root):&lt;br /&gt;
 cat &amp;gt; /etc/bootmenu.d/30-maemo-leste.item &amp;lt;&amp;lt; &amp;quot;EOF&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
 ITEM_NAME=&amp;quot;Maemo Leste&amp;quot;&lt;br /&gt;
 ITEM_KERNEL=&amp;quot;uImage&amp;quot;&lt;br /&gt;
 ITEM_DEVICE=&amp;quot;${EXT_CARD}p1&amp;quot;&lt;br /&gt;
 ITEM_FSTYPE=&amp;quot;ext2&amp;quot;&lt;br /&gt;
 EOF&lt;br /&gt;
 u-boot-update-bootmenu&lt;br /&gt;
&lt;br /&gt;
4. Reboot the device&lt;br /&gt;
&lt;br /&gt;
=== Increase filesystem size ===&lt;br /&gt;
As of 2018/11, the latest pre-alpha image results in a 1.2GB root filesystem with about 100MB to spare. This can be extended, provided that your SD card is big enough.&lt;br /&gt;
Perform the following steps on a Linux machine with none of the SD card's partitions mounted:&lt;br /&gt;
* assumption: /dev/sda2 is Leste root partition&lt;br /&gt;
* e2fsck -f /dev/sda2&lt;br /&gt;
* use parted/gparted/cfdisk/... to enlarge /dev/sda2 to the desired size&lt;br /&gt;
* resize2fs -p /dev/sda2&lt;br /&gt;
* e2fsck -f /dev/sda2&lt;br /&gt;
&lt;br /&gt;
The latest images have a script, &amp;lt;code&amp;gt;/etc/expandcard.sh&amp;lt;/code&amp;gt; from https://github.com/maemo-leste/image-builder/blob/master/rootfs-overlay/common/etc/expandcard.sh&lt;br /&gt;
&lt;br /&gt;
=== Serial ===&lt;br /&gt;
&lt;br /&gt;
http://n900.elektranox.org/serial-adapter.html&lt;br /&gt;
&lt;br /&gt;
http://wiki.maemo.org/N900_Hardware_Hacking#Debug_ports&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* Speakers are enabled by default, but be careful of very high frequencies/levels - there are possible concerns regarding the possibility to blow them&lt;br /&gt;
&lt;br /&gt;
Also see: https://elinux.org/N900&lt;br /&gt;
&lt;br /&gt;
Power usage right now is reported to be about 80mA, which is quite a lot, but on a good battery last for about 15 hours, this 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;
== Power Management ==&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
 modprobe ledtrig-default-on&lt;br /&gt;
&lt;br /&gt;
And:&lt;br /&gt;
&lt;br /&gt;
 echo default-on &amp;gt; /sys/class/leds/debug::sleep/trigger&lt;br /&gt;
&lt;br /&gt;
To enable the OMAP sleep debug LEDs (on the keyboard). Open keyboard, turn off the screen with the slider, and the LEDs will turn off if the phone ever reaches sleep modes.&lt;br /&gt;
&lt;br /&gt;
Currently it does not yet reliably reach any sleep modes.&lt;br /&gt;
&lt;br /&gt;
== Battery calibration ==&lt;br /&gt;
&lt;br /&gt;
Nokia N900 has bq27200 integrated circuit for monitoring battery state. The datasheet can be found here: http://www.ti.com/lit/ds/symlink/bq27200.pdf. If you are curious, check the section called &amp;quot;Gas Gauge Operation&amp;quot; for how the battery calibration is done in a low level.&lt;br /&gt;
&lt;br /&gt;
Here are described the steps necessary to calibrate your battery. This should help if you see &amp;quot;Battery not calibrated&amp;quot; message in the status applet.&lt;br /&gt;
&lt;br /&gt;
* Fully charge Nokia N900. Don't detach the charger immediately, give it some time after you see &amp;quot;Fully charged&amp;quot; message (10 minutes should be enough).&lt;br /&gt;
* Detach the charger and don't attach it again until the battery is fully depleted. Remember: if you attach the charger (or USB cable) at least once, you will need to start the calibration from the beginning (fully charge the device again).&lt;br /&gt;
* You may use the device as you normally do. You may power it off, power it on, reboot. All as usual. Just don'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's fine. The battery should have done the calibration cycle. Just attach the charger to the device, give it a minute and press power button to start booting.&lt;br /&gt;
* If you still see &amp;quot;Battery not calibrated&amp;quot; message, reboot the device.&lt;br /&gt;
&lt;br /&gt;
After the first calibration cycle you will see that it has ~1700 mAh for the fully charged battery. This value is wrong. It's how the battery calibration works in low level: it can't change the fully charged value of the battery in steps that exceed 12.5%. What this means for us: it's needed to repeat the calibration cycle several times to get more accurate value. It may take about 3-7 calibration cycles to get the proper mAh value for fully charged battery. If you spend some time on this process, you will get really accurate battery gauge and you will always know how much charge is remaining.&lt;br /&gt;
&lt;br /&gt;
Tip 1. If for any reason you want to reset the battery calibration value to see the message “Battery is not calibrated” again, you should remove the battery from the device for about 6 hours.&lt;br /&gt;
Tip 2. If you replace the battery, you may want to do 1-2 calibration cycles described above to update the gauge for your new battery.&lt;br /&gt;
&lt;br /&gt;
== Accessing MTD ==&lt;br /&gt;
&lt;br /&gt;
List devices:&lt;br /&gt;
 cat /proc/mtd&lt;br /&gt;
&lt;br /&gt;
Mount:&lt;br /&gt;
 apt install mtd-utils&lt;br /&gt;
 mkdir -vp /mnt/fremantle&lt;br /&gt;
 ubiattach -p /dev/mtd5&lt;br /&gt;
 mount -t ubifs ubi:rootfs /mnt/fremantle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;/div&gt;</summary>
		<author><name>Sicelo</name></author>
	</entry>
</feed>