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
명령을 다시 실행해 보세요. AFAIK가 작동합니다.
답변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