Funk2Duo
Inhaltsverzeichnis
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:
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:
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)