Fixer les ports du Huawei dans Gammu

Gammu-port

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


9 commentaires
Commenter

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *