RaspiSMS avec une clé HUAWEI E3372
6 juillet 2020Salutations!
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