Collection of maemoTM apps for
Install catalogue (only works for
OS2008). Some of the packages may require red pill mode.
gps-clockd is a tiny (14KB) daemon that runs in the background and
synchronizes the clock to GPS time whenever GPS is turned on.
The daemon is started automatically at boot time. Adjustments
are logged to /var/log/gps-clockd.log.
As of version 1.0-3, gps-clockd also logs TTFF (time to first fix).
[root@nokia ~]# cat /var/log/gps-clockd.log
[Sat Feb 2 20:47:25 2008] *** GPS Clock Daemon started ***
[Sat Feb 2 20:52:07 2008] GPS activated. Time to first fix 01m25s
[Sat Feb 2 20:52:07 2008] Adjusted clock by -0.39 seconds to match GPS time
[Sat Feb 2 21:02:08 2008] Adjusted clock by 0.14 seconds to match GPS time
Speaking about GPS, here is a cool site offering free GPS tracking using cell
This utility calibrates the kernel clock. In unix world, this is typically done with adjtime, but
unfortunately I couldn't get adjtime to compile in maemo. So I wrote my own utility and
called it adjust-clock.
The usage is very simple. To make the clock 1.1 seconds slower each day, you execute
Without arguments adjust-clock prints the current time adjustment.
I was able to calibrate the clock on my N810 to within 0.01 seconds/day. To put it another way,
my tablet loses one second every 3 months. Before calibration, it gained 1.6 seconds per day.
The caveat here is that the utility only calibrates the kernel clock, used while the tablet is
running. There is also a hardware clock in Nxx0 for keeping time while the tablet is off.
This clock is maintained by Nokia's proprietary "retu" chip, and can be manipulated with
/mnt/initfs/usr/bin/retutime. The help page for retutime exposes flags (-c and -C) for
calibrating the hardware clock, but unfortunately those options do not appear to do anything.
If anyone knows a contact at Nokia who can shed light on this, please let me know.
Anyway, whenever you reboot your tablet, the kernel initializes its clock from the hardware
clock and all time adjustment is lost. After rebooting, you will want to run a script (as root)
rdate -n pool.ntp.org # set accurate time
adjust-clock -1.234 # calibrate the clock
/mnt/initfs/usr/bin/retutime -I # set the hardware clock to system time
This is not a great solution. The best approach would be to calibrate the hardware clock. This would
obviate the need for kernel clock calibration, as the kernel uses retu for its time keeping.
Barring that, the hardware clock could be adjusted on startup, by keeping track of how long
it has been since the last adjustment.
Download adjust-clock here.
The latest version of rdate is available
GNU Bourne-Again Shell, version 3.2. Unlike other instances of bash
floating around, this one is compatible with busybox and can be used
as the default shell without sending your tablet into an infinite reboot
To make bash the default, edit /etc/passwd and replace /bin/sh with
/bin/bash for users 'user' and 'root'. I have not yet felt adventurous
enough to symlink /bin/sh to /bin/bash.
I recommend adding the following lines to .bashrc and /etc/profile:
export PS1='[\u@nokia \w]\$ '
Download bash3 here.
Note: install at your risk. This package may break your tablet,
possibly requiring a reflash.
It works on my N810 with OS2008, but that's only a sample size of one.
This is a simple utility for gaining root access. 'sudo gainroot' works as before,
but there is now a new way of getting root access that
- sources .bashrc and other startup scripts when turning on root mode
- correctly sets the home directory for user root
- doesn't force the built-in shell onto the user
This mode is invoked by typing 'root'.
[user@nokia ~]$ root
Download easyroot here.
You will want to uninstall becomeroot first.
This is a simple command-line tool to display the remaining battery charge
of a tablet.
[user@nokia ~]$ battery-status
[Dec 29 22:57] 97.6%
There is also a mode for monitoring battery charge over time, switched on
with the -d N flag. The command
battery-status -d 10 > /media/mmc1/battery.log &
logs the battery state to a media card every 10 minutes. This can be useful
for rundown tests, i.e. running the monitor from a full charge until
the device shuts off. My N810 can run maemo mapper with GPS, WiFi, and Bluetooth
on, and the screen off, for nearly 11 hours:
[user@nokia ~/apps]$ tail -f /media/mmc1/battery.log
[Dec 29 23:02][00:00] 97.6%
[Dec 29 23:12][00:10] 96.0%
[Dec 29 23:22][00:20] 94.8%
[Dec 29 23:32][00:30] 93.2%
[Dec 29 23:42][00:40] 91.6%
[Dec 29 23:52][00:50] 90.0%
[Dec 30 08:42][09:40] 7.2%
[Dec 30 08:52][09:50] 5.6%
[Dec 30 09:02][10:00] 4.0%
[Dec 30 09:12][10:10] 2.4%
[Dec 30 09:22][10:20] 0.4%
[Dec 30 09:32][10:30] 0.0%
[Dec 30 09:42][10:40] 0.0%
Download battery-status here.
Note: Because battery-status relies on DBus signaling, running it
has the unfortunate side effect of activating the battery applet. I will
try to find a workaround for this.
UPX is a binary compressor. It shrinks the size of executables by up to
5x. Because decompression is very fast, there is virtually no overhead
in starting binaries compressed with UPX.
Download UPX for maemo here.
Sample usage (as root):
/usr/bin # upx -9 quiver
Ultimate Packer for eXecutables
Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007
UPX 3.01 Markus Oberhumer, Laszlo Molnar & John Reiser Jul 31st 2007
File size Ratio Format Name
-------------------- ------ ----------- -----------
1018284 -> 262188 25.75% linux/armel quiver
Packed 1 file.
In this example, we pack quiver (an excellent image viewer), reducing its size from 1Mb to 260Kb.
Whenever quiver is started, it will first decompress itself, then run normally. Decompressing a 1Mb
approximately a 0.1 second delay at startup.
If you ever wanted to restore quiver to its original state, run upx -d
The original UPX doesn't support armel binaries. If you would like to compile UPX yourself,
download the modified sources here.
Update (12/10/2007) - it turns out that the filesystem on
Nokia tablets is already compressed. Hence, compressing executables
a second time may not be a good idea. It is still possible to save
200-300K on a 1MB file (UPX has better compression than jffs2), but
the CPU/RAM cost of UPX may outweigh the benefit.
- wireless-tools (project page)
This is my port of the wireless tools package. The total size of all binaries is only 100Kb. If you haven't encountered
wireless tools before, one useful application is iwconfig for getting stats about your
/usr/bin # iwconfig
lo no wireless extensions.
wlan0 IEEE 802.11b/g ESSID:"XXXX"
Mode:Managed Frequency:2.462 GHz Access Point: 00:13:xx:xx:xx:xx
Bit Rate=54 Mb/s Tx-Power=19 dBm Sensitivity=0/200
RTS thr:off Fragment thr:off
Link Quality=28/0 Signal level=-66 dBm Noise level=-94 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:13 Invalid misc:0 Missed beacon:0
Questions? Comments? Please email email@example.com.