Tengo dos dispositivos que están alimentando datos continuamente a través de ttyUSB0 y ttyUSB1. Tengo scripts php que usan estos datos. El problema con el que me encuentro es que a veces la alimentación se congela. La mejor manera que he visto para solucionar esto es desconectar la placa BUB de la computadora y volver a enchufarla. Sin embargo, estoy buscando una manera de automatizar esta acción. ¿Hay alguna manera de decirle a Linux que esencialmente expulse la placa BUB y luego, de alguna manera, la levante de nuevo?
12
Respuestas:
Tengo el mismo problema que tú pero en un contexto diferente (abro una consola serie en una caja de Linux). El enlace serie a veces deja de responder y tengo que desconectar físicamente el convertidor USB-serie.
Lo siguiente parece resolver mi problema, pero no siempre.
Encuentre el controlador asociado a su dispositivo ttyUSBx.
Puedes ver que
/dev/ttyUSB
usosusbserial
. Ahora profundiza un poco más:En mi caso, mi convertidor de USB a serie es un Prolific PL2303. Si tiene un adaptador FTDI, creo que debería verlo en
ftdi_sio
lugar depl2303
.Descargue el controlador
Vuelva a cargar el controlador
Vuelva a iniciar su comunicación en serie
fuente
Con la respuesta de sdive seguí recibiendo "FATAL: el módulo usbserial está en uso".
Finalmente resolví el problema con alguna guía de la respuesta de LiLo aquí: /ubuntu//a/661/379851
Pero en lugar de usar un código C, escribí un equivalente en Python que también encuentra el bus y el dispositivo en cuestión:
Simplemente guarde esto como reset_usb.py o algo y luego ejecútelo así:
Donde driver_name es la salida de
En mi caso, era cp210x, así que lo ejecuto así:
fuente
Aquí está mi respuesta para el módulo
ftdi_sio
. Los pasos se adaptan de la respuesta anterior y el enlace de un comentario en la pregunta original.No pude eliminar el módulo:
Entonces uso el siguiente truco:
Lo que de hecho fue verificado por:
Entonces fue fácil quitar el módulo:
Y luego simplemente:
Esto no está claro por qué ftdi_sio se pone en tan mal estado, tal vez todavía sea un error como en:
Pero parece que el kernel 4.9.20 todavía contiene un
ftdi_sio
módulo defectuoso .fuente