root@openstick:~#

        

OpenStick

How an $8 4G modem stick became a Linux server

A tale of IRQ conflicts, soft-bricks, and questionable life choices

scroll down

Quickstart

1
Check
MSM8916-based device?
(MF800B-E LCD, UZ801, UFI001B, ...)
2
Flash
GitHub Releases
edl w [partitions]
3
Connect
ssh user@192.168.200.1 (USB)
192.168.100.1 (WiFi)
4
Internet
Enable LTE:
mmcli -m 0 --simple-connect="apn=<your_apn>"
e.g. o2: internet • T-Mobile: internet.telekom • Vodafone: web.vodafone.de
5
Recovery
Brick? → EDL 9008
See 0x07 ↓
0x00

The Patient

    ____________________
   /                    \
  |  MF800B-E LCD        |
  |  ==================  |
  |  | 128x128 LCD  |    |
  |  |   GC9107     |    |
  |  |______________|    |
  |                      |
  |  [SIM]               |
  |                      |
  |  MSM8916   PM8916    |
  |  Cortex-A53  PMIC    |
  |  381MB RAM           |
  |  3.6GB eMMC          |
  |                      |
  |  [USB-C connector]   |
   \____________________/
🧠
SoC
Qualcomm MSM8916
ARM Cortex-A53, because who needs more than 4 cores at 1.2GHz?
💾
RAM
381 MB
Chrome would like to have a word with you
💽
Storage
3.6 GB eMMC
22 partitions in 3.6 gigs. It's cozy.
📶
Modem
LTE Cat 4
Bands 1,3,5,7,8,20,38,40,41 — it speaks fluent 4G
🔋
Battery
2100 mAh
Optional. Like documentation.
💻
Display
128x128 SPI
4K? We have 16K pixels. Total.
"It's not about the specs you have. It's about the specs you hack around." — Every embedded developer, probably
0x01

Compatible Devices & Resources

The OpenStick project — started by Handsome Yingyang — turns cheap 4G USB modems with Qualcomm MSM8916 SoCs into Linux single-board computers. Quad-Core ARM Cortex-A53 @ 1.2 GHz with integrated LTE modem, all for pocket change.

💰 $12–$15 on AliExpress & Amazon
Model Type MSM8916 Boot LTE Display Battery Notes
MF800B-E LCD MiFi Hotspot Star of this page. FuYi MF800 family, 512MB RAM
UFI001B/C USB Stick Original OpenStick target. THWC manufacturer
UZ801 (v3) USB Stick Most documented. Zhihe series, 384MB RAM
UF896 USB Router Compact 4G router, 384MB RAM
SP970 Pocket WiFi Multiple HW revisions (V3, V10)
Alcatel IK41VE USB Modem Uses MDM9207 (Qualcomm IoT modem). Not MSM8916!
ZTE MF927U MiFi Hotspot Uses ZTE ZX297520V3 (proprietary SoC). Not Qualcomm!
ZTE MF823 USB Modem Uses MDM9215 (Qualcomm modem-only). Not MSM8916!
Huawei E3372 USB Modem Uses HiSilicon Balong (Hi6921/Hi6930). Not Qualcomm!
Vodafone K5160 USB Modem Rebranded Huawei E3372. HiSilicon Balong, not MSM8916!

Where to Buy

Search for these keywords on AliExpress or Amazon. Prices range from $8–$15 depending on seller and model. Make sure the listing mentions MSM8916 or one of the model names below.

AliExpress
UZ801 v3.0 4G modem UFI001B 4G dongle UFI001C LTE stick MSM8916 USB stick MF800 4G WiFi SP970 pocket WiFi
Cheapest source ($8–$12). Shipping 2–4 weeks. Sort by "Orders" for trusted sellers. Ask seller to confirm MSM8916 before buying.
Amazon
UZ801 4G USB modem UF896 4G router MSM8916 LTE stick 4G USB WiFi Qualcomm
Faster shipping ($10–$15). Check product images for board markings like "UZ801", "UFI001", or "MSM8916" on the PCB.
eBay
UZ801 USB stick UFI001B modem MF800 hotspot OpenStick modem
Sometimes <$8 used. Ask for board revision photo. Avoid branded devices (Huawei, ZTE, Alcatel) — they almost never use MSM8916.

🔍 Buying Guide

Listings change constantly — use this checklist to find the right device. It can be "hit or miss", so always verify before ordering!

✅ Search Terms
MSM8916 UZ801 v3.0 UFI001C MF800B-E LCD Qualcomm 8916 OpenStick
📋 Must be in the listing
  • MSM8916 or Qualcomm 8916
  • Clear board revision (e.g. UZ801 v3.0)
  • Ideally: photo of the PCB with visible SoC
🚩 Red Flags — Stay away!
Balong / HiSilicon MTK / MediaTek Unisoc ZX297520 (ZTE) MDM9207 / MDM9215 Huawei E3372 ZTE MF927U

No SoC listed? Seller dodges when asked? → Skip. Many similarly named devices use completely different chipsets!

Resources & Guides

📦 GitHub Repository 👥 OpenStick Organization 📖 Detailed Guide (wvthoog.nl) 🔧 Extrowerk Guide 📰 Liliputing Article 🔗 UZ801 Armbian Guide
0x02

Current Status

Working

  • Debian Linux (kernel 6.7.0-rc4)
  • LTE internet (4G, O2)
  • WiFi hotspot — OpenSpot (192.168.100.1)
  • USB networking (192.168.200.1)
  • Battery monitoring (BMS)
  • Charger + USB detection (extcon)
  • Modem recovery service
  • SSH remote access
  • LED control (R/G/B)
  • Full EDL backup system
  • Display UI daemon (8 Python modules)
  • VNC remote desktop (TigerVNC + Openbox)
  • Home Assistant integration (lights, thermostat)

TODO

  • Battery charging calibration
  • Thermal management
  • Audio subsystem
  • GPS (if hardware present)
0x03

The Journey

8 months. 7 versions. 1 soft-brick. Infinite dmesg | grep commands.

0x04

The Architecture

What runs inside a device smaller than your thumb.

 HOST PC                          MF800B-E LCD OpenStick
 -------                         ----------------------
                    USB
 [Terminal] ----[RNDIS/gadget]---- [Debian Linux]
  ssh user@                        Kernel 6.7.0-rc4-msm8916
  192.168.200.1                    |
                                   +-- [WiFi AP] --- 192.168.100.1
                                   |    wlan0 (WCN3620)
                                   |
                                   +-- [LTE Modem] --- internet
                                   |    wwan0 (Q6 remoteproc)
                                   |    ModemManager + NetworkManager
                                   |
                                   +-- [PMIC PM8916] --- SPMI Bus
                                   |    +- charger@1000 (pm8916-lbc)
                                   |    |   extcon USB + charging
                                   |    +- battery@4000 (pm8916-bms-vm)
                                   |    |   voltage, SOC, health
                                   |    +- adc@3100 (VADC)
                                   |    +- gpio, rtc, temp-alarm
                                   |
                                   +-- [Display UI] --- SPI (/dev/fb0)
                                   |    128x128 GC9107 (XRGB8888)
                                   |    openstick-ui.service (8 modules)
                                   |    Status, menus, HA control
                                   |
                                   +-- [VNC Desktop] --- port 5901
                                   |    TigerVNC + Openbox (800x600)
                                   |    ~96 MB RAM footprint
                                   |
                                   +-- [LEDs]
                                        Red/Green/Blue status
0x05

The Boot Sequence

From power-on to ping google.com, a journey of a thousand interrupts.

0x06

The eMMC Map

3.6 GB of flash storage. 22 partitions. Every byte accounted for.

💾 eMMC — 3.6 GB (3,758,096,384 bytes) sdhci-msm 7824900.mmc • HS200 @ 192MHz
Boot chain Modem Linux OS Data Security Misc
sbl1
tz
hyp
rpm
aboot
boot
modem 64 MB
fsg
nv1
nv2
misc
system ~1.6 GB Debian rootfs (ext4)
userdata ~1.2 GB ext4
cache 128 MB
recovery
persist
ssd
DDR
key
Linux OS (boot + system + recovery) ~46%
Data (userdata + cache + persist) ~37%
Modem firmware (modem + fsg + nv) ~2%
Boot chain (sbl1 + rpm + aboot) <1%
# Print partition table (the moment of truth)
$ edl printgpt --memory=emmc
Parsing Qualcomm Sahara / Firehose protocol...

  Name            Offset       Size        Flags
  ─────────────────────────────────────────────────
  sbl1            0x00000000   128.0 KB    bootable
  tz              0x00020000   256.0 KB
  hyp             0x00060000   128.0 KB
  rpm             0x00080000   128.0 KB
  aboot           0x000A0000     1.0 MB    bootable
  boot            0x001A0000    32.0 MB    bootable
  modem           0x021A0000    64.0 MB
  system          0x061A0000     1.6 GB
  userdata        0x261A0000     1.2 GB
  cache           0x6E1A0000   128.0 MB
  recovery        0x761A0000    32.0 MB
  ─────────────────────────────────────────────────
  22 partitions found. No refunds.
"3.6 GB seemed like enough space. Then Debian said 'hold my dpkg'." — The sad story of apt autoremove
0x07

The Recovery Toolbox

When things go wrong (and they will), EDL is your friend.

Normal
reboot bootloader
Fastboot
fastboot oem reboot-edl
EDL (9008)
edl rf full_backup.bin
# Read entire eMMC (the "oh no" button)
edl rf backup.bin --memory=emmc

# Read individual partitions (the "surgical" approach)
edl rl partitions/ --memory=emmc --genxml

# Write it all back (the "undo" button)
edl wf backup.bin --memory=emmc

# Print partition table (the "what am I looking at" button)
edl printgpt --memory=emmc
0x08

The Debug Graveyard

Commands typed. Sanity lost. A tribute to the tools of the trade.

0
dmesg | grep commands
(estimated, conservatively)
0
boot images created
at least 1 was wrong
0
lines of display UI
across 8 Python modules
0
modem firmware files
all 56 are important. all of them.
0
pixels on the display
128×128 of pure potential
0
phandles swapped
the one that saved everything