EinfĂŒhrung in den Buspirate mit UART
Kurze Notiz am Rande, die Box habe ich auch untersucht und die Ergebnisse werde ich demnÀchst posten.
Bevor wir unseren Buspirate an das Objekt unserer Begierde anschlieĂen können, mĂŒssen wir zunĂ€chst den UART Seriellen Port finden.
Bei den meisten Modems / Routern sind das 4 zusammenhÀngende Pins oder Löcher (mit oder ohne Lötzinn) in einer Linie auf dem Board. Leider kann ich diese Löcher nicht zeigen, da alle meine GerÀte (wie auch hier) bereits von mir Pinheader aufgelötet bekommen haben.
Sollte es sich also um Löcher handeln so empfehle ich das einlöten eines Pinheaders. Wenn die Löcher mit Lötzinn geschlossen worden sein, so bietet es sich an diese vor dem Einlöten von dem Zinn zu befreien. Entweder mit Entlötlitze oder einer Entlötpumpe. Ich persönlich empfehle Entlötlitze. Möchte man den Pinheader nicht einlöten so kann man auch versuchen ihn ein zu stecken. Dabei besteht jedoch die Gefahr von Wackelkontakten und sollte nur gemacht werden, wenn man sich noch nicht sicher ist ob es sich wirklich um den UART Port handelt.
Hat man den Pinheader aufgelötet oder eingesteckt kann man anfangen die Belegung heraus zu finden. Ich beginne meist mit der Suche nach dem Groundpin. Dieser ist mit Hilfe eines Multimeters mit DurchgangsprĂŒfer schnell gefunden.
Dazu sucht man sich möglichst die Schirmung eines anderen Bauteils auf der Platine des ausgeschalteten GerÀts. Hier kann auch meist die Wlan-Antenne genommen werden. Nach und nach probiert man die Pins durch. Gibt es ein dauerhaftes GerÀusch (bzw. zeigt das Multimeter einen Wert nahe der 0 - hier -6) so hat man den Groundpin gefunden. Achtung: gibt es nur einen kurzen Piepton so ist man entweder abgerutscht oder es handelt sich ggf. um einen Pin der mit Kondensatoren gegen Ground gezogen wurde. Das erkennt man an dem steigenden Wert auf dem Multimeter.
Als nÀchstes sucht man den VCC Pin. Dieser sollte niemals mit dem VCC des Buspirate verbunden werden, da es sonst zu einem Kurzschluss kommen kann. Dazu schaltet man das GerÀt ein. Stellt das Multimeter auf Gleichstrom Voltmessung (ggf. umstecken) und verbindet das Minuskabel (Schwarz) mit dem Groundpin und das Pluskabel (Rot) mit dem zu testenden Pin.
Hier habe ich die Schirmung als Groundpin benutzt, das geht genau so gut. Wenn der Wert auf dem Multimeter nicht schwankt so hat man entweder den VCC-, RX-Pin gefunden oder es werden keine Daten auf dem Pin ĂŒbertragen. Die meisten Router/Modems ĂŒbertragen nur beim booten viele Daten, weswegen man den Test unmittelbar nach dem Einschalten durchfĂŒhren sollte. Schwankt der Wert so handelt es sich mit hoher Wahrscheinlichkeit um den TX-Pin. Schaut man sich die Leiterbahnen des vermeindlichen RX- und VCC-Pin an so wird einem ggf. auffallen, dass eine der beiden Leiterbahnen breiter ist als die andere. Ist dies der Fall, dann ist der Pin mit der breiteren Leiterbahn mit hoher Wahrscheinlichkeit der VCC. Die Leiterbahn des RC-Pins sollte genau so breit sein wie der TX-Pin.
Sollten beide Leiterbahnen gleich breit sein, so ist dies auch kein Problem. Den Buspirate stört es nicht wenn der RX- oder TX-Pin des Buspirates mit dem RX-, TX- oder VCC-Pin des GerÀtes verbunden wird. Wichtig ist nur, niemals den VCC-Pin des BP mit dem VCC des GerÀtes zu verbinden.
Nun können wir die Klemmen des Buspirate mit dem Pinheader verbinden.
Die Pinbelegung ist bei jedem GerÀt anders. Aus diesem Grund sollte man dies vorher ausmessen. Auf diesem Bild kann man auch schon erkennen, dass die VCC Leiterbahn deutlich dicker ist als die anderen.
Den Ground Pin des Buspirate verbindet man mit dem Groundpin des GerÀts. Den RX-Pin (MISO) des BP verbindet man mit dem TX-Pin des GerÀts und den TX-Pin (MOSI) des BP verbindet man mit RX-Pin des GerÀts. Siehe Buspirate Pinout.
In meinem Fall ist das obere Schwarze Kabel (MISO) RX, das 3. Graue von oben (MOSI) TX und das unterste leicht brÀunliche Kabel ist Ground.
Ist der Buspirate korrekt verbunden so können wir ihn nun mit dem Rechner ĂŒber ein MiniUSB-Kabel verbinden. Mit einem Terminalprogramm können wir nun auf den Buspirate zugreifen. Da ich nur Linux nutze, werde ich hier nur Linux betrachten.
Unter Ubuntu habe ich mir eine Udev-Rule in dem Ordner /etc/udev/rules.d/ fĂŒr den Buspirate angelegt die wie folgt aussieht.
# rule for Buspirate
SUBSYSTEM=="tty" ATTRS{idVendor}=="0403" ATTRS{idProduct}=="6001" SYMLINK+="buspirate"
Die Datei heisst bei mir 47-buspirate.rules. Siehe auch im Arch-Wiki. Startet man den udev-daemon (sudo /etc/init.d/udev restart) dann neu und entfernt den Buspirate und steckt ihn wieder ein, so meldet er sich anstatt /dev/ttyACM0 als /dev/buspirate.
Als Terminalprogramm fĂŒr serielle Verbindungen nutze ich persönlich "screen". Allerdings kann man dazu jedes andere Terminalprogramm nutzen. Um sich mit dem Buspirate zu Verbinden benutze ich den Befehl
screen /dev/buspirate 115200
Dazu sollte ich noch sagen, dass screen eine Art Windowmanager fĂŒr Shells ist und fĂŒr viele gewöhnungsbedĂŒrftig ist. Screen schlieĂt man mit der Tastenkombination Strg+a gefolgt von einem k. Alle Tastenkombinationen findet man mit "man screen". Die Baudrate mit der sich mit dem BP verbunden wird ist die 115200.
Es erscheint zunĂ€chst nichts. Doch drĂŒcken von Enter mĂŒsste ein
erscheinen. Das ist der Buspirate der antwortet.
Nun schauen wir mit dem Befehl "m" welche Protokolle unterstĂŒtzt werden.
HiZ>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
x. exit(without change)
(1)>
Wir wÀhlen das UART Protokoll mit "3". Es folgt die abfrage der Baudrate.
(1)>3
Set serial port speed: (bps)
 1. 300
 2. 1200
 3. 2400
 4. 4800
 5. 9600
 6. 19200
 7. 38400
 8. 57600
 9. 115200
10. BRG raw value
(1)>
Der Sitecom Router braucht eine Baudrate von 115200 Baud/s (dies ist auch bei den meisten anderen Router/Modems der Fall). Selten wird auch 9600 Baud/s verwendet. Wir wÀhlen also "9".
Es folgen ein paar fragen zur ParitĂ€t, Stopbit und polaritĂ€t. Durch drĂŒcken der Enter-Taste wird der Default Wert genommen (welcher eigentlich immer OK ist).
(1)>9
Data bits and parity:
 1. 8, NONE *default
 2. 8, EVEN
 3. 8, ODD
 4. 9, NONE
(1)>
Stop bits:
 1. 1 *default
 2. 2
(1)>
Receive polarity:
 1. Idle 1 *default
 2. Idle 0
(1)>
Select output type:
 1. Open drain (H=Hi-Z, L=GND)
 2. Normal (H=3.3V, L=GND)
(1)>
Die letzte Frage nach dem Output Typen beantwortet mit "2". Dann ist der Buspirate fertig konfiguriert. Um nun direkt mit dem EndgerÀt zu kommunizieren nutzt man den Transparenten Proxy der mit dem Befehl "(1)" gestartet wird. Dies muss man dann noch mit "y" bestÀtigen, da man den Buspirate raus ziehen muss um ihn zu reseten.
Select output type:
 1. Open drain (H=Hi-Z, L=GND)
 2. Normal (H=3.3V, L=GND)
(1)>2
Ready
UART>(1)
UART bridge
Reset to exit
Are you sure? y
Jetzt kann man das ZielgerĂ€t einschalten. Wenn alles richtig angeschlossen ist, fliegen die Daten ĂŒber den Bildschirm. Wenn nicht könnte es an folgenden Dingen liegen.
RX und TX sind vertauscht -> Kabel tauschen
Kein UART -> anderen Port suchen
falsche Baudrate (merkwĂŒrdige Zeichen)-> im Buspirate umstellen
Ich hoffe ich konnte mit diesem kleinen Beitrag helfen.