Openmoko
-
Links
-
Hardware
- Disassembling_Neo1973 - Wie man rein kommt
-
Desktop
-
E17 (Enlightenment)
-
Programmierung in Python
Voraussetzung: python-elementary auf dem moko installiert mit
svn co http://svn.enlightenment.org/svn/e/trunk/BINDINGS/python/python-elementary/tests python-elementary-tests
kann man sich die python-elementary tests herunterladen, die sollten selbsterklärend sein.
Das verzeichnis dann aufs moko kopieren und darin die test.py ausfuehren
(selbstverfreilich sind auch die anderen wrapper unter http://svn.enlightenment.org/svn/e/trunk/BINDINGS/python/ interessant, und auch sie haben Beispiele und tests ;) -
Desktop Symbole
Wie sie aussehen und was gestartet wird steht in den *.desktop Dateien in/usr/share/applications
-
Power Management
Damit Suspend usw. funktioniert (im Powerbutton Menü):
in der "/etc/enlightenment/sysactions.conf" folgende Zeile anstatt der originalen:
action: suspend mdbus2 -s org.freesmartphone.ousaged /org/freesmartphone/Usage org.freesmartphone.Usage.Suspend
-
Lock
unter "settings" (links oben im Panel) -> "input" -> key bindings
"Add key", dann z.b. AUX key druecken, und rechts in der Abteilung "Desktop" (oberste) "Desktop Simple Lock" einstellen, feddich.
Nun kann man mit der AUX taste den Bildschirm "verriegeln" und wieder freigeben
-
-
-
GPS
-
TangoGPS
unbedingt noch zusätzlich installieren: fso-gpsd (schlanker als gpsd, und wird nur bei bedarf gestartet) -
Navit
Anleitung: http://wiki.openmoko.org/wiki/Navit
Funktionierende Deutschland Karte: z.B. bei http://downloads.cloudmade.com/europe/germany/germany.navit.bin.zip
Die Umgebungsvariable LANG bestimmt das standard Land, also für Deutschland so starten:
LANG=de_DE.UTF-8 navit
-
-
Audio
-
Mit Mikrofon in Datei aufnehmen
Um z.B. 10 Sekunden in einer Datei zu speichern und direkt danach abzuspielen:
alsactl -f /usr/share/openmoko/scenarios/voip-handset.state restore
arecord -D hw -f cd -V mono -d 10 -t wav /tmp/recorded.wav
alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore
aplay /tmp/recorded.wav
(Das "-V mono" kann man ruhig weglassen, ist nur zur Darstellung da) - für Details bei der Aufnahme siehe "man arecord"
-
Mit Mikrofon aufnehmen und das Signal über das Netzwerk weiterleiten
Ein exklusives Babyfon oder was auch immer... ;)
Auf dem anderen Rechner (dort, wo der Sound ankommen soll - in diesem Beispiel hat er die IP Adresse "192.168.0.1" und wir benutzen port "9999"):
nc -u -l -s 192.168.0.1 -p 9999 | aplay
Auf dem Moko:
alsactl -f /usr/share/openmoko/scenarios/voip-handset.state restore
arecord -D hw -f cd -q -t wav | nc -u 192.168.0.1 9999
alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore
-
Mixer Einstellungen
State Datei für Earphone und Headset (man hört nur aus dem Earphone - und headset, wobei ich das nicht testen kann weil ich noch keins hab - und Mic geht auch...nur twinkle-sip-echo-test hoert sich bissl ruckelig an...) - liegen auf dem openmoko dateisystem alle in /usr/share/openmoko/scenarios/ -
Wolfson WM8753L
Schaltplan mit Bezeichnungen aus alsa state dateien
-
-
VOIP
-
Twinkle
Für korrektes umschalten zwischen stereo-out und earphone muss folgendes in der $HOME/.twinkle/<profilname>.cfg stehen (oder in der GUI unter den Einstellungen "Skripte"/"Scripts"):
# SCRIPTS
script_incoming_call=/usr/sbin/alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore
script_in_call_answered=/usr/sbin/alsactl -f /usr/share/openmoko/scenarios/voip-headset-earphone.state restore
script_in_call_failed=
script_outgoing_call=/usr/sbin/alsactl -f /usr/share/openmoko/scenarios/voip-headset-earphone.state restore
script_out_call_answered=
script_out_call_failed=/usr/sbin/alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore
script_local_release=/usr/sbin/alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore
script_remote_release=/usr/sbin/alsactl -f /usr/share/openmoko/scenarios/stereoout.state restore
(Die /usr/share/openmoko/scenarios/voip-headset-earphone.state siehe oben bei "Sound")
-
-
System
-
SD-Karte
-
Gerätedateien nicht vorhanden
Mit folgenden Befehlen kann man die Gerätedateien für die SD-Karte erzeugen (kann und sollte man natürlich an die eigene Anzahl an Partitionen anpassen):
mknod /dev/mmcblk0 b 179 0
mknod /dev/mmcblk0p1 b 179 1
mknod /dev/mmcblk0p2 b 179 2
-
-
Swap
Beispielsweise 256MB swap speicher:
dd if=/dev/zero of=/swapfile bs=1M count=256
mkswap /swapfile
- In /etc/fstab neue Zeile eintragen:
/swapfile none swap sw 0 0
- Swap aktivieren mit:
swapon -a
-
Uboot Konfiguration
Um Bootparameter, Bootmenue etc. zu aendern:
# apt-get install fso-utils # from FSO
# mkdir /tmp/uboot && cd /tmp/uboot
# dfu-util -a u-boot_env -U env.u-boot
# uboot-envedit -i env.u-boot -p > env_modified.u-boot.txt
env_modified.u-boot.txt nach belieben editieren
# uboot-envedit -i env.u-boot -f env_modified.u-boot.txt -o env_modified.u-boot
# dfu-util -a u-boot_env -D env_modified.u-boot
-
Vibration/LEDs
Hier können Werte von 0-255 reingeschrieben werden:
/sys/devices/platform/sc32440_fiq.0/neo1973-vibrator.0/leds:neo1973:vibrator/brightness
Damit man auch als normaler user drauf zugreifen kann muss man natürlich die Rechte anpassen. (z.B. zum mokomaze zocken ;)
Das mache ich zurzeit "schmutzig" in der/ect/rc.local
(gruppe "led" und "vibration" für die leds/vibration erstellt):
chown :vibration /sys/class/leds/neo1973:vibrator/brightness
chown :video /sys/class/backlight/gta02-bl/brightness
chown :leds /sys/class/leds/gta02-aux:red/brightness
chown :leds /sys/class/leds/gta02-power:orange/brightness
chown :leds /sys/class/leds/gta02-power:blue/brightness
chmod g+rw /sys/class/leds/neo1973:vibrator/brightness
chmod g+rw /sys/class/backlight/gta02-bl/brightness
chmod g+rw /sys/class/leds/gta02-aux:red/brightness
chmod g+rw /sys/class/leds/gta02-power:orange/brightness
chmod g+rw /sys/class/leds/gta02-power:blue/brightness
-
Beschleunigungssensoren
Wie man die Daten ausliest usw. gibts hier zu lesen:
http://wiki.openmoko.org/wiki/Accelerometer_data_retrieval
http://wiki.openmoko.org/wiki/Accelerometer_Fundamentals
Um einer Gruppe (hier z.B. "accelerometer") Zugriffsrechte zu erteilen und gleichzeitig aussagekräftigere Namen für die Gerätedateien zu kriegen kann man z.b. die Datei/etc/udev/rules.d/55-freerunner-accelerometer.rules
mit folgendem Inhalt erstellen:
SUBSYSTEM=="input", ATTRS{name}=="lis302-1 (top)", SYMLINK+="accelerometer-top", GROUP="accelerometer", MODE="0664"
SUBSYSTEM=="input", ATTRS{name}=="lis302-2 (bottom)", SYMLINK+="accelerometer-bottom", GROUP="accelerometer", MODE="0664" -
Display
-
Dimmen verhindern (geht auch für die anderen Resourcen, z.b. mit CPU um suspend zu verhindern - siehe ListResources):
mdbus2 -s org.freesmartphone.ousaged /org/freesmartphone/Usage org.freesmartphone.Usage.SetResourcePolicy Display enabled
anwendung starten...
mdbus2 -s org.freesmartphone.ousaged /org/freesmartphone/Usage org.freesmartphone.Usage.SetResourcePolicy Display auto
-
Helligkeit usw. lassen sich hier einstellen:
/sys/class/backlight/gta02-bl/
-
Dimmen verhindern (geht auch für die anderen Resourcen, z.b. mit CPU um suspend zu verhindern - siehe ListResources):
-
Touchscreen
- Paket mit Tools zum kalibrieren vom Touchscreen: libts-bin (ts_print, ts_calibrate usw.)
-
-
Netzwerk
-
USB
Auf dem OpenMoko in der/etc/network/interfaces
(208.67.222.222 kann man auch ersetzen durch einen eigenen DNS server, dieser verweist auf opendns.com) die Zeilepre-up /usr/local/skripte/paketfilter
ist ebenfalls optional, startet halt meinen paketfilter:
auto usb0
iface usb0 inet static
address 192.168.0.202
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.0.200
pre-up /usr/local/skripte/paketfilter
up rm /etc/resolv.conf
up echo nameserver 208.67.222.222 >/etc/resolv.conf
Auf dem PC in der/etc/network/interfaces
(das iptables zeug kann man sich schenken wenn man eh keinen Paketfilter benutzt):
allow-hotplug usb0
iface usb0 inet static
address 192.168.0.200
netmask 255.255.255.0
network 192.168.0.0
post-up iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -P FORWARD ACCEPT
down iptables -D POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
down echo 0 > /proc/sys/net/ipv4/ip_forward
down iptables -P FORWARD DROP
-
-
Video