Review: Raspberry Pi 0 W

Review: Raspberry Pi 0 W

I have provided a brief look at the performance of the Raspberry Pi 0 W.  This was originally going to be a much more in depth review of this little pi board, but life really got in the way the past several months.  Anyway, I did manage to capture some interesting performance metrics of the RPi0W, including some benchmark comparisons to the Raspberry Pi 3, the Orange Pi PC, and the Orange Pi Zero.  I also captured some performance details on the wireless capabilities that distinguish this pi board from the original Raspberry Pi 0 (without the “W”).

The Raspberry Pi 0 W can be obtained from a number of places, including the below Amazon (affiliate) link. Enjoy Raspberry Pi 0 W performance!

A Look at DietPi: A Lightweight OS for Your Pi Board

A Look at DietPi: A Lightweight OS for Your Pi Board

DietPi caught my eye some time ago, but I really started to become acquainted with it when I reviewed the Orange Pi Zero recently.  It more than deserves a good review of its own, which is what this post provides.

DietPi logo

DietPi describes itself as “lightweight justice” with a “highly optimized minimal Debian OS” for your pi board.  There are several pi boards supported including variants of Raspberry Pi, Banana Pi, Orange Pi, NanoPi, Odroid, the new Asus Tinker Board, Sparky SBC (Allo), and even the RoseApple Pi.   It appears to leverage much of the work done by Armbian/Debian and provides its own tweaks coupled with tools for easy administration, especially its DietPi-Software tool.  So while it may be lightweight in terms of system resources, it is actually quite powerful in terms of overall user experience and administration.  And if that were not good enough, it has a pretty cool, if slightly intimidating, logo. 🙂

DietPi provides a rather staggering collection of useful tools for easy administration of the system.  These include:

  • DietPi-Software: a graphical interface to easily change configurations, change your preferred server software (ssh, file server, web server)
  • DietPi-JustBoom: audio setting (EQ and MPD)
  • DietPi-AutoStart: lets you choose what desktop or software to start when the system boots up
  • DietPi-Cron: manage cron jobs
  • DietPi-Process_Tool: adjust settings for various daemons/servers/processes
  • DietPi-Drive_Manager: detect and manage drives
  • DietPi-Update: to keep the system updated
  • DietPi-Backup: set up and manage rsync backups
  • DietPi-Sync: sync one directory to another
  • DietPi-Cleaner: remove unwanted stuff, like dev packages, manpgaes, files and logs, and apt cache
  • DietPi-BugReport: file a bug with DietPi
  • DietPi-CpuInfo: find CPU temperature, frequency ranges
  • DietPi-LetsEncrypt:  manage Lets Encrypt/free SSL certs
  • DietPi-MorseCode:  converts text into morse code

DietPi-Software in particular is an awesome tool, removing much of the manual ‘apt-get’ or other Linux commands that you would normally execute via command line.  Instead, you have a simple, intuitive, guided interface with automated scripts to install software or change system settings.

DietPi Installation & System Set Up

As usual, download the image for your pi board from DietPi download and put it on a microSD card using a tool like Etcher.  Stick in the microSD card, plug in an Ethernet cable, and then connect the power cord.  There are step-by-step installation and set up instructions available through a DietPi forum page.

Since there is no HDMI port on my Orange Pi Zero, I needed to access DietPi by connecting over the network using ssh:

ssh root@<IP address>

The password is dietpi.  (Please change the password for security reasons).

Once you log in, you will need to select OK at a GPL v2 compliance notice. DietPi will immediately begin an update process. When that it is done, it will let you know with another notice where you select OK to continue. DietPi will then reboot.

When I tried to ssh into the Orange Pi Zero after the reboot, I encountered an error that the ssh key had changed. So, I removed the key for the IP address of the pi board in the known_hosts file located in my .ssh directory.  After that I was able to ssh into the pi board without issue.  At this point, you are greeted with the DietPi-Software screen.

The DietPi-Software graphical interface

I easily changed my timezone and locale. I also changed my Audio Options, setting the 3.5mm jack as the default output. This caused DietPi to download and install some Linux packages, returning to the graphical interface once completed.

I had not preconfigured the WiFi, so I did this through the graphical tool. Enabling WiFi again caused DietPi to download and install packages, returning me back to the graphical interface with WiFi shown to be “Available | Enabled | Disconnected”. To connect to my WiFi router, I used the graphical tool to scan for my SSID, set the password, and apply the settings. DietPi connected to the WiFi right away.

On my little Orange Pi Zero, the WiFi was only a 6.5 Mbit connection, which was surprising as the very same pi board got a 19.5Mbit/s WiFi connection in my performance testing with Armbian. I was unable to change my country code from GB to US for an unknown reason.  To be fair, WiFi support is a known problem on the Orange Pi Zero regardless of the OS.  For my purposes, using the Ethernet connection was perfectly fine.  [Update 29 April 2017: An update to DietPi was released, and after applying the update on my Orange Pi Zero the WiFi performance is 19.5Mbit/s, just like I experienced with Armbian.]

Easy Software Installation

I really wanted to test out the automated software installation.  I did so by trying to get set up a variation of the pi board as music server idea that I have done before, but this time I wanted to remotely control the pi board to play music on its own attached speakers.  My Orange Pi Zero with the Zero Interface Board inside the black case was connected to the network and a nice set of speakers.  So, I selected MPD (music player deamon) and O!MPD (a web interface for MPD) from the Software Optimized menu in DietPi-Software.

To satisfy my software installation, DietPi went through an iterative process to automatically download and set up various prerequisite software and my selected optimized software. The final step for the software installation/set up was for DietPi to reboot. This process took several minutes but required no action on my part – you just have to be patient and let DietPi do its thing.

I accessed O!MPD using the url example provided by the DietPi forum entry (http://<IP address>/ompd). I did not have sound coming out at first, and I eventually discovered in alsamixer that the audio line out was muted. So after un-muting the line out, the music was blasting!

O!MPD rockin’ on DietPi

Conclusion: Installation of software on DietPi simply could not be easier.  If something like sound is not working, double check your settings.


For those who are not as fond of using the command line to ‘apt-get’ this and ‘nano’ that, DietPi seems to be a real solution to easily set up and manage your pi board.  For those of us that are more comfortable with the command line, DietPi makes it rather convenient to administer the system and enables us to spend more time enjoying our little pi board project or server.  Either way, it is a great resource to get your pi board doing something awesome.

Review: Orange Pi Zero, Expansion Boards, and Case

Review: Orange Pi Zero, Expansion Boards, and Case

The Orange Pi Zero with the H2+ SoC is a single board computer that was released in late 2016.  As the name would suggest, it is the Orange Pi equivalent to the Raspberry Pi Zero (and Zero W).  I recently got my hands on both versions of the Orange Pi Zero, one with 256MB of RAM and the other with 512MB of RAM, as well the two expansion boards and the official case.  I was able to spend some time testing out these pi boards and generally liked what I got for the money.

Orange Pi Zero (256MB & 512MB), Zero Interface Board, Zero NAS Board, and Case

The Orange Pi Zero is a great option for maker projects and IoT scenarios as long as you do not need a graphical desktop or connection to a monitor (there is no HDMI port).   The one disappointing feature so far was the wireless connectivity.  The Orange Pi Zero comes in two versions, one with 256MB of RAM and the other with 512MB of RAM.  They are about $7 and $8 respectively plus shipping on AliExpress (affiliate link).

My review of the Orange Pi Zero, how to get them running Armbian or DietPi Linux, the expansion boards and case, and performance details are in the pages linked below.





Orange Pi Zero Overview

Orange Pi Zero Performance

Available Orange Pi Zero Operating Systems and Setup

Orange Pi Zero Expansion Boards and Case




A Look at MINIBIAN: A Minimalist Image for Raspberry Pi

A Look at MINIBIAN: A Minimalist Image for Raspberry Pi

My way of celebrating Pi Day (March 14th = 3.14) was to take a look at an awesome little image for the Raspberry Pi called Minibian. A new edition of Minibian was released on 12 March 2017, updating the image with support for the latest RPi 3B and other improvements.

Minibian is based on and fully compatible with the official Raspbian “Jesse” software. It is meant to be used for embedded linux and server type situations, and that is great for IoT scenarios. There is no desktop environment and much effort has gone to providing a minimalist operating system that conserves system resources. The 12 March release of Minibian boasts a 15 second boot time, 31 MB of RAM usage, 477 MB of disk space usage, and is small enough to fit on a 1GB SD card. My test install and inspection of Minibian shows that these claims are indeed correct.

Side note:  The Minibian web site does not mention compatibility with the new Raspberry Pi Zero W. There is a comment in the SourceForge project discussions suggesting that support for the non-wireless Zero was added in January 2016, but no indication of Zero W support yet. If it does work, then the directions for setting up wireless below may also work for the Zero W. I am unable to test that now but hopefully I will be able to in the near future.


Installation of Minibian is done the same as a install of Raspbian. The image is available for download here and I recommend using Etcher to write the image to your microSD card.

Upon first boot you may get the message “Calling CRDA to update world regulatory domain” which you can ignore or remove by running the command below.  However, if you follow the instructions for wireless configuration provided further below, this error message disappears.

apt-get install iw crda wireless-regdb

To log in, the default user is root and password is raspberry.


To get wireless working, I derived the following process using Minibian’s wireless how-to instructions and RPi 3 how-to instructions as guides.

First, install Nano so that you can edit some files:

apt-get install nano

Then, open network interfaces for editing:

nano /etc/network/interfaces

Add the following to the interfaces:

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Create a configuration file for wpa_supplicant (if it does not exist):

touch /etc/wpa_supplicant/wpa_supplicant.conf

Now open the wpa_supplicant configuration for editing:

nano /etc/wpa_supplicant/wpa_supplicant.conf

Add the following, changing the values in quotes to match your wireless network:


Now do a “reboot”.  After the system is back up, log in run the command “ifconfig” and look for “inet addr” under interface wlan0 to find your IP address.

Beyond the Minimalism

I recommend adding raspi-config to your Minibian install for ease of administration and configuration.  Beyond that, other software that may you need is likely available with an ‘apt-get’ command.

apt-get install raspi-config


Minibian is really tiny, snappy, and barely uses the available system memory and disk space.  It is very effective at getting you just the base system that you need to run your pi board, then you can take it from there.  You are not forced into having a lot of extra fluff that comes along with the official Raspbian images.  I am definitely looking forward to using Minibian on a home automation project.

Happy Pi Day!

A Look at HASSbian: Raspberry Pi for Home Automation

A Look at HASSbian: Raspberry Pi  for Home Automation

One of the things that I really love about the Raspberry Pi and other pi boards is their ability to support all kinds of custom home automation solutions. You can make it interface will all sorts of things today, from your living room lights to your Plex server. I came across the HASSbian operating system for the Raspberry Pi, and had a look at it running my Raspberry Pi 3.

HASSbian is a Raspberry Pi image based on Raspbian that has been customized for an easy installation of the Home Assistant software. Home Assistant is open source software for automating actions in response to defined trigger events detected on your home network or internet services. Home Assistant supports connecting to a wide range of services and devices, which is all customized through a configuration file. Some of the more interesting components of Home Assistant for me include monitoring Plex, Chromecast, and FireTV, interaction with IFTTT, Amazon Echo, MQTT, and Kodi media player, and support for EcoBee, Nest, and GPIO for the Raspberry Pi.

Install HASSbian and Home Assistant

Getting HASSbian with Home Assistant set up and ready for your customization is as easy as writing the system image to your microSD card and booting up the Pi.  The system image is availabe for download from the Home Assistant installation page.  I recommend using Etcher to write the image to the microSD card.  Once that is done, put the microSD card into the Pi, connect up Ethernet and power.

The system will automatically resize the filesystem and reboot the system.  When the system first boots up, HASSbian automatically downloads and installs the latest release of Home Assistant, so allow for approximately 5 fives for this prior to doing anything else.  At the hassbian login, you can type the username pi with password raspberry in order to log in to the system.  Open your browser and navigate to http://hassbian.local:8123 to access the Home Assistant web application.  The web application enables you to see your monitored services and interact with your configured devices.

In user pi’s home directory is a directory called hassbian-scripts. This includes scripts for installing Mosquitto MQTT server, Samba (Windows file sharing server), CEC support, OpenZWave, and the install script for Home Assistant.  To run any of the scripts, do as follows in a terminal:

sudo ./<scriptname>

I installed Samba using the provided install script. This downloaded, installed, and configured Samba.  The Samba configuration makes the hassbian directory accessible over your network,  providing easy access to your configuration.yaml file.

Adding Devices, Triggers, and Actions

Setting up devices and interactions with these devices and internet services are done by editing the configuration.yaml file.  It is curious that configuration changes are not possible through the web application, but the configuration changes can be rather easy. For example, if you copy and paste the Plex service configuration snippet into the configuration.yaml, restart Home Assistant, and you have Plex running, it will automatically discover Plex and provide you with a widget in the web application.  As you want to do more complex things with Home Assistant, then the configuration edits you make will get more complicated.  The Home Assistant web site does provide rather good samples and examples are not hard to find with some Googling.

After you make any configuration changes, you will need to restart the Home Assistant server.  You can do this through the web application or in a terminal with the following command:

sudo service home-assistant@homeassistant restart


HASSbian makes getting a Home Assistant up and running on a Raspberry Pi a rather trivial activity, and it is great way to get started with home automation.  Being essentially a customized Raspbian operating system, there are no issues with the system working correctly on your Raspberry Pi and there is no shortage of support available.  The Home Assistant web site provides good information on setting up your devices and service, while the online samples can help to get you started quickly.  Altogether, HASSbian makes it easy to get started on your custom home automation solution.  If you are interested in doing a home automation project, then HASSbian is something worth a try.

A Look at Ubuntu MATE 16.04.2 LTS for Raspberry Pi

A Look at Ubuntu MATE 16.04.2 LTS for Raspberry Pi

The release of Ubuntu MATE 16.04.2 for the Raspberry Pi 2 and 3 was announced recently. The MATE desktop is essentially a continuation of the traditional Gnome 2 desktop environment. Combining the MATE desktop with Ubuntu gives you an experience that is almost identical to the early days of Ubuntu, prior to the switch to Unity. This was interesting to me as I like the more traditional experience of MATE and I also think that this version of Ubuntu MATE has good potential to be a Raspbian alternative on pi boards. So I gave the Raspberry Pi image a test run.

While I saw some good things including a lot of potential in the Raspberry Pi image of Ubuntu MATE, I unfortunately encountered a lot of problems. It was not the experience that I was expecting from a Long Term Support (LTS) release. Just to be sure that I hadn’t done something silly, I downloaded the 16.04.2 image twice to ensure that it was right image and I cycled through a couple of Class 10 microSD cards. I have no doubts that a lot of effort and good work has gone into creating the special build, but my test run experience quickly indicated that there are some underlying system issues and the system needs a lot of attention around software installation and updates.  So instead of a full review, this is more of an overview along with a summary of the issues that I encountered.


Installing Ubuntu MATE onto my Raspberry Pi 3 was straight forward. You can easily use Etcher to write the image to a microSD card, the partition is automatically resized to fill your microSD card when the pi is powered up for the first time, and then you are sent through a typical guided installer. Installation takes several minutes and finally the system reboots and you arrive at the desktop. A Welcome app provides some good information on Ubuntu MATE, including a section specific for the Raspberry Pi.

The Welcome app explains that the while the system is based on Ubuntu MATE and uses Ubuntu armhf base, it is in fact using the same kernel as Raspian. It also turns out that a whole set of Raspian software has been ported over such as raspi-config, rpi.gpio, sonic-pi, python-sent-hat, omxplayer, etc. I got in a very simple couple of tests that showed that GPIO control worked.

Ubuntu MATE for Raspberry Pi provides an interesting combination of standard desktop applications along with Raspberry Pi focused applications. Firefox, LibreOffice, Terminal, and Control Center start and work as expected. Some familiar apps like Scratch, Pi Sonic, and Sense HAT Emulator come installed and operated normally for me in some quick experimenting. I enabled ssh using raspi-config and successfully connected to the pi board from my laptop. So the install system, as is, feels and behaves rather well in my experience.

But, there are definitely some issues lurking.


A minor issue for me is that wireless doesn’t work on the first boot after the system is installed.  This is a known issue referenced in the release notes and wireless works on subsequent boots.  Nonetheless, that is strange and can be disconcerting for someone new Ubuntu MATE.

The big issues that affected me involved installing and updating software. I encountered problems first from within the Welcome app’s Getting Started section for Updates and Extras. With that you can check for software updates using Software Updater. You can also install additional software including codecs for playing MP3 files, DVD playback support, additional screensavers, and Community wallpapers.

I tried checking for software updates and I got an error stating that I didn’t have enough free disk space, even thought there was ample free space on my 32GB SD card. The update process wanted to use the small boot partition, however. I tried accessing Software Updater from the MATE menu and again I got the error. So, Software Updater just doesn’t work.  Judging by the Ubuntu MATE forums, I am not the only one to have encountered this issue.

I continued on and hit a snag with the DVD playback support. I don’t know why I would need it, but hey the option was there! The installation process errored out stating that “Package libdvdcss2 isn’t available.” But if you open MATE Terminal and do a ‘sudo apt-get install libdvdcss2’ then you’ll find that the package is there.

There is an area for installing Additional Drivers with sections for Graphics, Wireless and Bluetooth, and Printers. There were no additional drivers to install. Installing a Firmware Package did install some software, which appears to be the b43-fwcutter package (Broadcom firmware). This did not make the wireless start working and I continued on. Oddly, the text under graphics states the Welcome app is unable to identify the graphics vendor of the Raspberry Pi!

I wanted to know if the issues with WiFi persisted and if I could install updates, so I rebooted the Pi. Wireless did work! And in order to install updates, I opened MATE Terminal and did the usual:

sudo apt-get update
sudo apt-get upgrade

The upgrade was in the middle of installing package updates when the system crashed. It seemed to try and reboot and that failed. This is was pretty alarming. I pulled the power out and reconnected it which then resulted successful boot up. This problem happened again on me twice as I tried the different downloads of the image and SD cards, and it once led to a system that would not boot up!

The Welcome app provides you a note that since this image of Ubuntu MATE uses the kernel from Raspbian, you can’t update the kernel using the usual methods (like apt-get). Instead, it tells you that you have to use the rpi-update command. What it doesn’t tell you is that doing this is often a rather bad idea as it can cause you problems. I went ahead and tested this once which bumped the kernel to rpi-4.9.y and upon restart the system failed to boot.


I see plenty of good work and lots of potential in the Ubuntu MATE image tailored for the Raspberry Pi 2 and 3.  I like Ubuntu MATE, I like pi boards, and the two together is a wonderful thing.  Unfortunately, my experience with testing out the Raspberry Pi image showed that it isn’t quite stable underneath.  It isn’t there yet to be considered as a serious alternative to Raspbian.  I believe that it can get it there, I want it to get there, and think that some day soon it will.  I am rooting for it.

I will continue to look through the forums and bug reports to find others that have had issues like mine.  Where I can’t find any trace of bug reports, I will do my best to capture the issue and report it.  I would be interested to know if you had similar issues, filed a bug report, or found any fixes.  Please add a comment to let me and others know.

Enjoy your pi board!

Orange Pi as Time Machine Server

Orange Pi as Time Machine Server

One of my projects has been to organize automated backups of the various computers in the house.  This includes a couple Macs with some precious data on them.  So, I decided to put my inexpensive Orange Pi with Armbian Linux to the test, with the goal of getting Time Machine working over the network to a USB drive attached to the pi board.  That being the case, I discovered and successfully installed Netatalk.

Netatalk is open source software that acts as an Apple file server.  With a combination of Avahi and Netatalk running, your Mac can discover your pi board on the network and will even consider it to be a “Mac” type device.  This enables you to connect manually to the network drive but more importantly it enables Time Machine to find and use the remote drive.  The below guidance may help if you if you wish to set up a similar backup capability for your Macs.


To set up the USB drive, I first experimented with an HFS+ formatted file system.  Unfortunately, I could never get write permissions working.  So, I opted instead to create an EXT4 filesystem and ensured that my user “pi” had read/write permissions.  There are many ways to format a drive but my preferred (and recommended) method is to use gparted whenever possible.  Since gparted is included with the Armbian desktop, that I what I used.

I wanted this drive to be automatically mounted to the same location every time the pi board boots or the USB drive is connected.  So, I created a location for it to be mounted, made a “tm” directory for the actual backups, and changed the ownership of “tm” to user pi:

cd /mnt
sudo mkdir timemachine
cd timemachine
sudo mkdir tm
sudo chown pi:pi tm

Then I opened a terminal and edited /etc/fstab…

sudo nano /etc/fstab

…and added a line at the end for the device  (in my case, is it sdc2):

/dev/sdc2 /mnt/timemachine ext4 rw,user,exec 0 0

You will need to install some prerequisites packages via command line, some of which may already be installed on your system:

sudo apt-get install build-essential libevent-dev libssl-dev libgcrypt11-dev libkrb5-dev libpam0g-dev libwrap0-dev libdb-dev libtdb-dev libmysqlclient-dev avahi-daemon libavahi-client-dev libacl1-dev libldap2-dev libcrack2-dev systemtap-sdt-dev libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev libio-socket-inet6-perl tracker libtracker-sparql-1.0-dev libtracker-miner-1.0-dev hfsprogs hfsutils avahi-daemon

Install & Configure Netatalk

The next action is to download Netatalk, extract the downloaded archive file, and navigate to the Netatalk software directory:

tar xvf netatalk-3.1.10.tar.bz2
cd netatalk-3.1.10

Now you need to configure, make, and make install the software.  In the netatalk-3.1.10 directory, run the following configure command and be prepared for it to take a bit of time:

./configure --with-init-style=debian-systemd --without-libevent --without-tdb --with-cracklib --enable-krbV-uam --with-pam-confdir=/etc/pam.d --with-dbus-daemon=/usr/bin/dbus-daemon --with-dbus-sysconf-dir=/etc/dbus-1/system.d --with-tracker-pkgconfig-version=1.0

When that finishes, run:


Be prepared for this to take a rather long time to complete.  Seriously, grab a cup of coffee or something.  When that is finally done, run the following command:

sudo make install

That should complete in a brief moment.  Now you can verify installation and also find the location of configuration files with the following two commands:

sudo netatalk -V
sudo afpd -V

You will need to edit your afp.conf file so that your time machine backup location is defined, your user account has access to it, and to specify whether or not you want Spotlight to index your backups.

sudo nano /usr/local/etc/afp.conf

As an example, my afp.conf includes the following:

[My Time Machine Volume]
path = /mnt/timemachine/tm
valid users = pi
time machine = yes
spotlight = no

Finally, enable and start up Avahi and Netatalk:

sudo systemctl enable avahi-daemon
sudo systemctl enable netatalk
sudo systemctl start avahi-daemon
sudo systemctl start netatalk

Connecting to the Network Drive

At this point, your Mac may have already discovered your pi board and network drive. Open Finder on the Mac and see if you have something like this:

You can also connect to the server by host name or IP address, for example:


Time Machine Backup

And at last…open Time Machine on the Mac, and select disk, and choose your Orange Pi.

This set up will definitely work and the Orange Pi handles the process like a champ, but keep in mind this may not be the fastest of backups.  But it is easy, inexpensive, and ‘just works’ like it should.  If you have success or improvements for this type of set up, please comment below or send me a note.

Orange Pi boards are available at Amazon (affiliate links):



VPN/iptables:  Jonas provided the following feedback and it is shared here is case you run into the same issue.  Thanks Jonas!

I had some problems with an assert firing when I try to start the avahi-daemon. Turns out, it was because I was rejecting all traffic not going through a permanent VPN connection.

The solution was to add an iptables rule opening port 5353 for the mDNS before rejecting packets:

sudo iptables -A INPUT -p udp -s x.y.z.0/24 --dport 5353 -j ACCEPT

replacing xyz with your local subnet (usually 192.168.)

resulting in following ruleset:

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere <vpn server address>
ACCEPT all -- anywhere loopback/8
ACCEPT udp -- x.y.z.0/24 anywhere udp dpt:mdns <-- important
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable


Make error:

If you get an error at the ‘make’ stage having to do with libatalk/acl, try this:

cd libatalk/acl
make clean

Then return to the netatalk directory do a ‘make’ command again.


Retro Gaming with RetrOrangePi 3.0

Retro Gaming with RetrOrangePi 3.0

Retro gaming consoles are quite popular now, but these deives are typically locked down, have a preset and unchangeable selection of games, and their availability may be limited. Often for less money and using a pi board, you can have much greater freedom to play the games you want from all the popular gaming consoles of years past. Setting up a pi board as a retro gaming console is easy and inexpensive, with no Linux expertise really needed, as the this brief review and set up guide for RetrOrangePi demonstrates.

RetrOrangePi is a retro gaming system that enables you to play games made for older gaming consoles like Nintendo, SEGA, Atari, etc. It is designed for the inexpensive Orange Pi family of pi boards plus some other boards with the H3 processor.  It is analogous to the RetroPie image for the Raspberry Pi, but going the RetrOrangePi/Orange Pi route can be cheaper.  Version 3.0 of RetrOrangePi was release in late December 2016, and 3.0.1 is available for download at the time of this writing.  This release includes RetroPie 4.1, Emulation Station, Kodi 17 (Krypton), RetroArch/libretro, plenty of retro game theming and tailored tweaks for a gaming ready system, all riding on top of a full Armbian operating system.  From a software standpoint, it is everything you need packaged up nicely.


To run RetrOrangePi, you need an Orange Pi, obviously. Some of the following compatible pi boards are as follows (affiliate links):

A microSD card is required (16GB card) You’ll also need a power supply compatible with your board, a gamepad, and an HDMI cable. For example (affiliate links):

Optionally, you may want a case for your selected pi board.  A keyboard and mouse are not strictly required, but you may want one if you ever use to the Armbian desktop.

Set Up

Download RetrOrangePi and put it on your microSD card using tool like Etcher.  Stick the microSD card into your pi board, hook up the HDMI cable and your gamepad. Power on the pi board.

You will be greeted with a retro game theme introduction screen. While enjoying that, the software resizes the SD card image and restarts the system into RetrOrangePi.  The system boots up directly into the Emulation Station interface without the need to log in. You will be prompted to assign buttons for gamepad in Emulation Station.

At the initial RetrOrangePi screen, I hit Enter on the keyboard to continue but I later found that eventually it will continue on to Emulation Station on its own if you are patient.

First Impressions and Observations

It is a very nice, smooth, and well thought out experience.  I love the way that the developers have set retro game music to play while you are in Emulation Station. For convenience, windows file sharing (Samba) of the ROM directories is already set up and accessible on your network.  In general, USB gamepads should be automatically recognized and configured for immediate game play in the emulators.

Several of the more popular systems show up in Emulation Station by default:

  • Amiga
  • Apple II
  • Dreamcast
  • MAME
  • Sega MasterSystem
  • Sega Mega Drive (Sega Genesis)
  • Nintendo 64
  • Nintendo Entertainment System
  • PSP
  • PlayStation
  • ScummVM
  • Super Nintendo Entertainment System

Also included is Ports with the following games:

  • CannonBall (Outrun engine)
  • Cave story
  • Doom
  • Duke Nukem 3D
  • Goonies 20th anniversary
  • Open Beats of Rage (OpenBOR)
  • Prince of Persia – SDLPoP
  • Quake (tyquake)
  • Super Mario War
  • Wolfenstein3D
  • Zelda engine – Solarus

Additional game console emulators will appear in the Emulation State menu automatically after you add at least one game ROM for the emulator. You have to restart Emulation Station in order for new games to be found.

Game Play and System Performance

I used my Orange Pi PC and spent a fair amount of time testing out various games, and then my kids and my niece discovered that we had a new game system.  Between the four of us, we played quite a few games and really put RetrOrangePi to the test.  I am quite impressed with the performance.  I never saw any stuttering or slowness in the games, and the audio was flawless.  The games just played like they should.  On the Sega Genesis (Mega Drive), NES, and Atari 2600, the experience truly did feel just like when I was younger and played on those gaming consoles.

I did not extensively test out Kodi, but it came up quickly and ran smoothly in my brief testing.

And as for the kids, you would think that they would be okay playing with the Minetest server that I set up for them, but they quickly took control of my retro gaming system and were thoroughly enjoying themselves. So, I guess that this project is a success!

Free Minecraft-like Family Gaming on Your Linux Pi Board

Free Minecraft-like Family Gaming on Your Linux Pi Board

My kids love to play games! Tablets, phones, PCs, you name it. However, I don’t like for them to connect to remote online servers, chat with strangers, or possibly encounter any kind of advertising. I’ve also been reluctant to pay for games when there are free alternatives available. So, I decided to see if I could make the kids happy with a Minecraft-like game while also leveraging a pi board running Linux.

I quickly discovered Minetest, which is free and open source software that is inspired by Minecraft. There are free apps for your desktop and for Android. You can participate in multiplayer games by connecting to a gaming server hosted online or your own computer. There may “worlds” available to download and explore, as well as several game mods to tweak the experience. It may not be quite as polished in some ways as Minecraft, but it is plenty good enough in my opinion and just plain good fun. I decided to give Minetest a try with my Orange Pi as the gaming server to support multiplayer games for my kids. And who knows, maybe the kids would think that their dad is kind of cool for setting up their own private gaming server!

Well, let me tell you that it was not so quick and easy for me to get Minetest installed and working exactly the way I wanted. I learned a good deal from online resources like the Minetest forum, but also from some experimentation. The version of Minetest available in the Debian and Ubuntu package repositories are not the latest stable version, and based on my observations may be a bit buggy. I ended up installing the software from source and modifying the configuration to my liking. The guidance below may help you out if you want to have your own free, private Minecraft-like home gaming experience for your family that is under your control.

I downloaded and installed the Android app on several devices in the house, and it was here that Minetest sometimes let me down. On some Android devices, it ran flawlessly. On others, the app would crash when attempting to connect to the Minetest server. The only way to find out if the app will work with a server is to test a connection to one. You may want to test the app on your Android device connecting to one of the public servers before you commit to installing the Minetest server. In my case, enough devices that the kids use worked out, so I went ahead.


The below guidance assumes that you are running Armbian, but it may also work on Raspbian/Raspberry Pi. With some minor difference, this should also work for Ubuntu/Linux Mint.

First, install some dependencies. In a terminal window, run:

sudo apt-get install -y git build-essential libirrlicht-dev libgettextpo0 libfreetype6-dev cmake libbz2-dev libpng12-dev libjpeg62-turbo-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev libogg-dev libvorbis-dev libopenal-dev libcurl4-openssl-dev libluajit-5.1-dev liblua5.1-0-dev libleveldb-dev

Next, navigate to a directory where you want minetest to be installed and download the source code for minetest and minetest_game:

cd <your preferred directory>
git clone
cd minetest/games/
git clone
cd ..

You should now be in the minetest directory. Run the following to build minetest:

make -j$(nproc)

This will take a long time…so go get a coffee or something and relax. When completed, the process will inform you that minetest has been installed in the bin directory inside your minetest directory.

Next, build minetestserver:


This will take some time again but not quite as long…so, maybe a second cup of coffee? Once completed, you will also have minetestserver in the bin directory.

If you want to adjust the settings for your minetest gaming server, there is a sample config file in your minetest directory called “minetest.conf.example” to use as a starting point. I made my minetest.conf and adjusted it to allow for user privileges such as “fast” and “fly” because who doesn’t dream of flying! I simply put the config file in the bin directory along side minetest and minetestserver for convenience. If you want to have such a config file, edit it, and use it for multiplayer gaming, then do something like this:

cd <directory where you want the config file> (e.g. cd bin)
cp ../minetest.conf.example .
mv minetest.conf.example minetest.conf
nano minetest.conf (make your edits and save)

I chose to not announce my minetest server to the public server list (I’m keeping it private). Some examples from my config include, especially the privileges that let the kids fly through the worlds they explore:

fast_move = true
default_privs = interact, shout, fast, fly, kick
enable_fog = true

See also the Minetest wiki page for minetest.conf.

In order to run your minetest game server, do as follows from the bin directory (for world, I used OrangePI):

./minetestserver --config minetest.conf --gameid minetest --world <your world name>

You should see output on the terminal telling you that Minetest is running, including a little Minetest logo.

Installing and Connecting Clients

Minetest can be installed and run as a client on Windows, Linux, and Mac desktops. See the Minetest download page for general guidance.

On Android

There is an Android app available in the Google Play store.  Download and install on your Android device.

On Macs

I installed Minetest on a couple of Macs in the house running MacOS Sierra using the latest version homebrew like this:

brew install homebrew/games/minetest

Please note that xquartz is required on the Mac, and so you may need to install that first.

On Linux

On Linux Mint 18.1.1, I followed the same install instructions as for Arbian, except that I had to substitute the package libjpeg8-dev with package libjpeg62-turbo-dev. (I also did not install minetestserver).

On each device, I set Minetest to point to the server “orangepipc” with the default port of 30000. I provided a login (and no password).

Game On

The game performance for the kids (and for me) has been good. I haven’t seen any hiccups and the Orange Pi PC board is handling the little bit of extra load without issue. My little one especially thought that this was awesome and is having a blast. I hope you enjoy your gaming experience on your pi board!

Pi Board as Music Server

I was hit with a bit of nostalgia recently, and I recalled some good old days when I was streaming my favorite music from a local server while I worked, was doing some school work, or was just generally web surfing.  At work, with the help of my buddy, I had Subsonic running. At home, I also had a Firefly running in a FreeNAS server. Somehow all this went by the wayside over time, so I thought to myself…why not set this up on my Pi?

To recreate the general experience of the good ol’ days, I set up Madsonic and forked-daapd. I thought that was an interesting mix of old and new (to me) in that both of these music servers are forks of the ones that I used to have. Madsonic is a fork of Subsonic and is a great web-based music streaming application. Forked-daapd is a fork of mt-daapd (FireFly) that works with iTunes and Roku devices.  So, below is my set up process based on some guidance from those open source projects and my own installation experience.

First, you will need to get your music on your Pi board. I used an available USB drive that was large enough for my purpose. For guidance on how to add such a drive and get it to automatically be available each time your pi boots up, see a straight forward online tutorial such as this one from or this one from

Part One:  Madsonic

Make sure that you Java installed first as Madsonic requires it (I installed Java 8), and refer to the Madsonic web site for general installation guidance if needed.

In a terminal window, install some prerequisites.

sudo apt-get install libav-tools xmp lame flac -y

Download the latest stable release of Madsonic:


Install Masonic:

dpkg -i 20161001_madsonic-6.1.8740.deb

Now, open a web browser and navigate to Masonic on your Pi:

http://<your Pi's IP address>:4040

Log as admin with password “admin” and change the password immediately.  In the admin settings, you will need to provide Madsonic with the location of your music.  Your Madsonic should look something like this…

Part Two:  forked-daapd

After your music location is set up, open a terminal window and use the following command to install a slew of required and optional packages:

sudo apt-get install build-essential git autotools-dev autoconf libtool gettext gawk gperf antlr3 libantlr3c-dev libconfuse-dev libunistring-dev libsqlite3-dev libavcodec-dev libavformat-dev libavfilter-dev libswscale-dev libavutil-dev libasound2-dev libmxml-dev libgcrypt11-dev libavahi-client-dev zlib1g-dev libevent-dev libjson-c-dev libprotobuf-c-dev libcurl4-openssl-dev libplist-dev libpulse-dev

And install forked-daapd:

sudo apt-get install forked-daapd

Answer “Y” to install any remaining dependencies that may still need to be installed.

Next, open the configuration file.

sudo nano /etc/forked-daapd.conf

Edit the following setting so that points to your music directory. For example, my directory was “/mnt/srv”.

edit directories = { "<your music location>"}

Depending on where your music is located, you may need to check that forked-daapd is running as a user with permissions to the music directory.

Restart forked-daapd:

sudo /etc/init.d/forked-daapd restart

Now, open up iTunes, Rhythmbox, or whatever you have that speaks iTunes or Roku and your music server should appear. For example, iTunes saw “orangepipc” and “raspberrypi” instantly.  Music playback for me great with no hiccups.


Part Three:  Enjoy

You are all set to rock to some tunes in your browser or in an app like iTunes.  Play some music and enjoy, just like back in the day before all this cloud service stuff came along.  🙂