Serielle Konsole ================ *** Achtung: Auf Pegel achten, nicht jeder Adapter ist für jedes Board geeignet. *** Hostrechner direkt verbunden ---------------------------- Der Zugriff über die serielle Schnittstelle ist vorallem dann notwendig, wenn keine Bildschirmausgabe zu erwarten ist und das System nicht selbstständig soweit hochfährt, dass man es über das Netzwerk erreichen kann. Der Bootloader z.B. bietet keinen SSH-Zugang oder ähnliches, und beim eingebetteten Systemen ist häufig kein externes Display vorgesehen oder es funktioniert im dieser Phase schlicht noch nicht. Serielle Schnittstellen werden vom Kernel als zeichenorientierte Geräte erkannt und als TTY bereitgestellt. Besitzt der Hostrechner nativ eine serielle Schnittstelle, ist diese unter Linux in der Regel als ``TTYS0`` im dev Verzeichnis ``/dev`` zu finden. Inwischen häufiger sind jedoch USB-to-Serial-Adapter, die wiederum ``/dev/ttyUSB0`` heißen. In unserem Fall stellt quasi der RaspberryPi als Server eine serielle Konsole auf dem Extension Header bereit. .. english No matter, whether you use USB-to-Serial Adapter or directly connect to a serial port on your board, on Linux it will always result in a TTY device. .. code:: bash # You can list all TTYs like that: $ ls -la /dev/tty* # Or grep for newly attached tty in dmesg $ dmesg | grep tty [ 10.719399] usb 1-1.4.1: pl2303 converter now attached to ttyUSB0 [ 10.721019] usb 1-1.4.3: pl2303 converter now attached to ttyUSB1 Der Entwicklungsrechner ist also Client und der Benutzer muss Lese- und Schreibrechte auf dieses zeichenorientierte Gerät haben. Ist dies nicht der Fall, muss der Benutzer erst zur zugriffsberechtigten Gruppe hinzugefügt werden, hier ``dialout``. .. code:: bash # Check who is able to get rw permissions $ ls -l /dev/ttyUSB0 crw-rw---- 1 root dialout 4, 64 2015-01-01 01:01 /dev/ttyS0 # Check wheater you are part of the group $ id -Gn |grep dialout sudo adduser $USER dialout Um auf nun auf die serielle Schnittstelle zugreifen zu können, bedarf es einem Terminal Emulator wie z.B. ``cu``, ``minicom``, ``picocom`` oder ``kermit`` .. code:: bash $ cu -l /dev/ttyUSB0 -s 115200 $ picocom /dev/ttyUSB0 -b 115200 -p n -d 8 -r -l # To end session, use Ctrl-A, Ctrl-X Wurde der oben genannte Schritt übersprungen, kann der Emulator auch mit ``sudo`` aufgerufen werden, die ist aber nicht empfohlen. Alternativ kann man auch ``screen`` als Serial Client verwenden. .. code:: bash $ screen /dev/ttyUSB0 115200 # To end the session, use Ctrl-A,Shift-K Fernzugriff auf die Serielle Schnittstelle ------------------------------------------ Konsolen server _______________ Installieren Sie das Paket *ser2net* von den Ubuntu Paketquellen und konfigurieren Sie es mit einem Editor: .. code:: bash $ sudo apt-get install ser2net $ vim /etc/ser2net.conf $ tail /etc/ser2net.conf ... 2000:telnet:600:/dev/ttyUSB0:115200 8DATABITS NONE 1STOPBIT banner 2001:telnet:600:/dev/ttyUSB1:115200 8DATABITS NONE 1STOPBIT banner #2000:telnet:600:/dev/ttyS0:9600 8DATABITS NONE 1STOPBIT banner #2001:telnet:600:/dev/ttyS1:9600 8DATABITS NONE 1STOPBIT banner #3000:telnet:600:/dev/ttyS0:19200 8DATABITS NONE 1STOPBIT banner #3001:telnet:600:/dev/ttyS1:19200 8DATABITS NONE 1STOPBIT banner Wie Sie in diesem Beispiel erkennen können, kann für jeden Port eine andere Konfiguration gewählt werden. Ich habe die Standard Einträge auskommentiert und für ttyUSB0 und ttyUSB1 eigene Einstellungen vorgenommen. http://manpages.ubuntu.com/manpages/trusty/man8/ser2net.8.html Nach dem ändern der Konfiguration müssen wir den Dienst neu starten. Der Dienst soll zudem beim Systemstart hochfahren. .. code:: bash $ sudo service ser2net restart $ sudo /etc/init.d/ser2net restart # Old style if the first one doesn't work. Konsolen Client _______________ Wenn sie in ser2net Telnet aus Option gewählt haben, können Sie eine Session öffnen indem Sie Telnet IP (Hostname) und einen Port übergeben: .. code:: bash $ telnet [host [port]]