Como resolver o problema de não saber os nomes dos dispositivos USB quando vários dispositivos USB estão conectados no mesmo computador?
A maneira mais fácil é usar os nomes dos dispositivos na pasta / dev. Depois de conectar os adaptadores USB, ele irá gerar automaticamente um nome de série para ele, que pode ser encontrado sob o / dev / serial / by-id mostrado abaixo
/dev/serial/by-id/usb-US_Digital_USB__-__QSB_81658-if00-port0
QSB_81658 será um nome único para esse dispositivo USB.
Eu tentei escrever regras dev que eram redundantes, porque cada dispositivo tinha seu próprio nome constante como mostrado acima. Eu também me deparei com alguns problemas, como quando eu estava aplicando regras dev.
Escrevendo regras de desenvolvimento para designar nomes para indivíduos. Como sabemos, cada adaptador QSB possui seu próprio número de série, que você pode encontrar na parte frontal do adaptador preto. Para o meu caso, eu tenho dois adaptadores QSB0. Um tem o número de série de 81830, outro tem o número de série de 81658. Usarei esse atributo (ATTRS {serial}) para atribuir nomes a esses dois adpaters.
Primeiro, execute o udevadm para dar uma olhada nos detalhes dos dispositivos usb
$ udevadm info -a -n / dev / ttyUSB0
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '':
KERNEL=="ttyUSB0"
SUBSYSTEM=="tty"
DRIVER==""
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/ttyUSB0':
KERNELS=="ttyUSB0"
SUBSYSTEMS=="usb-serial"
DRIVERS=="ftdi_sio"
ATTRS{latency_timer}=="16"
ATTRS{port_number}=="0"
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0':
KERNELS=="1-8:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="ftdi_sio"
ATTRS{authorized}=="1"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceProtocol}=="ff"
ATTRS{bInterfaceSubClass}=="ff"
ATTRS{bNumEndpoints}=="02"
ATTRS{interface}=="USB <-> QSB"
ATTRS{supports_autosuspend}=="1"
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-8':
KERNELS=="1-8"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="8"
ATTRS{bMaxPower}=="500mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0600"
ATTRS{bmAttributes}=="80"
ATTRS{busnum}=="1"
ATTRS{configuration}==""
ATTRS{devnum}=="5"
ATTRS{devpath}=="8"
ATTRS{idProduct}=="6001"
ATTRS{idVendor}=="0403"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="US Digital"
ATTRS{maxchild}=="0"
ATTRS{product}=="USB <-> QSB"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{serial}=="81830"
ATTRS{speed}=="12"
ATTRS{urbnum}=="72190"
ATTRS{version}==" 2.00"
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1':
KERNELS=="usb1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{authorized_default}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="0mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0404"
ATTRS{bmAttributes}=="e0"
ATTRS{busnum}=="1"
ATTRS{configuration}==""
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{idProduct}=="0002"
ATTRS{idVendor}=="1d6b"
ATTRS{interface_authorized_default}=="1"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Linux 4.4.0-128-generic xhci-hcd"
ATTRS{maxchild}=="16"
ATTRS{product}=="xHCI Host Controller"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{serial}=="0000:00:14.0"
ATTRS{speed}=="480"
ATTRS{urbnum}=="129"
ATTRS{version}==" 2.00"
looking at parent device '/devices/pci0000:00/0000:00:14.0':
KERNELS=="0000:00:14.0"
SUBSYSTEMS=="pci"
DRIVERS=="xhci_hcd"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x0c0330"
ATTRS{consistent_dma_mask_bits}=="64"
ATTRS{d3cold_allowed}=="1"
ATTRS{device}=="0xa12f"
ATTRS{dma_mask_bits}=="64"
ATTRS{driver_override}=="(null)"
ATTRS{enable}=="1"
ATTRS{irq}=="120"
ATTRS{local_cpulist}=="0-3"
ATTRS{local_cpus}=="f"
ATTRS{msi_bus}=="1"
ATTRS{numa_node}=="-1"
ATTRS{subsystem_device}=="0x8694"
ATTRS{subsystem_vendor}=="0x1043"
ATTRS{vendor}=="0x8086"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
Em seguida, você verá uma linha abaixo dos resultados impressos.
ATTRS{serial}=="81830"
Vá para o diretório /etc/udev/rules.d /
Adicione 990-usdigital-qsbadapter.rules usando o comando
sudo nano 990-usdigital-qsbadapter.rules
Em seguida, coloque os seguintes no arquivo
#This rule file is used to assign names for qsb adapter from USdigital
KERNELS=="1-8",SUBSYSTEMS=="usb",ATTRS{serial}=="81830",NAME="qsb81830"
KERNELS=="1-8",SUBSYSTEMS=="usb",ATTRS{serial}=="81658",NAME="qsb81658"
teste suas regras, você pode executar
udevadm control --repload-rules
udevadm test /dev/serial/by-id/usb-US_Digital_USB__-__QSB_81658-if00-port0
Devido a problemas de permissão, não pude alterar NAME. Em vez disso, uso o SYMLINK.
( Regras UDEV, variável "NAME" não funciona ) é possível renomear um nó de dispositivo atribuindo à chave NAME nas regras do udev. Pelo menos não no systemd udev. Apenas um nome de dispositivo de rede pode ser alterado. Do manual do udev:
NAME
The name to use for a network interface. See
systemd.link(5) for a higher-level mechanism
for setting the interface name. The name of a
device node cannot be changed by udev, only
additional symlinks can be created.
Portanto, altere o conteúdo do arquivo de regras para # Este arquivo de regras é usado para atribuir nomes ao adaptador qsb da USdigital
ATTRS{serial}=="81830",SYMLINK+="QSB830"
ATTRS{serial}=="81658",SYMLINK+="QSB658"
Por favor, clique na imagem abaixo para ver o resultado.
Imprimir resultados