Hands-On with the Raspberry Pi Zero, part 3: Software

With the hardware basics out of the way, it's time to take a look at the software: Raspbian Linux.

In part one of this mini-series I talked about the trials and tribulations and eventual joy of ordering and receiving a Raspberry Pi Zero. In part two I looked in more detail at the Raspberry Pi Zero hardware, and some issues and possibilities with configuring it and connecting peripherals. Now it's time to move on and look at the software.

I'm going to write this post in what I consider to be backwards order. There are quite a few technical considerations related to choosing what operating system to install (or even what operating system it's possible to install), but I am going to put off slogging through all of that and just dive into installing and running Raspbian, because I believe that will be the most common case.

I mentioned in the previous posts that new versions of NOOBS and Raspbian showed up on Raspberry Pi Downloads last week, and -- as I had guessed -- one of the most important features of this new release is support for the Raspberry Pi Zero. Today there was finally a Release Announcement, which gives some details about that and other changes.

To get the latest Raspbian release of the Raspberry Pi software, go to Raspberry Pi Downloads. There you will find two choices to download: NOOBS and Raspbian (I'm going to ignore all the Ubuntu/Windows/openElect/OSMC stuff for now).

NOOBS provides a simple way to install the latest Raspbian (jessie) release to an empty SD card, and it can even be done from a Windows system. Basically it just consists of unpacking a zip archive onto the empty SD card, and then booting it in the Raspberry Pi. The Pi installer will then take care of all the nasty details of getting the SD card partitioned, formatted and loaded with the correct software in the correct places.

The alternative is to directly install Raspbian to the microSD card. This procedure lets you choose between the latest version (Debian jessie) or the previous (Debian wheezy) -- although I doubt that the wheezy version includes Pi Zero support, so I would not recommend trying that.

Raspbian LXDE Desktop

Whichever way you choose to install Raspbian, when you boot the installed system for the first time it will come up in GUI mode. Old hands will remember that the first boot used to come up in CLI mode, or at least ask you which mode you wanted. It seems that GUI has won, and if you want a CLI boot you have to run through the Configuration utility as described below. Whether this is a good thing or not seems to still be open for discussion.

Keeping in mind that my objective here is to look at what's new/different/interesting specifically about the Raspberry Pi Zero, I'm going to resist the urge to explore and explain the desktop for now. I will just say that this is an LXDE desktop that has been very nicely customised for the Raspberry Pi.

This screenshot was taken using an old 1,280-by-1,024 monitor that I salvaged from my scrap room. After taking this shot, I shut down and connected a new 1,920-by-1,080 monitor, and it was recognized and properly configured as well.

While I was dealing with the display resolution, which required multiple reboots, I began to wonder about the speed of the Pi Zero. It seemed pretty slow, but this is most likely because, well, it is pretty slow compared to the Raspberry Pi 2, and of course compared to the 'normal' systems I use. But was it 'too slow', or 'abnormally slow'?

The Raspberry Pi Zero uses the same processor as the original Pi series with a 40 percent higher clock rate (1GHz vs 700MHz). But I recall that there was a configuration parameter to set the clock rate (so that the original could be 'overclocked'), and I wondered if this might be interfering with the newer CPU.


One simple way to check this, and generally keep an eye on it, is to add a CPU Frequency Monitor to the top panel. That's easy enough to do; just right-click on the panel, choose Add, and find CPU Frequency in the list.

The CPU Frequency monitor is added to the right end of the panel, and when you hover on it with the mouse it shows the current clock rate and the governor that is configured. The CPU frequency for the Zero will be in the range of 700MHz-1GHz, and the governor will be ondemand.


This means that when the CPU is idle, the clock rate will be reduced (to save power and reduce heat), and when the CPU load goes up the clock rate will be increased for better performance. There is a CPU Load monitor on the initial panel, so you can see the correspondence between the load and frequency pretty easily.

I have mentioned the Raspberry Pi Configuration utility a couple of times already, so let's take a look at that. You will find it in the Menu, under Preferences.

Raspberry Pi Configuration

The System tab comes up first, and there are several interesting fields in this group. The first, which I mentioned above, is the selection of Boot to Desktop (GUI) or CLI.

Just below that, you can choose if you want to automatically login the default account (pi), or boot to a login prompt.

The final option in this group is Rastrack, which is a rather ambitious project to keep a database of Raspberry Pi systems worldwide, with an associated map of where/how many are installed. This reminds me of the days that I used to go to Usenix conferences and we had lists and maps of every Unix system connected to Usenet... Anyway, if you want your Zero to be on the list, this is one way to do it. Another would be to go directly to the Rastrack website.


The Performance tab is where you will find the Clock rate. As I have already confirmed above, the Zero will run by default at 1GHz when needed, even though you'll find that the default clock rate set here is 700MHz. The maximum value here is 1GHz, and I don't yet know whether this control is simply not effective on the Zero, or perhaps setting it up from 700MHz to 1GHz might enable some sort of overclocking... but I haven't seen any indication of that in the actual clock speeds shown in the CPU Frequency monitor.

You can also allocate more memory to the GPU in this tab. Since the Zero only has 512MB, I wouldn't get too carried away with this.


The Localisation tab is worth a visit, especially if you aren't using a US Ascii keyboard. This is another item that used to be taken care of during the initial boot-configuration process that has now disappeared. So now you have to come here to change it, or else you need to be good enough with Linux to know how to set it yourself in the configuration files.

OK, that gets us through the initial boot and configuration, so the Zero should now be usable. I have just a couple more general comments about administration for today.

First, package management -- both for selecting and installing new packages and for keeping the system up to date. In the basic installation it's expected that the administrator will use the CLI access to apt-get for this. As I am rather fond of the synaptic GUI utility for this purpose, I always install it as one of the first steps on a new system. The CLI command for that is:

apt-get install synaptic

That has to be run as root, or via sudo, of course. This will install a number of dependent packages and libraries, which will take about five minutes or so. When it finishes, the Synaptic Package Manager will appear in the menus, and you will be able to use that for package management and updates.

It's important to keep up with Raspbian updates, especially because there seem to be more and more important security updates all the time (Heartbeat, Shell Shock and so on). If you choose to stay with the CLI approach, the commands you will use for this (again as root or sudo) are:

apt-get update; apt-get upgrade

The first of those will simply update the package list, but does not actually install any updates (there is some unfortunate confusion on this because of the name). The second command will actually download and install any available updates.

Synaptic Package Manager GUI

If you have installed Synaptic, the same two operations are performed by clicking Reload to update the package list, then Mark All Upgrades, and finally Apply. You will be presented with a list of changes and dependencies and asked for confirmation after the Mark and Install steps.

If you're interested in seeing exactly what updates are available before installing them, you can first Reload, then go to Status and click on Installed (upgradable).

I have one last comment/suggestion to make about the initial installation. The default web browser included with Raspbian is a customized version of Gnome Web (a.k.a. Epiphany). There was a post in the Raspberry Pi blog at the time this browser was released, and there is also a blog post by Marco Barisione discussing the implementation details.

Some users (myself included) actually became quite fond of the Midori browser. Although it's no longer included in the base distribution, it can still be installed quite easily. From the CLI:

apt-get install midori

If you have installed Synaptic, just search for Midori and select it for installation.

So, that's it for another day. There will still be one more post in this mini-series, because I want to go through some of the technical details about installation possibilities and alternate operating systems.

Read more on the Raspberry Pi Zero