Ich versuche, die Daten von einem GPS-Modul zu lesen. Es verwendet TTL-Kommunikation und ich habe einen Adapter, um sie auf USB umzuwandeln, der an meinen Computer angeschlossen ist.
Ich kann mithilfe von CGPs Daten davon abrufen, muss dazu aber auf einer grundlegenderen Ebene mit ihm kommunizieren.
Wenn ich es versuche
gpscat -s 9600 /dev/ttyUSB0
Ich bekomme
OSError: [Errno 16] Device or resource busy: '/dev/ttyUSB0'
Ich habe Folgendes ausprobiert lsof
: , fuser
, ps -ef | grep
, ps aux | grep
, und kann nicht herausfinden, was den Port verwendet, und kann es daher nicht stoppen.
Antwort1
Antwort2
Ist Ihr Benutzername bereits in der Dailout-Gruppe, wenn nicht ausführen
sudo adduser $USER dialout
Versuchen Sie, Ihre Befehle erneut auszuführen. Soweit ich weiß, sollte das funktionieren.
Antwort3
Dies kann ein Berechtigungsproblem sein. Versuchen Sie Folgendes auszuführen:
sudo chmod a+rw /dev/ttyUSB0
Stellen Sie anschließend die Verbindung erneut her.
Antwort4
Die Kombination der obigen Antworten hat mein Problem gelöst.
Durch das Stoppen des ModemManagers konnte ich den seriellen Port freigeben und verwenden
sudo lsof /dev/ttyUSB0
sudo systemctl stop ModemManager.service
sudo minicom -s
Alternativ kann das jeweilige LTE-Modem von der Verwaltung des ModemManagers ausgeschlossen werden:
https://linux-tips.com/t/prevent-modem-manager-to-capture-usb-serial-devices/284
https://www.freedesktop.org/software/ModemManager/doc/latest/ModemManager/ref-overview-modem-filter.html
Um auf den seriellen Port ohne sudo zuzugreifen, musste ich
#either add my user to dialout group
sudo adduser $USER dialout
#or make the serial port readable and writable to everybody
sudo chmod a+rw /dev/ttyUSB0