geräte manager
Verwalten des Geräte-Managers
16. Juli 2021
navigations apps/software konfigurieren
Wie Sie Navigations-Apps und -Software konfigurieren?
20. Juli 2021
Zeige alles

Problem mit NMEA (COM-Port) – Verbindungen unter Ubuntu

Pinguin Ubuntu

Pinguin Ubuntu

Es gab kürzlich Reaktion auf einen Kommentar zu meinem erschienenen „Managing the Device Manager“, in dem Michael von Problemen berichtete, seinen AIS100USB unter LINUX zum Laufen zu bringen. Also beschloss ich, das neueste OpenCPN herunterzuladen und sicherzustellen, dass der neue NMEA Connections Code, den sie kürzlich zu V3.20 hinzugefügt haben, tatsächlich noch wie die vorherigen Versionen funktioniert.

Es ist schon eine Weile her, dass ich mit der LINUX-Version von OpenCPN gespielt habe. Mit einem normalen Ubuntu V12.04 32 Bit Setup war ich überrascht, als ich die NMEA-Daten von meinem AIS-Empfänger oder Transponder nicht empfangen konnte. Um das weiter zu untersuchen, öffnete ich ein Terminal-Fenster und gab folgendes ein:

dmesg | grep tty

Das gab die folgenden Informationen über alle seriellen Schnittstellen zurück – „tty“ ist ein alter Begriff in LINUX aus den Tagen der Teletypewriter, die sich dann zu Computerterminals weiterentwickelten, die serielle Schnittstellen zur Verbindung mit dem Großrechner verwendeten.

Problem Ubuntu

Der Befehl Dmesg extrahiert Informationen aus verschiedenen Protokolldateien und gibt die aktuellen und historischen Informationen über USB-Geräte zurück, die an den PC angeschlossen wurden. Im obigen Bildschirm können Sie sehen, dass ein USB-zu-Seriell-Konverter angeschlossen war und den Namen ttyUSB0 erhielt (dies war mein AIS-Empfänger). Es lässt sich auch erkennen, dass dieser getrennt wurde. Dann können Sie sehen, dass ein anderes USB-ACM-Gerät mit dem Namen ttyACM0 angeschlossen war (dies war mein AIS-Transponder), der immer noch angeschlossen ist.

Jetzt wusste ich also, welche serielle Schnittstelle von LINUX für meinen AIS-Transponder eingerichtet worden war. Der nächste Schritt bestand also darin, ein LINUX-Programm namens Screen zu verwenden, um die NMEA-Daten, die an ttyACM0 ankommen, an meinen Terminalbildschirm zu senden. Zuerst installierte ich das Programm Screen, indem ich den folgenden Befehl in das Terminal eingab:

sudo apt-get install screen

Nach der Installation sollte der folgende Befehl die NMEA-Daten, die an Port ttyACM0 eingehen, anzeigen:

screen /dev/ttyACM0 38400

Als ich diesen Befehl ausführte, wurde jedoch kurz eine Warnung angezeigt. Diese besagte, dass ich nicht über die erforderlichen Berechtigungen für den Zugriff auf dieses Gerät verfügte. Dies war mein erster Hinweis auf das Problem mit dem fehlenden NMEA in OpenCPN. Ich gab den Befehl erneut ein, diesmal als „Root“-Benutzer mit dem sudo-Befehl…

sudo screen /dev/ttyACM0 38400

Diesmal funktionierte der Screen-Befehl und ich sah die folgende Anzeige:

Ubuntu Befehl

Es scheint also, dass mir aus irgendeinem Grund der Zugriff auf die COM-Port-Geräte verweigert wurde. Mein erster Gedanke war, dass es sich um ein Problem mit OpenCPN handelte. Ich suchte nach Möglichkeiten, OpenCPN als root auszuführen. Glücklicherweise gab es Ratschläge von einem Digital-Yacht-Kunden namens Fulup. Er hatte mir schon einmal dabei geholfen, OpenCPN mit unserem AIT2000 zum Laufen zu bringen.

Wieder einmal waren Fulups gute LINUX-Ratschläge von unschätzbarem Wert. Er hob hervor, dass das Problem mit Änderungen in der Art und Weise zusammenhing, wie die neuesten Versionen von Ubuntu Standard-Benutzerrechte setzen. Die COM-Ports waren früher für alle Benutzer verfügbar. Jetzt braucht man jedoch Dialout-Berechtigungen, um auf sie zuzugreifen. Fulup riet mir, meinen Benutzernamen zur Dialout-Gruppe hinzuzufügen. Dann sollte ich in der Lage sein, auf die COM-Ports zuzugreifen, ohne ein potenzielles Sicherheitsrisiko einzugehen, indem ich OpenCPN als root ausführe.

Dazu war es notwendig, wieder ein Terminalfenster zu öffnen und den folgenden Befehl genau wie geschrieben auszuführen. Beachten Sie, dass $LOGNAME eine Shell-Variable ist und automatisch den Namen des aktuell angemeldeten Benutzers erhält;

sudo usermod -a -G dialout $LOGNAME

Jetzt wurde Ihr Benutzername zur Dialout-Gruppe hinzugefügt. Sie müssen sich nur noch abmelden und wieder anmelden, damit die Änderungen wirksam werden. Sobald Sie wieder eingeloggt sind, führen Sie OpenCPN aus, um sicherzustellen, dass Sie nun Daten von den COM-Ports lesen können.

Ich war sehr erfreut, als ich feststellte, dass das Problem damit behoben war (danke Fulup) und ich nun NMEA-Daten von meinem AIS-Transponder oder meinem AIS-Empfänger einlesen kann. Ich hoffe, dies hilft allen, die ähnliche Probleme mit den neuesten 12.04 oder höheren Versionen von Ubuntu haben.

Es können keine Kommentare abgegeben werden.