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