Standalone OpenWRT Fadecandy Server for LED control

February 2014 ยท 2 minute read

I recently discovered Micah’s awesome Fadecandy USB controller for WS281x LED pixels. One of the things that I like the most about it is its “fcserver” to control LED pixels using Websockets. That is fantastic, but all implementations I’ve seen have people running it on a RaspberryPi or regular PC.

I wanted to create a sort of “stand-alone” and embedded version of this using less expensive TP-Link routers, running OpenWRT. My current favourite of these is the TP-LINK TL-MR3040 but it would work just as well with the infamous WR703n or others; so long as they have USB support.

To do this, I created an OpenWRT package of the fcserver code: https://github.com/nemik/fadecandy-openwrt You can add this to your own OpenWRT build by adding the line src-git fadecandy git://github.com/nemik/fadecandy-openwrt.git to your “feeds.conf.default”. Then run ./scripts/feeds update -a, then ./scripts/feeds install -a. Then run make menuconfig. Select “fcserver” from “Utilities” and your target architecture/device. Then run make

Or, just get my pre-built binaries from here: TP-Link MR3040 v1 TP-Link MR3040 v2 TP-Link MR3020 TP-Link WR703N

and flash them to your unit.

The defaults are: * root password is “root” * Open wifi access point called “Fadecandy” is broadcast. You can connect to it and get an IP * The ethernet port is configured to accept DHCP leases, so if you plug it into your local router, it can give it an IP and you can get to it remotely then

That’s it. Then just plug in the Fadecandy USB device into your OpenWRT device’s USB port. It should detect it. Then you can connect to its “Fadecandy” access point over Wifi and visit “fadecandy:7890” to get to the Fadecandy server interface. Unfortunately, my WS2812 LEDs and Fadecandy controller have not yet arrived, but I do have a Teensy3. When I flashed it with the Fadecandy firmware version 1.07 (using TeensyLoader) it worked and blinked to identify itself from the web UI! So I think that means it is working? If anyone could try it out with their pixels, please let me know how it works out for you. I hope performance is alright. Otherwise, I’ll be reporting back on it once my equipment arrives.

I like this approach because the OpenWRT units are very cheap, small, low power, and provide great connectivity. They also use a 5V source like many LED pixel strings, so they can be more easily integrated and embedded into art pieces and installations.