RaspiSMS avec une clé HUAWEI E3372

RaspiSMS avec une clé HUAWEI E3372

6 juillet 2020 0 Par Jérôme Ferrari

Salutations!

Aujourd’hui un petit update de mon ancien post (https://miniprojets.net/index.php/2020/04/02/raspisms-ou-comment-faire-un-serveur-sms-pour-son-installation-domotique/) avec une clé Huawei E3372.

Le problème quand j’ai acheté cette clé pour une autre expérience, c’est qu’elle ne fonctionne pas avec Gammu car en fonction du firmware installé, il faut utiliser une API pour faire de l’envoi de SMS comme mentionnée dans l’article de Stephen Monro https://stephenmonro.wordpress.com/2019/02/13/getting-sms-messages-from-the-huawei-e3372-lte-modem/ ou bien d’utiliser les requêtes AT directement comme le fait Gammu.

Partie 1: Utilisation de l’API avec les firmwares récents

Ce paragraphe est juste à titre de mémoire au cas où j’en aurai besoin plutard.

Dans un premier temps, il faut juste brancher la clé sur un port USB de la raspberry pi puis de créer un script avec la commande suivante:

sudo send_sms.sh

il faut coller le code suivant:

#!/bin/bash

DATA=`curl http://192.168.8.1/api/webserver/SesTokInfo`
SESSION_ID=`echo "$DATA" | grep "SessionID=" | cut -b 10-147`
TOKEN=`echo "$DATA" | grep "TokInfo" | cut -b 10-41`

curl http://192.168.8.1/api/sms/send-sms -H "Cookie: $SESSION_ID" -H "__RequestVerificationToken: $TOKEN" --data "<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>$1</Phone></Phones><Sca></Sca><Content>$2</Content><Length>-1</Length><Reserved>1</Reserved><Date>-1</Date></request>"

Faite un Ctrl+x, puis Y

maintenant rendez executable le script avec la commande

sudo chmod +x send_sms.sh

Maintenant, vous pouvez tester l’envoi de SMS avec la commande suivante:

sudo ./send_sms.sh +1234567890 "Hello world!"

Vous devriez recevoir votre sms quelques secondes après.

Partie 2: Modification de la clé pour fonctionner avec RaspiSMS et Gammu

Le travail présenté ici est basé sur cette page: https://markus.relix.de/index.php/Set_Huawei_E3372h_from_hilink_to_stick_mode

La méthode utilisée pour les firmwares récents est dite méthode de l’aiguille car il faut que l’on mette en physiquement le clé en mode flashage en faisant un pont entre la masse et une des pins rondes de la clé.

Dans un premier temps on télécharge tout ce que l’on a besoin pour faire l’opération.

Pour cela sur votre raspberry, on utilise les 2 commandes suivantes:

git clone https://github.com/forth32/balongflash.git
git clone https://github.com/forth32/balong-usbdload.git

On télécharge aussi le firmware dont on aura besoin, il s’agit pour ma part de la version E3372h-153 21.180.01.00.00 general qui se trouve ici https://www.lteforum.at/mobilfunk/firmware-versionen-hi-non-hilink-e3372h-inkl-mod.2691/

Si jamais vous ne le trouvez pas, n’hésitez pas à m’envoyer un mail pour que je vous le fournisse.

On met le package dans son dossier de travail puis on dépackage celle-ci en faisant les commandes suivantes:

sudo apt-get install p7zip
sudo p7zip -d Huawei_E3372h-153_21.180.01.00.00_Firmware_general_3Ginfo.ru.7z

maintenant, nous allons compilers le logiciels nécessaires avec les commandes suivantes:

cd balongflash/
make

on doit avoir la sortie suivante:

gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=290  -D_7ZIP_ST -lz    -c -o balo                                   ng_flash.o balong_flash.c
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=290  -D_7ZIP_ST -lz    -c -o hdlc                                   io_linux.o hdlcio_linux.c
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=290  -D_7ZIP_ST -lz    -c -o ptab                                   le.o ptable.c
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=290  -D_7ZIP_ST -lz    -c -o flas                                   her.o flasher.c
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=290  -D_7ZIP_ST -lz    -c -o util                                   .o util.c
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=290  -D_7ZIP_ST -lz    -c -o sign                                   ver.o signver.c
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=290  -D_7ZIP_ST -lz    -c -o lzma                                   /Alloc.o lzma/Alloc.c
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=290  -D_7ZIP_ST -lz    -c -o lzma                                   /LzmaDec.o lzma/LzmaDec.c
lzma/LzmaDec.c: In function ‘lzma_decode’:
lzma/LzmaDec.c:1113:3: warning: ‘memcpy’ writing 8 bytes into a region of size 4                                    overflows the destination [-Wstringop-overflow=]
   memcpy(&outsize,inbuf+5,8);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~
Current buid: 290

On fait maintenant fais l’autre dossier

cd
cd balong-usbdload/
make

on doit avoir la sortie suivante:

gcc -O2 -g -Wno-unused-result   -c -o balong-usbdload.o balong-usbdload.c
gcc -O2 -g -Wno-unused-result   -c -o parts.o parts.c
gcc -O2 -g -Wno-unused-result   -c -o patcher.o patcher.c
gcc -O2 -g -Wno-unused-result   -c -o ptable-injector.o ptable-injector.c
gcc -O2 -g -Wno-unused-result   -c -o loader-patch.o loader-patch.c
gcc -O2 -g -Wno-unused-result   -c -o ptable-list.o ptable-list.c

Un fois cela fait, nous pouvons passez à la partie matériel.

Pour cela, il faut démonter la clé physiquement:

et on va devoir brancher la masse avec cette pin.

Pour cela, j’ai utilisé une pince crocodile avec un fil afin de faire l’affaire

Maintenant que vous avez fait la connexion, il faut brancher la clé sur la raspberry pi qui est déjà démarrée.

Une fois la clé branchée attendez 5 secondes et enlevé le fil et la pince crocodile.

Normalement, si vous faite la commande:

ls /dev

vous devriez voir apparaitre ttyUSB0 dans la liste.

Maintenant nous pouvons la préparer avec la commande suivante:

./balong-usbdload/balong-usbdload -p /dev/ttyUSB0 balong-usbdload/usblsafe-3372h.bin

ce qui donne normalement:

 Аварийный USB-загрузчик Balong-чипсета, версия 2.20, (c) forth32, 2015

 * Удалена процедура flash_eraseall по смещению 00001258

 Компонент    Адрес    Размер   %загрузки
------------------------------------------
 raminit    00000000     3412   100%
 usbboot    57700000  5922289   100%

 Загрузка окончена

Puis on utilise la commande suivante pour la flasher

Si jamais cela ne fonctionne pas testé avec ttyUSB0 ou ttyUSB1 et ne pas hésiter à refaire l’opération plusieurs fois

./balongflash/balong_flash -p /dev/ttyUSB2 E3372h-153_UPDATE_21.180.01.00.00.BIN

Qui nous donne le résultat suivant:


 Программа для прошивки устройств на Balong-чипсете, V3.0.290, (c) forth32, 2015, GNU GPLv3
--------------------------------------------------------------------------------------------------

 Код файла прошивки: 9 (ONLY_FW)

 Цифровая подпись: 2958 байт
 Хеш открытого ключа: 778A8D175E602B7B779D9E05C330B5279B0661BF2EED99A20445B366D63DD697
 Версия прошивки: 21.180.01.00.00
 Платформа:       BV7R11HS
 Дата сборки:     2014.09.30 07:17:54
 Заголовок: версия 1, код соответствия: HWEW11.1
 Режим цифровой подписи: ONLY_FW (2958 байт)
 Версия протокола: 7200B--SKCBADZM
 Идентификатор устройства: HUAWEI BV7R11HS
----------------------------------------------------

##  ---- Имя раздела ---- записано
00  Fastboot              100%
01  M3Boot_R11            100%
02  M3Boot-ptable         100%
03  Kernel_R11            100%
04  VxWorks_R11           100%
05  M3Image_R11           100%
06  DSP_R11               100%
07  Nvdload_R11           100%
08  System                100%
09  APP                   100%

 Перезагрузка модема...

Nous pouvons voir si tout est ok d’abord on éteint la raspberry, puis on débranche la clé. On rallume la raspberry et on rebranche la clé, on fait ensuite la commande suivante:

ls /dev

et l’on voit apparaitre ttyUSB0 et ttyUSB1.

Voilà la clé est flashée correctement!

Maintenant nous passons à la partie d’adaptation pour RaspiSMS

On effectue la commande suivante

sudo nano /etc/usb_modeswitch.d/12d1:157d

et on colle la texte suivant:

TargetVendor=0x12d1

TargetProduct=0x14dc

MessageContent="55534243123456780000000000000011062000000100000000000000000000"

Voila vous pouvez maintenant reprendre le tutoriel de mon article précédent.

Bonne continuation,

Jérôme Ferrari