Wiki ADA

Projetos em Engenharia de Computação

Ferramentas do usuário

Ferramentas do site


nome-persistente-para-dispositivos-usb-serial

Nome persistente para dispositivos USB serial

Utilizamos vários dispositivos que se comunicam através de uma interface USB serial e sempre que conectamos um dispositivo em uma porta USB ele obtém um caminho relativo como /dev/ttyUSB0. Porém esse caminho não é persistente e pode mudar dependendo da ordem que os dispositivos são conectados.

O objetivo desse artigo é apresentar uma maneira de configurar um caminho permanente (como /dev/arduino, por exemplo) para um dispositivo conhecido.

Esses dispositivos possuem uma interface USB-serial que geralmente converte um tráfego de dados seriais (UART) para tráfego de dados USB, dispensando a necessidade de uma porta serial RS-232 dedicada. Todo dispositivo compatível com USB possui um Vendor ID e um Product ID. Isso pode ser verificado com o comando lsusb:

ada@ec $ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC
Bus 001 Device 010: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC
Bus 001 Device 005: ID 0402:5632 ALi Corp. USB 2.0 Host-to-Host Link
Bus 002 Device 005: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC

É possível notar no exemplo acima que três dispositivos utilizam o mesmo chip para a interface USB (o popular FTDI FT232) e, portanto, possuem o mesmo Vendor ID e Product ID. Para diferenciar um dispositivo do outro, precisamos de um identificador único, como um número serial. Com o comando udevadm podemos encontrar esse número:

ada@ec $ udevadm info -a -n /dev/ttyUSB1 | grep '{serial}' | head -n1
    ATTRS{serial}=="'''A6008isP'''"

Com essas informações é possível criar uma regra UDEV que irá criar um link simbólico sempre que um dispositivo cadastrado for reconhecido. Regras UDEV normalente ficam localizadas em /etc/udev/rules.d. Crie um arquivo chamado 99-usb-serial.rules e adicione as seguintes linhas:

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A6008isP", SYMLINK+="arduino"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A7004IXj", SYMLINK+="buspirate"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTDIF46B", SYMLINK+="ttyUSB.ARM"

Cada linha representa um dispositivo, portanto altere os atributos de acordo com as informações coletadas anteriormente. Vale salientar que o atributo SYMLINK+=“arduino” indica que um link simbólico será criado em /dev/arduino apontando para /dev/ttyUSB*. Ou seja, os dispositivos ainda obtém nomes que podem mudar, mas agora eles também possuem um link simbólico que sempre apontará para o caminho correto.

'Fonte:' http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/ (Michael Ludvig @ 2009)

nome-persistente-para-dispositivos-usb-serial.txt · Última modificação: 2018/10/17 19:19 por amador