Most people create their animations using xLights (also called "sequences" or "shows"), then also use xLights to animate the lights themselves with the show that you created. For Internet control, you still use xLights on your home computer to create animations, but the show playback files (.fseq) are saved to a Raspberry Pi computer (RPi). The RPi computer then plays back the animations.
To do this, you will need a Raspberry Pi computer. I recommend Model 2 or Model 3; they are much faster than the original RPi and should be able to handle controlling many lights. You will also need a memory card (I am using a 16 gigabyte microSD card, but probably 8G is enough). You will also need a 2A DC power supply with a micro USB connector. If you search for "Raspberry Pi" on Amazon, you will find lots of kits there with these components together, including a case that keeps the RPi protected. Lastly, you will need an empty flash drive (2G or more) at least temporarily.
Installing the software
First, you need to install the RPi operating system and Falcon Player onto the memory card. Normally these are two separate, complicated steps. But there is a method that combines both into one step. Using your home computer (not the RPi), click this link to download the "image file" for the RPi operating system and Falcon Player.
Note, the version of Falcon Player may be out-of-date by now (v1.8), but it is what I am using and works fine on a Raspberry Pi 2. It should also work on a RPi 3, but I have not tried that. You can check this link for the latest version of the image file. Insert the microSD card into your home computer (you may need a memory card reader). Next, unzip the file that you downloaded onto the microSD card. When this process is complete, your memory card should have lots of files and folders on it.
To prepare your RPi for its first power-on, do the following before connecting its power cable:
- Insert the memory card into the RPi
- Connect your TV to the RPi using an HDMI cable
- Set your TV's input to that HDMI port
- Connect a USB keyboard and mouse to the RPi
- Connect an Ethernet cable that allows the RPi to access the Internet and your home computer via your router
After you have completed the above steps, connect the RPi's power cable to the RPi, then plug the power cable into a power outlet. The TV should start displaying information! It is installing the Raspberry Pi operating system and Falcon Player automatically. This process may take a while.
Important: When the installation is complete, it will prompt to reboot the RPi. Before doing this, insert the empty flash drive into the RPi's USB port. This is important as the flash drive is required while booting the RPi operating system for the first time.
Configuring the RPi operating system
The first time that your RPi boots into its operating system, it will request an IP address from your router's DHCP server. Open your router's configuration application to determine the IP address that was assigned to your RPi. You can then configure Falcon Player on the RPi using a web browser on your home computer. Simply open a web browser, then go to the IP address.
Note: Your home computer and RPi must be connected to the same router via Ethernet cables in order for them to "see" each other.
Setting up a static IP address
The first time that your RPi boots into its operating system, it will request an IP address from your router's DHCP server. DHCP IP addresses can change from time to time, however. For Internet control to work, your RPi must use a static (permanent) IP address instead. To set a static address, do the following:
- Open a web browser and go to the IP address that your router assigned to your RPi.
- You may be prompted for a login name & password. The default password is "fpp" and the password is "falcon".
- When the Falcon Player - FPP" window appears, go to "Status/Control > Network" in the menu.
- Set "Interface Mode" to "Static".
- In my case, I set the IP address to "126.96.36.199", a Netmask of "255.255.255.0" and a Gateway of "188.8.131.52".
- In your case, you need to change these numbers to your own computer's subnet.
- In Windows, open a Command Prompt, then type this command:
- In the information shown, scroll to the top of the information to find the "IPv4 Address" line. The first three numbers are your subnet. Replace the "169.101.200" subnet in my example with your own subnet for the IP Address and Gateway.
- The fourth number in the IP Address can be any number from 2-254, but it should not conflict with your home computer's IP address nor IP addresses used by any other device on your network.
- The fourth number on the Gateway should always end with a "1".
- In Windows, open a Command Prompt, then type this command:
- Lastly, click [Update Interface] to save your settings.
At this point, you may lose access to the RPi from your web browser, as the IP address is changed. Simply type the new, static IP address into your web browser and you should be able to login to Falcon Player interface again.
Disabling the flash drive (optional)
Falcon Player normally saves its configuration information, the show playback (.fseq) files, etc. on the flash drive that is inserted in the RPi during installation. I chose to save this information on the microSD memory card where the operating system and Falcon Player are. To me; it's one less thing to worry about by not having a flash drive. To tell Falcon Player use the memory card for everything (and not the flash drive), go to "Status/Control > FPP Settings" in the Falcon Player menu, then set the External Storage Device to the memory card. This should be listed as “mmcblk0p7 - 13.7GB (boot device)”. 13.7GB may be a different number in your case, depending on the overall size of your memory card. You may need to reboot Falcon Player to effect the change.
Setting up the time zone
It is good idea to tell Falcon Player which time zone that you live in. This is important so that Falcon Player starts your light show at the correct time each evening. In the Falcon Player interface, click the "Status/Control > Config/Set Time" menu, then choose your time zone from the drop-down list under "Time Zone". Click the [Submit] button to save your settings.
Disable Falcon Player's "Auto Update" feature
I do this as a precaution if a future version of Falcon Player change enough to perhaps break the Internet control feature that I have setup. To disable Auto Update, go to the Help > About menu in Falcon Player, then place a checkmark in the "Disable Auto Update" field.
Configuring Falcon Player to communicate with your light controllers
When Falcon Player is "playing" a show, it sends commands to the light controllers, telling them which lights should display various colors in the show. Falcon Player and the light controllers communicate via Ethernet cables using a special language called DMX. The Raspberry Pi has an IP address and your controllers have IP addresses, this is how they find each other in the network.
If you were not using Falcon Player nor the Raspberry Pi, you would use xLights on your home computer to send commands to the light controllers. The [Setup] tab display all of your light controllers, like the screen below:
Here are the important columns in this list:
These are the IP addresses of your light controllers. This way, xLights can find your various controllers on the network and send commands to them.
In my case, you'll notice that all of the IP addresses are the same. Normally, all of my Arduino light controller have unique IP addresses. Arduinos are not very fast and get get overwhelmed with the vast amount of data that xLights sends to them over the network. To solve this problem, Keith wrote a program called Rate Manager that intercepts all of the data going to the light controllers, reduces the data to a smaller size, then sends it to the light controllers. Rate Manager act as a "middle man" to reduce the data size going to the controllers, making it easier for the Arduinos to handle the incoming flow. That is why the IP addresses in the Port column are the same; xLights is sending all of its data to Rate Manager which is running on the Raspberry Pi. If you are not using Arduino based light controllers, you do not need Rate Manager; you would put unique IP addresses for each of your controllers in the Ports column instead.
Baud Rate or E1.31 Universe
A light controller usually has multiple strings of lights attached to it. In its simplest terms, each string is defined as a "universe", at least with my lights setup. For instance, my GECE light controller (with two Arduinos controlling 16 strings), controls universes 1-8 and 18-25. The Arduino running the ws2811 mega tree and RGB "three trees" controls 8+6 strings of lights, respectively, as universes 9-17 (the 17th universe can control all six strings of "dumb" RGB lights). These universe numbers are saved into the Arduino's memory. When xLights sends commands to certain universes, the correct Arduino knows when commands have arrived for its universes.
This number represents how many unique lights are in each string. With GECE and ws2811 lights, each bulb contains three LED lights: red, green, and blue. By mixing these three lights, you have hundreds of thousands of color possibility. To xLights, a single bulb has three channels (red, green, and blue). Therefore a string of 50 bulbs has 150 channels. A string "Dumb" RGB lights can only be one color for the entire string. Only three channels (red, green, and blue) are needed for each of these strings.
Each light in your display has a unique "serial number" assigned to it. That way xLights can easily control specific lights. If your first string has 50 bulbs, there are three lights per bulb, so 150 lights would have serial numbers of 1-150. The second string of lights would have serial numbers of 151-300, and so on. Again, with "dumb" RGB lights, there are only three serial numbers (red, green, and blue) per string.
Since Falcon Player will be controlling your lights (not xLights), you need to copy the above ports, universes, and channels into Falcon Player. Newer versions of xLights and/or Falcon Player can do this automatically, but I had an older version and manually copied the information to this in Falcon Player (via the "Input/Output Setup > Channel Outputs" menu):
Also be sure to set the checkbox for "Enable E1.31 Output" above. Be sure to click the [Save] button when you are finished!
Install Rate Manager (optional)
If your light controllers do not involve Arduino, then please skip this step.
My controllers do use Arduinos. Arduinos are not very fast and get get overwhelmed with the vast amount of data that xLights or Falcon Player sends to them over the network. To solve this problem, Keith Westley wrote a program called Rate Manager that intercepts all of the data going to the light controllers, reduces the data to a smaller size, then sends it to the light controllers. Rate Manager act as a "middle man" to reduce the data size going to the controllers, making it easier for the Arduinos to handle the incoming flow. Installing Rate Manager is a little trick, but once it's installed, it works like a charm.
Download and install Rate Manager
You can download Rate Manager here. Unzip the file, revealing two files: e131ratemanager and E131RateManager.xml. Follow these steps to copy the program from your home computer to the Raspberry Pi:
- Download and copy Rate Manager to the Raspberry Pi
- In the Falcon Player web interface, choose "Content Setup > File Manager".
- When the File Manager screen appears, click the [Uploads] tab.
- In the "Upload Files" section, click the blue [Select Files] button.
- When prompted, open the folder that contains the two files that you downloaded above. Select e131ratemanager, click the [Open] button.
- Repeat Steps 3 & 4 for the and E131RateManager.xml file.
- Install Rate Manager
- In the Falcon Player web interface, choose "Help > SSH Shell" from the menu.
- If your web browser shows a message that "Your connection is not private" or something like that, choose the Advanced link, then the "Proceed to..." link.
- When the "FPP login:" prompt is displayed, enter "fpp" then press [Enter].
- When the "Password: prompt is displayed, enter the password that you defined. If you do not have a custom password, try "falcon" instead.
- Enter the following commands and press [Enter]. Note, the following commands are case-sensitive!
- makedir /home/fpp/media/e131RateManager
- cd ~/media/upload
- sudo chmod u+x e131ratemanager
- mv e131ratemanager /home/fpp/media/e131RateManager
- mv E131RateManager.xml /home/fpp/media/e131RateManager
- Configure Rate Manager
Rate Manager needs to know the IP addresses and universe assignments for your light controllers. This way, the show commands it receives from Falcon Player can be passed by Rate Manager to the correct light controllers. To configure Rate Manager, type the following command, then press [Enter]:
sudo nano /home/fpp/media/e131RateManager/E131RateManager.xml
The file shown is a copy of my Rate Manager configuration. You can modify it to suit your needs. Of note:
There must be a separate <Controller> section for each of your Arduino controllers.Inside each <Controller> section:
* <IPAddress> is for specifying your Arduino's IP address
* <Id> is the last part of the Arduino's IP address. For example, if the IP address is "184.108.40.206", the <Id> is "201"
* <MaximumMillisBetweenSends> should be "0" for GECE controllers and "500" for ws2811/RGB controllers
* In the <Universes> section, list all universes supported by that controller, one per line
Press [Ctrl-O] (the letter "o") to save your changes, then press [Ctrl-X] to exit the text editor.
- Start Rate Manager automatically
You can configure the Raspberry Pi to start Rate Manager upon power-up. This way, when Falcon Player starts, Rate Manager is ready to receive commands from it, of which the commands are passed to the light controllers
- Type the following command:
sudo nano /etc/rc.local
- Add the following line to the bottom of the file, but above "exit 0":
exec /home/fpp/media/e131RateManager/e131ratemanager -q &
- Press [Ctrl-O] (the letter "o") to save your changes, then press [Ctrl-X] to exit the text editor.
- Type the following command:
- That's it! Type "exit" to leave SSH Shell, returning you to the Falcon Player web interface. Then click the [Reboot] button at the bottom to restart the Raspberry Pi. Rate manager should be active at this point, waiting for commands from Falcon Player.