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
- Add 'quiet' to the kernel command line for a faster boot
If you need to use swap, adding vm.swappiness = 30 (or even lower values) to /etc/sysctl.conf may help in having a more responsive phone. What would be an optimal value?
Enlightenment adjustments
By default, the AUX button is not configured to lock the screen. I changed this by going to Settings => Input => Keybindings. Highlight the first entry, click Modify Key, then press the AUX key. Set it to execute "Desktop Simple Lock". (by John Sullivan)
Additionally, you can remove the "Lock" entry from the system menu, which will lock you out without a chance to enter your keyboard. To do so, install libeet-bin, and run
eet -d ~/.e/e/config/illume/e.cfg config /tmp/config
Then edit the file /tmp/config and remove the partgroup "syscon.actions" list { group "E_Config_Syscon_Action" struct { value "action" string: "desklock"; value "button" string: "button"; value "icon" string: "system-lock-screen"; value "is_main" int: 1; } }
Now runeet -e ~/.e/e/config/illume/e.cfg config /tmp/config 0
and restart e17.To allow enlightenment to suspend via FSO, make this setting in /etc/enlightenment/sysactions.conf:
action: suspend mdbus -s org.freesmartphone.ousaged /org/freesmartphone/Usage org.freesmartphone.Usage.Suspend
To make the keyboard automatically pop up when using a gtk application (including vala-terminal) or zhone, install matchbox-keyboard-im.
To make the power button available to X applications, and especially to bind it to an e17 action, save this file to /etc/hal/fdi/policy/powerbutton-evdev.fdi.
<?xml version="1.0" encoding="ISO-8859-1"?> <deviceinfo version="0.2"> <device> <match key="info.product" contains="PCF50633 PMU events"> <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux"> <merge key="input.x11_driver" type="string">evdev</merge> </match> </match> </device> </deviceinfo>