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
あなたのユーザー名はすでにdailoutグループに含まれていますか?含まれていない場合は実行してください
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