Funk2Duo

Aus Ethersex_Wiki
Version vom 27. März 2009, 17:35 Uhr von Stesie (Diskussion | Beiträge) (Gliederung korrigiert)
Wechseln zu: Navigation, Suche

Funk2Duo - Asus WL-500g Hardware modding

... oder konkreter: wir zeigen einem WLAN-Router, wie man nicht nur WLAN, sondern auch IP over RFM12 spricht.

Das Ganze geht zurück auf eine Idee von stesie, zunächst sollte ein RFM12 USB-Dongle entstehen. Auf der Fahrt zur Arbyte kam dann die Idee, dass es ja wohl wesentlich schicker wäre, das Funkmodul nicht irgendwo dran zu stöpseln, sondern gleich im WLAN-Router zu verstecken.

Gesagt, getan. Es kann ja nicht so schwer sein, einen RFM12 auf einem Router nachzurüsten :-)

Nunja, ganz so einfach war's dann auch wieder nicht. Auf dem Board des Routers mussten zunächst fünf Pins gefunden werden, welche direkt vom Prozessor gesteuert werden können (SPI Eingang/Ausgang, Clock, Chip Select und eine Interrupt Leitung). stesie fand zunächst sogar einen Atmel EEPROM, der per SPI angebunden war. Leider führen die Leiterbahnen die vom Speicher weg führen direkt zum Switch-Chip und von dort nicht weiter zur CPU. Nach zwei langen Abenden der Pin-Suche waren dann fünf Pins aufgetan, welche vielversprechend aussahen:

Aufnahme von der Router-Platine

Gpio-map.jpg

Der Restore-Taster-Pin (verbunden auf den Eingang des Reset-Tasters) ist insoweit problematisch als dass

  • man durch Tasterdruck den MISO-Pin des RFM12 gegen Vcc schalten kann -> es sollte also ein Widerstand (ich hab' 1000 Ohm) dazwischen
  • der Taster ist normalerweise durch einen kleinen C auf der Platinenvorderseite entprellt. Dieser Kondensator muss weg, sonst wird's nichts mit dem Digital-Eingang

Der Quellcode liegt im Git unter http://git.brokenpipe.de/cgi-bin/gitweb.cgi?r=stesie;p=broadcom-rfm12;a=summary

Fertig implantiert sieht das Ganze dann so aus:

Asus-mod-fertig.jpg

Pinning

GPIO Pin Datenrichtung Pin am RFM12
GPIO1 in nIRQ
GPIO4 out SCK
GPIO5 out MOSI
GPIO6 in MISO (via 1 kOhm Widerstand)
GPIO7 out nSEL

Vcc (+3,3 Volt) und GND solltest Du selbst finden, wenn Du ebenfalls einen Router modden möchtest :-)


und so sieht's dann aus:

root@funkrouter:/tmp# insmod ./rfm12.o 
root@funkrouter:/tmp# ifconfig rfm12 192.168.5.23 up 
root@funkrouter:/tmp# ping 192.168.5.100
PING 192.168.5.100 (192.168.5.100): 56 data bytes
64 bytes from 192.168.5.100: seq=0 ttl=64 time=175.834 ms

inzwischen gibt's sogar ein bißchen Statistik:

rfm12     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:192.168.5.23  Bcast:192.168.5.255  Mask:255.255.255.0
          UP BROADCAST RUNNING NOARP MULTICAST  MTU:254  Metric:1
          RX packets:164 errors:0 dropped:0 overruns:0 frame:0
          TX packets:73 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10 
          RX bytes:15884 (15.5 KiB)  TX bytes:9005 (8.7 KiB)