This is an update to my last post using the newly launched Pi 2 W, where I previously tried to setup a Pi Zero W as a desktop  computer with a custom desktop environemnt based on Raspberry Pi OS Lite and IceWM. Pi Zero as desktop


With the launch of the new Raspberry Pi Zero W 2, the processing power of the tiny Raspberry Pi 2 W has been upped from a single core to a quad core CPU. The form factor of the original board has been retained. The 512MB RAM unfortunately still remains the same as before. This has given it a big boost in terms of flexability and options which might not have worked as well before. This has made it even more viable as a backup machine for basic computing, provided memory can be managed very carefully. 


The biggest limiting factor in the above setup was the browser. Whilst Dillo is very fast, not having support for JavaScript meant that it was limited in what you could do. Whilst Midori was installed, it was extreamly slow and only there as a last resort. After recreating this setup on the new Pi Zero W 2, Midori is now more usable, albeit still pretty slow. Looking for an alternative somewhere between Dillo and Midori/Chromium, I've compiled the old and now unsupported Netsurf browser on the Pi. It is impressively fast and it feels virtually as fast as a "normal" desktop machine. However, it doesn't quite support all the current standards as I've found formatting issues on certain websites and it doesn't support logging into Google accounts (It seems to have something to do with an older JavaScript version supported), and thus no Google services such as Gmail work. 


Continuing with testing super lightweight browsers, I installed Uzbl browser and found it very good as well (with caveats). It's also an older unsupported browser (last being updated around 2017). Performance is very good on the Pi Zero, and the rendering of general websites is OK. It fortunately supports Google account login which means that Gmail is accessable (HTML only format). The one caveat to this browser is that it doens't have any URL bar or tabs as other browsers do - It's controlled by hotkeys. At first it doesn't seem to be intuitive, but after understanding how it works, and remembering 2/3 keys, it's not bad at all. The speed of use definitely makes up for the unusal interface. 


I've also installed gnome-maps as a potentially faster alternative to Google maps in Midori. Whilst Google maps is usable in Midori, it's not fast. Having both options alows you to use the faster Gnome-maps when street view isn't important, but there's still the possibility of using Google Maps via browser.


If the performance of the Uzbl browser could be combined with the more conventional UI of Netsurf and supported more current standards, this would be an almost perfect browser for the PI. Now that I've learnt how to use the Uzbl browser, there might not be a need for netsurf, but I'll retain both for options/testing.


With some carefull app selection and a few workarounds here and there, the new Pi zero is very close to being a usable machine for basic computing. As a testament to the impressive ability of this tiny computer, this post has been entirely written on the Pi Zero W 2 whilst listening to music from YouTube and posted via Midori. To me, it's crazy to think that a board like this which was really intended for robotics/embedded electronics projects can be used for general computing as well. 

Looking at my Raspberry Pi Zero and maybe being partially inspired by the now defunct "One Laptop Per Child" project from a few years ago, which aimed at building a laptop for under $100, I wondered if a usable computer could be created out of the Raspberry Pi Zero. Or maybe it's just the challenge of seeing how far this tiny computer can be pushed that had me wondering whether this was even possible. Is there much point to this? Probably not. However, even though this may not be that practical, the Pi Zero, could be replaced with the slightly more expensive Pi 4 2GB, which would make for a pretty efficient and usable desktop PC.   

Raspberry Pi Zero Desktop setup
A complete set of desktop apps including file browser, media player, browser and remote desktop running in 130MB RAM.
        


What is a Raspberry Pi Zero..? It's a single board computer built by the Raspberry Pi Foundation which can easily fit in the palm of your hand being just 65mm x 30mm. There are basically two different Pi Zero models, which are differentiated by having WIFI and Bluetooth or not. (There's also the more recently launched Raspberry Pi Zero 2 W, which has 4 cores, but the same 512 MB RAM and the form factor.) Costing just over $10 for the WIFI + Bluetooth model, they are very affordable and might just make for a very cheap base to build a computer. Another interesting point is that they are so energy efficient that they can be powered from a battery pack for hours or even from solar panels. That being said however, it was not designed to be a desktop computer as it's mostly used as an embedded device in robotics, sensor reading or computer vision projects. For a more powerful desktop machine, there is the current latest version, the Pi 4, which actually makes for a pretty usable machine, but at a higher cost.  

I suppose to some degree, the goals of the Pi Foundation aligns partially with the OLPC initiative in that their goal is around education. It seems to be a perfect fit - if the hardware could be pushed beyond what it was designed for. 

So, how could a simple £10 board be converted into a PC? For starters, the board comes bare, in that there are no peripherals.

For that, we're going to have to add a few parts:

1) Keyboard

2) Mouse

3) Monitor

4) SD Card

5) Case

6) Power Supply

7) Mini HDMI to HDMJI adapter

8) Micro USB to USB adapter

9) Depending on whether HDMI sound is used or not, a USB hub and sound card

The most expensive part of the build will probably be the monitor, but if a cheap monitor is used, it may still come in at around $100.

With the hardware defined, the next part is the software. This is arguably the most important part. We're going to be running a Linux distribution on the computer. The Raspberry Pi Foundation has done some excellent work on packaging a Linux based operating system for the the Raspberry Pi. However, I suspect that the desktop version of their OS is more aimed at the much more powerfull Raspberry Pi 4 and not the Zero. Thus, whilst it technically works on the Pi Zero, to me, it's too slow. The Pi Zero has very limited specs, the highlights being:

  • 1GHz ARM CPU - BCM 2835 SOC
  • 512MB RAM
  • Wifi and Bluetooth
To make the most of these specs, we'll have to construct an incredibly light and efficient operating system. We'll start with the official Raspberry Pi OS light version, then add a graphical interface on top of that and then just the essential software to complete the system and make it visually appealing. There is always a balance between being lightweight and ease-of-use, with tradeoffs either way. With the software I've chosen, I think that this is a reasonable setup whilst maintaining a very low memory footprint. There will always be subjective debates as to which software component is better and this being an evolving setup, will probably change over time as I discover better options.  

Software Instalation

The following steps were followed to create the above setup:

  1. Insert the SD card into an card reader and insert into a PC.
  2. Download Raspberry Pi OS Lite from https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit
  3. Write the Image file to the SD card - Depending on the whether Mac, Windows or Linux is used, there are slightly different steps involved, but there are many guides online as to how to do this. 
  4. Insert the card into the Raspberry Pi, plug in the accessories and boot the device. At this point, the device should boot into the command line interface, requesting a login.
  5. Login with the account "Pi" and the password "raspberry"
  6. Type in sudo raspi-config
  7. Setup the wifi connection.
  8. Enable SSH for remote management using the command prompt
  9. Enable realvnc for remote management using a remote desktop connection
  10. Change the default password
  11. Exit the config tool and execute the following commands:
    1.     sudo apt-get install update
    2.     sudo apt-get install upgrade
    3.     sudo apt-get install icewm
    4.     sudo apt-get install --no-install-recommends xserver-xorg
    5.     sudo apt-get install lightdm
    6.     sudo reboot
  12. At this point, it should boot into the desktop user interface. Click on the start menu and click on Terminal 
  13. Type in the following commands into the terminal
    1.     sudo apt-get install xarchiver
    2.     sudo apt-get install leafpad
    3.     sudo apt-get install pcmanfm
    4.     sudo apt-get install dillo
    5.     wget https://www.realvnc.com/download/file/viewer.files/VNC-Viewer-6.20.529-Linux-ARM.deb
    6.     sudo dpkg -i VNC-Viewer-6.20.529-Linux-ARM.deb
    7.     sudo apt-get install midori
    8.     sudo apt-get install gimp
    9.     sudo apt-get install nitrogen
    10.     sudo apt-get install lxappearance
    11.     sudo apt-get install vlc
    12.     sudo apt-get install omxplayer
    13.     sudo apt-get install ffmpeg
    14.     cd ~ && wget https://github.com/KenT2/tboplayer/tarball/master -O - | tar xz && cd KenT2-tboplayer-* && chmod +x setup.sh && ./setup.sh
    15.     sudo apt-get install python-tk
    16.     sudo apt-get install abiword
    17.     sudo apt-get install viewnior
    18.     sudo apt-get install gcalculator
    19.     sudo apt-get install scrot
    20.     sudo apt-get install synaptic
    21.     sudo apt-get install pi-package
    22.     sudo apt-get install wicd
  14. Download and install the ariata light theme from https://www.box-look.org/p/1321163/ 
  15. Download and install the Papirus Icon light theme: wget https://git.io/papirus-icon-theme-install | sh
  16. Download your prefered background and set with Nitrogen
  17. Set the Icon theme to Papirus
  18. Set the IceWM theme to ariata light
Software description and uses:
 
icewm - The desktop environment
lightdm - Login manager
xarchiver - Compression software
leafpad - Text Editor
pcmanfm - File Explorer
dillo - Web Browser
VNC-Viewer - Remote Desktop Client
midori - Modern Browser
gimp - Image Editor
nitrogen - Desktop Background setting
lxappearance - Desktop settings
vlc - Media Player
omxplayer, ffmpeg, tboplayer, python-tk - Youtube Downloader and player
abiword - Word Processor
viewnior - Image viewer
gnome-calculator - Calculator
scrot - Screenshot software
pi-package                                                 - The Raspberry Pi Package Manager
synaptic                                                     - A Software Package Manager
wicd                                                           - A Network Manager

other potential software:
Sylpheed - Email
Remmina - RDP
xrdp - RDP
rofi - Application launcher or window switcher
cups - printing

To complete the setup, personal key bindings for applications are to be setup such as Scrot, and menu options are to to customised. The login manager can also be styled to integrate with the rest of the look of the OS.

Future enhancements
There are numerous software packages which could be tested, to minimise memory usage and maximise speed. Visually, I think that Rofi could be very nicely integrated into this setup and could be very useful. As mentioned, keybindings should be setup to make use of the installed software such as scrot for screencapture etc. The menu items should be optimised and a menu editor should be installed for ease of customisation. Assuming that it won't be possible to stream videos from YouTube, an easier method of browsing YouTube, downloading and playing videos should be created. A possible fork of tboplayer may need to be created, focused on YouTube browsing. 

Final Thoughts
This setup starts up using about 100MB RAM which is very impressive. This may even be lighter than other super lightweight Linux versions when setup similarly such as Puppy Linux, Diet Pi or TinyCore. Considering that this is running on a Pi Zero, it's reasonably responsive. It is fairly usable for editing documents, light photo editing, emails, listening to music or watching some downloaded video. Remotely connecting to another machine via RealVNC works fairly well, but don't expect to watch youtube videos through the remote session as there is a bit of lag on the response. 

The major weakness of this setup though is the browsing performance. Whilst Dillo is very fast, and is just about usable to browse some sites such as Wikipedia, it does not support JavaScript. This means that many sites do not work properly or load at all. Midori is a reasonable browser, but is very slow on the Pi. It could however be a fallback when a modern browser is absolutly necessary. A possible alternative to Midori could be NetSurf, but this hasn't been tested as yet. Apparently supporting JavaScript and using a lightweight rendering engine, it might provide a more complete browser than Dillo. To watch YouTube videos, currently tboplayer is used to search and download the videos, but this is not ideal. The playback performance using omxplayer is very good, but the searching and browsing is very cumbersome. An alternative to downloading the entire video before playback may be to is to use VLC to stream and transcode the video, but this hasn't been tested as yet.

Overall though, it is still very impressive what can be achieved with a lightweight system like this and even if this isn't setup on a Pi Zero, it may be useful on more powerful hardware to maximise resources available. As an exercise in restraint, it shows just how much can be achieved when limiting the installed software to only what's required.


Twitter Delicious Facebook Digg Stumbleupon Favorites More