=======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)