I recently had a need to be able to send and receive SMSes programatically, and decided the cheapest way to do it was with a USB LTE modem, and an ALDI PAYG SIM, which only costs $5, with a 1 year expiry, unlimited SMSes received, and $0.12 to send an SMS.
I settled on a cheap 4G LTE modem, and boy was I surprised. It turns out that these machines are quad core, 64 bit ARM machines with 512MB of RAM and 4GB of flash, and run Android. They are basically a low end Android phone, without a screen.
Extrowerk has documented how to install Openstick, which is a full Debian distro for that hardware. They have a pretty good summary of how to get things going, and the Hackaday thread also yields some useful insights, so I'll only document here what I had to do differently.
- My modem has this version on the PCB: fy_uz801_v3.2. To enter ADB mode, I had to visit http://192.168.100.1/usbdebug.html.
- The modem firmware supplied in OpenStick didn't work. I had to use EDL to dump the original firmware from a second stick, with
edl rf flash.bin. This gave me a dump of the EMMC flash, from which I could then extract the modem partition (the first partition) and copy the extracted firmware to the machine in /lib/firmware. The file mcfg_sw.mbn should also be copied from the closest region specific subdirectory from modem_pr/mcfg/configs/mcfg_sw/generic/.
- SMStools3 can be installed with: apt install smstools
Once installed, the following snippet in
/etc/smsd.conf will allow SMS Tools to access the modem:
device = /dev/wwan0at0
incoming = yes
baudrate = 115200
hangup_incoming_call = yes
report_device_details = yes