
Tengo un dongle dlink DW-157 3g. Estoy intentando asignar el mismo puerto al dongle cada vez que arranca modificando el archivo de reglas udev. Dado que el dongle en el arranque se inicia como medio de almacenamiento, tengo que ingresar el siguiente comando para expulsar y montar en modo módem y luego otro comando debajo para utilizar los puertos ttyUSB del módem para ejecutar un módem de acceso telefónico.
sudo eject /dev/sr0
sudo /bin/sh -c "echo 2001 7d0e > /sys/bus/usb-serial/drivers/option1/new_id
Después de ingresarlos, sudo dmesg| grep ttyUSB aparece como:
[ 17.581264] usb 1-1.4: GSM modem (1-port) converter now attached to ttyUSB1
[ 17.584470] usb 1-1.4: GSM modem (1-port) converter now attached to ttyUSB2
[ 17.593854] usb 1-1.4: GSM modem (1-port) converter now attached to ttyUSB3
[ 17.594869] usb 1-1.4: GSM modem (1-port) converter now attached to ttyUSB4
El puerto real en el que puedo usar el módem para marcar es ttyUSB1. Entonces, estoy intentando asignar ttyUSB1 a d_uart en mi archivo de reglas udev:
ACTION=="add", ATTRS{idVendor}=="2001", ATTRS{idProduct}=="7d0e", SYMLINK+="d_uart"
Pero lo que sucede es que d_uart queda asignado a ttyUSB4. ¿Qué hago para asignarlo siempre al primer puerto (ttyUSB1 en este caso)?
Además, el resultado del comando para ttyUSB1,ttyUSB2,ttyUSB3 y ttyUSB4 para el siguiente comando:
udevadm info -a -n /dev/ttyUSB4 | grep '{serial}' | head -n1
es el mismo.
ATTRS{serial}=="3f980000.usb"
Además, salida del comando ls -l /dev/d_uart
lrwxrwxrwx 1 root root 7 Oct 3 13:27 /dev/d_uart -> ttyUSB4
salida lsusb:
Bus 001 Device 006: ID 2001:7d0e D-Link Corp.
Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root h
Salida de udevadm info -n /dev/ttyUSB2:
P: /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.3/ttyUSB2/tty/ttyUSB2
N: ttyUSB2
S: d_uart
S: serial/by-id/usb-D-Link_Inc_D-Link_DWM-157-if03-port0
S: serial/by-path/platform-3f980000.usb-usb-0:1.4:1.3-port0
E: DEVLINKS=/dev/d_uart /dev/serial/by-id/usb-D-Link_Inc_D-Link_DWM-157-if03-port0 /dev/serial/by-path/platform-3f980000.usb-usb-0:1.4:1.3-port0
E: DEVNAME=/dev/ttyUSB2
E: DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.3/ttyUSB2/tty/ttyUSB2
E: ID_BUS=usb
E: ID_MODEL=D-Link_DWM-157
E: ID_MODEL_ENC=D-Link\x20DWM-157
E: ID_MODEL_ID=7d0e
E: ID_PATH=platform-3f980000.usb-usb-0:1.4:1.3
E: ID_PATH_TAG=platform-3f980000_usb-usb-0_1_4_1_3
E: ID_REVISION=0300
E: ID_SERIAL=D-Link_Inc_D-Link_DWM-157
E: ID_TYPE=generic
E: ID_USB_CLASS_FROM_DATABASE=Miscellaneous Device
E: ID_USB_DRIVER=option
E: ID_USB_INTERFACES=:020e00:0a0002:ff0201:ff0000:080650:
E: ID_USB_INTERFACE_NUM=03
E: ID_USB_PROTOCOL_FROM_DATABASE=Interface Association
E: ID_VENDOR=D-Link_Inc
E: ID_VENDOR_ENC=D-Link\x2cInc\x20\x20
E: ID_VENDOR_FROM_DATABASE=D-Link Corp.
E: ID_VENDOR_ID=2001
E: MAJOR=188
E: MINOR=2
E: SUBSYSTEM=tty
E: TAGS=:systemd:
E: USEC_INITIALIZED=978899
Respuesta1
Puede intentar hacer coincidir la creación del dispositivo ttyUSB1. Cambia tu regla a
ACTION=="add", ENV{ID_VENDOR_ID}=="2001", ENV{ID_MODEL_ID}=="7d0e", ENV{DEVNAME}=="/dev/ttyUSB1", SYMLINK+="d_uart"
Asegúrate de hacerlo sudo udevadm control --reload
después de cualquier cambio. Probablemente deberías hacer coincidir el ID_USB_INTERFACE_NUM
, si esto difiere para cada puerto, para que funcione incluso si tienes otros ttyUSB*
dispositivos.