Dispositivo de ligação a um módulo de driver

3

Estou tentando entender melhor o processo de vincular um dispositivo ao driver. Eu tenho uma ferramenta USB (em System Programmer for Arduino), cujo Id (Produto e Fornecedor) são conhecidos. O driver, cdc_acm.ko, não reconhece (claro, não está na sua lista de dispositivos internos!). Então ... eu carreguei o módulo

sudo modprobe cdc_acm
lsmod | grep cdc
$>cdc_acm

$>dmesg
...
[41244.510906] usbcore: registered new interface driver cdc_acm
[41244.510915] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

Perfeito. Então eu insiro o dispositivo e a saída do dmesg é a seguinte:

...
[41447.794431] usb 2-1.2: new full-speed USB device number 17 using ehci-pci
[41447.887680] usb 2-1.2: New USB device found, idVendor=03eb, idProduct=2ff7
[41447.887690] usb 2-1.2: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[41447.887695] usb 2-1.2: Product: Arduino USB-Serial DFU

Isso me parece que o driver usb vem lidando. Deixe-me verificar de acordo com o seguinte link

$>ls -la /sys/bus/usb/drivers/usb/usb2/2-1/2-1.2/2-1.2\:1.0/
total 0
drwxr-xr-x 3 root root    0 gen 20 19:29 .
drwxr-xr-x 5 root root    0 gen 20 12:51 ..
-r--r--r-- 1 root root 4096 gen 20 12:58 bAlternateSetting
-r--r--r-- 1 root root 4096 gen 20 12:51 bInterfaceClass
-r--r--r-- 1 root root 4096 gen 20 12:51 bInterfaceNumber
-r--r--r-- 1 root root 4096 gen 20 12:58 bInterfaceProtocol
-r--r--r-- 1 root root 4096 gen 20 12:58 bInterfaceSubClass
-r--r--r-- 1 root root 4096 gen 20 12:58 bNumEndpoints
-r--r--r-- 1 root root 4096 gen 20 12:58 modalias
drwxr-xr-x 2 root root    0 gen 20 12:58 power
lrwxrwxrwx 1 root root    0 gen 20 12:58 subsystem -> ../../../../../../../bus/usb
-r--r--r-- 1 root root 4096 gen 20 12:58 supports_autosuspend
-rw-r--r-- 1 root root 4096 gen 20 12:51 uevent

o link do módulo não existe, portanto, parece que o dispositivo não está vinculado ao driver do módulo usb. É bom notar que o conteúdo do arquivo modalias é o que eu esperava:

 usb:v03EBp2FF7d0000dc00dsc00dp00icFEisc01ip02in00

Agora eu tento vincular o dispositivo ao módulo cdc_acm com o seguinte comando:

$>sudo echo -n "2-1.2:1.0" > sudo /sys/bus/usb/drivers/cdc_acm/bind

A saída do dmesg não mostra nada específico para o comando que acabou de ser emitido.

O que estou fazendo de errado aqui? Eu esperaria pelo menos alguma saída de depuração, se eu emitisse um pedido incorreto eu esperaria pelo menos uma mensagem de kernel de volta ... Pelo menos ter algum feedback do sistema me ajudaria a entender qual é o problema ... Alguém pode me ajudar? Obrigado. PS. Estou usando o Ubuntu 14.10 64bit no laptop Intel Core i3 ASUS F552C.

    
por bobuaits 20.01.2015 / 20:10

1 resposta

2

Esta é uma situação muito popular, o uso de redirecionamento de shell com sudo para gravar no arquivo de propriedade raiz. Você pode executá-lo como:

sudo sh -c 'echo -n "2-1.2:1.0" > /sys/bus/usb/drivers/cdc_acm/bind'

Que executam o shell como root e usam o redirecionamento dentro dele. Existem muitas outras maneiras, veja Ao usar o sudo com redirecionamento, eu obter 'permissão negada'

    
por user.dz 04.09.2015 / 13:35