Running HiFi on the Raspberry Pi


After ordering the more recent Raspberry Pi 2 and battling the QT5 demon, I can say the domain-server and assignment-client work surprisingly well on the simple $35 computer. Compiling time wasn’t even that long and using Ubuntu Trusty, I was able to just use most of OmegaHeron’s build process to get the job done (QT5 had to be compiled due to the latest from the repository being 5.2.1, just shy of the required 5.3.2. It should be noted I built High Fidelity using QT5.4 release).

While I was updating my blog regarding the process (and struggle) of getting High Fidelity to work, my host and I aren’t agreeing so all I have are my backups. The biggest struggle was getting QT5 to compile, but thankfully the only errors were with extra components that weren’t needed. I’ll have some instructions on how to properly get it working , but I have noticed one odd problem: for some odd reason, after an agent connects, the entity-server, audio-mixer, and avatar-mixer like to become queued assignments until the server is restarted. I have also noticed that I get an error with the latest client about it being out of date, so I will have to grab the update and build again.

I’ll have more to update soon, once I trim the excess steps in the compile process.

EDIT: For those who do NOT want to scroll around, here is the link to my tutorial:


Sounds promising, I’ve got a unit to move my domain onto.
Look forward to any notes, I’d like to try it out as well.


I still seem to be running into that strange issue where the server kills all nodes within the first few minutes. I updated the CentOS build and that doesn’t have the problem, so I’m sure it has to do with the Pi build specifically. Since I did a lot of running around with getting it working, I am going to backup my current image and try again without all the experimenting. I think it has something to do with the wrong qmake being called but I can’t fully verify that.

For now, I’ve only had some success with the newer Pi2. On a regular Pi, it gets up to the compilation of TBB before it moans and groans about lacking an armv7 CPU. I’ve heard people cross compiling to get around it, so I’m going to assume that if that can be done, it is possible to run on at least the Model B series (I cannot say the same for Model A series of the Pi 1).


There’s a way around the tbb issue - you have to look at its includes and add a conditional for if ARM cpu and not v7 then use generic support.

I have it running on old B model, but, it has issues. Models don’t persist and some other weirdness related to threading.


Hmm, when I was looking at it, I hadn’t noticed the generic support. I’ll have to poke at it again. on the Model B that I was using to originally compile.

One thing I’m beginning to notice is that the domain-server gets some request it cannot handle and that is when the cascading of the nodes begins to happen. I still have to check my centOS build to see if the same error persists, but so far, on at least the Pi2, you can safely run the combo together without too many issues.

Now if the stuff gets stabilized to where it runs just like a normal build, I wonder how well a cluster of Pis with some being domain-servers and others being assignment-clients would work…


Have you tried this image?

I’ve found it the best so far for Ubuntu.


wow. I got 5 pi2 and when I get the time I will try first Opensimulator then HiFi. I was going to use to use them for autonomous agents but maybe I would hold off for a while. There is not much room but the processors can handle more.


what the best for Pi2, Raspuntu or Snappy Ubuntu Core or it doesn’t matter? yes, I will do a cluster of Pi2 with four of them. I got all the hardware for them. the 5th one is more general and has Wi-Fi. I will kill it first.


How is the performance of the pi2 for a domain server? Did you use network NFS for storage or local SSD, flash?


Sorry for the late response. PC issues, website issues, all of the issues!

Well, local performance wise, things work pretty well! Audio and everything works fine out of the box until a rather odd bug happens where the domani-server will make ALL nodes go inactive. I’m doing some testing using my CentOS build and seeing who is the trouble maker on the platform (the domain-server or assignment-client).

Storage-wise, I am using the local SD card for everything. I went big and used a 32GB (it was to be a 64GB, but one bad eBay purchase later…). Most of the room is needed due to needing to compile QT5 on the Pi, since the version from the repository is not good enough (I think it was 5.2.1). I’m sure you can get away with using a 16GB to do the ENTIRE operation, but I am going to look into making a depository package for QT5 to save everyone the headache (and time).

As for the operating system, I used Ubuntu Trusty, which someone made a minimal build which made development MUCH easier (fast bootup, minimal resource usage, etc). It also made following the Ubuntu build instructions pretty much the basis on how to get things going (except the part of adding additional repository and having to build QT5 yourself).

Again, I apologize for the lack of information. I was updating my blog regarding progress with the build but my host is playing hard to get and is giving more of a headache than when I tried compiling HiFi on the regular Pi. More to come soon!


After some running around and finally nailing the process, HiFi on the Pi(2) is working very well now. I will have some more notes later about the entire build process (Uploading my image to Dropbox now to be safe) and will keep my dev Pi online for further testing. With server echo active, I don’t notice anything unusual and the system seems to be running very well with 5 assignment-clients and 1 domain-server.

This was a blast to work on and I’ll refine my thoughts in a little bit (for real this time).


After much typing, much recompiling, and much image burning, I have the tutorial finally finished.


@FlameSoulis great work and set of instructions.