Debian

Wenn man dazu tendiert sich ungern zu beschränken und im Zweifelsfall lieber alles möchte, sollte man wohl nicht mit einem FS mit weniger als 1GB anfangen. Ob eine benutzbare Installation mit 250MB (also im NAND-Flash) möglich ist ist ungetestet. Wahrscheinlich kann man aber mit gutem Gewissen auf jeden Fall eine Installation auf eine möglichst grosse microSD empfehlen. Die SD-Card am Desktop oder Notebook zu partitionieren, formatieren, und per install.sh Debian darauf zu installieren dürfte auch bequemer sein…

Das install.sh des DebianOnFreeRunner Projekts unterstützt leider keine Installation mit dem Kernel im Rootfs. Mit diesem mutierten install.sh funktioniert das.

ext2load (um den Kernel aus einem ext2-FS zu lesen) wird erst von halbwegs neuen UBoot-Versionen (so etwa ab August 2008) supportet.
Ein entsprechender UBoot-Env Eintrag (Kernel im ext2-Rootfs = 1. Partition auf SD-Card) würde in etwa so aussehen:

setenv menu_1 Boot from microSD partition 1 (ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p1 rootdelay=5 \${mtdparts} ro\; mmcinit\; ext2load mmc 1:1 0x32000000 /boot/uImage\; bootm 0x32000000

Das ganze ist ein Mix aus unstable und experimental tree. Kann also durchaus passieren dass zeitweise die Installation z.B. wegen Dependency-Problemen fehlschlägt. Einfach später nochmal probieren.

Am einfachsten klaut man sich wohl den aktuellen Openmoko-Kernel.
Location im UBoot-Env Booteintrag eintragen nicht vergessen (oder besser um den Default zu benutzen einfach /boot/uImage zum Kernel Symlinken)

usbcore, usbnet, cdc_ether

  • usb0 ist immer UP. Ohne Link sollte das Interface aber DOWN gehen. Konsequenz ist dass bei fehlendem Link das Interface nicht dekonfiguriert wird, und bei neuem Link nicht neu konfiguriert wird - muss man manuell mit ifdown usb0 und ifup usb0 machen. Nervt.
  • Die cpufreq modules scheinen zu fehlen? Eigentlich kaum zu glauben, bei 'nem Akkusensiblen Embedded-System!?

ALSA WM8753 Module

  • Ob der WM8753 Mixing in Hardware supportet ist unklar. Das ALSA-Module dafür jedenfalls offenbar (noch) nicht? Wäre allerdings ein nicht ganz uninteressanter Punkt, da ALSA dmix (Software Mixing) nicht so performt dass das auf dem Neo wirklich brauchbar wäre…

Timezone ist per default UTC.
Ändern mit: dpkg-reconfigure tzdata

Generell ist wohl eine dhcp Konfiguration von usb0 eine gute Idee.

/etc/network/interfaces

auto usb0
iface usb0 inet dhcp

Um den Aufruf eines GSM-Terminals (möglicherweise via Mux) zu vereinfachen:

gsmterminal.sh

#!/bin/sh
#
# gsmterminal.sh  This shell script starts a gsm terminal

PATH=/bin:/usr/bin:/sbin:/usr/sbin

GSM_DEV="/dev/ttySAC0"
[ -f /etc/default/rcS ] && . /etc/default/rcS
[ -f /etc/default/gsmd ] && . /etc/default/gsmd

pid="`fuser "$GSM_DEV"`"
if [ -n "$pid" ] && [ "`ps -o comm --no-heading -p $pid`" == "gsm0710muxd" ]; then
        tty="`dbus-send --system --print-reply --type=method_call --dest=org.pyneo.muxer /org/pyneo/Muxer org.freesmartphone.GSM.MUX.AllocChannel string:terminal | grep '^[    ]*string' | sed 's/^[   ]*string "\(.*\)"$/\1/'`"
else
        [ -n "$GSM_POW" ] && ( echo "0" >"$GSM_POW"; sleep 1 )
        [ -n "$GSM_POW" ] && ( echo "1" >"$GSM_POW"; sleep 1 )
        [ -n "$GSM_RES" ] && ( echo "1" >"$GSM_RES"; sleep 1 )
        [ -n "$GSM_RES" ] && ( echo "0" >"$GSM_RES"; sleep 2 )
        tty="$GSM_DEV"
fi

screen "$tty"

pid="`fuser "$GSM_DEV"`"
if [ -z "$pid" ] || [ "`ps -o comm --no-heading -p $pid`" != "gsm0710muxd" ]; then
        [ -n "$GSM_POW" ] && echo "0" >"$GSM_POW"
fi

Eine Art pppd-wrapper-daemon der dafür sorgt dem pppd immer ein tty zur Verfügung zu stellen.

/etc/ppp/gsmpppd.sh

#!/bin/sh
#
# gsmpppd.sh  This shell script starts a gsm pppd

PATH=/bin:/usr/bin:/sbin:/usr/sbin

GSM_DEV="/dev/ttySAC0"
[ -f /etc/default/rcS ] && . /etc/default/rcS
[ -f /etc/default/gsmd ] && . /etc/default/gsmd
[ -f /etc/default/pppd ] && . /etc/default/pppd

if [ "$gsmpppd_phase" != "2" ]; then
        gsmpppd_phase="2"
        export gsmpppd_phase
        $0 &
        exit 0
fi;

# making the shell send signals it receives to its children, too, would be
# great... we could forget about signal handlers, would not have to care about
# children pids, and would not have to detach pppd and then wait for it...
sig_handler() {
        trap "" $1      # i don't know why, but at least TERM is signalled twice?
        logger gsmpppd.sh: signal $1 received
        #for i in `jobs -p`; do # does not work with ash - would work with bash
        for i in $gsmpppd_children; do
                logger gsmpppd.sh: sending child process $i signal $1
                kill -$1 $i
        done
        exit 0
}
trap "sig_handler HUP"  SIGHUP
trap "sig_handler INT"  SIGINT
trap "sig_handler QUIT" SIGQUIT
trap "sig_handler KILL" SIGKILL
trap "sig_handler TERM" SIGTERM

while true; do
        pid="`fuser "$GSM_DEV"`"
        if [ -n "$pid" ] && [ "`ps -o comm --no-heading -p $pid`" == "gsm0710muxd" ]; then
                tty="`dbus-send --system --print-reply --type=method_call --dest=org.pyneo.muxer /org/pyneo/Muxer org.freesmartphone.GSM.MUX.AllocChannel string:pppd | grep '^[        ]*string' | sed 's/^[   ]*string "\(.*\)"$/\1/'`"
        else
                [ -n "$GSM_POW" ] && ( echo "0" >"$GSM_POW"; sleep 1 )
                [ -n "$GSM_POW" ] && ( echo "1" >"$GSM_POW"; sleep 1 )
                [ -n "$GSM_RES" ] && ( echo "1" >"$GSM_RES"; sleep 1 )
                [ -n "$GSM_RES" ] && ( echo "0" >"$GSM_RES"; sleep 2 )
                tty="$GSM_DEV"
        fi
        # as the following two lines are non-atomic, this qualifies as 'ugly'
        /usr/sbin/pppd file "/etc/ppp/$PPP_FILE.options" connect "chat -v -f /etc/ppp/default.chat -T '$PPP_PHONE' -U '$PPP_APN'" <"$tty" 1>&0 &
        gsmpppd_children="$gsmpppd_children $!"
        wait
done

/etc/init.d/pppd

#!/bin/sh
#
# pppd  This shell script starts and stops pppd.
#
# chkconfig: 345 90 40
# description: Pppd manages an ip link via a serial device, in this case a gsm data connection
# processname: pppd

PATH=/bin:/usr/bin:/sbin:/usr/sbin

GSM_DEV="/dev/ttySAC0"
[ -f /etc/default/rcS ] && . /etc/default/rcS
[ -f /etc/default/gsmd ] && . /etc/default/gsmd

case "$1" in
    start)
        echo -n "Starting PPP daemon: "
        start-stop-daemon -S -x /etc/ppp/gsmpppd.sh
        if [ "$?" == "0" ]; then
                echo "pppd."
        else
                echo "(failed.)"
        fi
        ;;
    stop)
        echo -n "Stopping PPP daemon: "
        #start-stop-daemon -K -x /etc/ppp/gsmpppd.sh    # start-stop-daemon won't find it because it's just an argument to its interpreter
        pkill gsmpppd.sh
        pid="`fuser "$GSM_DEV"`"
        if [ -z "$pid" ] || [ "`ps -o comm --no-heading -p $pid`" != "gsm0710muxd" ]; then
                [ -n "$GSM_POW" ] && echo "0" >"$GSM_POW"
        fi
        echo "pppd."
        ;;
    restart|force-reload)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: /etc/init.d/pppd {start|stop|restart|force-reload}"
        exit 1
        ;;
esac

exit 0

/etc/ppp/flat.options

lock
noauth
crtscts
lcp-echo-failure 3
lcp-echo-interval 20
noipdefault
usepeerdns
defaultroute
replacedefaultroute

/etc/ppp/demand.options
(ungetestet, insbes. der active-filter dürfte wohl unter 'symbolische notation' fallen…)

lock
noauth
demand
idle 20
active-filter ( outbound dst port 53 ) or ( outbound tcp dst ( port 443 or port 80 or port 25 or port 22 ) or ( inbound tcp src ( port 443 or port 80 or port 25 or port 22 ) )
crtscts
lcp-echo-failure 3
lcp-echo-interval 20
noipdefault
usepeerdns
defaultroute
replacedefaultroute

/etc/ppp/default.chat

TIMEOUT 15
"" "\K\K\K\d+++ATH"
OK-AT-OK ATZ
OK ATE1
OK AT+CFUN?
+CFUN:\s1-AT+CFUN=1-OK AT+COPS?
+COPS:\s0-AT+COPS=0-OK AT+CGDCONT=1,\"IP\",\"\U\"
OK ATD\T
ABORT BUSY
ABORT DELAYED
ABORT "NO CARRIER"
ABORT "NO ANSWER"
ABORT "NO DIALTONE"
ABORT VOICE
ABORT ERROR
ABORT RINGING
TIMEOUT 60
CONNECT ""

/etc/default/pppd
(Die jeweiligen Werte durch die für den jeweiligen GSM Provider passenden Werte ersetzen - dieses Beispiel ist für EPlus und -Reseller)

PPP_PHONE="*99#"
PPP_APN="internet.eplus.de"
PPP_FILE="flat"

Falls für den GPRS-Zugang PAP oder CHAP Authentifizierung notwendig ist, noch die jeweiligen Daten in /etc/ppp/pap-secrets oder /etc/ppp/chap-secrets eintragen. Z.B. so (wieder EPlus und -Reseller, in dem Fall chap-secrets):

*               "eplus" "gprs"                  *

Die PPP-Connection kann dann also mit /etc/init.d/pppd gestartet und gestoppt werden. PPP_FILE=“flat” ist gedacht als 'always on' Variante. Ohne Daten-Flatrate sicher nicht zu empfehlen. PPP_FILE=“demand” ist gedacht als 'on demand' Variante - ist aber ungetestet und funktioniert mit an Sicherheit grenzender Wahrscheinlichkeit nicht oder nicht so wie man das will, d.h. man kann davon ausgehen dass bei Benutzung die Welt untergeht. ;)
Automatisches Starten via Init ist allerdings wohl eine schlechte Idee. Der pppd wird die GSM-Serielle benutzen, da der gsm0710muxd erst später gestartet wird - bzw. würde, da das tty belegt ist wird das nicht funktionieren. D.h. will man den pppd automatisch starten, sollte man das tun nachdem der gsm0710muxd gestartet wird (der wird das irgendwie über X). Ohne Flatrate will man das alles aber vielleicht sowieso lieber manuell machen…

apt-get install ntp

Damit wird mit einer Handvoll default Timeserver gesynced.

  • Falls dhcp einen timeserver liefert, sollte der per ntpdc addpeer oder addserver hinzugefügt (und ggf. wieder entfernt) werden. Hinweise wie das ohne keyid geht sehr willkommen. :)

Um mit FSO/Zhone zu beginnen, sollte man folgende Pakete installieren:

apt-get install dbus-x11 fso-config-gta02 fso-sounds-none fso-sounds-openmoko-nonfree hicolor-icon-theme libgtk2.0-bin
  • PIN-Dialog lässt sich wieder nicht direkt aufrufen. Wenn Zhone als (Autostart) Applikation gestartet wird passt das wohl (ggf. Zhone beenden, neustarten → PIN-Dialog).
  • Kalender funktioniert irgendwie nie. Macht nix, gehört IMHO nicht wirklich in 'ne GSM-Applikation.

Um das Matchbox-Panel (wie bei den Openmoko-Distributionen) und die -Tastatur (wie bei Openmoko2007), zusätzlich noch einen Application-Launcher zu benutzen, folgende Pakete installieren:

apt-get install matchbox matchbox-panel matchbox-panel-manager matchbox-keyboard matchbox-desktop

/etc/X11/Xresources/matchbox

matchbox.theme: x
matchbox.titlebar: no
matchbox.cursor: no

Das eigene Theme (hier: x) gehört nach:
/usr/share/themes/x
und die zugehörigen Icons nach:
/usr/share/icons/x
(⇒ jeweils default nach x kopieren und je nach Geschmack anpassen)

Ein deutsches Keyboard-Layout:

/usr/share/matchbox-keyboard/keyboard.xml

<?xml version="1.0" encoding="UTF-8"?>
<keyboard>
<!--
 DE keyboard layout by x <x@muc.ccc.de>
-->
<options>
<!-- not yet implemented -->
</options>
<layout id="de keyboard">

<!--
  <row>
     <key>
          <default display="ヂ" />
    </key>
    <key>
          <default display="Ӫ" />
    </key>
    <space width="1500" />
    <key fill="true">
          <default display="⠿" />
    </key>
  </row>
-->

  <row>
    <space width="500" extended="true"/>
    <key fill="true">
          <default display="Esc" action="escape" />
    </key>
    <key>
          <default display="^" />
          <shifted display="°" />
    </key>
    <key>
          <default display="1" />
          <shifted display="!" />
    </key>
    <key>
          <default display="2" />
          <shifted display='"' />
          <mod1    display="²" />
    </key>
    <key>
          <default display="3" />
          <shifted display="§" />
          <mod1    display="³" />
    </key>
    <key>
          <default display="4" />
          <shifted display="$" />
    </key>
    <key>
          <default display="5" />
          <shifted display="%" />
    </key>
    <key>
          <default display="6" />
          <shifted display="&amp;" />
    </key>
    <key>
          <default display="7" />
          <shifted display="/" />
          <mod1    display="{" />
    </key>
    <key>
          <default display="8" />
          <shifted display="(" />
          <mod1    display="[" />
    </key>
    <key>
          <default display="9" />
          <shifted display=")" />
          <mod1    display="]" />
    </key>
    <key>
          <default display="0" />
          <shifted display="=" />
          <mod1    display="}" />
    </key>
    <key>
          <default display="ß" />
          <shifted display="?" />
          <mod1    display="\" />
    </key>
    <key>
          <default display="´" />
          <shifted display="`" />
    </key>
    <key fill="true">
          <default display="⟵" action="backspace"/>
          <mod1 display="Del" action="delete"/>
    </key>
    <space width="500" extended="true"/>
    <key width="4000"  extended="true">
          <default display="Home" action="home"/>
    </key>
    <key width="4000"  extended="true">
          <default display="PgUp" action="pageup"/>
    </key>
    <space width="500" extended="true"/>
  </row>
  <row>
    <space width="500" extended="true"/>
    <key width="2500">
          <default display="⇥" action="tab"/>
          <shifted display="⇤" action="tab"/>
    </key>
    <key obey-caps='true'>
          <default display="q" />
          <shifted display="Q" />
          <mod1 display="@" />
    </key>
    <key obey-caps='true'>
          <default display="w" />
          <shifted display="W" />
          <mod1 display="ε" />
    </key>
    <key obey-caps='true'>
          <default    display="e" />
          <shifted display="E" />
          <mod1 display="€" />
    </key>
    <key obey-caps='true'>
          <default display="r" />
          <shifted display="R" />
          <mod1 display="ρ" />
    </key>
    <key obey-caps='true'>
          <default display="t" />
          <shifted display="T" />
          <mod1 display="τ" />
    </key>
    <key obey-caps='true'>
          <default display="z" />
          <shifted display="Z" />
          <mod1 display="ζ" />
    </key>
    <key obey-caps='true'>
          <default display="u" />
          <shifted display="U" />
    </key>
    <key obey-caps='true'>
          <default display="i" />
          <shifted display="I" />
          <mod1 display="ι" />
    </key>
    <key obey-caps='true'>
          <default display="o" />
          <shifted display="O" />
          <mod1 display="ω" />
    </key>
    <key obey-caps='true'>
          <default display="p" />
          <shifted display="P" />
          <mod1 display="π" />
    </key>
    <key obey-caps='true'>
          <default display="ü" />
          <shifted display="Ü" />
          <mod1 display="ψ" />
    </key>
    <key>
          <default display="+" />
          <shifted display="*" />
          <mod1 display="~" />
    </key>
    <!-- key fill="true">
          <default display="#" />
          <shifted display="'" />
    </key -->
    <key fill="true">
          <default display="⏎" action="return" />
    </key>
    <space width="500" extended="true"/>
    <key width="4000"  extended="true">
          <default display="End" action="end"/>
    </key>
    <key width="4000"  extended="true">
          <default display="PgDn" action="pagedown"/>
    </key>
    <space width="500" extended="true"/>
  </row>
  <row>
    <space width="500" extended="true"/>
    <key width="3500">
          <default display="⇩" action="modifier:caps"/>
    </key>
    <key obey-caps='true'>
          <default display="a" />
          <shifted display="A" />
          <mod1 display="α" />
    </key>
    <key obey-caps='true'>
          <default display="s" />
          <shifted display="S" />
          <mod1 display="σ" />
    </key>
    <key obey-caps='true'>
          <default display="d" />
          <shifted display="D" />
          <mod1 display="δ" />
    </key>
    <key obey-caps='true'>
          <default display="f" />
          <shifted display="F" />
          <mod1 display="φ" />
    </key>
    <key obey-caps='true'>
          <default display="g" />
          <shifted display="G" />
          <mod1 display="γ" />
    </key>
    <key obey-caps='true'>
          <default display="h" />
          <shifted display="H" />
          <mod1 display="η" />
    </key>
    <key obey-caps='true'>
          <default display="j" />
          <shifted display="J" />
    </key>
    <key obey-caps='true'>
          <default display="k" />
          <shifted display="K" />
          <mod1 display="κ" />
    </key>
    <key obey-caps='true'>
          <default display="l" />
          <shifted display="L" />
          <mod1 display="λ" />
    </key>
    <key obey-caps='true'>
          <default display="ö" />
          <shifted display="Ö" />
          <mod1 display="Ω" />
    </key>
    <key obey-caps='true'>
          <default display="ä" />
          <shifted display="Ä" />
          <mod1 display="θ" />
    </key>
    <key>
          <default display="#" />
          <shifted display="'" />
    </key>
    <key fill="true">
          <default display="⏎" action="return" />
    </key>
    <space width="500" extended="true"/>
    <space width="4000"  extended="true" />
    <space width="4000"  extended="true" />
    <space width="500" extended="true"/>
  </row>
  <row>
    <space width="500" extended="true"/>
    <key width="2000">
          <default display="⇧" action="modifier:shift"/>
    </key>
    <key>
          <default display="&lt;" />
          <shifted display="&gt;" />
          <mod1 display="|" />
    </key>
    <key obey-caps='true'>
          <default display="y" />
          <shifted display="Y" />
          <mod1 display="υ" />
    </key>
    <key obey-caps='true'>
          <default display="x" />
          <shifted display="X" />
          <mod1 display="ξ" />
    </key>
    <key obey-caps='true'>
          <default display="c" />
          <shifted display="C" />
          <mod1 display="χ" />
    </key>
    <key obey-caps='true'>
          <default display="v" />
          <shifted display="V" />
    </key>
    <key obey-caps='true'>
          <default display="b" />
          <shifted display="B" />
          <mod1 display="β" />
    </key>
    <key obey-caps='true'>
          <default display="n" />
          <shifted display="N" />
          <mod1 display="ν" />
    </key>
    <key obey-caps='true'>
          <default display="m" />
          <shifted display="M" />
          <mod1 display="µ" />
    </key>
    <key>
          <default display="," />
          <shifted display=";" />
    </key>
    <key>
          <default display="." />
          <shifted display=":" />
    </key>
    <key>
          <default display="-" />
          <shifted display="_" />
    </key>
    <key fill="true">
          <default display="⇧" action="modifier:shift"/>
    </key>
    <space width="500" extended="true"/>
    <space width="4000"  extended="true" />
    <space width="4000"  extended="true" />
    <space width="500" extended="true"/>
 </row>
  <row>
    <space width="500" extended="true"/>
    <key>
          <!-- default display="[->]" action="modifier:layout"/ -->
          <default display="Pse" action="pause"/>
          <shifted display="Scr" action="scrolllock"/>
          <mod1 display="SRq" action="sysreq"/>
    </key>
    <key fill="true">
          <default display="Ctrl" action="modifier:ctrl"/>
    </key>
    <key>
          <default display="☮" action="modifier:mod2"/>
    </key>
    <key>
          <default display="Alt" action="modifier:alt"/>
    </key>
    <key width="12000">
          <default display=" " action="space" />
    </key>
    <key>
          <default display="AGr" action="modifier:mod1"/>
    </key>
    <key>
          <default display="↑" action="up" />
          <mod1 display="Pg↑" action="pageup" />
    </key>
    <key>
          <default display="↓" action="down" />
          <mod1 display="Pg↓" action="pagedown" />
    </key>
    <key>
          <default display="←" action="left" />
          <mod1 display="Hom" action="home"/>
    </key>
    <key>
          <default display="→" action="right" />
          <mod1 display="End" action="end"/>
    </key>
    <space width="500" extended="true"/>
    <space width="4000"  extended="true" />
    <space width="4000"  extended="true" />
    <space width="500" extended="true"/>
</row>
</layout>
</keyboard>

Hinweise wie man die Enter-Tasten über die zwei Rows hinweg zu einer machen kann wären sehr erwünscht :)

Keybindings lassen sich in /etc/matchbox/kbdconfig konfigurieren.

Per Installation wird X mit Zhone (/usr/bin/zhone-session) via /etc/init.d/zhone-session gestartet. Um X mit Matchbox zu starten sollte man die S*zhone-session und K*zhone-session Links aus den /etc/rc*.d entfernen,

for i in 0 1 6; do mv /etc/rc$i.d/K20zhone-session /etc/rc$i.d/xK20zhone-session; done
for i in 2 3 4 5; do mv /etc/rc$i.d/S20zhone-session /etc/rc$i.d/xS20zhone-session; done

und X mit /usr/bin/matchbox-session starten. Am einfachsten wohl /etc/init.d/zhone-session nach /etc/init.d/matchbox-session kopieren, PROG_FSO auf /usr/bin/matchbox-session setzen, und S*matchbox-session/ / (rcs 2, 3, 4, 5) und / /K*matchbox-session (rcs 0, 1, 6) Links in den jeweiligen /etc/rc*.d setzen.

for i in 0 1 6; do ln -s ../init.d/matchbox-session /etc/rc$i.d/K20matchbox-session; done
for i in 2 3 4 5; do ln -s ../init.d/matchbox-session /etc/rc$i.d/S20matchbox-session; done

Die default-Session ist etwas spärlich, dem sollte folgendes abhelfen:

/etc/matchbox/session

#!/bin/sh

gnome-screensaver &
gnome-power-manager &
zhone &
matchbox-desktop &
matchbox-panel  --orientation north &
matchbox-keyboard-toggle &
exec matchbox-window-manager $@
  • Die Panel Orientation sollte ebenfalls per Xresources konfigurierbar sein.
  • Es liegt wohl nahe das Panel für die X-Session zu benutzen. Dann möchte man für div. Services (z.B. matchbox-keyboard-toggle, gnome-screensaver, gnome-power-manager, gnome-volume-manager, zhone, …) geeigneterweise ein Autostart vom Panel beutzen. Dazu würde sich ~/.matchbox/mbdock.session anbieten (btw auch für die Panel-Icon-Positionierungs-Sache) - leider funktioniert das nicht, alles ausser den mb-applet-* Apps wird darüber nicht gestartet… :/
  • Das Clock-Applet benutzt als Font-Farbe offenbar fix #000000. Sollte aber PanelFgColor aus dem Theme nehmen… Datumsformat (Datum/Zeit, 24h, Sekunden) sollte konfigurierbar sein.
  • Das matchbox-keyboard-toggle Applet (python, btw) dockt nicht ins Panel.
  • matchbox-keyboard liefert für ein Shift-Tab (Left-Tab) offenbar nur Tab.
  • Folgende Applets fehlen: Tasklist (Title Anzeige der aktuellen Applikation im Panel, Menü mit Liste aller laufenden X-Applikationen und Desktop/Root, möglichst (optional) fingerfreundlich fullscreen), GSM, BT, USB, 'Sanduhr-Ersatz'
  • mb-applet-battery funktioniert nicht (aber man will eigentlich eh lieber gnome-power-manager).
  • matchbox-desktop widersetzt sich allen Konfigurationsversuchen. Es verwendet fix das Raleigh Theme, hört nicht auf matchbox-remote, und auch –bg setzen per Commandline funktioniert nicht.
  • matchbox-desktop benutzt wohl das Root-Window. Und das auf der gesamten Screengrösse - was schlecht ist, da Panel und ggf. Keyboard damit einen Teil verdecken. Falls das Beschränken auf den Teil zwischen Panel und Keyboard mit dem Root-Window nicht machbar ist, wäre ein normales Fenster - fullscreen - genauso gut.

Die Screensaver-/Locking-/Powermanagementfunktionalität des FSO-Frameworkd stört eigentlich sobald man nicht ausschliesslich Zhone, sondern verschiedene X Applikationen benutzen möchte.
In dem Fall möchte man ebendiese Aufgaben von einer X Lösung erledigt bekommen, z.B. dem gnome-screensaver und dem gnome-power-manager, letzterer dockt sich auch ans Panel.

Dazu folgende Pakete installieren:

apt-get install gnome-screensaver gnome-power-manager

Um die besagte Funktionalität beim Frameworkd auszuschalten, folgende Parameter in der angegebenen Sektion hinzufügen:

/etc/frameworkd.conf

[odeviced.idlenotifier]
# configure timeouts (in seconds) here. A value of 0
# means 'never fall into this state' (except programatically)
idle = 0
idle_dim = 0
idle_prelock = 0
lock = 0
suspend = 0
  • Das Panel-Icon lässt sich zwar mittels matchbox-panel-manager positionieren, bei einem Neustart wird's aber wieder an der default-Position platziert.
  • gnome-screensaver lässt bei uid 0 kein Locking zu. In einem singleuser-Fall wie auf dem Neo ist das eher kontraproduktiv.
  • Die Zeiten sollten sowohl im gnome-screensaver als auch im gnome-power-manager in Sekundengranularität konfigurierbar sein. Schieberegler sind eh doofer als Felder in denen man das Intervall eingeben kann.
  • Der Countdown der 'Discharging' Notification des gnome-power-manager zählt nicht runter.
  • Als Unlockingmechanismus wünscht man sich eigentlich auch so Dinge wie die 1-2-3-4 Buttons, den Moko-Ball, andere Gestures, etc… z.Zt. supportet gnome-screensaver aber wohl nur die standard Passwort-Abfrage.
  • Die Dim-Geschwindigkeit sowie die einzelnen Helligkeitslevel (die reduce backlight when on battery option funktioniert btw nicht) sollten konfigurierbar sein.
  • Das Panel-Icon-Menü sollte einen Eintrag haben um eine (konfigurierbare) Konfigurationsapplikation zu starten.
  • Eigentlich sollten gnome-screensaver und gnome-power-management eins sein, funktionsmässig gehören die zam, und die Trennung führt nur zu komischen Dingen wie Blanking das sowohl im Screensaver als auch im Powermanagement (unterschiedlich) konfiguriert werden kann/muss…

Mind. zwecks Themeing empfiehlt sich auch hier gnome-terminal. Das ist dann hübsch und gut benutzbar - hat aber im Vergleich zu xterm oder rxvt o.ä. einen relativ riesigen (wenn auch wohl grade noch erträglichen) Memory-Footprint…

Als Volume-Control Panel-Applikation empfiehlt sich gnome-volume-manager. Leider dockt der nicht ans Panel, womit er derzeit nicht brauchbar ist (macht de facto einfach garnichts).

X regelt.

  • xrandr Rotation funktioniert nicht. Da fehlt irgendwie im X Server wahrscheinlich noch Landscape-Support? Bei Openmoko2007 gab's Landscape-Support, das war aber auch ein fbdev X? Hints welcome.
  • eine Gesten-Input-Applikation! Primär erstmal zum Scrollen wäre schonmal ein Riesenfortschritt.
  • openmoko/debian.txt
  • Last modified: 2021/04/18 12:35
  • (external edit)