====== DISPOSITIVI USB (assegnare un nome fisso) ======
Nel caso abbiate installato due adattatori USB-RS485, per evitare che via siano degli scambi fra le porte USB0 e USB1 degli adattatori (può succedere in seguito ad un riavvio del Raspberry), è possibile **assegnare un nome fisso ed univoco ad ogni adattatore**.
===== Adattatori usb diversi =====
Verificare gli ID dei dispositivi con il comando lsusb:
lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 005: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Ci sono 2 dispositivi RS485. Creiamo il file /etc/udev/rules.d/10-local.rules
sudo nano /etc/udev/rules.d/10-local.rules
e andiamo a rinominare i due dispositivi come “meter” e “123solar” inserendo nel file le seguenti righe:
ACTION=="add", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="metern"
ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="123solar"
CTRL+O per salvare e CTRL+X per uscire
Riavviamo
sudo reboot
dopo il riavvio si può verificare che tutto funzioni correttamente:
ls -l /dev/metern /dev/123solar
lrwxrwxrwx 1 root root 7 Jan 1 1970 /dev/metern -> ttyUSB0
lrwxrwxrwx 1 root root 7 Jan 1 1970 /dev/123solar -> ttyUSB1
Naturalmente i vostri dispositivi avranno ID diversi, è pertanto necessario adattare il tutto al vostro caso specifico.
Ora è possibile usare /dev/metern e /dev/123solar nei rispettivi programmi invece di /dev/ttyUSB0 e /dev/ttyUSB1.
===== Adattatori usb identici =====
Se i dispositivi sono identici (stesso Vendor id e Product id) allora si deve cercare un altro parametro che li differenzi.
Ad esempio in questo caso sono identici:
lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 005: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Eseguire i seguenti comandi e confrontare i risultati:
udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)
e
udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB1)
Nel mio caso uno dei parametri che li differenzia è:
KERNELS=="1-1.2" per ttyUSB0 (usato per metern)
KERNELS=="1-1.3" per ttyUSB1 (usato per 123solar)
Si dovrà quindi creare il file 10-local.rules:
sudo nano /etc/udev/rules.d/10-local.rules
e scriverci dentro (sono 2 righe di testo – non 4)
ACTION=="add", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", KERNELS=="1-1.2", SYMLINK+="metern"
ACTION=="add", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", KERNELS=="1-1.3", SYMLINK+="123solar"
CTRL+O per salvare e CTRL+X per uscire
Riavviamo
sudo reboot
dopo il riavvio si può verificare che tutto funzioni correttamente:
ls -l /dev/metern /dev/123solar
lrwxrwxrwx 1 root root 7 Jan 1 1970 /dev/metern -> ttyUSB0
lrwxrwxrwx 1 root root 7 Jan 1 1970 /dev/123solar -> ttyUSB1
Ora è possibile usare /dev/metern e /dev/123solar nei rispettivi programmi invece di /dev/ttyUSB0 e /dev/ttyUSB1.
===== LINK =====
[[http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/|Persistent names for usb-serial devices]]\\
[[https://www.domoticz.com/wiki/PersistentUSBDevices|Persistent USB Devices]]