Show HN: Hacking a $20 4G wireless hotspot into a texting device
Project: Transforming a $20 4G Hotspot into a Dedicated Texting Tool
Converting a budget 4G wireless hotspot into a handheld messaging device—or, as I like to call it, the "DIY Clicks Communicator."
🛠️ The Genesis of the Build
My desk is often a graveyard of AliExpress impulse buys, unfinished projects, and gifts I haven't found a home for. Recently, three specific items converged:
- The Modem: An
MF800(one of several OpenStick-compatible models). I considered theUZ801, but it lacked a battery and accessible GPIOs. I also tossed a USB-drive form factor model due to various glitches. - The Input: A Clicks Keyboard designed for the iPhone 16 Pro Max (a gift from my cousin; unfortunately, I don't own the matching iPhone 🥲).
- The Visuals: An Adafruit SHARP Memory Display board.
My "caveman brain" saw these three items and decided they belonged together.
Of course, I was subconsciously influenced by existing projects like the Beepy (by sqfmi), the Playdate, and general "modem-core" aesthetics.
📡 The Hardware: The $20 Wonder
Thanks to the chaotic magic of global supply chains, you can acquire a fully unlocked 4G modem featuring WiFi, Bluetooth, a display, and a battery for \text{Cost} < \20$ (shipped).
- The Display: The stock unit uses a
GC9107powered screen, butit looks like assit's aesthetically displeasing, so I removed it. - Variants: There is a non-display version that uses LEDs instead, though the PCB remains identical.
💻 Software & OS Transition
The device ships with Android, but it is remarkably open:
adbis accessible immediately.- From
adb, you can enter EDL mode to reflash the firmware. - Hardware Hack: There are physical pins on the PCB that can be shorted to force the device into EDL mode.
Pro Tip: Extracting the device tree from the running Android OS is a goldmine for technical specifications.
Helpful Resources
- OpenStick GitHub / openstick.de
wvthoog.nlblog (provided the initial kernel)extowerk.comblog- The project's own GitHub repository
Note: The real struggle begins when dealing with device trees and drivers.
⌨️ The Input: Clicks Keyboard
Using the Clicks keyboard feels fantastic, though it requires a significant financial investment—made worse by the fact that you have to physically modify it 😱.
The Protocol Analysis: Based on my experience with MFi (Made for iPhone) devices, the Clicks keyboard is essentially: The iPhone uses that endpoint for authorization. For this project, however, it behaves as a standard USB keyboard.
Side note: There is a Clicks app for updates/config, and while custom code could be flashed, it isn't necessary for this build.
📺 The Visuals: Sharp Memory Display
I chose the Sharp display for its high contrast, which perfectly suits a "dumb" device dedicated solely to messaging. There isn't much else to say here—it just works and looks great.
🔌 The Custom PCB
I quickly realized a custom PCB was mandatory. The MF800 lacks a 5V booster, and since the physical constraints required me to chop off the USB connector, I needed a way to manage power and data.
PCB Functionality
The board handles:
- USB Host mode power.
- Switching between USB Host and Device modes.
- Display power and signal level conversion.
Component Breakdown:
| Component | Purpose |
|---|---|
TUSB320 | USB Mode Switching |
SN74LVC8T245 | Level Shifting |
MCP1640 | 5V Voltage Booster |
TPS22917 | VBUS/VBAT Switching (High/Low) |
FPC Connector | Display Interface |
Manufacturing Note: To keep costs down, I used single-sided assembly. The non-component side is reserved for solder points for PCB-to-PCB connections.
✂️ The "Surgery": Fitting the Case
The MF800 is bulkier than other OpenSticks due to its battery and general design. To fit it into the Clicks case, I had two choices: build a massive vertical tower or trim the PCB. I chose the latter.
The Cutting Process:
- Blue Lines: USB data lines from connector to SoC.
- Red Lines: The intended cut path.
- The Risk: My right-side cut severed the battery connection line, which required a manual patch.
The Result: The device booted immediately. It turns out no critical traces (other than the battery line) were lost in the cut.
🛠️ Final Integration & Wiring
I initially considered a rigid-flex PCB to mimic the original display's soldering, but the cost was prohibitive. In hindsight, using the labeled pads near the unpopulated micro SD connector would have been simpler (though I never verified if they shared lines with the SIM card).
The Final Steps:
- Extract SPI pins for the display from Android device trees.
- Verify pins using
gpioseq. - Extrude 2D PCB scan to ensure a tight fit within the iPhone's width.
- Patch VBAT wire.
# Example of testing GPIO pins
# gpioseq -p [pin_number] -v [voltage]
The modem and USB connection remained the final tests, but given the routing, the modem was almost certainly safe.