我正在嘗試從 GPS 模組讀取資料。它使用 TTL 通信,我有一個適配器將其轉換為連接到我的電腦的 USB。
我可以使用 cgps 從中獲取數據,但我需要與它進行更多基礎級別的通訊。
當我嘗試時
gpscat -s 9600 /dev/ttyUSB0
我明白了
OSError: [Errno 16] Device or resource busy: '/dev/ttyUSB0'
我已經嘗試過,,,,,,lsof
但我無法弄清楚是什麼正在使用該端口,因此我無法阻止它。fuser
ps -ef | grep
ps aux | grep
答案1
答案2
您的使用者名稱是否已在 daiout 群組中(如果未執行)
sudo adduser $USER dialout
嘗試再次運行您的命令,據我所知這應該有效。
答案3
這可能是權限問題。嘗試運行:
sudo chmod a+rw /dev/ttyUSB0
然後再次連接。
答案4
上面答案的結合解決了我的問題。
透過停止 ModemManager,我能夠釋放串行埠並使用它
sudo lsof /dev/ttyUSB0
sudo systemctl stop ModemManager.service
sudo minicom -s
或者,可以將特定 LTE 數據機排除在 ModemManager 的管理之外:
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
要在沒有 sudo 的情況下訪問串行端口,我必須
#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