SMS mit Raspberry Pi senden und empfangen

Version 1.00, 16.02.2022

Zielsetzung: mit dem Smartphone eine SMS verschicken, die entweder die Haustüre oder die Garage öffnet

Zu diesem Zweck soll der vorhandene Raspberry Pi 3 B eingsetzt werden. Für den SMS Empfang habe ich einen USB Surf-Stick von Huawei gekauft (Modell E3372H, ca. 40 Euro 11/2021). Töröffner bzw. Garagentoröffner sollen über ein Relais angesteuert werden (KY-019, 3 Stück knapp 6 Euro 2/2022). Die Inbetriebnahme des Huawei Surf-Sticks am Rapsberry Pi stellt eine unerwartete Herausforderung dar. Unter Windows 10 hat der USB Stick sofort funktioniert und nach ein paar Minuten konnte ich die erste SMS verschicken. Beim Raspberry Pi hat es erst nach Ausprobieren unzähliger Quellen im Internet nach zwei Tagen funktioniert.

An den Raspberry Pi können Monitor, Tastatur und Maus angeschlossen werden. Ich bevorzuge den Zugriff über einen SSH/Telnet Client und benutze dafür das portable Tool PuTTY. Source Code, den ich am PC erstelle, kopiere ich mit dem FTP Client FileZilla auf den Raspberry Pi.

Grundsätzlich sollte das Betriebssystem immer aktuell gehalt werden. Das erreicht man mit:

sudo apt-get update
sudo apt-get upgrade


Für den SMS Versand werden die Module usb-modeswitch und gammu benötigt:

sudo apt-get install usb-modeswitch usb-modeswitch-data
sudo apt-get install gammu


Der USB Surf-Stick sollte nach dem Einstecken am Raspberry Pi automatisch erkannt werden. Überpüfung mit:

lsusb

Bus 001 Device 009: ID 12d1:14db Huawei Technologies Co., Ltd. E353/E3131
Bus 001 Device 003: ID 0424:ec00 Microchip Technology, Inc. (formerly SMSC) SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Microchip Technology, Inc. (formerly SMSC) SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Weitere Details zum Surf-Stick erhält man mit:

lsusb -vv -d 12d1:14db

12d1 ist die Vendor ID des Herstellers Huawei, 14db die Produkt ID. Das Problem: viele Quellen im Internet geben den GSM Modus, der für den SMS Versand und Empfang benötigt wird, mit 14db an, richtig ist aber 155e.

Wie wird der Surf-Stick auf 155e umgestellt?
Quelle: https://mobile.twitter.com/kuenzler/status/1360924131370430465

Direkt nach dem Booten wird die Produkt ID 1f01 angezeigt (normale Memory-Stick Funktion). Kurz drauf wechselt er in den von Huawei benannten Hilink Modus mit der Produkt ID 14db (entspricht einer Ethernet-Adapter-Emulation). Damit der USB Surf-Stick für den SMS Versand genutzt werden kann, muss der Modus auf 155e umgestellt werden. Erst danach werden die /dev/ttyUSBx Einträge erstellt.

Im Verzeichnis /etc/usb_modeswitch.d die Datei 12d1:1f01 mit folgendem Inhalt anlegen.

TargetVendor=0x12d1
TargetProduct=0x155e
MessageContent="55534243123456780000000000000011063000000100010000000000000000"


sudo nano /etc/usb_modeswitch.d/12d1\:1f01

Hinweise:


In der Datei /etc/usb_modeswitch.conf diese Settings überprüfen bzw. ergänzen:

DisableSwitching=0
DisableMBIMGlobal=0
EnableLogging=1
SetStorageDelay=4
HuaweiAltModeGlobal=0
HuaweiNewMode=1
NoDriverLoading=1

Der letzte Eintrag scheint sehr wichtig, er verhindert, dass Ethernet-Treiber geladen werden. Anschließend den Huawei E3372h Stick aus- und wieder einstecken und überprüfen, ob die richtige Produkt ID angezeigt wird:

lsusb

Bus 001 Device 009: ID 12d1:155e Huawei Technologies Co., Ltd. E353/E3131
...

Für Gammu wird noch eine Konfigurationsdatei .gammurc benötigt, die an unterschiedlichen Stellen liegen kann:

/home/pi/.gammurc
/etc/gammurc/.gammurc
/root/.gammurc

Hinweis: die Konfiguration ist auch möglich mit gammu-config, ich bevorzuge den Weg über den Editor nano.

nano /home/pi/.gammurc

[gammu]
device = /dev/ttyUSB2
name = Huawei UMTS USB-Stick
connection = at
use_locking = yes
logfile = gammu.log
logformat = nothing

Anschließend überprüfen, ob der Stick korrekt erkannt wird:

sudo gammu identify

Warning: Configuration could not be parsed!
Warning: No configuration read, using builtin defaults!
Device : /dev/ttyUSB0
Manufacturer : Huawei
Model : unknown (E3372h-320)
Firmware : 11.0.1.1(H697SP1C983)
IMEI : 8623xxxxxxxxxxx
SIM IMSI : 2620xxxxxxxxxxx

Nach diesen Vorarbeiten kann über die Kommandozeile die erste SMS verschickt werden:

sudo gammu sendsms TEXT 016xxxxxxxx -text "Meine erste SMS mit dem Raspberry PI"


016xxxxxxxx durch korrekte Telefonnummer ersetzen und Text bei Bedarf ändern.