Estoy intentando leer los datos de un módulo GPS. Utiliza comunicación TTL y tengo un adaptador para convertirlo a USB que está conectado a mi computadora.
Puedo obtener datos usando cgps, pero necesito tener más comunicación de nivel básico con él.
cuando lo intento
gpscat -s 9600 /dev/ttyUSB0
yo obtengo
OSError: [Errno 16] Device or resource busy: '/dev/ttyUSB0'
Probé lsof
, fuser
, ps -ef | grep
, ps aux | grep
y no puedo entender qué está usando el puerto y, por lo tanto, no puedo detenerlo.
Respuesta1
Respuesta2
¿Su nombre de usuario ya está en el grupo de dailout, si no lo ejecuta?
sudo adduser $USER dialout
Intente ejecutar sus comandos nuevamente, AFAIK, esto debería funcionar.
Respuesta3
Esto puede ser un problema de permisos. Intenta ejecutar:
sudo chmod a+rw /dev/ttyUSB0
Luego conéctese nuevamente.
Respuesta4
La combinación de las respuestas anteriores resolvió mi problema.
Al detener el ModemManager pude liberar el puerto serie y usarlo
sudo lsof /dev/ttyUSB0
sudo systemctl stop ModemManager.service
sudo minicom -s
Alternativamente, el módem LTE específico puede excluirse de la gestión del 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 acceder al puerto serie sin sudo tuve 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