J'utilise un modem USB Huawei GMS / UMTS avec Gnokii et Gammu. Le modem était dans le port inférieur sur Pi. Avec dmesg | grep tty
cela, il apparaîtrait sur /dev/ttyUSB0
et /dev/ttyUSB1
. (2 périphériques USB sur 1 bâton est normal, dans ce cas).
J'ai configuré Gnokii et Gammu en conséquence, mais sur ttyUSB0 je ne pouvais envoyer que des messages. L'envoi et la réception ne fonctionneraient que sur ttyUSB1.
J'ai ensuite déplacé la clé sur la prise USB supérieure (car sinon ma clé WiFi ne tiendrait pas à côté). Tout fonctionnait bien. Aussi après plusieurs redémarrages, froid et chaud.
J'ai ensuite dû étendre le système de fichiers (ouais, je sais que j'aurais dû le faire plus tôt). Après cela, le modem était sur ttyUSB0 et ttyUSB * 2 *. Envoyer / recevoir travaillé sur ce dernier. Cela m'a pris un peu de temps pour le découvrir.
Mise à jour: 2 jours plus tard, ttyUSB2 a disparu. Le modem de travail se manifeste maintenant sur ttyUSB0 (était ttyUSB1).
Une idée de pourquoi c'est arrivé? Des liens vers des documents Debian ou Linux pertinents, peut-être? Je serais très obligé ..
la source
/sys/class/tty/
comme guide.Réponses:
La documentation de Gammu suggère (mais n'entre pas dans les détails) une solution de contournement,
Edit: Atmel a une note d'application qui décrit bien le processus d'énumération.
L'énumération change car elle se produit dans une conversation entre l'hôte, le concentrateur et le périphérique, et le délai de réponse de chacun d'eux peut varier, même si la configuration est identique d'un redémarrage à l'autre.
Mise à jour: La solution n'est pas facile à trouver en ligne et dispersée en morceaux partout. J'ai donc tout rassemblé dans un seul document . Voilà à quoi cela se résume.
1. découvrez ce qui est sur ttyUSB:
2. répertoriez tous les attributs de l'appareil et choisissez un ensemble d'identificateurs uniques, par exemple idVendor + idProduct (et si nécessaire SerialNumber si vous avez plusieurs appareils avec les mêmes idVendor et idProduct).
3. Créez un fichier
/etc/udev/rules.d/99-usb-serial.rules
avec quelque chose comme cette ligne:(en supposant que vous n'y ayez pas besoin d'un numéro de série, et bien sûr avec les numéros pour idVendor et idProduct que vous avez trouvés à l'étape 2.
4. Chargez la nouvelle règle:
5. Vérifiez ce qui s'est passé:
montrera à quel numéro ttyUSB le lien symbolique est allé. Si c'est le cas
/dev/ttyUSB1
, vérifiez à qui appartient cette propriété et à quel groupe elle appartient:Alors juste pour le plaisir:
la source
Vous avez partiellement répondu à votre propre question, mais il existe une autre façon de le faire, en particulier pour les périphériques série: les
/dev/serial/*
chemins. J'ai une interface Prolific USB → RS232 sur mon Raspberry Pi qui apparaît presque toujours comme/dev/ttyUSB0
. Mais il apparaît également sur le système comme:/dev/serial/by-path/platform-bcm2708_usb-usb-0:1.3:1.0-port0
/dev/serial/by-id/usb-067b_2303-if00-port0
L'utilisation du
by-id
lien doit rester la même, sauf si j'ajoute un autre convertisseur basé sur PL2303.la source