WLAN mit WPA2 auf dem Freerunner zum laufen bekommen

Zum Einrichten von WLAN benötigen wir erst einmal USB Networking, aber wie das funktioniert habe ich ja im letzten Artikel erklärt. Nachdem wir uns dann per SSH in das Freerunner eingeloggt haben erstellen wir zuerst die Datei /etc/wpa_supplicant/wpa_supplicant.conf. In diese Datei schreiben wir diesem Inhalt:

ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1

# WPA2:
network={
ssid=“Unsere SSID“
scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=TKIP CCMP
psk=“Der geheime Schlüssel“
priority=50
}

# Open:
network={
ssid=“Unsere SSID“
key_mgmt=NONE
priority=5
}

Damit das WLAN auch automatisch startet legen wir im nächsten Schritt die Datei /etc/init.d/wlan an. In diese Datei schreiben wir folgenen Inhalt:

#!/bin/sh
#
# wlan This shell script starts and stops wlan.
#
# processname: wlan

# Source function library.
#. /etc/rc.d/init.d/functions
# „written“ by HdR (very ugly)

RETVAL=0
prog=“wlan“

# test -f /etc/default/$prog && . /etc/default/$prog

start() {
echo -n „Starting $prog: “
ifconfig eth0 up
wpa_supplicant -ieth0 -c/etc/wpa_supplicant/wpa_supplicant.conf -B
sleep 10
udhcpc eth0
RETVAL=$?
return $RETVAL
}

stop() {
# Stop daemons.
echo -n „Shutting down $prog: “
killall wpa_supplicant
ifconfig eth0 down
# killproc gpsd
RETVAL=$?
return $RETVAL
}

# See how we were called.
case „$1“ in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
*)
echo „Usage: $0 {start|stop|restart}“
exit 1
esac

exit $RETVAL

Damit das Skript ausgeführt werden kann muss es als „Ausführbar“ gekennzeichnet werden. Dies bewerkstelligen wir mit chmod 755 /etc/init.d/wlan. Als nächstes erstellen wir die Datei /etc/rcS.d/S42wlan.sh und machen Sie ausführbar mit dem bekannten chmod 755 /etc/rcS.d/S42wlan.sh. Der Inhalt der Datei sollte wie folgt aussehen:

#!/bin/sh
/etc/init.d/wlan start &

Nun verbindet sich das Freerunner automatisch mit dem heimischen Netzwerk. Weitere Informationen gibt es unter http://wiki.openmoko.org/wiki/GTA02_wlan.

USB-Networking einrichten

Das Einrichten eines USB-Netzwerkes geht schnell und schmerzlos. Dazu benötigt man nur ein Skript welches unter http://buildhost.automated.it/gta01 zum Download bereitsteht. Daneben benötigt man noch die Anwendung dnrd welche unter http://dnrd.sourceforge.net/ heruntergeladen werden kann.

Die Anwendung wird dann mit dem bekannten Dreisatz: .configure && make && make install installiert. Danach muss das Gerät per USB angeschlossen und das Skript ausgeführt werden werden und schon steht einem das Netzwerk über USB zur Verfügung. Dabei ist zu beachten das make install sowie das Skript root Rechte benötigt.

Sollte bei der Ausführung des Skriptes ein Fehler wie:

ERROR: Could not chdir to/usr/local/etc/dnrd, No such file or directory

auftreten so behebt man diesen einfach in dem man das entsprechende Verzeichnis anlegt.

Falls sich jemand fragt wozu dnrd überhaupt benötigt wird hier die Antwort. Mittels dnrd bekommt das Gerät automatisch die DNS-Server des Hostrechners zugewiesen, was einem das Eintragen in die /etc/resolv.conf erspart.

Weitere Informationen gibt es unter http://wiki.openmoko.org/wiki/USB_Networking.

GPS auf dem Freerunner

GPS auf dem Freerunner ist eigentlich eine einfache Sache. Zuerst öffnet man die Datei /etc/default/gpsd und verändert GPS_DEV=“/dev/ttyS3″ in GPS_DEV=“/dev/ttySAC1 (falls die Datei nicht existiert sollte man sie einfach anlegen und GPS_DEV=“/dev/ttySAC1 hineinschreiben). Macht man das nicht, so startet der gpsd Daemon nicht. Jetzt kann man sich mittels opkg install openmoko-agpsui die passende Testanwendung installieren. Sobald AGPSUI gestartet hat drückt man auf Power On und wartet bis man den ersten Fix bekommt.

Leider gibt es mit dem Freerunner wohl einige Probleme mit der internen GPS Antenne. So kann ein Fix bis zu 20 Minuten dauern. Der Bugreport dazu befindet sich unter https://docs.openmoko.org/trac/ticket/1542. Auf der Mailingliste wurde außerdem verkündet das wir uns an Wolfgang von Openmoko wenden sollen.

Damit nicht jeder einen neuen Text schreibt, hier ein Mustertext:

Hello Wolfgang,

conforming to Steve’s mail on the „GPS“-topic (community list), here’s the data of my problematic GTA02:
S/N: Deine Seriennummer
P/N: Deine P/N
DATE CODE: Dein Datecode

Yours sincerely,

Dein Name

Die besagten Nummern befinden sich auf dem Aufkleber welcher sich unter dem Akku befindet. Die ganze Mail geht dann mit dem Betreff GPS issues with GTA02 an .

Mit einer externen Antenne sollen diese Probleme im übrigen nicht auftreten. Falls sich jemand eine Antenne kaufen möchte, es handelt sich um einen MMCX Anschluss am Neo.

Weitere Informationen zum GPS Bug unter http://wiki.openmoko.org/wiki/GPS_Problems.

Mokopedia einrichten

Heute wollte ich die Mokopedia auf meinem Freerunner einrichten. Die Mokopedia ist eine zum Offline Anschauen optimierte Fassung der Wikipedia. Zu finden ist sie unter http://mokopedia.mister-muffin.de/.

Bevor wir anfangen binden wir noch ein zusätzliches Repository ein. Dazu wird die Datei http://rabenfrost.net/celtune/celtune-rabenfrost.conf in den Ordner /etc/opkg/ gepackt und anschließend opkg update ausgeführt. Danach werden mit opkg install python-opendir python-netserver kernel-module-loop die benötigten Module installiert.

Dann benötigen wir noch einige Kernelmodule. Dabei ist zu beachten das die hier angebotenen Kernelmodule nur mit der Version 2.6.24 des Kernels zusammenarbeiten. Überprüfen kann man dies in dem man auf der Konsole uname -a eingibt.

Wenn die Kernelversion stimmt kann man sich die benötigten Module auf sein Freerunner laden. Dazu gibt man in der Konsole folgendes ein:

wget https://seeseekey.net/wp-content/uploads/2008/11/unlzma.ko
wget https://seeseekey.net/wp-content/uploads/2008/11/sqlzma.ko
wget https://seeseekey.net/wp-content/uploads/2008/11/squashfs.ko

Die Dateien müssen dann an folgende Orte:

unlzma.ko -> /lib/modules/2.6.24/kernel/extra/lzma/unlzma.ko
sqlzma.ko -> /lib/modules/2.6.24/kernel/extra/lzma/sqlzma.ko
squashfs.ko -> /lib/modules/2.6.24/kernel/fs/squashfs/squashfs.ko

Um die Modulabhängigkeiten zu aktualisieren geben wir dann noch depmod -a ein. In die Datei /etc/fstab/ tragen wir dann noch folgendes ein:

# mokopedia
/media/card/mokopedia/de/mokopedia.lzma /media/mokopedia/de squashfs default,loop 0 0

Nun liegt nach einem Neustart in dem Verzeichnis /media/mokopedia/de die Mokopedia. So ist das ganze natürlich noch nicht sonderlicht schön. Wir benötigen noch einen Server der uns das Ganze für den Webbrowser ein wenig hübscher macht.

Dazu benötigen wir einen kleinen Webserver den gibt es hier. Das ganze entpacken und auf den Freerunner. Nun starten wir die server.py indem wir python server.py eingeben.

Danach können wir den Browser starten und http://localhost:8080/ eingeben und schon sind wir in der Wikipedia. Zur Zeit ist das ganze leider noch etwas unübersichtlich wenn man die Wikipedia auf dem Palm gewöhnt ist, aber das wird schon :)

D-Bus und FSO

Heute wenden wir uns mal dem D-Bus zu. Bei dem D-Bus handelt es Framework zur Interprozesskommunikation. Oder um das ganze mal verständlich auszudrücken. D-Bus sorgt dafür das alle Anwendungen und Services sich miteinander unterhalten können :)

Beim neuen Openmoko Framework bildet der D-Bus eine Schicht auf der andere Anwendungen aufbauen können. Benötigt eine Anwendung einen bestimmten Service so fordert sie ihn über den D-Bus an. Ist der Service zu diesen Zeitpunkt nicht bereits gestartet worden, so wird der Service automatisch gestartet.

Auf dem neuen Openmoko Framework sind zwei separate Busse (na hoffentlich ist das die Mehrzahl von Bus^^) vorhanden. Beim ersten Bus handelt es sich um den Systembus für den Nutzer „root“ welcher läuft sobald das Gerät angeschaltet ist. Der zweite Bus. auch Sessionbus genannt, wird für den Benutzer gestartet, sobald X startet.

Weitere Informationen dazu gibt es unter:
http://wiki.openmoko.org/wiki/Dbus
http://de.wikipedia.org/wiki/Dbus