Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior | |||
nome-persistente-para-dispositivos-usb-serial [2018/10/03 09:33] amador |
nome-persistente-para-dispositivos-usb-serial [2018/10/17 19:19] (atual) amador |
||
---|---|---|---|
Linha 1: | Linha 1: | ||
- | #REDIRECT 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'': | ||
+ | |||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | É 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: | ||
+ | |||
+ | <code> | ||
+ | ada@ec $ udevadm info -a -n /dev/ttyUSB1 | grep '{serial}' | head -n1 | ||
+ | ATTRS{serial}=="'''A6008isP'''" | ||
+ | </code> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | <code> | ||
+ | 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" | ||
+ | </code> | ||
+ | |||
+ | 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) |