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:
- Handy anstecken, PC-Suite Modus wählen
- Mittels Desktop Command Execute Widget die USB-Netzwerkkarte auf dem Handy mit einem Klick konfigurieren
- 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 🙂