Rooting a Minix

Index

Introduction

This article is about rooting a Minix set top box (a Neo X5 mini in my case), although it may be applicable to similar hardware, either from Minix or simply running on a Rockchip RK3066.

These devices are problematic simply because the default android tools won't detect them. Most solutions I've come across are reduced to "install Moborobo" or "run this fine one-click solution", which is of little help when you're running on a different OS or when something fails.

So this little guide is a lot more barebones, I've collected what steps should be followed and what ADB commands must be run instead of providing a script. Although it is written for Linux systems, most steps and all ADB commands will be the same on other systems.

Some of these steps might be unnecessary, but they will do no harm.

Setting up the device

By default the Minix won't even be visible by a computer, but that's easy to enable.

Just go into Settings → USB → Connect to PC.

Note this option will be re-disabled on each reboot.

You should also enable USB debugging:

Settings → Developer options → USB debugging

Now, plugging the device to the computer will make it detectable but ADB won't recognise it just yet.

ADB access

This section is tailored to Linux. Source: [1]

Enable normal users to access the device

Check that the device is detected:

$ lsusb
[...]
Bus 003 Device 025: ID 2207:0006
[...]

Devices like 2207:xxxx with no description are the ones this guide is about.

Add an udev rule to allow normal users to access the device:
Create a file in /etc/udev/rules.d/ named <SOMETHING>.rules with the contents:

SUBSYSTEM=="usb", ATTR{idVendor}=="2207", MODE="0666", GROUP="plugdev"

And reload udev rules:

# udevadm trigger

Enable ADB to recognise the device

You'll need to add the vendor id to the list of known android devices.
Simply add a line containing 0x2207 to the file ~/.android/adb_usb.ini:

$ echo 0x2207 >> ~/.android/adb_usb.ini

And stop ADB:

$ adb kill-server

It should now be able to recognise the device:

$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
ABCDE12345      device

Rooting procedure

You'll need the following:
su and busybox binaries
SuperSu apk

You can download a handy archive containing them from this thread on xda (post #2, file X5 Mini v4.2.2 Root.rar).

You might try running the included BAT if you're on Windows or continue with this guide for the dissection of it. The BAT contains commands you can copy-paste directly in the command-line, what follows are equivalent commands.

Note that, at least on the Minix, you'll already have root shell access. What's lacking is allowing "scalation" of privileges outside the shell.

Stage 1

$ adb shell
android# mv /data/local/tmp /data/local/tmp.bak
android# ln -s /data /data/local/tmp
android# reboot

The device will reboot. You'll have to re-enable "Connect to PC" in settings.

Stage 2

$ adb shell
android# rm /data/local.prop
android# echo "ro.kernel.qemu=1" > /data/local.prop
android# reboot

The device will reboot. You'll have to re-enable "Connect to PC" in settings.

Stage 3

$ adb remount
$ adb push su /system/bin/su
$ adb push busybox /system/bin/busybox
$ adb push SuperSU.apk /system/app
$ adb shell
android# cd /system/bin
android# chown root.shell su
android# chmod 6755 su
android# chown root.shell busybox
android# chmod 0755 busybox
android# cd /system/app
android# chown root.root SuperSU.apk
android# chmod 0644 SuperSU.apk
android# cd /data
android# rm local.prop
android# rm tmp
android# mv tmp.bak tmp
android# reboot

The device will reboot and you should have root access.
Launch the SuperSU app to check. It will probably want to update the su binary, let it do so.

If SuperSU doesn't seem to find the su binary, check it's there and that it has the appropriate permissions:

$ adb shell
android# cd /system/bin
android# ls -l su
-rwxr-xr-x root     shell       91980 2012-06-27 21:50 su  # ← Incorrect permissions
android# chmod 6755 su
-rwsr-sr-x root     shell       91980 2012-06-27 21:50 su  # ← Correct permissions

And re-run SuperSU

Sources

  1. ADB shell with RK3066
  2. Minix Neo X5 Mini 4.2.2 root how to? – xda-developers

New tool release: Quick File Share for Android

I've published my second android app, a bit more useful than the first one (and also more prone to be a source of problems :P).

Quick File Share is meant to ease file sharing between devices by using a Wi-Fi network. Sharing content between Androids sucks: you can use bluetooth for a painfully slow experience or use email or cloud storage, with the unnecessary upload (which is also extremely slow for most people), while NFC is just a fancy way of triggering a bluetooth transfer; and that's about it.
Wi-Fi Direct (aka Wi-Fi P2P) finally emerged as a solution, but that requires discrete hardware that only newer devices have.
Meanwhile, if the devices are connected to a Wi-Fi network, than speedy, wireless, and already set up connection can't really be taken advantage of by default. That's the spot this app helps in filling, and it's certainly not the only option, but I couldn't help trying.

Select a file to share, and a temporary webserver will be started on the "sending" device. It will display a QR code and an HTTP address, so that the receiving device(s) can receive the file by just typing the address in a browser or scanning the code (scanning the code will also trigger the browser). The actual transfer is always over HTTP, so you can actually receive the file on essentially any device with network access.

What's the catch? There's always a catch. At least for the time being, the two devices must be connected to the same network. There are other tools on the marketplace that help the receiving device connect to the same network as the sender, but I didn't like that operation too much, so I preferred this way of operation.

Google Play Entry
https://play.google.com/store/apps/details?id=net.outlyer.quickshare
Project Page
http://p.outlyer.net/quickshare/

Screen captures:

Main window

Quick File Share

Main window, sharing enabled

Quick File Share, sharing enabled

New tool released: Network Type Indicator for Android

I recently published my first Android app, and I hope someone else finds it useful. It's a bit of niche tool, but comes to cover a missing feature of some phones.

This is a tool for those that like to know which kind of network coverage type they're under –in other words, if they're on a 2G, EDGE, 3G, etc… network–, yet their phone, like mine, doesn't display such information automatically.
It shows a status bar icon and a permanent notification identifying the network type.

It takes as little memory as possible and barely any CPU time, for those with severely limited handsets. Like me.

Unlike with my previous tools and not releasing the source code, for the time being, until I get more comfortable with Android development.

Google Play Entry
https://play.google.com/store/apps/details?id=net.outlyer.nettype
Project page
http://p.outlyer.net/nettype/

And here are some screen captures:

Network Type Indicator, dropdown permanent notification

Network Type Indicator, Persistent Notification

Network Type Indicator, light theme screenshot

Network Type Indicator, light theme

Network Type Indicator, dark theme screenshot

Network Type Indicator, dark theme