logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·31.10.26
← Back to news

Show HN: Hacking a $20 4G wireless hotspot into a texting device

Original article
bkovac.github.io|122 points|18 comments|by bobili1234|Sep 15, 2026

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:

  1. The Modem: An MF800 (one of several OpenStick-compatible models). I considered the UZ801, but it lacked a battery and accessible GPIOs. I also tossed a USB-drive form factor model due to various glitches.
  2. 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 🥲).
  3. 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 GC9107 powered screen, but it looks like ass it'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:

  • adb is 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.nl blog (provided the initial kernel)
  • extowerk.com blog
  • 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: Standard USB Keyboard+Proprietary Apple Endpoint\text{Standard USB Keyboard} + \text{Proprietary Apple Endpoint}Standard USB Keyboard+Proprietary Apple Endpoint 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:

ComponentPurpose
TUSB320USB Mode Switching
SN74LVC8T245Level Shifting
MCP16405V Voltage Booster
TPS22917VBUS/VBAT Switching (High/Low)
FPC ConnectorDisplay 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.

PCB Cut Diagram

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.