Krumeltee

-> Elektronik, Mikrocontroller und Retro-Computing <-

Archive for the ‘Nokia N900’ Category

mplayer auf dem N900

Posted by krumeltee - 24. Februar 2011

Der vielseitige Video- und Audioplayer mplayer wurde auch für das Nokia N900 compiliert. Der mplayer an sich ist ein Konsolenprogramm und auf die vielen vielen Optionen werde ich hier eingehen.

Wer den mplayer verwenden möchte, aber keine Lust auf Konsole hat, kann die GUIs kmplayer, smplayer und sib verwenden.

Vorweg ein kleiner/grosser Nachteil des mplayers auf dem N900… Der vorinstallierte Medienspieler auf dem N900 kann die Hardwarebeschleunigung des OMAP-Prozessors für Audio/Video nutzen und braucht somit weniger Rechenleistung, was sich auch an der Akkulaufzeit bemerkbar macht. Wett macht das ganze jedoch der riesige Funktionsumfang und die totale Kontrolle des Players.

Wer Zuhause am Fernseher mit dem Handy gucken will, den stört das sowieso nicht. Unterwegs nehme ich lieber den vorinstallierten Medienspieler.

Aufgerufen wird der mplayer mit „$ mplayer <optionen> <datei1> <datei2> <oder wildcards wie zum Beispiel „*“ für alle Dateien> <oder *.avi>„.

Die brauchbarsten Optionen nun hier:

  • -idx

Repariert defekte Videodateien, zum Beispiel wenn Spulen nicht funktioniert. Wird allerdings nicht in die Video-Datei gespeichert, nur temporär.

  • -ss <sekunde>

Startet den Video ab Position <sekunde>. Wenn sonst nicht gespult werden kann, muss -idx mit angegeben werden.

  • fs

Startet den Video im Fullscreen-Modus

  • -msgcolor

Die Konsolenausgabe farbig gestalten, übersichtlicher.

  • -quiet und -really-quiet

Sehr wenig Konsolenausgabe, sinnvoll auf lahmen SSH-Verbindung oder Ähnliches, damit es nicht wegen sowas ruckelt. Auch auf seriellen Konsolen, die CR nicht richtig darstellen sinnvoll.

  • -heartbeat-cmd <command>

Wenn mplayer in scripten verwendet wird, kann man <command> alle 30 Sekunden ausführen lassen um zum Beispiel festzustellen, ob der Player noch reagiert.

Mplayer ist zu lahm? Es ruckelt? Kein Problem, versucht die beiden Sachen:

$ mplayer -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all

oder

$ mplayer -framedrop 1o

Wenn der Film „krumm“ ist, kann man das Seitenverhältnis anpassen:

$ mplayer -monitoraspect 4:3

oder

$ mplayer -monitoraspect 1.3333339

Alle Optionen kann man sich mit -list-options geben lassen.

Advertisements

Posted in Embedded Linux, Nokia N900 | Leave a Comment »

Kompletten gcc auf dem N900 installieren

Posted by krumeltee - 24. Februar 2011

Auch das ist eigentlich ganz einfach, man muss einfach nur drei weitere Repositories (Programmkatalog) hinzufügen:

deb http://repository.maemo.org/ fremantle/sdk free non-free
deb-src http://repository.maemo.org/ fremantle/sdk free
deb-src http://repository.maemo.org/ fremantle/tools free

Danach kann man eine gcc-toolchain mit

apt-get install gcc-4.2 make autoconf automake libc6-dev gcc libncurses-dev libtool flex bison gdb gcc libltdl3-dev

Mit dieser Installation kann man den kompletten N900-Kernel auf dem Handy compilieren!
Ein kleiner Testdes Compiler sollte natürlich gleich gemacht werden:

$ vi test.c
^^ i drücken, das tippen:
#include
int main() { printf("hallo n900\n"); return 0; }

^^ ESC drücken, ":wq" tippen, ENTER
gcc test.c
./a.out

menuconfig

Posted in C, Embedded Linux, Nokia N900 | 1 Comment »

Meine TOP Tools/Programme für’s N900

Posted by krumeltee - 23. Februar 2011

Da hier jeder hunderte andere Sachen brauchbar findet, werde ich hier nur ein paar Programme mit Screenshots kurz vorstellen.

  • openssh / ssh-status
  • batterygraph / advanced-power
  • mplayer / tomamp
  • fapman
  • wifieye

mplayer / tomamp

Die Eierlegende Wollmilchsau für Multimedia unter Linux ist, neben VLC, der mplayer. Ich hab ihn mit installiert, da der eingebaute Medien-Spieler immer wieder gesponnen hat und die ewige Updaterei der Medienbibliothek regte mich auf. Mplayer kann nahezu alle Videoformate sowie Musik abspielen. mplayer ist ein reines Konsolenprogramm, es gibt aber auch zwei grafische Oberflächen für ihn auf dem N900, „kmplayer“ und „smplayer“. Auf den Konsolen-mplayer gehe ich hier in einem anderen Artikel ein.

Tomamp ist ein Musikplayer, welcher den Portraitmodus, also hochkant und die Einhandbedienung unterstützt, was unterwegs sehr praktisch ist. Tomamp arbeitet nicht wie der eingebaute Medienplayer mit einer Datenbank, sondern ist Verzeichnisbasiert. Heisst, man ordnet seine Musik in Verzeichnissen zum Beispiel nach Genre und Interpret und wählt danach dann aus. Somit entfällt auch das lästige „unknown artist“-Gesuche, wenn die ID3-Tags nicht stimmen.

Der tomamp-Player hat einen Equalizer, kann komplette Ordner, einzelne Dateien und Playlists laden, Playlist speichern, alles was ein Musikplayer braucht 🙂

tomamp

tomamp

fapman

fapman („faster application manager“) ist ein vielseitiger und um einiges schnellerer Paketmanager, als der eingebaute.

fapman

Faster Application Manager

wifieye

wifieye ist ein Programm, welches verfügbare WLAN Netzwerke grafisch darstellt oder die Netzwerke mit genauen Informationen (MAC, Verschlüsselung, Stärke) auflistet.

wifieye

wifieye

openssh / ssh-status

openssh ist ein SSH-Server/Client, der es ermöglicht die Linux-Konsole auf einem anderen Rechner übers Netzwerk zu haben, so muss man sich nicht mit der kleinen Tastatur herumärgern, wenn man auf der Konsole herumspielen oder grössere Sachen machen will. openssh bietet ebenso die Möglichkeit Dateien zu kopieren, OHNE die Begrenzung auf den ~27gb internen Speicher/microSD-Karte. Man hat damit Zugriff auf sämtliche Daten. Bei der Installation von openssh wird man aufgefordert ein Passwort für den Benutzer root anzugeben, das man unbedingt braucht, da ssh einen Login nur mit Passwort zulässt. Es ist zwar auch ohne Möglich, aber dafür muss man die Konfigurationsdatei „/etc/ssh/sshd“ bearbeiten, wofür man aber wieder root sein muss.

Zwei sehr praktische Windows-Tools sind putty und WinSCP. Putty stellt eine Verbindung auf die Konsole her, WinSCP ist zum Dateien kopieren. Man muss dem jeweiligen Programm die IP Adresse des Handys angeben, sowie den Benutzernamen und das Passwort.

Man muss sehr sehr vorsichtig sein, wenn man sich ausserhalb des Heimatverzeichnisses „/home/user/“ oder der microSD Karte bewegt („/media/mmc1„).

Die IP-Adresse vom WLAN findet man sehr leicht heraus, indem man im X-Terminal „/sbin/ifconfig wlan0“ eingibt.

Hier ein paar Beispiele, wie man SSH unter Linux verwendet:

$ ssh root@192.168.2.15
^^ stellt eine Verbindung zur Handykonsole her, auf das Handy mit der IP 192.168.2.15

$ scp datei root@192.168.2.15:/home/user/MyDocs/
^^ kopiert die Datei "datei" in den internen Speicher des Handys

Es gibt auch die Möglichkeit per SSH das Handy zu mounten und man kann einfach per Dateimanager Daten kopieren. Diese Möglichkeit nennt sich sshfs.

ssh-status ist ein Plugin für das Maemo-„Hauptmenü“, mit dem man den ssh-server mit einem Klick an-/ausschalten kann, hier ein Screenshot:

ssh_status Plugin

ssh_status Plugin

batterygraph / advanced-power

Das Programm batterygraph stellt ab dem Zeitpunkt der Installation Graphiken zur Benutzung des Akkus zur Verfügung. So kann man sein „Ladeverhalten“ anpassen, sieht wie die CPU-/Netzwerkauslastung die Akkuspannung beeinflusst usw usw 😉

Viel mehr gibts da gar nicht zu erklären, seht einfach die Screenshots an:

batter graph 01

Hier sieht man wie sich der Akku, mit ein wenig CPU-Belastung über 12 Stunden verhält

bettery graph 2

Hier sieht man das Verhältnis von Akku und CPU-Belastung, ebenfalls sieht man wann der Akku geladen wurde.

Das nächste Tool ist „advanced-power“, welches im Hauptmenü den Ladestand des Akkus sowie verbleibende Restzeit unter Volllast sowie im Leerlauf anzeigt. Allerdings kann man sich eigentlich nur auf die Leerlaufzeiten grob verlassen, wenn es vorher auch schon im Leerlauf war. Aber es ist ganz praktisch mal einen Prozentwert vom Akku zu sehen. Es gibt hierfür auch Desktop-Plugins, aber diese benötigen unnötig mehr Strom, da sie bei jedem Aufrufen dieses Desktops aktualisiert werden.

Hier der Screenshot von „advanced-power“:

Posted in Embedded Linux, Nokia N900 | Leave a Comment »

USB Netzwerk automatisch konfigurieren lassen

Posted by krumeltee - 23. Februar 2011

Hier beschreibe ich, wie man das USB-Netzwerk-Device des N900 und einen Linux-Rechner so einrichtet, dass sich das Netzwerk zwischen den beiden nahezu automatisch einrichtet. Nahezu heisst, zwei mal auf den Touchscreen zu tippen 🙂

Die USB-Netzwerkverbindung ist aus mehreren Gründen einer WLAN-Verbindung vorzuziehen:

  • Die WLAN Verbindung reisst, je nach Signalstärke, gerne mal ab
  • WLAN ist auf jeden Fall langsamer als die USB-Verbindung
  • Man möchte am WLAN z.B. per SSH rumspielen
  • Es ist kein Access Point in der Nähe, AdHoc und das N900 als AP ist aufwendiger,

Die Sache mit der Geschwindigkeit habe ich noch nicht 100%ig rausbekommen, allerdings ist es sehr wohl so, dass eine SSH Verbindung übers WLAN sehr sehr träge ist und je nach Belastung des Handys unbenutzbar, die USB-Netzwerkkarte lässt sich davon kaum beeindrucken.

Wenn ich Dateien per WLAN und SCP (Dateien per SSH kopieren) kopiere, komme ich auf 500 bis 800kb/s, mit der USB-Netzwerkverbindung komme ich auf 3.5MB/s

Grob zusammengefasst, sieht das Ergebnis dieses Artikels so aus:

  1. Handy anstecken, PC-Suite Modus wählen
  2. Mittels Desktop Command Execute Widget die USB-Netzwerkkarte auf dem Handy mit einem Klick konfigurieren
  3. Der Rechner konfiguriert sich automatisch – fertig

Vorausgesetze Software auf dem Handy ist das Program „Desktop Command Execute Widget“ und „rootsh“. Ersteres legt einen „Button“ auf den Desktop, der einen Befehl auf der Konsole  ohne weiteres Zutun ausführt. Das zweite Programm ist dazu da, um root auf dem Handy zu werden („Administrator“). Beide sind über den Programmanager installierbar.

Das Linux auf dem N900 ist von Haus aus so eingestellt, dass es nach jedem Reboot eine neue MAC-Adresse für die USB-Netzwerkkarte hat, die zufällig ausgewählt wird. Da wir aber die Konfiguration am PC anhand der MAC-Adresse machen lassen, muss diese natürlich immer gleich sein. Es ergeben sich keine Nachteile durch diese Änderung, man kann die Nokia-PC-Suite weiterhin wie zuvor verwenden und auch anderweitig ändert sich nichts.

Die Konfiguration änder man so:

sudo gainroot
echo options g_nokia host_addr=99:99:99:99:99:99 > /etc/modprobe.d/g_nokia

Das „99:99:99:99:99:99“ ist die MAC-Adresse und die kann beliebig geändert werden, sollte jedoch nicht die selbe wie eine im Rechner steckende Netzwerk-/WLAN-Karte haben. Eine „Ziffer“ geht von 0 bis F, also 0..9, A, B, C, D, E, F. „0A:3B:33:FF:AC:7F“ wäre also auch eine gültige MAC-Adresse.

Anhand dieser MAC-Adresse identifiziert der PC die USB-Netzwerkkarte und weist der dann die passende IP-Adresse und Subnetzmaske zu.
Die beiden Befehle oben bewirken, dass man zuerst root wird und dan gibt man dem Treiber für die virtuelle Netzwerkkarte die Option mit der MAC-Adresse mit.
Ab dem nächsten Neustart wird immer nur diese MAC Adresse verwendet. Um Verwirrungen von udev zu vermeiden sollte das Handy nicht eingesteckt werden bis udev eingerichtet ist, was gleich kommt.

Wenn man das Kabel ansteckt und PC-Suite Modus wählt, muss man die USB-Netzwerkkarte am Handy erstmal konfigurieren, damit diese eine IP Adresse bekommt. Die ist auf dem Handy von Haus auf 192.168.2.15 gelegt, der Gateway auf 192.168.2.14 (das wird später unser Rechner).

Damit man das nicht in der Konsole machen muss, gibts das „Desktop Command Execute Widget“. Das wird bei der Installation auf den Desktop gelegt und zeigt erstmal die Uptime an. Um das zu ändern, drückt man lange auf den Desktop, bis der „Desktop Konfigurationsmodus“ aufgeht. Da dann auf den Schraubenschlüsses für die Einstellungen des Widgets klicken und diese Schritte gehen:

  • Add Cmd
  • Title eingeben (beliebig, bei mir „Config usb 192.168.2.15“)
  • Command eingeben „/home/user/config_usb_net.sh“
  • Speichern/Save klicken
  • Nun verschwindet der Dialog, nochmal auf den Schraubenschlüssel klicken und bei Command das „Config usb 192.168.2.15“ auswählen
  • Nach unten Rollen und Häkchen setzen/entfernen. Nur bei „Display Title“ und „Update when clicked“ sollte ein Haken sein
  • „Update Interval“ sollte Disabled sein, ebenso „Network Presence“
  • Nun nochmal auf Speichern

Wir haben gerade eben einen Klick Button auf dem Desktop zum Einrichten der USB-Netzwerkkarte erstellt, welcher ein Script aufruft, dieses muss auch noch erstellt werden.

Im X-Terminal geben wir „vi /home/user/config_usb_net.sh“ ein. Dort drücken wir einmal auf die Taste „i“ um Text einzugeben („insert“) und tippen dann das:

#!/bin/sh
ifdown usb0
ifup usb0

Sobald wir das haben, drücken wir auf ESC auf dem Touchscreen und geben „:wq“ gefolgt von Enter ein („:“ steht für Befehl, geht nur nach ESC, „wq“ für Speichern und beenden).
Jetzt noch dem Script die Möglichkeit geben ausgeführt zu werden:

chmod +x /home/user/config_usb_net.sh

An Arbeit am Handy wars das auch schon 🙂 Jetzt zum PC, was viel schneller geht, das meiste liegt hinter uns.

Diesem sagt man per udev, dass er beim Erkennen der „Netzwerkkarte“, diese immer zu usb0 umbennen soll (um Verwirrung mit eth1, … zu vermeiden) und dann ifconfig mit der IP und Subnetzmaske ausühren soll.

cd /etc/udev/rules.d
vi nokia_n900_usbnet.rule

Nun drückt man wieder auf „i“ und tippt das ein:

# USB device 0x0421:0x01c8 (usb) NOKIA N900
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="99:99:99:99:99:99", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="usb0", RUN+="/sbin/ifconfig usb0 192.168.2.14 netmask 255.255.255.0"

Beenden tut man den Editor wieder mit <ESC> und dann „:wq“ <ENTER>.

Nun benennt udev die USB-Netzwerkkarte jedesmal wenn sie eingesteckt wird sofort zu usb0 um und weist dieser die IP-Adresse 192.168.2.14 zu.
Um sicher zu gehen, dass die Regel übernommen wurde, sollte man nun udev neu starten, wer nicht weiss wie das geht, sollte einfach nur den Rechner neu starten.

Jetzt kann man das Handy anstecken, auf PC-Suite Modus klicken, den Desktop Klicker zum Einrichten der USB-Netzwerkkarte anklicken und FERTIG 🙂 🙂

Wenn man jetzt am PC „ifconfig usb0“ eingibt, kommt ungefähr das bei raus:

prolllappi ~ # ifconfig usb0
usb0      Link encap:Ethernet  HWaddr 88:88:88:88:88:88
          inet addr:192.168.2.14  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::8a88:88ff:fe88:8888/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:190 errors:0 dropped:0 overruns:0 frame:0
          TX packets:313 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:21364 (20.8 KiB)  TX bytes:34307 (33.5 KiB)

Nun kann man sich zum Beispiel per SSH mit dem Handy verbinden und es geht um einiges schneller und stabiler 🙂

Posted in Embedded Linux, Nokia N900 | Leave a Comment »