OpenStick
I have bought a VoCore2 some month ago and it gave me endless fun and headache. It is a coin sized computer meant for embedded use and for experimenting. It comes with OpenWRT, a linux distribution mainly meant for routers. While i had fun with the VoCore, the naked PCB feels way too vulnerable for my liking. I really wished to have some compact computer i can interact with over wlan, so i went to hunt for some off-the-shelf solution and in a deep and hidden corner of the internet i found something great.
Baudrillard would like it too
In the era of the IoT the mankind try to connect everything to the net, like cars, toothbrushes and lamps. While i feel most “smart” thing is just a useless gimmick, it still became common to see smart devices all around us as a microcontroller costs near to nothing and it counts as “added value”. However in most cases their size and price allows only wlan connectibility, as it is the easiest, smallest and cheapest way (ok, maybe that would be zigbee, but whatever). So they need a wlan access point to provide WLAN for them.
Here comes the problem: maybe they are too far from your WLAN AP or they are portable (like a car), so they need some wireless solution. One possible solution for this use cases are 4G enabled mobile routers. They are little devices with a SIM slot and most of the time with a USB connector. Sometimes they even have a little integrated battery too. The brand ones are pretty expensive (100+ USD), but a well-known cheap international webshop sells a neat little device, which could be interesting for many of us during the semiconductor shortage!
A strange little device
So i have seen tons of similar devices on the net, but they share some common properties:
- a USB stick-like apperance (a bit chunkier than a regular USB drive)
- a removable cover, which hides the SIM card slot and in some cases even a TF / SD-card slot too.
- they got some status leds
- plastic enclosure either in white or in black
- the cheapest ones have a fancy “4G LTE WIFI MODEM” text printed on the plastic housing.
To use it you should:
- remove the back-cover
- insert your SIM
- conenct it to a power source. It can be a power bank, as the USB header won’t be used for data
- wait till the leds lights up
- look for a new WLAN AP and connect to it
- open the web-admin site (URL provided on a sticker) to set up the SIM PIN
- enjoy
Simple, right? Maybe not…
What is under the bonnet?
If you attach the device to a computer you could notice something: the device reports itself as “Android”. Strange. It turns out the easiest and the simplest way to combine LTE modem, WLAN AP, routing functionality in one device is just using something, which already have all of this: take a mobile phone and remove the display and the battery.
So the simple plastic enclosure hides a full mobile-phone, based on the Qualcomm Snapdragon 410 platform. The specs nothing outstanding, but considering we can buy it for ~20 bucks, it is great:
- 4 x 1GHz A53 ARM64 CPU (Qualcomm MSM8916)
- 512 MB RAM
- some 3,3 GB flash storage
- LTE modem
- WLAN radio
- UART
One interesting fact is: the Snapdragon 410 have good mainline linux support. How nice would be to use the device as a generic computer?!
Own the device
It turns out a chineese hacker called HandsomeYingYan already did the hard work and managed to install an own system on the device. He noticed the bootloader is not locked, he modded the lk2nd bootloader, adjusted the linux kernel source and documented the whole process (sadly only in chineese).
But thanks to the rough machine translation i was able to follow the steps and get it working.
The process
First thing first: you need to buy a device. If you intend to use it as an LTE modem, you have to keep in mind the LTE band and spectrums are different in Asia, in the US and in EU. You supposed to make your research before you buy something.
If you don’t plan to use the LTE functionality you can pick the cheapest one. I recommend to try to find one with the SD-card slot, as not every have it. You can use an SD card later to extend the internal storage.
I did the whole process on Ubuntu linux, your mileage may vary on other OS.
1) Install adb and fastboot and switch the device into fastboot mode:
sudo -s
apt install android-tools-adb android-tools-fastboot -y
adb start-server
adb reboot bootloader
fastboot devices
Update (2024.03.13):
Lönja wrote me the following: “I struggled initially with getting the device to show up on adb. I had to log into the web interface and access “/usbdebug.html” on the web interface for it to show up. I thought maybe this could be mentioned.”
End of update
2) Download and extract the generic image and run the base/flash.sh
script
3) download and extract the Debian image, then run the flash.sh
from the debian folder.
4) run adb shell
Congratulation, you are in!
What you get is:
- Debian 11 Bulleye Stable Edition
- Linux kernel 5.15 LTS
- The RNDIS and ADBD are started by default, you can connect to SSH through ADB (the IP address is 192.168.68.1)
To activate WLAN use nmtui
1) Edit a connection
2) Add
3) Wi-Fi
4) Fill the SSID / password
5) Enjoy your WLAN connection.
If nmtui
refuses to work and shows the TERM environment variable needs set
error, try to set it like
$ export TERM=linux
Install nano:
sudo apt-get update
sudo apt-get install nano
Set up ssh to allow root login:
nano /etc/ssh/sshd_config
First change the line
PermitRootLogin no
to
PermitRootLogin yes
Then, change the line
PasswordAuthentication no
to
PasswordAuthentication yes
Now you can connect through WLAN with SSH and install your favorite packages.
It seems only 382 MB RAM is available, but it is much more than what you can find in regular SOHO routers.
You can even run GCC on the lil’ device. It is not fast, but it works: