OpenStick

ADB Shell

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

Chunky

So i have seen tons of similar devices on the net, but they share some common properties:

To use it you should:

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:

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!

shell

What you get is:

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.

NeoFetch

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:

GCC