User Tools

Site Tools

Action disabled: source

Mobile Linux

The goal is to get a full Linux environment running on minimal power in something like a mobile phone or very small tablet.

Q: What's a full Linux environment? A: For the purposes of this discussion, we'll say it's a well supported distribution running with a conventional window manager, good enough CPU, RAM, disk, screen, keyboard and mouse to do normal day-to-day task including development.

Q: So what is minimal power? A: Let's say a max of 5W, that is 1A at 5V. Why? Because that's the sort of power you can get from conventional Power Packs, so enabling long off-grid usage.

Q: So what is good enough CPU? A: From playing with many devices, anything fairly recent seems good enough. Specifically, a single core running at 1GHz is good enough to run Linux well.

Q: So what is good enough RAM? A: At 512MB things can swap, 1MB or more is good.

Q: So what is good enough disk? A: Enough to install a fully featured environment and have space to play. Let's say that is at least 8GB, preferably 32B or more (200GB is now quite affordable but often unsupported).

Q: So what is good enough screen? A: I have 3.5“ going, it's too small! 5” is probably minimally acceptable, anything over 7“ is probably going to take too much power so 7” is probably the sweet spot.

Q: So what is good enough keyboard/mouse? A: Any conventional bluetooth keyboard is probably good enough. There are a couple of links at the end for stuff I like.

So let's go through all the options:

Kindle eReader Options

Kindle Linux

I picked up a paperwhite 3 (7th generation) on eBay for £30 so this had to be worth a go. The main instructions are here. They are pretty confusing as they are old and outdated, what's more the old system images have been removed. However, for the paperwhite 3 there are other instructions here. This gets you to a rooted paperwhite running the latest software (currently The installation of KUAL is convoluted, but then quite a bit of other stuff is easy.

This gets you to a root account you can ssh into/out from using kterm. To complete the job I need to work out how to port standard Linux packages, others have done it quite a bit is it is possible but hard work…


Debian on Kindle

Being root you can set up a chrooted installation of Debian - I haven't had time to do this yet.

Raspberry Pi

The Rasperry Pi is great, I love them and have lots. The main choice is between the tiny and low powered Raspberry Pi Zero W and the top dog Raspberry Pi 4. If you want all the specs then you want the Raspberry Pi comparison table and Raspberry Pi 4 comparison. The development enviroment is great, all that is missing is the screen.

Raspberry Pi with GPIO 3.5" screen

There are a number of 320×480 screens that work as a HAT on Pis with the GPIO header installed. For example this for £23.62 or this for £9.80.

They are fairly easy to set up, and they sit nicely over a model B. Rasbian has defaults for small screens that are a good starting point. However, the screen size is really small, it's a real strain to read and too small to do any work. The screen update is also very slow, perhaps because it's via the GPIO.

Conclusion: 3.5“ display is just too small.

Raspberry Pi with HDMI 5" screen

The standard 5” is HDMA, such as this for £23.78. The resolution is 800×480 which is just about acceptable, given all the constraints.

TO DO: Reconfigure and measure power consumption. Informally it seems to be too high.

Raspberry Pi with external eInk Kindle VNC terminal

A basic kindle has a 6“ eInk screen, potentially big enough and has very low power consumption, but it's black and white. To match the power consumption I used a Raspberry Pi Zero W with a cheap OTG hub for a small keyboard/mouse and for USBnet to connect the Kindle and Pi (this way we don't need wireless on either device, which keeps the power down).


On the Pi Zero W:

  • Start by installing the latest raspbian, I'm using 2019-06-20-raspbian-buster-full
  • enable SSH and VNC, e.g. using raspi-config
  • swap is really useful, edit /etc/dphys-swapfile commenting out the derisory CONF_SWAPSIZE of 100k to get the default 2x RAM
  • if your raspbian is pre-buster then enable usbnet. there are many guides, e.g. this one.
  • set the RPi VNC server to use VNC account not Unix account
  • 'apt install calibre' and if you want to clone an existing system sync then use the Library→Import/Export

On the Kindle Paperwhite 3:

  • root the Kindle as above
  • install usbnet and in usbnet/etc/config
  • install kvncviewer (not the older kindlevncviewer)
  • run cd /mnt/us/kvncviewer && ./luajit vncviewer.lua -user user -password
  • set the RPi VNC server to use VNC account not Unix account

These bits I haven't finished:

  • set the RPi resolution to match the Kindle (my PW3 is 1440×1080)
  • write the rc.local script to bring usbnet on boot
  • measure the total power consumption (the Kindle is powered from the RPi)

This is likely to be the least power solution for a full on Linux distribution.

Raspberry Pi with external Android X display

remote desktop

“apt install xrdp” on the Raspberry Pi and “RD Client” on Android gives a full independent desktop on Android. However, it transmits bit images which are slow over WiFi. There may be optimisations where only certain windows are displayed on Android, but that is not what I'm after.


This works well (I used VNC viewer from RealVNC). As above, I haven't yet tweaked screen resolutions.

Android Options

The main choice here is to root or not to root. As a useful rule of thumb, if your device is capable of running TWRP then you should go that route. If it's not then you can spend a lot of time trying to root without sucess. Also, if you can exploit a backdoor to get root then a malicous app could do the same - worth thinking about if you are going to trust your Android device with you Google account credentials.

root and replace Android with Debian/Ubuntu

Whilst Android is based on the Linux kernel, from what I've found it's near impossible to get a custom kernel to boot, and if it does it is very unlikely to support all the hardware as is needed (e.g. USB, WiFi, touchscreen). I've given up on this unless I stumble across a completely working system. The state of the art in this direction is LineageOS which is still Android, but you have control over everything.

root and run a chroot Linux

I have a way to get a root shell on a Alcatel Joy 1, but don't know how to get a full “rooted” environment from that. TWRP isn't supported so this took a long time.

I have a Nexus 7 (2012) and it was easy to install TWRP. I haven't got any further yet.

noroot Debian on Android

The best app depends on what version of Android is running. For modern Android (currently 9) seems to be best. As stands, it's not a full distribution, just a chroot environment for the standard Android kernel to make it look like a full Linux. Also there seems to be the need to use a remote desktop app (such as VNC) to see a full desktop. I haven't ruled this out yet, but it would seem to need a lot more work as may services need root access.

Linux on x86 mini notebook

These are generally too heavy and power hungry. The closest option seems to be the Toshiba Satellite Mini l9w which is only 470g for the tablet, but all in comes to 980g. It has the advantage that it is USB charged.

Linux on x86 tablet

Some tablets run a x86 processor, commonly the baytrail chipset. Linx and Acer seem to be the affordable choices:

  • Linx 7: 7” screen, 281g, 1 GB RAM, 32 GB internal, 64 GB external, 3500 mAh up to 6 hours. about £35 on ebay. I bought one but the build quality isn't great and the screen connection gave up. USB OTG and charging don't work together as standard, there is a forum somewhere that claimed a couple of BIOS changes fix this, I never got to find out.
  • Linx 820/810: 8“ screen, 460g, 1 or 2 GB RAM, 32 GB internal, 64 GB external, xxxx mAh up to 6 hours. eBay £49.99.
  • Acer Iconia One 7 B1-730HD 330g. 8 GB internal, max 32GB external
  • Acer Iconia Tab 8w 406g. 32GB internal, tested with 200G SD card.

a 8” screen is 30% bigger in area than an 7“ and will presumably use 30% more power. The 8” Linx is more than proportionally heavier, probably due to battery.

I mocked up the 7“ Linx using xrdp and a Raspberry Pi. Screen size was acceptable, refresh was terrible but that was xrdp over WiFi.

Linux in a VM on x86 Windows tablet

This may seem like cheating, but it does tick the boxes and it's how my main latptop works. The VM route has the huge advantage that Bluetooth, Wifi, screen rotation, etc should all work.

Thanks to eBay, I have a Acer tab 8 w for only £20 to try this out with. Although the documentation says that it only supports SD cards up to 32GB, it took a 200GB Sandisk card. VirtalBox was easy to get running once I'd updated Windows 10 to the current patch level. Getting xubuntu booted is much harder, at the moment I allocate only 380 MB RAM to VirtalBox and it says “Initramfs unpacking failed: write error” which I assume means it needs more space, at 400 MB RAM VirtalBox can boot if everything else has been cleaned out (i.e. just after a reboot). So far I get as far as the keyboard selection screen, then it all goes blank.

Even if it does work then I'm under the minimum RAM I thought I needed.

Native Linux on Atom tablet

  1. Skim the guide by linuxium and download
  2. Download the distro of your choice, I'm using xubuntu-18.04.2
  3. Run ./ -i xubuntu-18.04.2-desktop-amd64.iso –atom
  4. Write linuxium-atom-xubuntu-18.04.2-desktop-amd64.iso to a memory stick (I didn't get a TF card to boot)
  5. Plug a USB hub into the tablet along with a keyboard, mouse and memory stick
  6. Hit ASC or DEL at reboot for BIOS/UEFI - I disabled secure boot, quiet boot and fast boot (perhaps not needed)
  7. Hit F7 at reboot and select “Boot from flash” to run your distribution Live
  8. Optional: backup
    1. Remote mount a linux server, e.g. mount /mnt
    2. Back up everything, e.g. dd if=/dev/mmcblk1 | gzip > /mnt/mmcblk1.img.gz
  9. Optional: Use gparted to split the big Windows partition so you can put Linux in the spare space
  10. Hit F7 at reboot and install on SD card or new partition as desired

That should get you to running system. If it doesn't other useful resources are and techradar. Maybe of interest are old notes from Feb 2015.

Xubuntu specific
  • Rotate the screen: Settings → Display → Rotation → Right
Currently not working
  • disk encryption: how to enter a password without a keyboard?
  • bluetooth
  • audio
  • suspend to swap - needed to keep state when using zero power
  • USB hub and charging - this turns out to be both very important and difficult (USB_On-The-Go, hack). Unfortunately none of the Linx 7/810/820, Viglen/Tesco Connect 8 or Acer-Iconia-Tab-8-W-W1-810 have separate power and USB OTG. Next is to try these BIOS changes.