Dispositivo USB para Serial não atribuirá o driver CP210x

1

Estou usando o Jessie Lite em um RPi2. Quando eu conecto meu dispositivo USB ao Serial, ele aparece, mas o driver não está atribuído.

lsusb -t

/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
        |__ Port 3: Dev 13, If 0, Class=Vendor Specific Class, Driver=, 12M

O driver CP210x da Silicon Labs parece estar instalado:

lsmod

Module                  Size  Used by
cp210x                  9419  0 
usbserial              29964  1 cp210x

Agora tentei ligar manualmente sem sucesso:

echo -n "1-1.3:1.0" > /sys/bus/usb/drivers/cp210x/bind

write error: No such device

Como sou relativamente novo no Linux e preciso disso, agradeceria sugestões. Nota: Eu tenho um pequeno script Python em execução em uma máquina Windows que é capaz de falar muito bem com o dispositivo ...

O dispositivo está lá, não consigo descobrir por que não foi encontrado:

tree /sys/bus/usb/devices/

├── 1-1.3 -> ../../../devices/platform/soc/20980000.usb/usb1/1-1/1-1.3
├── 1-1.3:1.0 -> ../../../devices/platform/soc/20980000.usb/usb1/1-1/1-1.3/1-1.3:1.0

Pode a informação adicional de usb-devices ajudar a encontrar o problema?

T:  Bus=01 Lev=02 Prnt=02 Port=04 Cnt=02 Dev#=  6 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=18ef ProdID=e030 Rev=01.00
S:  Manufacturer=Silicon Labs
S:  Product=ALC 8500 Expert
S:  SerialNumber=3ENAEFJAVJCO9AQQ
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    
por Matthias Frei 01.08.2016 / 13:58

1 resposta

0

Adicione uma regra ao udev que carregará automaticamente um driver para um dispositivo USB.

Informações necessárias:

  • Números PID / VID do dispositivo USB. lsusb output. Não aparece no modo de árvore. lsusb -t
  • Driver de dispositivo modprobe comando. %código%

Crie uma regra do udev .

Adicione seu próprio arquivo de regras em /sbin/modprobe usb-storage

sudo vi /etc/udev/rules.d/80-serialToUsb_PID-VID.rules

Quando você adiciona a regra para o udev. Isso permitirá que o udev carregue automaticamente o driver, após a inserção de USB, em qualquer dispositivo com o pid / vid listado.

  • Substitua #PID # pelo PID do seu dispositivo.
  • Substitua #VID # pelo VID do seu dispositivo.
  • Substitua #DRIVER # pelo comando para carregar o módulo.
  • Substitua #SYS # pela localização do driver em /etc/udev/rules.d diretório.

/sys

Reinicie o udev

sudo /etc/init.d/udev restart

Anexe o dispositivo e use ACTION=="add", ATTRS{idVendor}=="#VID#", ATTRS{idProduct}=="#PID#", RUN+="#DRIVER#" RUN+="/bin/sh -c 'echo #PID# #VID# > #SYS#'" para verificar

Aqui está um exemplo que usei para um mp3 player personalizado.

ACTION=="add", ATTRS{idVendor}=="a000", ATTRS{idProduct}=="a000", RUN+="/sbin/modprobe usb-storage" RUN+="/bin/sh -c 'echo a000 a000 > /sys/bus/usb/drivers/usb-storage/new_id'"

Isso funciona no Debian 8 e no Ubuntu 14.

Você está usando o Debian lite. Então, não tenho 100% de certeza de que isso funcionará para você.

Eu tenho um dispositivo embutido Freescale, mx23, que usa dmesg em vez de mdev e o procedimento é um pouco diferente.

    
por 01.08.2016 / 20:21