Questa è una vecchia versione del documento!


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.

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.

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.

  • usb_rs485_nome_fisso.1506594853.txt.gz
  • Ultima modifica: 2017/09/28 12:34
  • da flane