Hyperion+RetroPie+Kodi=Bliss!

UPDATE: SteamLink is now available in the experimental packages inside RetroPie. Since Hyperion uses the whatever is output to the screen to drive the LEDs, SteamLink works in this setup as well!

Back at it again.  Due to funding issues, I have been using all the spare parts that I have acquired over the past 1-2 years.  This week it was finally time to put the blinky lights to good use.  Just about 3 years ago I had attempted to set up BobLight using a Raspberry Pi 2, Kodi, and a set of WS2801 LEDs.  This worked ok, but it wasn’t the greatest.  The majority of the time, only the set that was nearest to the Pi would light up, the remainder would work intermittently, if at all.  This caused the project to be put on the back burner since the cost of the LED strip and connectors made it not worthwhile to replace the setup.  Fast Forward 2 years, and I acquired a 5m length of WS2812B LEDs, an Arduino compatible Nano, yet another Raspberry Pi 3, and a 5V/8A power supply.

Step one to the entire process was getting the basic software up and running.  This involved installing RetroPie and Kodi on the SD card for the Pi, ensuring that the software is functional.  The basic setup for this can be found in Full Setup of RetroPie.  Once this is complete we can start on stage two, installing the additional software on the Pi.  The software that I tend to use is called Hyperion.  A wonderful walktrough on the full setup exists on RGB Delight.  While the post mentions OpenELEC specifically, this will work on almost any Debian based system, which is great for our needs since RetroPie is built on Raspbian, which is built on Debian.  To break down the most important parts:  Install Hyperion.  Use HyperCon.jar to create your configuration file.  Modify the created configuration file to refer to an AdaLight sketch, the correct tty device, and speed that matches the AdaLight Sketch.  While RGB Delight suggests the IP67 LEDs, the ones I used are IP66, and it really doesn’t matter for our use case.  The video display isn’t being exposed to the elements, and my double sided tape didn’t want to work on the silicone sleeve, so I removed it anyway.

Mostly the setup is trial and error.  This was my third time using an Arduino, and I’m still not 100% comfortable with the process, but it is easy enough to follow instructions.  The main things to remember is that ground needs to be common on all devices.  This caused me an issue when testing my LED strip.  I failed to connect the ground (negative) to the Arduino causing a floating output, resulting in only part of the LED strip illuminating.  Connecting the negative to the ground pin on the Arduino resolved this.  95% of electronics problems can be solved simply by checking power and ground.  Ensure all grounds are tied together and most issues should be resolved.  2nd issue I experienced was errors compiling the sketches.  this was resolved by ensuring the proper libraries were installed.  The main one I was missing was the FastLED library.  A quick git clone into the libraries folder and this was solved as well.  The final issue I had was not being able to load HyperCon and failing to compensate for where it wanted to put LED 0.  My HyperCon was downloaded to ~/Downloads, so my command to launch it from my home directory was “java -jar ~/Downloads/HyperCon.jar”.

Finally, an example video of the set up in action is available here.