I had pretty much forgotten about this little device when I recently uncovered it stashed away in one of my drawers. Originally purchased in early 2015 for around $100, it was hooked up to my dumb TV to make it smarter and used as a media center.
Pipo X7 Specs
- CPU: Quad Core Intel Atom Z3736F 1.33 GHz (2.16 GHz burst)
- Graphics: Intel HD 313 MHz (646 MHz burst)
- RAM: 2G DDR3L 1333Mhz (Single channel)
- Storage: 32G eMMC (Samsung MBG4GC)
- Wireless: 802.11b/g/n, Bluetooth 4.0 (Realtek?)
- IO: 4xUSB 2.0 ports (2 front, 2 back), 1xHDMI out, 1×3.5mm Audio out, 1xTF/micro SD, Fast Ethernet (100/10mbps)
- OS: Windows 10 x64 (upgraded free from Windows 8.1 Bing)
It was able to get a couple of years of use before being replaced by better 4K capable Android media players (NVIDIA Shield).
Having a lot of free time on my hands (thanks COVID) I was curious to see what else it could be used for, so I booted it up and played around a bit.
It has a genuine Windows 10 license (originally 8.1 Bing that was freely upgraded) which I was able to update to the latest patches with no issues.
With the device updated I started playing around with it by attempting to use it as a normal desktop computer. Very quickly I discovered some major downsides to the aging hardware:
- Low RAM: with just 2G of memory this device was seriously struggling when running any modern browser. Even just having a single firefox tab open and browsing YouTube was eating up almost 1G of memory. I also noticed there was a 500M page file being constantly utilised. This resulted in a sluggish and stuttery experience when web surfing.
- Slow Storage: (32G eMMC) though low capacity it is adequate for simple internet browsing and office work. I ran a CrystalDiskMark test and found although the sequential read/write were decent (160M/s & 80M/s) the random R/W were low at 20M/s & 10M/s
- Weak WiFi: the wireless connection was very flaky and signal strength fluctuated dramatically. I was only able to achieve a maximum of 20mbps and averaged around 10mbps.
- Video playback: it was able to handle most 1080p video streams, but anything of significant bitrate or more demanding codecs would suffer pauses and frame drops.
I struggled to use the Pipo as a light office desktop, mainly due to the RAM limitation which modern browsers absolutely eat up.
Enter Lubuntu
To try and get more use out of the Pipo I wanted to install linux and after some quick googling I chose the Lubuntu distro for its supposed light-weight features. So I grabbed the latest LTS version (20.04) from lubuntu.me and created a bootable USB.
By pressing ESC or Del on startup to get into the Pipo BIOS, I configured it to boot from our USB, and here is where a major hurdle occurred:
I couldn’t get the Pipo X7 to load GRUB and boot from the Live USB. It just simply wasn’t displaying anything and would fallback to either the Windows partition or the default EFI.
After searching around, I discovered that this device and many like it are shipped with 32bit EFI firmware which is not included/supported out of the box with most distros. So I continued digging and found an awesome utility by Linuxium called isorespin.sh
Using isorespin I was able to ‘respin’ the Lubuntu ISO to include a 32bit boot loader and support for Intel Atom using the following command:
$ isorespin.sh -i lubuntu-20.04-desktop-amd64.iso --atom
After the utility has finished, a linuxium-*.iso is created and ready to be written to our installation medium (USB). Plugging in the USB and booting from it worked straight away with no issues and I quickly went through the installation steps, opting to format the entire eMMC disk.
To my joy and surprise, after installing Lubuntu 20.04 LTS everything is working out of the box. The HDMI sound output which had been an issue previously (from ~2015 forum posts) appears to have been fixed in the more recent distros.
The Pipo’s wireless speeds were never very good for me, even though the box itself does feature a wireless antenna it varies greatly between 8-20mbps.
isaac@pipox7:~$ speedtest-cli
Testing download speed................................................................................
Download: 10.24 Mbit/s
Testing upload speed......................................................................................................
Upload: 18.61 Mbit/s
Thankfully the rear fast ethernet jack (100/10) works well and I was able to achieve decent speeds with it plugged in:
isaac@pipox7:~$ speedtest-cli
Testing download speed................................................................................
Download: 85.87 Mbit/s
Testing upload speed......................................................................................................
Upload: 26.91 Mbit/s
Now that the network has been sorted out, I tested the web browser experience and found it to be actually worse than windows 10. The 2G of RAM (around 1.5G available) is taken up by Firefox very quickly with just a couple of tabs open (youtube, reddit etc). Once the memory is filled everything freezes and a force restart is required.
RAM – swap & zramswap
I found that setting up and enabling a swapfile (or partition) helps – I opted for a 2G swapfile, but it is still not ideal.
After looking around I found zramswap which utilises ZRam to create compressed swapfiles in memory. Installing and configuring was simple as follows:
$ isaac@pipox7:~$ sudo apt install zram-tools
I updated the default config to use 70% of RAM as zramswap:
# /etc/default/zramswap
...
# Specifies the amount of RAM that should be used for zram
# based on a percentage the total amount of available memory
PERCENTAGE=70
...
Control and enable/disable zramswap using start/stop/status:
isaac@pipox7:~$ sudo zramswap start
Check to make sure the zramswap service is enabled and running (so it will auto setup on boot):
isaac@pipox7:~$ sudo systemctl status zramswap
Check your swap/zramswap:
isaac@pipox7:~$ cat /proc/swaps
Filename Type Size Used Priority
/swapfile file 2097148 0 -2
/dev/zram0 partition 345196 109832 100
/dev/zram1 partition 345196 111300 100
/dev/zram2 partition 345196 114776 100
/dev/zram3 partition 345196 111324 100
isaac@pipox7:~$ sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
/dev/zram0 partition 337.1M 107.3M 100
/dev/zram1 partition 337.1M 108.7M 100
/dev/zram2 partition 337.1M 112.1M 100
/dev/zram3 partition 337.1M 108.7M 100
With zramswap configured and enabled, I found the cpu hit was minimal and the web browsing/multitasking experience greatly improved.
Conclusion
An interesting little journey on installing and configuring linux for low powered/resource (ie. RAM) hardware. I hope whoever is reading this gained some insight on installing a 64bit OS onto 32bit EFI. Also setting up swap and zramswap is a crucial step for being able to use modern browsers (Firefox or Chromium) on such low amounts of RAM.
After installing Lubuntu and some tinkering, I am able to do light office work (drafted and published this post with it) and have seen a noticeable improvement in video playback capabilities which I attribute to lower resources of the OS vs Windows 10.
I can also confirm this same process to install linux works for the Ainol Mini PC Z3735F 7000mAh
Resources
- https://forum.freaktab.com/forum/tv-player-support/intel-based-tv-players/pipo-x7-tv-player/22820-pipo-x7-os-linux
- Pastebin describing BIOS settings for similar devices
- http://linuxium.com.au
- https://github.com/kenorb-contrib/isorespin
- https://www.gearbest.com/tv-box/pp_134110.html
- https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-20-04