X

Fixer les ports du Huawei dans Gammu

Suite à l’article où j’expliquais l’installation et la configuration de Gammu, on m’a fait remarquer qu’en cas de reboot de Rasbian, les ports affectés à la clé 3G Huawei E169 changeaient. Le daemon ne pouvait plus fonctionner, l’erreur suivante était visible dans les logs de gammu

Thu 2018/03/29 18:18:15 gammu-smsd[12798]: Error at init connection: Erreur à l'ouverture du périphérique: il n'existe pas. (DEVICENOTEXIST[4])
Thu 2018/03/29 18:18:15 gammu-smsd[12798]: Going to 30 seconds sleep because of too many connection errors

Il fallait modifier les fichiers de configurations pour mettre à jour les champs sévices et y rebdeugber les nouveaux ports.

Après de nombreuses recherches il est possible de créer des règles udev pour les périphériques USB, afin qu’un périphérique identifié puisse au démarrage se voir attribuer toujours le même port. Chose que je n’ai pas totalement comprise et que je n’ai pas réussi à faire marcher.

J’ai trouvé une alternative qui plus simple à mettre en oeuvre.

Dans notre fichier de configuration de gammu (/etc/gammu-smsdrc) nous utilisons une notation simple pour identifier le port utilisé par le périphérique à savoir : /dev/ttyUSB0

Via la commande suivante vous pouvez obtenir plus d’information sur le périphérique qui utilise le port.

udevadm info -q all -n /dev/ttyUSB0

Voici le résultat obtenu :

P: /devices/platform/soc/20980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
S: huawei
S: serial/by-id/usb-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_HUAWEI_Mobile-if00-port0
S: serial/by-path/platform-20980000.usb-usb-0:1.5:1.0-port0
E: DEVLINKS=/dev/serial/by-path/platform-20980000.usb-usb-0:1.5:1.0-port0 /dev/serial/by-id/usb-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_HUAWEI_Mobile-if00-port0 /dev/huawei
E: DEVNAME=/dev/ttyUSB0
E: DEVPATH=/devices/platform/soc/20980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/ttyUSB0/tty/ttyUSB0
E: ID_BUS=usb
E: ID_MODEL=HUAWEI_Mobile
E: ID_MODEL_ENC=HUAWEI\x20Mobile
E: ID_MODEL_FROM_DATABASE=E169/E620/E800 HSDPA Modem
E: ID_MODEL_ID=1001
E: ID_PATH=platform-20980000.usb-usb-0:1.5:1.0
E: ID_PATH_TAG=platform-20980000_usb-usb-0_1_5_1_0
E: ID_REVISION=0000
E: ID_SERIAL=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_HUAWEI_Mobile
E: ID_TYPE=generic
E: ID_USB_DRIVER=option
E: ID_USB_INTERFACES=:ffffff:080650:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
E: ID_VENDOR_ENC=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
E: ID_VENDOR_FROM_DATABASE=Huawei Technologies Co., Ltd.
E: ID_VENDOR_ID=12d1
E: MAJOR=188
E: MINOR=0
E: SUBSYSTEM=tty
E: TAGS=:systemd:
E: USEC_INITIALIZED=10645931

Cette commande nous permet donc d’identifier le périphérique, d’obtenir l’id_vendor, le modèle et d’autres informations qui servent à construire les règles udev.

Dans notre cas nous n’allons pas construire de règles udev, nous allons modifier le fichier de configuration de gammu et éditer les lignes device.

Nous allons conserver les DEVLINKS récupérés via la commande précédente qui eux ne changent pas même après un reboot. En fait les ports /dev/ttyUSBx sont des liens symboliques, comme le montre la commande suivante.

#ls -al /dev/serial/by-path/
lrwxrwxrwx 1 root root 13 févr. 2 17:05 platform-20980000.usb-usb-0:1.5:1.0-port0 -> ../../ttyUSB0
lrwxrwxrwx 1 root root 13 févr. 2 17:05 platform-20980000.usb-usb-0:1.5:1.1-port0 -> ../../ttyUSB1
lrwxrwxrwx 1 root root 13 févr. 2 17:05 platform-20980000.usb-usb-0:1.5:1.2-port0 -> ../../ttyUSB2

J’édite donc le fichier de configuration  (/etc/gammu-smsdrc) pour remplacer les /dev/ttyUSBx  par  /dev/serial/by-path/platform-xxxxxxx.usb-usb-xxxx pour obtenir la configuration finale suivante :

# Configuration file for Gammu SMS Daemon

# Gammu library configuration, see gammurc(5)
[gammu]
#device = /dev/ttyUSB1
device = /dev/serial/by-path/platform-20980000.usb-usb-0:1.5:1.0-port0
# ......

[gammu1]
#device = /dev/ttyUSB2
device = /dev/serial/by-path/platform-20980000.usb-usb-0:1.5:1.1-port0
# ...... 

[gammu2]
#device = /dev/ttyUSB3
device = /dev/serial/by-path/platform-20980000.usb-usb-0:1.5:1.2-port0
# ......

Vous n’avez plus qu’à redémarrer votre raspberry afin que vérifier que votre installation fonctionne toujours et que vos SMS soient bien envoyés. Pour rappel vous pouvez tester l’envoi avec cette ligne de commande :

echo "Test tutoandco" | gammu-smsd-inject TEXT 06XXXXXX

 

 

https://unix.stackexchange.com/questions/68588/fixed-udev-rules-for-usb-modemshttps://raspberrypi.stackexchange.com/questions/61764/writing-udev-rules-for-3g-usb-dongle/63819

https://wiki.archlinux.org/index.php/Huawei_E1550_3G_modem


Cet article a été modifié le 27 avril 2024 16:53

Voir les commentaires (0)

  • Bonjour,
    Je suis confronté exactement au même problème. Grace à cette page, j'ai avancé un peu.

    Il me *semble* avoir trouvé plus simple, et dans mon cas, après quelques redémarrages, tout fonctionne correctement.

    Dans le fichier /etc/gammurc, au lieu de pointer vers un /dev/ttyUSB* tournant, je pointe tout simplement vers /dev/gsmmodem.
    En effet, en faisant des "diff" entre les udevadm info, j'ai remarqué que le seul TTY qui fonctionne en modem contient la ligne :
    S: gsmmodem
    Et à tout hasard, j'ai cherché dans /dev. Il se trouve qu'il y a quelque chose d'intéressant! Un lien /dev/gsmmodem vers le TTY qui porte le rôle de modem.
    D'où l'adaptation suivante :

    [gammu]
    ;device = /dev/ttyUSB2
    ;device = /dev/ttyUSB0
    device = /dev/gsmmodem
    name = Téléphone sur le port USB série ZTE_IncorporatedZTE_WCDMA_Technologies_MSM
    connection = at

    Et c'est tout...

    • Hello,
      Merci pour ton commentaire et ton retour d'expérience.

      Je testerai ta procédure car en effet le remplacement à effectuer semble plus simple ;)

  • Bonsoir,

    merci pour le tuto. J'ai une question qui peut paraître bête mais n'étant que débutant...
    Quel est le fichier de configuration à modifier ?
    Est-ce qu'il s'agit de
    /home/pi/.gammurc ?
    /etc/gammurc ?
    /etc/gammu-smsdrc ?
    Merci d'avance ! J'essaie de désespérément de fixer les ports de mon Huawei E160

    • Bonjour,

      En effet le nom du fichier à éditer n'était pas clairement indiqué dans l'article.
      Voici le fichier à éditer: /etc/gammu-smsdrc

      Bon courage :)

  • Bonjour

    j'ai lu quelque part (pardon à l'auteur de ne pas le citer) qu'il suffisait de créer dans :
    /etc/udev/rules.d
    un fichier "99-usb-serial.rules" contenant ceci (en fonction de l'id renvoyé par la commande lsusb quand votre clef est branchée):
    SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1001", SYMLINK+="t
    tyUSB_SMS"

    ( extrait de lsusb sur mon poste :
    Bus 004 Device 003: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem )

    la ligne dans 99-usb-serial.rules va créer un device "fictif" qui est en fait un lien symbolique permanent sur le /dev/ttyUSBN qui sera utilisé par l'Id 12d1:1001 (ici j'ai choisi de lu donner le nom ttyUSB_SMS)

    le contenu de ce fichier est lu au boot, mas on peut forcer la relecture avec la commande :
    udevadm control --reload

    verification que le device fictif est bien créé
    ls -alist /dev/ttyU*
    3728 0 crw-rw---- 1 root dialout 188, 0 May 12 15:29 /dev/ttyUSB0
    4136 0 lrwxrwxrwx 1 root root 7 Jan 1 2010 /dev/ttyUSB_SMS -> ttyUSB0
    2987 0 crw-rw---- 1 root dialout 188, 2 Jan 1 2010 /dev/ttyUSB2
    3729 0 crw-rw---- 1 root dialout 188, 1 Jan 1 2010 /dev/ttyUSB1

    et il ne reste plus qu'à utiliser ttyUSB_SMS comme device pour la config d'outils de dialout comme gammu

    bon c'est un peu tard comme conseil et sans doute pas si clair que ça, mais ça fonctionne bien pour moi avec une Debian Jessie 8 sur un nano-ordi du style Raspberry avec une clef USB Huawei E3531

    A+
    Serge

Articles relatifs