Collection of maemoTM apps for N810

Install catalogue (only works for OS2008). Some of the packages may require red pill mode.


  • light-meter

    N810 has a light sensor above the camera. The sensor is fairly decent (resolution of 1 lux in 1-50k+ lux range), and is accessible through software. light-meter is a very simple command-line tool to print the sensor's current reading.

    [user@nokia ~]$ light-meter 
    1203 lux
    

    Download here.


  • internal-temp

    N810 (and probably other Nokia tablets) also have an internal temperature sensor. Because tablets generate very little heat when idle, you can use this sensor to measure ambient temperature. internal-temp is a command-line tool to read the sensor.

    [user@nokia ~]$ internal-temp 
    23.25C
    

    Download here.


  • gps-clockd

    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
    

    Download here.

    Speaking about GPS, here is a cool site offering free GPS tracking using cell phones.


  • adjust-clock

    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

    adjust-clock -1.1
    
    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) similar to

    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 here.


  • color-ls

    This package adds color to ls.

    Download here.


  • python2.5-readline

    This package enables history, tab-completion and line editing in Python 2.5's interactive client (update June 2008 - this package is no longer needed, as Python has built-in readline support).

    Download here.


  • bash3

    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 cycle.

    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]\$ '
    export HISTSIZE=500
    
    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.


  • easyroot

    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'. Sample session

    [user@nokia ~]$ root
    [root@nokia /home/user]$ 
    
    Download easyroot here. You will want to uninstall becomeroot first.


  • battery-status

    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 (http://upx.sourceforge.net)

    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 binary introduces approximately a 0.1 second delay at startup.

    If you ever wanted to restore quiver to its original state, run upx -d quiver.

    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 wireless connection.

    /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
              Encryption key:off
              Power Management:on
              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
    
    Download here.


Number of hits since 1/19/2008 Questions? Comments? Please email response@gmail.com.