Estoy usando un módem USB Huawei GMS / UMTS con Gnokii y Gammu. El módem estaba en el puerto inferior de Pi. Con dmesg | grep tty
eso aparecería en /dev/ttyUSB0
y /dev/ttyUSB1
. (2 dispositivos USB en 1 dispositivo es normal, en este caso).
Configuré Gnokii y Gammu en consecuencia, sin embargo, en ttyUSB0 solo podía enviar mensajes. Tanto el envío como la recepción solo funcionarían en ttyUSB1.
Luego moví el dispositivo a la toma USB superior (porque de lo contrario mi dispositivo WiFi no encajaría al lado). Todo seguía funcionando bien. También después de varios reinicios, frío y cálido.
Luego necesitaba expandir el sistema de archivos (Sí, sé que debería haberlo hecho antes). Después de eso, el módem estaba en ttyUSB0 y ttyUSB * 2 *. Enviar / recibir trabajado en este último. Esto me llevó un tiempo descubrirlo.
Actualización: 2 días después, ttyUSB2 ha desaparecido. El módem de trabajo ahora se manifiesta en ttyUSB0 (era ttyUSB1).
¿Alguna idea de por qué sucedió esto? ¿Algún enlace a documentos relevantes de Debian o Linux, tal vez? Estaría muy agradecido ...
fuente
/sys/class/tty/
como guía.Respuestas:
La documentación de Gammu sugiere (pero no entra en detalles) una solución alternativa,
Editar: Atmel tiene una Nota de aplicación que describe muy bien el proceso de enumeración.
La enumeración cambia porque ocurre en una conversación entre el host, el concentrador y el dispositivo, y el tiempo de respuesta de cada uno de estos puede variar, incluso si la configuración es idéntica de un reinicio al siguiente.
Actualización: la solución no se encuentra fácilmente en línea y está dispersa en pedazos por todo el lugar. Así que lo puse todo junto en un documento . Esto es a lo que se reduce.
1. descubre lo que hay en ttyUSB:
2. enumere todos los atributos del dispositivo y seleccione un conjunto de identificadores únicos, por ejemplo, idVendor + idProduct (y, si es necesario, SerialNumber si tiene más de un dispositivo con el mismo idVendor e idProduct).
3. Cree un archivo
/etc/udev/rules.d/99-usb-serial.rules
con algo como esta línea:(suponiendo que no necesita un número de serie allí y, por supuesto, con los números de idVendor e idProduct que encontró en el paso 2.
4. Cargue la nueva regla:
5. Verifique lo que sucedió:
mostrará a qué número ttyUSB fue el enlace simbólico. Si es así
/dev/ttyUSB1
, verifique quién es el propietario y a qué grupo pertenece:Entonces solo por diversión:
fuente
Has respondido parcialmente tu propia pregunta, pero hay otra forma de hacerlo, especialmente para dispositivos en serie: las
/dev/serial/*
rutas. Tengo una interfaz USB → RS232 prolífica en mi Raspberry Pi que casi siempre aparece como/dev/ttyUSB0
. Pero también aparece en el sistema como:/dev/serial/by-path/platform-bcm2708_usb-usb-0:1.3:1.0-port0
/dev/serial/by-id/usb-067b_2303-if00-port0
El uso del
by-id
enlace debe permanecer igual, a menos que agregue otro convertidor basado en PL2303.fuente