Fixer les ports USB d’un Raspberry

usbinterro

1ère partie, adaptée à une distribution Raspbian Os standard

Sur le même Jeedom, j’ai deux équipements qui utilisent les ports USB :

  • Un CM11 qui commande mes équipements X10 (oui, j’en ai encore)
  • Une clé zWave stick Aeon Labs

Un est sur /dev/ttyUSB0 et l’autre est sur /dev/ttyUSB1

Pour une raison inconnue, parfois, le Raspberry inverse les ports et cela pose des soucis. J’ai cherché comment figer ces ports.

Pour éviter les 0 déconseillés dans le nom des USB, j’ai choisi d’utiliser USB11 (pour CM11) et USB12.

On fait un :

sudo lsusb -v | more

Copier les lignes :

  • idVendor
  • idProduct

J’ai donc :

  • idVendor 0x10c4 Cygnal Integrated Products, Inc.
  • idProduct 0xea60 CP210x UART Bridge / myAVR mySmartUSB light

(ou pour la Gen5 )

  • idVendor 0x0658 Sigma Designs, Inc.
  • idProduct 0x0200 Aeotec Z-Stick Gen5 (ZW090) – UZB

et

  • idVendor 0x067b Prolific Technology, Inc.
  • idProduct 0x2303 PL2303 Serial Port

On va demander au Raspberry d’appliquer une règle de nommage grâce au fichier /etc/udev/rules.d/99-usb-serial.rules

sudo nano /etc/udev/rules.d/99-usb-serial.rules

Et on ajoute :

SUBSYSTEM==”tty”, ATTRS{idVendor}==”067b”, ATTRS{idProduct}==”2303″, SYMLINK+=”ttyUSB11″

SUBSYSTEM==”tty”, ATTRS{idVendor}==”10c4″, ATTRS{idProduct}==”ea60″, SYMLINK+=”ttyUSB12″

ou pour la Gen5

SUBSYSTEM==”tty”, ATTRS{idVendor}==”0658″, ATTRS{idProduct}==”0200″, SYMLINK+=”ttyUSB12″

Un Ctrl+W et un Ctrl+X et on reboot

On se retrouve avec les équipements en double, ce n’est pas grave, on choisi donc /dev/ttyUSB12 dans la config du plugin ZWAVE et /dev/ttyUSB11 dans la config de Heyu (vi /root/.heyu/x10config)

Ressources :

 

2ème partie, version adaptée à HAOS et donc à Home Assistant

Mise à jour le 30/09/2023

En effet, l’explication de la 1ère partie ne fonctionne pas sur HAOS.

Il ne faut donc pas chercher à figer les ports /dev/ttyUSB0 et /dev/ttyUSB1 mais plutôt à s’adresser dans les intégrations au bon port (ou raccourci).

J’ai deux équipements qui ont des ports qui s’inversent :

  • Un module Din qui me remonte Téléinfo de Linky
  • Une clé USB/RS485 qui me permet de lire les informations du port RS485 en Modbus

Grace à la commande ls /dev/serial/by-id/
J’obtiens la liste de mes ports (on se moque sur quel ttyUSBx ils sont)

Dans mon cas ça donne :


Si par curiosité, je veux savoir les ports affectés, je peux utiliser la commande ls /dev/serial/by-id/ -l

C’est bien ttyUSB0 et ttyUSB1 qui change au gré de la marée ou du vent.

Sur le plugin Linky (lien TIC), je vais donc utiliser ce nom de port :
/dev/serial/by-id/usb-Cartelectronic_Interface_USB_1_TIC_DA1A8UN0-if00-port0

Sur le lien Modbus (configuré en yaml) ,j’utilise donc :

name: modbus_hub
type: serial
#port: /dev/ttyUSB1
port: /dev/serial/by-id/usb-1a86_USB2.0-Ser_-if00-port0

Laisser un commentaire