UPDATE — November 2019 As an updated preface to this article, I’d just like to note here that Ubuntu 19.10 was released quite recently and works really well with this laptop. Rather than ploughing all the way through this article (which you can still do if you really want to) and jumping through the multiple hoops presented here, I’d recommend instead that you go to the download page for Ubuntu Mate and download 19.10 (or anything later). Sound, Bluetooth, WiFi, etc will just work. You can also install root on ZFS on your eMMC (normally, I wouldn’t recommend installing ZFS on a single disk system …it’s not really what it is intended for, but in this case it can be a really great introduction to the ZFS “snapshot” functionality at no extra cost).
The T-bao R8 comes with Windows 10 preloaded on the internal, 64GB EMMC. I’m not going to say anything more about Windows 10 as I’m completely unable to drive it (I just don’t “get” the Windows paradigm) and am therefore unqualified to give an informed opinion, one way or the other. I intended from the outset that this would be a replacement for my existing, ailing laptop, which runs Elementary OS, a very usable version of Linux.
Anyway, the version of Elementary I’m running on my current laptop is fairly long in the tooth now (it’s based on Ubuntu 12.04 LTS), so it was time to upgrade the OS, too. So, what we’re going to do here is:-
- Break into the BIOS on the laptop and do some simple set-up.
- Download a known, good ISO from the `net.
- Boot the ISO image on our laptop.
- Optionally back-up the pre-installed Windows-10 partition.
- Install Linux.
What I discovered previously, with the Z8350-based Z83-II mini-PC (and the T-bao and Chuwi laptops are the same), was that the BIOS was strongly biased towards a Windows peculiarity where a native 64-bit system uses a 32-bit bootloader at switch-on. This quirk, together with the UEFI requirement, means that many “UEFI enabled” distributions won’t actually boot on this device, as they only provide a 64-bit bootloader. The answer to this boot problem for Atom equipped machines has been provided by Ian Morrison over at Linuxium in Australia. Ian has developed a script, isorespin.sh, which will take the normal distribution ISO image file from several of the most popular Linux variants, unpack the ISO into a temporary directory structure, fix the bootloader, upgrade the kernel and add in required drivers for this type of machine (WiFi adapter and mouse-pad) and then roll the whole thing back up into a new ISO file which you can then dd to a USB thumb-drive to use as a combined bootable live demo and installation drive. Ian has put a ton of work into this handy script and into re-spinning some ready-to-use example ISOs, so if you use his work, please be kind and buy him a beer.
Going back to the laptop, there are a couple of things you need to do and a couple of things you need to know to prepare for your install. The BIOS on this laptop advertises itself as being a version from “American Megatrends”, but it has a very limited number of changeable settings. You can get into the BIOS menu by hitting the escape key within a couple of seconds of powering on. Do that first, go into general settings and set the “Num Lock” to “OFF” (if you don’t do this your keyboard will appear to be broken when you go into the UEFI shell, for instance). You should also change the “Boot Delay” setting from “2” (seconds) to “5”, to give yourself a chance of reading any text displayed during the start-up process. You may also find it helpful to change the boot messages option from “Quiet” to “Verbose” (which will give you the American Megatrends BIOS help messages at switch on). Save those new settings and reset.
The boot device menu will not display any device that doesn’t have a 32-bit UEFI bootloader file. This means that if you plug in a USB thumb-drive with (say) a standard 64-bit Ubuntu distribution on it, not only will the distribution be ignored, but the thumb-drive itself will not show up in the menu. The same holds true for an external DVD-drive or any other bootable device.
Here’s where I wasted a lot of time during my initial attempts at building my chosen distribution. I downloaded Ian’s script and ran it on my old Inspiron in an effort to build a bootable ISO for the new laptop. I gained a lot of experience of running isorespin.sh from the command line, but never managed to produce an image which was bootable on the new laptop. Strangely, all of Ian’s pre-built ISOs which I tried booted perfectly, so there was something about my ancient version of Linux (or just my ancient laptop) which didn’t cut the mustard in this case.
Anyway, to cut a tedious experience short, what I ended up doing was using one of Ian’s pre-built Ubuntu images to do a quick install on the T-bao R8 and then using the laptop itself to run isorespin.sh on the latest Elementary OS ISO to produce a bootable, working USB thumb-drive to do the “real” install. This method worked perfectly first time. You don’t need to do this unless you want to install Elementary or some other version which Ian doesn’t have a pre-built ISO for. The instructions below assume you’re doing a simple, straight install from Ian’s pre-built Lubuntu image (find the Lubuntu section and link to the image about 1/3 of the way down this page).
Load the image onto a USB thumb-drive (using dd) and connect it to your T-bao (L/H side connector is the USB-3.0 socket). Power on and hit to get the boot selection menu and boot from USB. Select the USB thumb-drive (if it’s not on the menu then, as per the info above, there’s something wrong with your download or copy procedure) and hit , followed by “Try Lubuntu without installing”. Your machine should boot into the GUI within a couple of minutes. At this point you should be able to play around with Lubuntu and get a feeling for how the keyboard and mouse perform before starting the actual install.
Once you’re comfortable with the keyboard and mouse, you can select “Install Lubuntu” either from the “System Tools” menu or by clicking on the install icon on the desktop.
A small warning here before you start the install …if you’ve chosen one of Ian’s other image files which has a “persistent” save area enabled on the thumb-drive and then have finger trouble when you enter (say) disk partitioning information, that same (bad) information will show up again the when you reboot from the thumb-drive. It’s generally easier to reload the original, clean ISO image to the thumb-drive again, rather than try to work around it.
Note:- The “disk” in the R8 is actually a 64GB eMMC memory module. This is not the same as a SSD and is just one more of the compromises made when producing a budget laptop. I found the eMMC on the Z83-II mini-PC to be quite slow and, although the T-bao unit isn’t a walking-through-waist-deep-treacle-nightmare, it still doesn’t break any speed records.
The Lubuntu install ISO which I linked to above will do a very good job of installing Linux onto the eMMC with the existing Windows-10 intact, without needing any special input from you. In that case though, you’ll only end up with about 20GB of disk space dedicated to Linux. You can choose to delete the Windows data and dedicate the whole disk to Lubuntu to get the whole 57-odd-GB of actual available disk space.
One other option you have while booted from the live ISO on the thumb-drive and before starting a Linux install, is to do a full copy of the eMMC drive using “dd” to another machine across the network (or to a local, USB disk drive), thus allowing you the option of restoring the machine to its default (Windows-10) state at any time in the future if, for instance, you should decide to give it to your nephew for his school work. This will take a bit of time (probably a couple of hours, depending upon your network and the target machine) and will use roughly 6GB of disk space on the remote machine if you use “xz” as the compression method (more for gzip, bzip2 or others). If you have a very powerful remore server (muli-core CPU) you can compress remotely, otherwise I’d advise compressing on the laptop to get the added advantage of passing less data over your network. A sample command (local compression on the laptop) might look something like this:-
dd if=/dev/mmcblk0 bs=4M | xz -T2 -c | ssh UserName@SmallServer "( cd /BigDisk/LotsaSpace & cat -> T-bao-Laptop_Windows-10_bkup_mmcblk0_dd.xz )"
If you have some major iron on the server side and want to do the compression there instead, it might look like this instead:-
dd if=/dev/mmcblk0 bs=4M | ssh UserName@BigServer "( xz -T4 -c | cd /BigDisk/LotsaSpace & cat -> T-bao-Laptop_Windows-10_bkup_mmcblk0_dd.xz )"
In the first example, the “-T2” option to the xz command tells it to use two threads for compression and the xz command itself comes before the ssh section and so is running on the laptop (a four core machine). In the second version the xz command has moved into the ssh section and is being executed on the remote server. Note that in this case the option has changed to “T4” to use four threads on that (imaginary) eight core machine. In both cases the command is run as root on the laptop and the remote user “UserName” needs to have write permission in the /BigDisk/LotsaSpace directory on the remote server.
Installing from the live image on the thumb-drive after this doesn’t really require any explanation (as the prompts are informative and I’m also pretty sure you’ve already installed Linux once or twice yourself already). The only place you need to pause and consider your answer is at the disk partitioning prompt; I don’t have any qualms about wiping Windows completely, but you might.
The actual install progresses very quickly and, as far as I can tell, selecting “download updates during install” doesn’t have any untoward effects on the (already updated) kernel and driver files from Ian’s respin (but please do let us all know in the comments if your experience differs from mine).
I had planned to limit the eMMC use on this machine purely to the initial boot of the kernel and have the laptop mount the live filesystems via NFS from one of my servers. However, to date I’ve been unable to get the system to run reliably with even just /home mounted via NFS (the window manager appears to freeze, but shells on alternative console devices with, for instance, CTRL-ALT-F2, seem to carry on working). This is obviously directly related to NFS traffic, as triggering multiple read/write operations on the /home filesystem with a non-trivial compile will reliably cause the hang. “nfsstat” on the server shows an initial burst of activity which immediately gives way to just a single read operation (by the client) every couple of seconds. Right now I’m stalled on this issue.
For anyone interested, the output from “dmesg” on the T-bao R8 running ElementaryOS 4.1 is available here.
FreeBSD Hint — If you’re trying to boot FreeBSD on one of these boxes and experience a hang at (or very shortly after) the point where the kernel discovers the keyboard (atkbd0),do a reset and then select option #3 (“Escape to loader prompt”) from the FreeBSD boot menu and type in these lines:-
Once the system boots up, add the same fix into /boot/device.hints (without the “set”) to make it permanent:-
More issues (as of 27th Oct 2017) — Well, I’ve wasted more hours, done more Linux installs and tried out more different distros over the past month than I care to remember. I have a couple of major problems which I can’t, so far, solve. The first is to get Bluetooth working reliably and the second is to get sound working at all. These sound fairly trivial, but together mean that radio, video and on-line communications channels like Line or Skype are all completely useless.
Important Note — The audio chipset on this (T-Bao R8) laptop is the bytcr-rt5651 (as opposed to the es8316, which seems to be common on the earlier Chuwi versions), which currently has very little support, even in the latest 14-rc6 kernel. You can, however, stop the syslog file from filling up with millions of “no audio driver available” messages by downloading the UCM files for this chipset from https://github.com/plbossart/UCM/tree/master/bytcr-rt5651 and following Pierre’s straightforward installation instructions (in the README.md). This will also cause the rt5651 to show up in the audio control panel (under settings->sound), although the actual sound output will still not work.
In addition to sound and Bluetooth, there are a host of other issues which make life with this laptop not just frustrating, but actually quite unpleasant when trying to use it on a daily basis:-
- The WiFi reception is a lot less sensitive that all of the other devices we use in the house. WiFi drops out completely in places which provide a “strong” signal on other laptops or tablets.
- WiFi regularly just stops completely (even when there’s a signal shown in the toolbar) and usually won’t come back unless it is toggled off and back on again. This is exacerbated by heavy network traffic (like downloading yet another distro).
- YouTube and other videos play at several multiples of normal speed, so that it’s actually impossible to read subtitles (which you have to use, because there’s no sound). It’s interesting that some people have reported that fixing the sound also fixes the frame-rate problem with their Chuwi laptops.
- The SD card slot driver seems to be slightly weird, in that plugging in a card produces an error message (“SD card error -110 on initialization”) and the card remain inaccessible. Various cards with various formats all produced exactly the same error.
- The trackpad gets very confused with two-finger scrolling and regularly interprets a scroll as a zoom command, or as a one-finger button touch.
- The trackpad isn’t accurate enough to allow scrolling on windows which have thin scroll-bars (which seems to be the rage, nowadays).
- The trackpad will not respond to setting changes such as “side scroll enable”, “natural scroll disable” or “tap disable”, regardless of distribution.
- Occasionally, the laptop goes into sleep/hibernate (on inactivity, or closing the cover) and then won’t restart, requiring a power-cycle to recover.
Of course I’m aware that some of these problems may be distribution related, but the ones mentioned above seem to be fairly consistent across multiple different versions of Debian/Ubuntu and Arch based distros.
On the plus side, I’m really grateful that the machine boots so quickly (roughly 30-seconds for a distro loaded on the internal eMMC).