Estou tentando ler os dados de um módulo GPS. Ele usa comunicação TTL e tenho um adaptador para convertê-lo em USB que está conectado ao meu computador.
Posso obter dados usando cgps, mas preciso ter mais comunicação de nível básico com ele.
Quando eu tento
gpscat -s 9600 /dev/ttyUSB0
eu recebo
OSError: [Errno 16] Device or resource busy: '/dev/ttyUSB0'
Eu tentei lsof
, fuser
, ps -ef | grep
, ps aux | grep
e não consigo descobrir o que está usando a porta e, portanto, não consigo parar.
Responder1
Responder2
Seu nome de usuário já está no grupo dailout, se não, execute
sudo adduser $USER dialout
Tente executar seus comandos novamente, AFAIK, isso deve funcionar.
Responder3
Isso pode ser um problema de permissões. Tente executar:
sudo chmod a+rw /dev/ttyUSB0
Em seguida, conecte novamente.
Responder4
A combinação das respostas acima resolveu meu problema.
Ao parar o ModemManager consegui liberar a porta serial e usá-la
sudo lsof /dev/ttyUSB0
sudo systemctl stop ModemManager.service
sudo minicom -s
Alternativamente, o modem LTE específico pode ser excluído do gerenciamento do 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
Para acessar a porta serial sem sudo eu tive que
#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