Born to be wired

SMS automatisé – Extra Bonus Round Dash EX Plus Alpha

 28 décembre 2015  Domotique  Aucun commentaire

Contre toute attente, ce sujet dont je pensais avoir épuisé toutes les anecdotes techniques revient sur le devant de la scène. Pourquoi donc ? Car il y a peu de temps, après une longue période de fonctionnement sans faille, j’ai constaté que mon système d’envoi de SMS à base de modem GSM Wavecom n’était plus capable de communiquer. Impossible de finaliser le moindre envoi… Pourquoi ? Comment ? À quelques semaines de la Saint Sylvestre, je m’en serais voulu de ne plus être capable de spammer la bonne année à tous mes contacts. Retour arrière, à contrecœur, sur une solution qui donnait entière satisfaction.

Disons le immédiatement, je n’ai pas de certitude absolue quant à la cause du problème. Lors de la découverte, après les investigations de circonstance, j’ai noté les éléments factuels suivants :

  • Les SMS à envoyer sont bien traités par gnokii, mais celui-ci retourne un code d’erreur 8. Description de ce code d’erreur : « Unknown error – well better than nothing!! » OK, nous voila bien avancés.
  • Un redémarrage de gnokii n’améliore pas la situation, pourtant aucune autre erreur de fonctionnement n’est signalée.
  • Une coupure et reprise d’alimentation sur le modem GSM ne donne pas non plus d’amélioration.
  • Pire que ça, lorsque je teste le modem GSM par commandes de bas niveau (les fameuses commandes AT), toutes répondent positivement, à l’exception de toutes les variantes des commandes qui ordonnent l’envoi du SMS.
  • Est-il possible que la carte SIM ne dispose plus de crédit, même si mon opérateur ne m’a pas signalé de solde nul ou négatif ? J’essaie la carte SIM dans un autre téléphone, l’envoi de SMS fonctionne sans encombre.
  • À l’inverse, en testant les cartes SIM de 2 autres opérateurs dans le modem Wavecom, celui-ci bute systématiquement sur l’étape de l’envoi.

Les causes possibles

Puis je me rappelle d’un détail décrit dans cet article, à savoir le numéro IMEI du Wavecom, 012345678901234. Un numéro par défaut si l’on en croit ce que j’ai pu trouver à ce sujet sur le net, modifiable une seule fois par l’utilisateur. Ça semble plausible, le numéro IMEI étant supposé être unique sur chaque terminal, les opérateurs auraient bloqué ce numéro générique de leurs réseaux respectifs. En inscrivant irréversiblement le n° IMEI d’un vieux Nokia 3310 en ma possession dans le Wavecom grâce aux commandes AT adéquates, tout rentrera peut-être dans l’ordre.

C’était bien essayé. Les commandes AT visant à modifier son IMEI, pourtant décrites de manière explicite dans les documentations trouvables sur le net, sont tout bonnement refusées par le modem GSM. Impossible au final de lui configurer un numéro IMEI valide.

Pourquoi tant de haine ? Il est possible que le modèle en ma possession soit une vulgaire contrefaçon chinoise, supportant le minimum de commandes…

Quoi qu’il en soit, je me rends à l’évidence : mon modem Wavecom convient désormais exclusivement aux usages suivants :

  • Presse-papiers
  • Puzzle 3D
  • Relique de musée

La solution de remplacement

À l’époque où j’avais acheté ce modem, c’est à dire quelques années en arrière, les clés USB 3G n’étaient pas excessivement répandues en France. D’ailleurs, à cette époque, la 3G elle-même n’était pas excessivement répandue en France. D’ailleurs, aujourd’hui, il y a encore des jours où on se demande si la 3G est excessivement répandue sur le territoire (troll detected).

La couverture radio est une chose, la couverture marketing en est une autre. Et le moins que l’on puisse dire de cette dernière, c’est qu’elle est bien déployée. Les clés USB 3G sont aujourd’hui légion. C’est sur ce type d’appareil que mon attention s’est retournée au titre de remplacement de mon modem GSM presse-papiers : en cherchant un peu, le Huawei E220 a montré de bons résultats pour une utilisation sous Linux, c’est donc vers cet appareil que je me suis tourné.

Huawei E220 - replaçant de mon Wavecom et nouveau jouet

Huawei E220 – replaçant de mon Wavecom et nouveau jouet

La mise en place

Les indications autour de ce modem étant très facilement trouvables sur le net, je ne m’étendrai pas de manière détaillée sur la méthodologie nécessaire à sa mise en place, d’autant plus que du fait de mes travaux précédent sur le Wavecom, une bonne partie de l’infrastructure nécessaire est déjà en place sur ma machine. Je ne m’attarderai que sur certains points, qu’ils soient des prérequis indispensables ou des éléments facilitateurs optionnels, que j’ai eu plus de difficultés à trouver.

Tout d’abord, le disque amovible. Lorsqu’il est connecté, et moyennant la présence des modules adéquats sur le système, le Huawei E220 est détecté en tant que E230/E270/E870, et présente au système un disque amovible en plus de son interface série. Le disque amovible semble avoir posé des problèmes à certains utilisateurs pour l’utilisation du modem, et présente de toutes manière très peu d’intérêt sous Linux. Heureusement, celui-ci peut être désactivé en adressant des commandes AT spécifiques au Huawei. Si vous faites cela, retenez qu’il faut couper l’alimentation de l’appareil pour que les modifications soient prises en compte, et qu’à l’issue de la reconnexion, il ne sera plus reconnu en tant que E230/E270/E870, mais en tant que E169/E620/E800. À part cela, rien d’impactant ce qui me concerne.

Mais avant tout cela, l’appareil doit être reconnu par le système. Pour cela le noyau doit inclure les options suivantes :

Device Drivers --->
-----USB Support --->
----------USB Serial Converter support --->
--------------- CONFIG_PPP
--------------- CONFIG_PPP_FILTER
--------------- CONFIG_PPP_ASYNC
--------------- CONFIG_USB_SERIAL
--------------- CONFIG_USB_SERIAL_GENERIC
--------------- CONFIG_USB_SERIAL_OPTION

Une recompilation plus tard et une fois le module chargé, le Huawei est reconnu en tant que E230/E270/E870, et accessible chez moi via /dev/ttyUSB0. L’étape suivante consiste à désactiver le disque amovible. Cela est possible grâce à l’envoi des commandes AT suivantes sur la liaison série offerte par l’USB :

# picocom /dev/ttyUSB0 -b 115200 -l
AT
OK
AT^U2DIAG=0
OK
AT+CLCK="SC",0,"0000"
OK

La première commande désactive le disque amovible, j’en profite pour glisser une seconde commande qui désactive la nécessité de rentrer un code PIN sur la SIM à la mise sous tension de l’appareil. Pour sortir de picocom, exécuter la séquence CTRL+a CTRL+x. Déconnectez la clé et reconnectez à nouveau, il devrait maintenant être reconnu en tant que E169/E620/E800.

L’accès en tant que /dev/ttyUSB0 c’est bien gentil, mais je ne serais pas contre nommer l’appareil de manière plus explicite. L’utilisation de /dev/huawei me conviendrait bien. Cela est possible en ajoutant le contenu suivant au fichier /etc/udev/rules.d/10-local.rules :

# Huawei E220 modem
# lsusb (before): ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem / E230/E270/E870 HSDPA/HSUPA Modem
# lsusb (after) : ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem
SUBSYSTEMS=="usb", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1003", RUN+="/lib/udev/usb_modeswitch --vendor 0x12d1 --product 0x1003 --type option-zerocd"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1003*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="00", ATTRS{bInterfaceProtocol}=="ff", SYMLINK="huawei"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1001", RUN+="/lib/udev/usb_modeswitch --vendor 0x12d1 --product 0x1001 --type option-zerocd"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="00", ATTRS{bInterfaceProtocol}=="ff", SYMLINK="huawei"

La relecture des règles de udev est lancée par la commande :

# udevadm control --reload-rules

Déconnecter et reconnecter une nouvelle fois l’appareil pour vérifier l’utilisation du nouveau nommage.

Enfin, ne pas oublier de reporter dans le fichier de configuration de gnokii les valeurs propres au Huawei E220, dans mon cas un périphérique (re)nommé /dev/huawei et un baudrate de 115200.

Un redémarrage de gnokii, suivi par la commande d’envoi d’un SMS de test, fonctionne à merveille. Problème résolu, en espérant que cela soit définitif.

Notes complémentaires

  • La fonction la plus utilisée en général sur une clé 3G, c’est justement un accès internet mobile, pas un envoi de SMS. J’ai testé cette fonction sur mon Huawei E220, par différentes méthodes, l’une utilisant wvdial et l’autre impliquant la déclaration d’une nouvelle interface ppp utilisant un chatscript. Ça fonctionne, mais je n’en ai pas l’utilité, je ne détaillerai volontairement pas la méthode. Mais si ça intéresse quelqu’un, internet est rempli d’informations à ce sujet, de ce fait je n’ai pas eu à tâtonner trop longtemps pour arriver à activer mon accès 3G sous Linux.
  • L’une des raisons pour lesquelles je me suis orienté sur une clé 3G de marque connue (cheap certes, mais connue), c’est l’appréhension que j’avais de me retrouver à nouveau avec un autre appareil possédant un numéro IMEI tordu/générique/improbable/blacklisté. Là où j’ai été rassuré, c’est quand j’ai constaté que l’IMEI retourné par l’appareil ressemble à un véritable IMEI. Là où je reste dubitatif, c’est quand j’ai remarqué que l’IMEI retourné par l’appareil ne correspond pas à l’IMEI inscrit sur l’étiquette collée sur son boitier. Nouvelle contrefaçon ? Problème qualité ? L’avenir me le dira. J’espère quand même pouvoir tenir quelques années sans plus toucher à rien, eu égard au coût de la clé 3G.

Conclusion

Pas de surprise avec ce Huawei E220 qui s’est révélé être un bon périphérique de remplacement pour mon Wavecom devenu indésirable sur le réseau téléphonique français. Comme dirait Karl Zero : Méfiez-vous des imitations.

Rendons à César ce qui lui appartient, j’ai trouvé 90% de l’aide dont j’avais besoin dans les article suivants [1] et [2].

Mes sources étant citées, je peux clore le sujet et vous dire sereinement : c’est tout pour aujourd’hui. Dans mon prochain article, comme dirait la Chose, ça va chauffer !!!

 Tags: , , ,

Laisser un commentaire