Konsolenanschluß für Linksys WRT54G Version 2


Standort: Alexander Foken > Projekte > Elektronik / Hardware > Konsolenanschluß für Linksys WRT54G Version 2

Achtung!

Bei unsachgemäßem Umbau kann der Router zerstört werden!

Durch den Umbau gehen normalerweise alle Garantieansprüche verloren. Bei Leihgeräten könnte dieser Umbau als Sachbeschädigung gewertet werden.

Das Gerät:

Der Linksys WRT54G (Version 2) ist ein Linux-basierter Router, ausgestattet mit einem 5-Port-Switch (aufgeteilt in 4 LAN-Ports und einen Internet-Port), 54 MBit/s Wireless LAN, 200 MHz MIPS CPU BCM4712, 16 MByte RAM, 4 MByte Flash-ROM. Nach einigen Querelen hat Linksys den gesamten GPL-/LGPL-lizensierten Quelltext der Firmware veröffentlicht, darauf hin haben mehrere Leute aus Teilen dieser Quelltexte neue Firmware-Versionen zusammengestellt, meistens mit erheblichen Verbesserungen.

Das Problem:

Wenn man die Firmware entwickelt, kommt es schonmal vor, daß der Router nicht mehr reagiert. Wenn man dann auch noch vergessen hat, das boot_wait-Flag zu setzen, dann ist der Router kaum mehr als ein Ziegelstein. Außer viel Glück helfen oft nur rabiate Maßnahmen wie Kurzschließen von Adreßleitungen am Flash-Baustein, um aus dem Ziegelstein wieder einen Router zu machen. Glücklicherweise hat Linksys einen (sogar zwei) seriellen Anschluß vorgesehen, mit dem man den Bootloader ansprechen kann.

Wo ist das Problem? Der serielle Anschluß ist nicht herausgeführt, und er hat den falschen Pegel (0/3,3V statt +/-12V). Auf der Platine sind lediglich einige Lötpunkte.

Wie man auf der [extern] Webseite von Rod Whitby nachlesen kann, braucht man außer einem Platinchen und dem MAX233 eigentlich keine weitere Bauteile. Aber ich will kein über 10 Euro teures IC kaufen (oder gar ein 20 Dollar teures Platinchen mit eben jenem IC und einer Buchse für ein paar Cent), nur um im Katastrophenfall einmal kurz den Bootloader zu konfigurieren.

Erschwerend kommt hinzu: Es ist Sonntag nachmittag, und ich habe nichts besseres zu tun.

Der Lösungsweg:

Der Pegel muß in zwei Richtungen gewandelt werden: Vom PC kommt RS232-Pegel, +/-12V (je nach Hardware auch mal nur 5V), der WRT54G hätte aber gerne CMOS-Pegel, +3,3V oder 0V. +12V am PC entsprechen einer logischen 0 und müssen zu 0V werden, -12V entsprechen einer logischen 1 und müssen zu +3,3V werden. Ein klassischer Inverter, dafür brauche ich kein 10-Euro-IC!

In der anderen Richtung müssen +3,3V zu -12V werden, und 0V zu +12V. Zumindest auf den ersten Blick. Denn die Norm RS232 regelt, daß +3V .. +12V und -3V .. -12V akzeptiert werden müssen. Der Bereich rund um 0V, von +3V bis -3V ist eigentlich undefiniert. Am PC sieht es aber in der Praxis so aus, daß die Eingangsspannung gar nicht negativ werden muß, 0V wird auch schon als negativ genug akzeptiert. Also reicht auch hier ein einfacher Inverter, der sich irgendwo etwas Spannung organisieren muß, um den positiven Pegel zu schaffen. Die 3,3V aus dem Router werden - wenn überhaupt - nur knapp reichen, und die ungeregelten sogenannten 12V aus dem Steckernetzteil sind in der Praxis eher 20V - und das ist zu viel!

Der WRT54G hat keine Handshake-Leitungen, in altbewährter Tradition werden daher die Handshake-Leitungen des PC miteinander verbunden (7=RTS mit 8=CTS und 4=DTR mit 6=DSR), so daß der PC den WRT54G ständig für sende- und empfangsbereit hält. Praktischerweise liefern beide Handshake-Ausgänge des PCs bei aktivem Terminal-Programm +12V (so ungefähr jedenfalls, mein Laptop schafft nur 6V). Das reicht, um den Inverter vom WRT54G zum PC zu versorgen!

Natürlich kommt vom WRT54G kein Signal beim PC an, wenn der PC nicht mindestens eine der Handshake-Leitungen auf +12V gesetzt ist. Das ist aber kein großes Problem, minicom setzt beide Leitungen auf +12V, denn Hardware Handshake mit CTS/RTS und DTR/DSR ist normalerweise aktiviert. Andere Terminal-Programme sollten sich ähnlich oder gleich verhalten. Es reicht aber aus, eines der beiden Paare zu aktivieren.

Die Lösung:


(FIG-Datei)

Damit wäre die Schaltung auch schon fast erklärt: Der WRT54G liefert auf den Pins 1 und 2 des Schnittstellenanschlusses (JP1 auf der Router-Platine, J1 in meiner Schaltung) +3,3V. R1, R2 und T1 bilden den Inverter vom PC zum WRT54G, D3 sorgt dafür, daß die negative Spannung vom PC an der Basis von T1 auf -0,7V begrenzt wird. Der T1 sperrt durch die negative Basisspannung extrem schnell, wodurch das Signal schön rechteckig bleibt. Würde man eine Diode in Reihe zu R2 schalten, bräuchte man auch noch einen Widerstand parallel zu Basis und Emitter, um den Transistor einigermaßen sauber zu sperren, allerdings mit Verlust an Signalqualität. Pin 6 des WRT54G ist der Eingang der ersten seriellen Schnittstelle, Pins 9 und 10 sind Masse.

R3, R4 und T2 bilden den zweiten Inverter vom WRT54G zum PC. R3 muß aufgrund des Aufbaus des WRT54G recht groß sein, denn sonst belastet er den Ausgang des ICs zu stark und der Router bootet nicht mehr. 10k sind definitiv zu wenig, mit 110k läuft es bei mir, 100k sollten reichen. D1 und D2 "schnorren" +12V aus den Handshake-Leitungen des PC, um die Datenleitung auf +4V .. +11V zu ziehen.

Nachbau:

Wie man den WRT54G öffnet, steht auf der [extern] Webseite von Rod Whitby. Beim Öffnen verliert man jeden Garantieanspruch!

Mit dem Innenleben sollte man vorsichtig umgehen, fast alle Bausteine auf der Platine sind empfindlich gegen elektrostatische Aufladungen. Man sollte mindestens die Platine zunächst an einem der Abschirmbleche anfassen, und das Abschirmblech dann möglichst auch nicht mehr loslassen.

Die größte handwerkliche Herausforderung ist es, die 10 Löcher von JP1 auf der WRT54G-Platine vom Lötzinn zu befreien. Hier sollte man eine ruhige Hand, einen geregelten(!) Lötkolben und Lotsauglitze haben. Das Ganze ist ein Geduldspiel und dauert seine Zeit. Ungeduld führt zu einer beschädigten Platine, ebenso ewig langes "Braten" auf einem Loch. Dann sollte man die Flußmittelreste aus der Lotsauglitze mit etwas reinem Alkohol (Brennspiritus, 100% Isopropanol) von der Platine waschen. Schließlich lötet man eine gerade 2x5-polige Pfostenleiste in die befreiten Löcher. Das Ergebnis sollte dann so ungefähr aussehen wie das dritte Bild auf der [extern] Webseite von Rod Whitby. Spätestens jetzt hat man alle Garantieansprüche verloren.

Die insgesamt 11 Bauteile dieser Schaltung passen auf eine kleine Lochrasterplatine, wer will, darf natürlich auch gerne eine Platine layouten und ätzen. Der Anschluß an den WRT54G erfolgt über eine Buchsenleiste mit 2x5 Kontakten, die ganz normal auf die Bestückungsseite der Platine montiert wird. Aufgesteckt auf die WRT54G-Platine hängen die Bauteile also fledermausartig kopfüber unter der Pegelwandler-Platine, die mit der Lötseite nach oben zeigt. Den PC-Anschluß habe ich über eine weitere, abgewinkelte 2x5-polige Pfostenleiste herausgeführt, von dort führt ein 9poliges Flachbandkabel mit angequetschtem Pfostenstecker zu einer 9poligen DSUB-Buchse. Mechanisch paßt das alles wunderbar und ohne Kurzschlußgefahr in das Gehäuse des WRT54G, und mit ein wenig Fummelei kann man das Flachbandkabel ohne zusätzliche Löcher aus dem Gehäuse führen.

Bauteile: Die Transistoren habe ich in der Bastelkiste gefunden. BC237, BC238, BC546, BC547, BC548, BC550 sollten funktionieren, ebenso wie vergleichbare Transistoren. Eine hohe Stromverstärkung ist hilfreich, alles andere ist relativ egal. Mehr als 120 kHz treten in der Schaltung nicht auf, es fließt auch kein nennenswerter Strom. Die Widerstände dürfen durchaus um 20% abweichen, 1/8W Kohleschicht reicht vollkommen aus. Bei einem sehr schlappen COM-Port am PC sollte R4 vielleicht auf 10k oder 20k erhöht werden. Die D3 sollte schnell genug sein, um mit 120 kHz klar zu kommen, Strom und Sperrspannung sind unkritisch. Für D1 und D2 ist sogar die Geschwindigkeit recht egal. Eine 1N4148 ist fast überall zu haben, einen Ersatztyp habe ich dafür noch nie suchen müssen.

Serielle Ports:

Die Ports laufen nach dem Einschalten (bis eine eigene Firmware die Datenrate evtl. ändert) mit 115.200 baud, 8 Datenbit, keine Parity, ein Stopbit, kurz: 115200 8N1. Handshake gibt es nicht, eine recht optimistische Einstellung von Linksys, aber es funktioniert - zumindest mit guten Kabeln über kurze Strecken. Um die Stromversorgung für den zweiten Inverter rund um T2 sicherzustellen, muß im Terminal-Programm (minicom) Hardware-Handshake über CTS/RTS (und DSR/DTR) eingestellt werden. Die Terminal-Emulation sollte auf ANSI stehen, mit VT100 klappt's definitiv nicht. Den Bootloader des WRT54G kann man mit Ctrl-C zu einer Kommandozeile "überreden".

Der zweite serielle Port des WRT54g ist auch auf JP1 / J1 vorhanden, ebenfalls ohne Handshake und mit 115200 8N1. Raus geht es auf Pin 3 (statt 4), rein auf Pin 5 (statt 6). Die Pins 7 und 8 sind nicht belegt. Baut man die Schaltung zweimal auf, hat man zwei serielle Schnittstellen, allerdings mit nicht ganz normgerechtem Pegel. Für normgerechten Pegel (z.B. für ein Modem) sollte man besser auf den [extern] Umbau von Rod Whitby zurückgreifen.

Gewährleistung:

Ich habe meinen WRT54G wie beschrieben umgebaut und es ist bislang kein Fehler aufgetreten. Es könnte jedoch sein, das in dieser Anleitung Fehler enthalten sind. Daher kann ich keine Funktionsgarantie für Nachbauten übernehmen. Das Öffnen des WRT54G führt zum Verlust aller Garantieansprüche gegen Händer und Linksys. Ich bitte darum, die Warnhinweise in diesem Text besonders zu beachten.

Idee und Konzept:

Alexander Foken, [mail] alexander@foken.de, [extern] http://www.foken.de/alexander