Serielle Konsole

From Fritz!Box
Jump to: navigation, search

AVM Wiki >> Zubehör >> Serielle Konsole @ whmf   -   IRC-Chat   -   hu nl it English
Community Modelle Zubehör Environment Konfiguration Shell-Befehle Software Freetz Lexikon Tipps+Tricks Bilder

Telefone+Anlagen WLAN-Zubehör ISDN+DSL-Karten Externe Modems Sonstiges Zubehör Bauanleitungen Todo

Contents

Error creating thumbnail: Unable to save thumbnail to destination

Serielle Konsole jeder FRITZ!Box

Begriff

Einführung

Serielle Konsole einer FRITZ!Box

Nahezu jeder Microcontroller und jeder SoC verfügt heute über (mindestens) eine integrierte UART-Baugruppe, mit der eine minimalistische RS232-Schnittstelle ohne Zusatzkosten realisiert werden kann. Diese wird meist zur Ausgabe von Logs und zum Empfang von Diaggnosebefehlen genutzt. Im Gegensatz zum seriellen Port am PC werden nicht die in der RS232-Norm definierten Pegel verwendet, sondern die niedrige Spannung, mit der das jeweilige System betrieben wird. Obwohl die Signalform voll kompatibel ist, benötigt man zum Anschluss an einen PC einen Pegelwandler.

Da ein Pegelwandler Zusatzkosten darstellt, wird er idR. nicht auf der Platine eines Gerätes implementiert, sondern bei Bedarf vorgeschaltet. Das erspart auch unnötigen Platz- und Energieverbrauch. Die minimalistischte RS232-Lösung besteht aus 3 Leitungen, der Masse (Gnd), den Empfangsdaten (RxD) und den Sendedaten (TxD). Zur Speisung eines Pegelwandlers oder als Referenzspannung wird meist zusätzlich die Betriebsspannung (z.B. 3.3V) herausgeführt.

Ein solcher 4-Draht-Anschluss befindet sich auch in jeder FRITZ!Box, in Form von 4 meist gebohrten Pins im Rastermaß 2.54mm. Um Verpolung auszuschliessen sind die 3 für den Minimalbetrieb notwendigen Pads rund ausgeführt, der optionale 3.3V-Pin dagegen quadtratisch.

Anschlussmethoden

Eingelötete 3-polige Pfostenleiste

Je nachdem, ob man den Pegelwandler extern oder aus der Schaltung speist, benötigt man eine 3- oder 4-polige Verbindung. Bei Modellen mit gebohrtem Anschluss bietet sich das Einlöten einer einreihigen Pfostenleiste im üblichen 2,54mm-Raster an. Den Pegelwandler kann man dort bei Bedarf z.B. über den Stecker eines Soundkartenkabels anschliessen. Zudem kann er so für mehrere Geräte genutzt werden.

Die Pinbelegung des Anschlusses ist bei allen Modellen gleich, die Position des Anschlusses variiert jedoch zwischen den Modellen. Wo sich die Anschlüsse beispielhaft bei manchen Modellen befinden, sieht man gut in der Galerie weiter unten.

Bei einigen Varianten der Eumex 300 IP, wie bei einigen FRITZ!Box SL, fehlen die Bohrungen für den seriellen Anschluss. Das Durchmessen der Pads zeigte, dass keiner der Pads für TxD und RxD, weder auf der Oberseite noch auf der Unterseite, Signal führen. Das Signal ist in der zweiten Platinenlage von unten (keine Bauteile) angebunden. Man kann die beiden Kupferflächen auf der Unterseite mittels eines heißen Lötkolbens entfernen und sich dann, sehr vorsichtig, zu den signalführenden Pads durchkratzen. Am besten ist es, wenn man mit einem sehr dünnen Bohrer (0.5mm) vorbohrt und dann von Hand mit einem größeren (2-3mm) durchschabt, bis das Kupfer zu sehen ist. Daran sollte ein dünner Fädeldraht gelötet werden, damit die mechanische Belastung auf die Kontakte nicht zu hoch ist. GND und 3,3V sind jedoch angebunden.

Pegelwandler

Um die 3,3V-Pegel der Box mit den RS232-Standardpegeln (-3 bis -12V / +3 bis +12V) zu verbinden, benötigt man also einen Pegelwandler. Da viele PCs heute nicht mehr über eine serielle Schnittstelle verfügen, benötigt man ggf. zusätzlich einen RS232-Adapter fur den USB-Anschluss. Je nach Bedarf gibt es dafür mehrere Lösungen:

Handykabel

Eine günstige und kompakte Lösung stellen geeignete Handy-Datenkabel dar. Man kann sie für 5-6€ inkl. Versand bei eBay ersteigern und es gibt sie mit RS232- oder USB-Anschluss. Folgende Datenkabel wurden erfolgreich getestet:

Die Steckerbelegung der Handystecker am Kabel findet man z. B. auf nobbi.com.

Die beiden No-Name-Kabel hatten jeweils nur drei Adern: DataIn, DataOut und GND. In dieser Reihenfolge kommen die Adern an RxD, TxD und GND.

Beim Siemens-Kabel musste noch die UBat-Ader an 3.3V gelegt werden und ein Pull-Up-Widerstand (z.B. 4.7kOhm oder 10kOhm) zwischen die Adern UBat und DataOut geschaltet werden. Bei (meinem) Original Siemens RS232 (S25-S45) ist kein Pull-Up-Widerstand nötig.

Im No-Name-USB-Kabel wie auch im Reichelt-Kabel steckt ein PL2303-USB-seriell-Konverter. Betrieb unter Linux ist 'plug-and-play', ein Treiber für Windows lag auch bei.

MAX3232-Schaltung

Wer zu den bequemeren Elektronikbastlern gehört kann sich einen RS232-Pegelwandler mit einem Spezial-IC von Maxim und 4 zusätzlichen Kondensatoren aufbauen. Dazu verwendet man den MAX3232CPE, die 3.3V-Variante des bekannten MAX232 und z.B, ein Stück Lochrasterplatine.

  1. Selbstbau aus Maxim oder vergleichbarem Chip (ein paar Kondensatoren und ein Stück Lochrasterplatine sowie entsprechende Erfahrung vorrausgesetzt)

Wer diese Variante bevorzugt (hier nur ein Hinweis darauf, keine Anleitung), besorge sich das Datenblatt für den MAX3232CPE (DIL ) auf und löte die Schaltung entsprechend zusammen. Schließlich hat man so einen seriellen Anchluss für den PC. Will man daraus noch einen USB-Adapter machen, schaltet man einen entsprechenden USB<->Seriell-Chip dazu.

Simple 2-Transistor-Lösung

Eine simple Lösung ist auf picprojects.org dokumentiert. Sie erfüllt nicht ganz die RS232-Spezifikation, wurde aber für kurze Leitungen als zuverlässig getestet. Sie besteht komplett aus konventionellen Bauteilen, die fast jeder Bastler herumliegen hat oder aus ausgemusterten Geräten extrahieren kann.

Software

Sowohl der Bootloader ADAM2 mit seiner ADAM2 Shell als auch die AVM-Firmware benutzen die serielle Konsole und sind darüber auch noch erreichbar, wenn man sich die Netzwerkconfig einmal ganz zerschiesst. Für die Benutzung auf einem Windows-PC bietet sich die Terminalsoftware hterm an. Auf Linux-basierten Rechnern empfiehlt sich minicom. Wer auch unter Linux nicht auf ein GUI verzichten will, der mag sich cutecom besorgen (dort unbedingt unter Input "CR line end" einstellen).

Anschluss der Box an eine andere Fritzbox

Man kann auch zwei Fritzboxen zusammenschließen und so die seriellen Ports/Konsolen nutzen (Idee: IPPF-Thread). Der große Vorteil liegt darin, dass man keinen Pegelwandler benötigt, weil beide Fritzboxen mit dem gleichen Pegel arbeiten. Das stellt jedoch zugleich den größten Nachteil dar, da die Geräte galvanisch gekoppelt werden und sich damit Störungen optimal verschleppen können. Außerdem belastet ohne Leitungstreiber die Kapazität des verwendeten Verbindungskabels direkt den SoC und dient zudem als Antenne für Störungen. Daher sollte man diese Idee eher als Hack ansehen oder sich um geeigete Treiber/Entkopplung kümmern.

Generell genügt eine 3-Draht-Verbindung (RxD und TxD kreuzen und Gnd verbinden - 3v3 offen lassen!) und das Anpassen der Baudrate beider Geräte. Die notwendigen Treiber sind in der Firmware enthalten und werden auch aktiviert, beide Modelle können dann gegenseitig ihre Logs lesen, was jedoch auch abschaltbar ist.

Für eine intelligentere Nutzung dieses Ansatzes ist es erforderlich, dass man sich recht gut auf der Softwareebene der Fritzbox auskennt. Entweder lädt man sich die entsprechende Software vorkompiliert aus dem Internet auf das temporäte Dateisystem der Box oder man setzt eine modifizierte Firmware ein, die die entsprechende Software integriert.

Im folgenden bezeichnet der "Server" die Box, die beobachtet werden soll, während der "Client" die Box darstellt, von der aus die Terminalsoftware gestartet wird um die Ausgaben des Servers zu sehen und Eingaben auf dem Server zu machen.

Offenbar kann nicht jede Box als Client eingesetzt werden. Erfolgreich eingesetzt werden kann z.B. die 7270 an einer anderen 7270 oder einer 7170. An einer 7390 eignet sie sich auch, jedoch werden ständig Zeichen beim Empfangen verschluckt, was wohl an der erhöhten Datenrate der 7390 liegt, mit der die 7270 nicht so gut klarzukommen scheint. Sowohl die 7390 als auch die 7170 lassen sich als Client an einer 7270 jedoch nicht nutzen (Grund unbekannt). Also muss hier wieder gesagt sein, dass das Verbinden von zwei Boxen nur ein Hack ist (auch wenn sich diese Methode möglicherweise eignet, um eine Box wieder zum Leben zu erwecken).

Verdrahtung der Boxen

Man verbinde die Masse der beiden Boxen und die Datenleitungen zwischen Server und Client überkreuz (Input der einen Box ist schließlich Output der anderen Box):

Server              Client

  GND  O-----------O  GND 
  TxD  O-----\/----O  TxD
  RxD  O-----/\----O  RxD
  3V3  []         []  3V3

Software

Auf dem Client brauchen wir eine Terminalsoftware, z.B. minicom. Diese kann man sich z.B. mit Hilfe von Freetz in die Firmware bauen (Eine vorkompilierte Version gibt es in diesem IPPF-Thread).

Der Port, der benutzt werden soll ist /dev/ttyS0 (bei der 7320 /dev/ttyS1 !). Bevor man auf diesen Port der Client-Box uneingeschränkt zugreifen kann, muss man die shell, die darauf läuft, von diesem Port lösen. Dazu ist es zunächst erforderlich, die Datei /etc/inittab auf der Client-Box zu patchen. Auf einer 7270 mit Freetz-Firmware sieht diese so aus:

#
::restart:/sbin/init
::sysinit:/etc/init.d/rc.S

# Start an "askfirst" shell on the console (whatever that may be)
/dev/ttyS0::askfirst:-/bin/sh

# Stuff to do before rebooting
::shutdown:/bin/sh -c /etc/inittab.shutdown

Man kopiere diese Datei in das temporäre Dateisystem der Box, um sie bearbeiten zu können, hier /var/tmp. Die Zeile "/dev/ttyS0::askfirst:-/bin/sh" muss mit einer Raute auskommentiert werden. Dazu einen Editor benutzen oder wie unten einen passenden sed-Befehl ausführen. Anschließend mounten wir die veränderte Datei zurück an ihre eigentliche Stelle im Dateisystem und lösen den Prozess init von seinem Terminal. Das Patchen der Datei /etc/inittab bewirkt dabei, dass auf dem Port nicht sofort wieder eine neue Konsole gestartet wird.

cp /etc/inittab /var/tmp
sed -i 's|^/dev/ttyS0|# /dev/ttyS0|' /var/tmp/inittab 
mount -o bind /var/tmp/inittab /etc/inittab 
killall -HUP init

Im Anschluss kann man minicom ausführen und den Port /dev/ttyS0 nutzen. Entsprechend konfiguriert (siehe Einstellungen) besitzt man dann Schreib- und Lesezugriff auf die serielle Konsole der Server-Box.

Terminaleinstellungen

Die Konsole ist über ein beliebiges Terminalprogramm zu erreichen. Das Terminalprogramm sollte großzügig puffern können (gerne 10.000 Zeilen), damit man alle durchgeführten Anweisungen, die beim Booten der Box ausgeführt werden, nachverfolgen kann.

Die serielle Geschwindigkeit ist nicht für alle Boxen gleich.

AR7- und UR8-Modelle (wie 7170, 7270 usw.) brauchen folgende Einstellung (38400 8N1):

 - 38400 Baud
 - 8 Datenbits
 - 1 Stoppbit
 - kein Paritätsbit

AR9-, VR9- und Fusiv-Modelle (wie 7320, 7390) brauchen folgende Einstellung (115200 8N1):

 - 115200 Baud
 - 8 Datenbits
 - 1 Stoppbit 
 - kein Paritätsbit

Beispiel mit HTerm und Fritz Box Fon WLAN 7050

Weitere Anwendungsmöglichkeiten

Die serielle Konsole lässt sich deaktivieren, um die Schnittstelle anderweitig zu nutzen. Siehe dazu im Abschnitt "Software" unter "Anschluss der Box an eine andere Fritzbox". Dann ergibt sich z.B. folgende Anwendungsmöglichkeit:

  • Mit der seriellen Schnittstelle könnte man über AT-Kommandos ein angeschlossenes Handy (z.B. ein Siemens S45) ansteuern (siehe www.nobbi.com). Dadurch würde man die Fritzbox als GSM-Gateway nutzen können. Lediglich die Beschaltung der Audioausgänge (Headsetanschluss) des Handys mit der Fritzbox wären noch zu klären (über Analoge-Telefonanschlüsse?!).

Beispielausgabe beim Booten

Galerie

Bitte die Galerie nach Belieben mit eigenen Werken erweitern, auch per E-Mail. Siehe auch die Inspiration zu Bildern.

Artikel zum Thema

Siehe auch

Anschlussbelegungen: (69) (im Bau)

12V DC Trafo-Netzteile:

13V DC Schaltnetzteile:

12V DC Schaltnetzteile:

Noch unbekannte Netzteile:

Wechselspannungs-Netzteile:

  • AVM01012 (TODO: 8V 500mA 4VA 2: 22V 220mA 4.84VA, UK)
  • AVM01014 (8V AC, 5.2VA + 22V AC, 5.3VA)
  • AVM01019 (6.7V AC, 3VA + 22V AC, 2.4VA)
  • AVM01022 (TODO: Vermutlich 8V AC + 22V AC)
  • AVM01023 (TODO: 5V 480mA + 22V 171mA)
  • AVM01026 (5V AC, 3.9VA + 22V AC, 3.7VA)
  • AVM01028 (TODO: FRITZ!X USB v3.0 int)
  • AVM01029 (TODO: Teledat X130 DSL)
  • AVM01031 (5.2V AC, 4VA + 22V AC, 3.7VA)
  • AVM01034 (TODO: BlueFRITZ! DSL?)

Bilder

Pinbelegung der seriellen Schnittstelle:
Illustration serieller Anschluss FBF WLAN

Bei der FRITZ!Box Fon WLAN 7050 liegt der Anschluss an einer anderen Stelle und zwar quer zur Platine. 3.3 V liegt dabei in Richtung der hinteren Anschlussleiste:
Illustration serieller Anschluss FBF 7050

Position des Anschlusses bei der FRITZ!Box Fon WLAN 7141 (direkt neben dem Quartz; die 3,3 V liegen dabei in Richtung der vorderen Anschlussleiste):
Illustration serieller Anschluss FBF 7141

Position des Anschlusses bei der FRITZ!Box Fon WLAN 7170, links Mitte:
Illustration serieller Anschluss FBF 7170 (externer Link)
Illustration serieller Anschluss FBF 7170

Bei einigen Varianten der FRITZ!Box SL ist die serielle Konsole nicht mit Bohrungen durch die Platine geführt, so dass sich die Kontakte an der Unterseite der Platine befinden:
Illustration serieller Anschluss FB SL (Unterseite)

Andere Varianten der FRITZ!Box SL besitzen die üblichen Löcher:
Noch eine Variante FRITZ!Box 7170SL

Von der FRITZ!Box SL gibt es mehrere Varianten. Bei einer habe ich die Kontakte noch nicht gefunden, bei der anderen sind die üblichen Löcher vorhanden.

Links