Como a criação de um novo arquivo de dispositivo USB no diretório / dev / bus / usb / 001 / funciona?

6

Percebi que toda vez que eu conecto um dispositivo USB, um novo dispositivo é criado no diretório /dev/bus/usb/001/ . Além disso, em cada reconexão do mesmo dispositivo, o "Número do dispositivo" e "ID" mudam.

Então, eu gostaria de saber como funciona a criação de novo arquivo de dispositivo (em /dev/bus/usb/001/ )? Posso controlar o comportamento , dizer limitar o número do dispositivo a 002 , fazendo alterações em algum arquivo de configuração (se houver) ?

Aqui está a saída para referência:

$ ls /dev/bus/usb/001
001  002
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0781:5406 SanDisk Corp. Cruzer Micro U3
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 08ec:0015 M-Systems Flash Disk Pioneers Kingston DataTraveler ELITE
$ lsusb 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 008: ID 0781:5406 SanDisk Corp. Cruzer Micro U3
$ ls /dev/bus/usb/001/
001  008

(Também não sei porque Kingston Flash Disk foi mostrado na saída. Eu não tenho um dispositivo Kingston! ... Talvez seja apenas uma falha, ou é?)

Outro tópico contextual de interesse:

por precise 11.01.2014 / 16:58

1 resposta

2

Os dispositivos em /dev/bus/usb/XXX/YYY seguem as políticas de nomeação no kernel, como observou Gilles nos comentários. XXX é o número do barramento que é bastante estável, mas YYY muda toda vez que o dispositivo USB é enumerado (quando um dispositivo é inserido ou reiniciado). Isso não pode ser alterado e você não deve alterar isso também.

Se você precisar alterar permissões no dispositivo (por exemplo, para possibilitar um driver USB de espaço de usuário não privilegiado para fins de teste), você poderá criar uma regra do udev. Um exemplo em que uso udev para controlar as permissões de modo que adb seja capaz de se conectar ao dispositivo:

# /etc/udev/rules.d/42-usb-permissions.rules
SUBSYSTEM!="usb", GOTO="end_skip_usb"

# CWM 6.0.4.3 in recovery mode
ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="d001", GROUP="peter"

# CM 10.2 with MTP disabled
ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="d002", GROUP="peter"

ATTRS{idVendor}=="148f", ATTRS{idProduct}=="5372", GROUP="peter"

LABEL="end_skip_usb"
    
por 25.03.2014 / 18:20