[résolu] Port USB qui change a chaque démarrage

Bonjour,
j’ai récemment installé une clés modem 3G sur un pc , et celle ci change de port usb presque à chaque redémarrage . Du coups plus de notification sms .
Sur le même Pc , j’ai une clés USB Zigate qui elle, reste où elle est .
1
Je suis obligé de supprimer et re installé la clés .
2
chose bizard alors que j’ai qu une seule cles elle est sur 2 ports a chaque fois et jamais les même …
3
.
4

ma clés se balade entre les port usb 1 2 et 3 .
Ca me le faisait aussi sur un rpi3b+ …

ma configuration

Version	core-2023.6.1
Type d'installation	Home Assistant OS
Développement	false
Supervisor	true
Docker	true
Utilisateur	root
Environnement virtuel	false
Version de Python	3.11.3
Famille du système d'exploitation	Linux
Version du système d'exploitation	6.1.29
Architecture du processeur	x86_64
Fuseau horaire	Europe/Paris
Répertoire de configuration	/config

d’après ce que j’ai compris il faudrait " Définir le nom de périphérique persistant pour l’interface"
sauf que je sais pas comment faire , jai trouvé çà , mais pour l’adapter a mon cas ?? :face_with_spiral_eyes: j’y connais rien en linux :pleading_face:
https://github.com/embyt/enocean-mqtt#define-persistant-device-name-for-enocean-interface
il y a ça aussi :
Comment créer les règles udev (rules)

mince, je suis le seul a avoir eu ce problème ? C’est dommage je suis obligé de rester avec sms-free , ma clés modem n’étant pas fiable …Tant pis … :cry:

Effectivement, la solution est très certainement d’utiliser une règle udev qui te créera un « périphérique » (virtuel) avec un nom fixe.
Pour le faire, il faut d’abord connaître les identifiants usb (vendor et product id) de ta clé.
Tu peux le trouver en faisant:
lsusb

Tu auras alors une liste de périphériques connectés sur tes ports USB de la forme suivante (c’est un exemple, cela sera différent pour ton cas):

[...]
Bus 001 Device 019: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
[...]

Repère dans la liste la ligne qui correspond à ta clé.
L’identifiant « VendorID » est ici 0bda, le ProductID ici est 2838 (les tiens seront différents).

Tu crées alors un fichier dans /etc/udev/rules.d/ qui s’appellera 99-gsm-modem.rule (99 c’est pour que cela surcharge les règles de la distribution linux) avec, comme contenu:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="XXX", ATTRS{idProduct}=="YYY", MODE:="0666",  SYMLINK+="gsm-modem"

avec (bien sûr) à la place de XXX le « VendorID » trouvé plus haut, et YYY le ProductID.

La petite commande qui-va-bien pour demander gentiment à udev de relire ses fichiers:
udevadm control --reload-rules

Tu débranches et rebranches ta clé USB, et devrait apparaître dans /dev un fichier (lien symbolique pour être exact) qui s’appelle /dev/gsm-modem
Un petit ls -al /dev/gsm-modem te permettra de t’en assurer.
Si tu débranches à nouveau et rebranche à nouveau ta clé USB, le fichier sera toujours le même (/dev/gsm-modem) mais le chemin lié (par le lien symbolique) sera différent.
Par exemple:

lrwxrwxrwx 1 root root 15 Jun 18 15:42 /dev/gsm-modem -> bus/usb/001/019

puis après débranchement et rebranchement:

lrwxrwxrwx 1 root root 15 Jun 18 15:42 /dev/gsm-modem -> bus/usb/001/020

Il te suffira ensuite de configurer ton intégration pour utiliser le chemin fixe, donc /dev/gsm-modem.

Hope this helps

1 « J'aime »

heu oui ;, ok , j’essais dés demain , là je n’ai plus le temp, …en tout cas merci infiniment de m’aider diyanei, je reviendrais pour dire si j’y suis arrivé , . mais ca n’a pas l’air courant comme problème …

Bonjour,

louche que le port change a chaque fois… c’est du physique, pas du logique…
j’ai un modem GSM sur un port USB, une clef Zigbee, et aucun problème, ils ne changent pas de port
cela te le fait aussi avec ton coordinateur ?

non, juste avec la clé modem usb, en usb j’ai un dongle bluetooth et une cles zigate qui ne me pose aucun problème …
c’est cette clé là qui fonctionnait correctement sur un RPI3b+
https://assistance.orange.fr/equipement/cles-3g-et-dominos/huawei-e160

c’est pas gagné pour un bleu comme moi ,
lsusb me donne
1
.
.
. et quand je vais dans paramètres matériel , ma clé a encore changé d’emplacement , avant elle était sur les ports ttyUSB1 et ttyUSB3 voir au début du poste, et maintenant elle est passée sur ttyUSB2 et ttyUSB3


.
.

sans y touché !!

hmmm le lsusb de busybox est beaucoup moins verbeux que celui « standard » (celui d’util-linux). Rien de grave, note bien :slight_smile:

Le constructeur de ta clé semble être Huawei, dont le VendorID est 12d1. Je dirais donc que le périphérique qui correspond est le dernier (1003 pour productID donc).
En regardant plus précisément ton device, il a un mode de fonctionnement peu commun, avec 2 fonctions USB (une fonction mass-storage comme une clé de stockage USB) et une fonction modem, ce qui va compliquer la tâche.

Essaie déjà avec (dans le fichier /etc/udev/rules.d/99-gsm-modem.rule):

SUBSYSTEMS=="usb", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1003", MODE:="0666",  SYMLINK+="gsm-modem"

Puis comme indiqué:
udevadm control --reload-rules
débranche/rebranche.

Pas sûr que cela suffise, mais on aura un statut.

Si jamais plus rien ne fonctionne suite à mes suggestions, il te suffit de supprimer le fichier /etc/udev/rules.d/99-gsm-modem.rule, et relancer udevadm control --reload-rules + débranche/rebranche pour retomber dans l’état actuel.

Là il y a un truc que je comprend pas …
j’ai fais une installation de ma clé usb avec doubledom ( que je remercie encore) , suivant laquelle il m a fait installer 2 fichiers

Usb_modeswitch.conf et usb_modeswitch.d
plein de courrage je commence a aller sous etc et là je vois que mes fichiers sont plus là !!! :face_with_spiral_eyes:
donc je les re installe , j’ai redémarrer 4 fois et ca a l’air de fonctionner de nouveaux . je refais des essais demain …

En relisant le tuto que j’avais fait , doubledom avais modifié

. je croix que mon problème venais de là !!
J attend demain pour etre sûr et je mettrais cette phrase en rouge !!

bon, fausse joie, ce matin ma clé n’est plus a sa place …
Du coup , je me lance ,
j’ai réussi a créer ce fichier , mais il se passe rien !!
j’ai redémarré débrancher / rebrancher ,
c’est bien cà ?
.
.

.
.
.
et ensuite je lance
.
.


.
.
pour l’instant ma clé est bien reconnue ( après réinstallation), j’ai encore redémarrer home assistant 3 fois , ca n’a pas bougé …

Pour ma part j’utilise plus le ID_PATH: pour repérer mon interface et je le pousse ensuite dans le fichier serial.rules pour une création fixe et stable du lien symbolique
Dans le menu matériel, tu peux donc facilement repérer ton appareil

cela donne une ligne du genre (juste un exemple)

cat  /etc/udev/rules.d/99-usb-serial.rules

SUBSYSTEM=="tty",ENV{ID_PATH}=="platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.3:1.0",SYMLINK+="tty-pzem017"

C’est effectivement possible, cela contraint juste à brancher systématiquement une même clé à un port spécifique physique de la machine, et aussi ne permet pas de brancher un autre type de clé (cela n’aurait pas vraiment de sens d’appeler une clé wifi par /dev/gsm-modem par exemple).
Mais bon, si cela correspond au besoin, c’est cool !
La solution avec le productid et le vendorid a l’avantage de « suivre » la clé quelque soit le port.

1 « J'aime »

Cool si cela résout ton problème.
Bonne journée

Je me sers de cette façon de faire surtout lorsqu’il y a 2 câbles branchés en USB avec le même chipset (donc même id et même vendeur)
Seule solution pour en distinguer l’un de l’autre

bonjour, et merci également jean-luc1203 , mis je comprend pas bien

tu veux dire que 2 appareils diffèrent branchés en usb peuvent avoir le même id et vendeur ?
.
pour mon problème rebelote … mon port usb c’est encore fait la bel !! et sans redemarré !! à 23h00 j’était au dodo !
.
.
1
.
.
c’est resté de 12h25 à 23h05 … :rage: :rage:
si je pouvais l’attacher ou le coller pour qu’il bouge plus ! :unamused:
.

.
Perso je veux juste que ca fonctionne et c’est sûr que je vais pas changer de port une fois que ce sera bon .
Excuse moi , Diyanei, mais tu m’a pas répondu si ce que j’ai fais était bon ! Je suis complètement ignare en informatique et surtout en linux !! je suis ce que vous me dite a l’aveugle !

c’était bien une commande a lancer sous Haos ? avant de redémarrer ? et qu’est ce qu’il devrait se passer ?
Je viens de redémarrer , haos reste sur l initialisation de sms notification 2 minutes et le met en echec …
1 .
.
.
retour a la case depart
.
.
2

Dit, LeLapinFou, pourrais tu me donner les caractéristique de ton modem , j’ai cherché et ceux que je trouve sont comme des « dominos » ils font des point accés wifi via une connection gsm
genre ca
domino orange par exemple
au pire je change ma clé !!

Alors pour être clair, 2 câbles identiques, même marque même type vont présenter à Linux le même id et vendeur donc impossible de les identifier.
Maintenant je fais ceci sur un full Linux, j’ai cru comprendre que HA Linux est un small Linux, donc toutes les commandes ne sont pas accessibles tel que.
Je ne suis pas en mesure à l’instant de tester.
Mais la commande udevadm s’effectue correctement ?
Tu devrais pouvoir vérifier en utilisant la commande
ls -l /dev/tty*
Là tu dois trouver tes interfaces et surtout le nom du lien symbolique que le fichier rules a décrit.
Sinon si pas de device avec le lien symbolique pas de salut.
Tu nous diras.
Ce soir je pourrais essayer avec une de mes machines. Bonne chance

Edit : j’avais fait un tuto l’année passée sur ce sujet. 2 câbles série de marque identique ! comment les reconnaître sous Linux ?

2 câble identique … je n’ai qu’une clé usb ??? désolé je comprend pas …pour d’autres appareils, oui , genre cles data usb … tu veux dire?
pour ce qui est des commandes oui HAOS est trés bizard par raport a linux, il y a des commande qui fonctionnent et pas d’autres …

 _    _                                         _     _              _
| |  | |                          /\           (_)   | |            | |
| |__| | ___  _ __ ___   ___     /  \   ___ ___ _ ___| |_ __ _ _ __ | |_
|  __  |/ _ \| '_ ` _ \ / _ \   / /\ \ / __/ __| / __| __/ _` | '_ \| __|
| |  | | (_) | | | | | |  __/  / ____ \\__ \__ \ \__ \ || (_| | | | | |_
|_|  |_|\___/|_| |_| |_|\___| /_/    \_\___/___/_|___/\__\__,_|_| |_|\__|


Our command line:
$ ha help
➜  /config cd ..
➜  / udevadm
zsh: command not found: udevadm


➜  / ls -l /dev/tty*
crw-rw-rw- 1 root tty   5,  0 Jun 20 11:30 /dev/tty
crw--w---- 1 root tty   4,  0 Jun 20 11:30 /dev/tty0
crw--w---- 1 root tty   4,  1 Jun 20 11:30 /dev/tty1
crw--w---- 1 root tty   4, 10 Jun 20 11:30 /dev/tty10
crw--w---- 1 root tty   4, 11 Jun 20 11:30 /dev/tty11
crw--w---- 1 root tty   4, 12 Jun 20 11:30 /dev/tty12
crw--w---- 1 root tty   4, 13 Jun 20 11:30 /dev/tty13
crw--w---- 1 root tty   4, 14 Jun 20 11:30 /dev/tty14
crw--w---- 1 root tty   4, 15 Jun 20 11:30 /dev/tty15
crw--w---- 1 root tty   4, 16 Jun 20 11:30 /dev/tty16
crw--w---- 1 root tty   4, 17 Jun 20 11:30 /dev/tty17
crw--w---- 1 root tty   4, 18 Jun 20 11:30 /dev/tty18
crw--w---- 1 root tty   4, 19 Jun 20 11:30 /dev/tty19
crw--w---- 1 root tty   4,  2 Jun 20 11:30 /dev/tty2
crw--w---- 1 root tty   4, 20 Jun 20 11:30 /dev/tty20
crw--w---- 1 root tty   4, 21 Jun 20 11:30 /dev/tty21
crw--w---- 1 root tty   4, 22 Jun 20 11:30 /dev/tty22
crw--w---- 1 root tty   4, 23 Jun 20 11:30 /dev/tty23
crw--w---- 1 root tty   4, 24 Jun 20 11:30 /dev/tty24
crw--w---- 1 root tty   4, 25 Jun 20 11:30 /dev/tty25
crw--w---- 1 root tty   4, 26 Jun 20 11:30 /dev/tty26
crw--w---- 1 root tty   4, 27 Jun 20 11:30 /dev/tty27
crw--w---- 1 root tty   4, 28 Jun 20 11:30 /dev/tty28
crw--w---- 1 root tty   4, 29 Jun 20 11:30 /dev/tty29
crw--w---- 1 root tty   4,  3 Jun 20 11:30 /dev/tty3
crw--w---- 1 root tty   4, 30 Jun 20 11:30 /dev/tty30
crw--w---- 1 root tty   4, 31 Jun 20 11:30 /dev/tty31
crw--w---- 1 root tty   4, 32 Jun 20 11:30 /dev/tty32
crw--w---- 1 root tty   4, 33 Jun 20 11:30 /dev/tty33
crw--w---- 1 root tty   4, 34 Jun 20 11:30 /dev/tty34
crw--w---- 1 root tty   4, 35 Jun 20 11:30 /dev/tty35
crw--w---- 1 root tty   4, 36 Jun 20 11:30 /dev/tty36
crw--w---- 1 root tty   4, 37 Jun 20 11:30 /dev/tty37
crw--w---- 1 root tty   4, 38 Jun 20 11:30 /dev/tty38
crw--w---- 1 root tty   4, 39 Jun 20 11:30 /dev/tty39
crw--w---- 1 root tty   4,  4 Jun 20 11:30 /dev/tty4
crw--w---- 1 root tty   4, 40 Jun 20 11:30 /dev/tty40
crw--w---- 1 root tty   4, 41 Jun 20 11:30 /dev/tty41
crw--w---- 1 root tty   4, 42 Jun 20 11:30 /dev/tty42
crw--w---- 1 root tty   4, 43 Jun 20 11:30 /dev/tty43
crw--w---- 1 root tty   4, 44 Jun 20 11:30 /dev/tty44
crw--w---- 1 root tty   4, 45 Jun 20 11:30 /dev/tty45
crw--w---- 1 root tty   4, 46 Jun 20 11:30 /dev/tty46
crw--w---- 1 root tty   4, 47 Jun 20 11:30 /dev/tty47
crw--w---- 1 root tty   4, 48 Jun 20 11:30 /dev/tty48
crw--w---- 1 root tty   4, 49 Jun 20 11:30 /dev/tty49
crw--w---- 1 root tty   4,  5 Jun 20 11:30 /dev/tty5
crw--w---- 1 root tty   4, 50 Jun 20 11:30 /dev/tty50
crw--w---- 1 root tty   4, 51 Jun 20 11:30 /dev/tty51
crw--w---- 1 root tty   4, 52 Jun 20 11:30 /dev/tty52
crw--w---- 1 root tty   4, 53 Jun 20 11:30 /dev/tty53
crw--w---- 1 root tty   4, 54 Jun 20 11:30 /dev/tty54
crw--w---- 1 root tty   4, 55 Jun 20 11:30 /dev/tty55
crw--w---- 1 root tty   4, 56 Jun 20 11:30 /dev/tty56
crw--w---- 1 root tty   4, 57 Jun 20 11:30 /dev/tty57
crw--w---- 1 root tty   4, 58 Jun 20 11:30 /dev/tty58
crw--w---- 1 root tty   4, 59 Jun 20 11:30 /dev/tty59
crw--w---- 1 root tty   4,  6 Jun 20 11:30 /dev/tty6
crw--w---- 1 root tty   4, 60 Jun 20 11:30 /dev/tty60
crw--w---- 1 root tty   4, 61 Jun 20 11:30 /dev/tty61
crw--w---- 1 root tty   4, 62 Jun 20 11:30 /dev/tty62
crw--w---- 1 root tty   4, 63 Jun 20 11:30 /dev/tty63
crw--w---- 1 root tty   4,  7 Jun 20 11:30 /dev/tty7
crw--w---- 1 root tty   4,  8 Jun 20 11:30 /dev/tty8
crw--w---- 1 root tty   4,  9 Jun 20 11:30 /dev/tty9
crw-rw---- 1 root  18   4, 64 Jun 20 11:30 /dev/ttyS0
crw-rw---- 1 root  18   4, 65 Jun 20 11:30 /dev/ttyS1
crw-rw---- 1 root  18   4, 66 Jun 20 11:30 /dev/ttyS2
crw-rw---- 1 root  18   4, 67 Jun 20 11:30 /dev/ttyS3
crw-rw---- 1 root  18 188,  0 Jun 20 11:54 /dev/ttyUSB0
crw-rw---- 1 root  18 188,  1 Jun 20 11:39 /dev/ttyUSB1
crw-rw---- 1 root  18 188,  2 Jun 20 11:30 /dev/ttyUSB2
➜  / 

Oui si tu as par exemple 2 câbles pour une liaison série rs232. C’est pas ton cas.
Par contre vu que la commande udevadm ne fonctionne visiblement pas, tu n’as pas manifestement de lien symbolique qui pointe sur ton appareil usb. Visiblement il y a 3 choses branchées sur ta machine.
Donc il faut trouver comment sous HA définir un port, appelons le tty-modem qui pointera de manière dynamique sur le port usb ou se trouve ton modem /dev/ttyUSBx

Curieux de savoir comment faire sans ces règles définies dans le fichier rules ?

Désolé de ne pouvoir être plus utile pour le moment. Mais clairement ça m’intéresse aussi de savoir comment faire cette fonction dans cette version de Linux lite.