Tips for Debian on the FreeRunner

mplayer

mp3

For mp3 decoding using less cpu cycles, use -afm ffmpeg or add afm=ffmpeg into ~/.mplayer/config.

This will change the mp3 decoding codec to ffmpeg instead of using the x86 optimized mp3lib.

mp3lib is optimized for mmx/sse3/3dnow, which are cpu extensions of x86 processors. These don't exist on ARM. mp3lib also makes usage of floating point operations and the Freerunner's CPU doesn't have a FPU, so it is very slow. ffmpeg decodes using integers only, which is perfect in the Freerunner's case.

vorbis

For vorbis decding using less cpu cycles libvorbisidec should be used. But due to a Debian packaging bug (#506244) mplayer is currently not linked against it.

Since the mplayer maintainer is the sponsor of one of my Debian packages I asked him to fix this issue by adding "libvorbisidec-dev" to mplayers build dependencies. He said he will give it a try and if it works, the next mplayer version in main will support integer only vorbis decoding :) -- Sebastian Reichel (23.07.2009 03:07 CEST)

Network interface performance

Wifi interface will survive packet flooding with only very few cpu usage. If you do the same via USB or Bluetooth your Freerunner will be unusable until you stop the packet flooding. Wifi interface is also the fastest of the 3 methods. So if you plan to transfer big files, you should use wifi if possible.

Power button menu

openmoko-panel-plugin shows a menu when the power button is pressed; however, frameworkd will also react to the button press and suspend the phone. If you prefer to have the menu, edit /etc/freesmartphone/oevents/rules.yaml and delete or comment out these lines:

-
    #
    # Suspend Handling
    #
    trigger: InputEvent()
    filters:
             - HasAttr(switch, "POWER")
             - HasAttr(event, "released")
             - HasAttr(duration, 0)
    actions: Suspend()

Autosuspend when idle

If you want autosuspend when idle (i.e. only when a call is not going on), edit /etc/freesmartphone/oevents/rules.yaml and add the following lines:

-
    #
    # Autosuspend when idle
    #
    trigger: IdleState()
    filters:
             - HasAttr(status, "suspend")
             - Not(CallListContains("active"))
    actions: Suspend()

NB, this requires freesmartphone.org milestone5.5, check this thread for more information.

Remote logging

The phone can be configured to send all log information via UDP to another computer. Remote logging allows the FreeRunner to log events without using up flash memory, and allows to have a log also in case of microSD failures.

Instructions can be found here.

Miscellaneous tuning

Enlightenment adjustments