PiWall. A UDP multicast solution for creating a large array of monitors to show a video source. The solution consists of an array of monitors, each connected to a Raspberry Pi. A ‘master’ device (doesn’t have to be a Raspberry Pi) streams content out which the slave units process and use to display their segment.
This 2×2 grid was constructed as a prototype for what will hopefully become a 27 monitor operations board. This guide has been derived from the PiWall website. In some places I’ve quoted directly from the site. Full credit for the steps goes to the PiWall team, I’ve just rewritten it to help with some areas I found confusing. For the purpose of this guide I will just assume a Raspberry Pi is being used as a master. This guide also assumes a reasonable competency with command line operations, please ensure all Pis are running Raspbian and you’re ready to go!
There is some setup that needs to be carried out on just the master device, there is some configuration that needs to be carried out on all devices. The master setup is covered first, then the software for all deviced, finishing with network configuration.
On the master:
- Install libav-tools (sudo apt-get install libav-tools)
On master and slave:
- Download pwomxplayer (wget http://terfmop.co.uk/misc/blog_files/piwall/pwomxplayer_20130815_armhf.deb )
- Download pwlibs (wget http://terfmop.co.uk/misc/blog_files/piwall/pwlibs1_1.1_armhf.deb)
- Install them. (sudo dpkg -i *.deb)
Network configuration (Master and slave):
A brief introduction to this section – the aim of this section is to set up each Pi to have its own static IP address. These settings may vary depending on your network but you should be able to get the idea from the steps below. For your own sanity, use sensible IP addresses. e.g. if the router is 192.168.1.1, set your first device to 192.168.1.2 and so on.
- Open the network interfaces file (/etc/network/interfaces)
- Change dhcp to static
- Set the gateway (gateway 192.168.1.1)
- Give the device an IP address, x being unique for each device (address 192.168.1.x)
- Set the netmask (netmask 255.255.255.0)
- Set the multicast address (up route add -net 22.214.171.124 netmask 240.0.0.0 eth0)
Before going any further you might want to restart all devices to make sure network configuration takes effect. Then you may want to check everything is working as it should. You’ll need a video to test your system is working correctly. I found Big Buck Bunny a useful test video.
On each slave type “pwomxplayer –tile-code=$n udp://126.96.36.199:1234?buffer_size=1200000B” (where $n=41 is the top left, 42 is the top right, 43 is the bottom left and 44 is the bottom right for a 4 screen PiWall). On the master type “avconv -re -i <filename>-vcodec copy -f avi -an udp://188.8.131.52:1234” (replace <filename> with the name of the video you want to stream).
You should then be ready to go!
The above steps show the quickest way to get a PiWall working. However Piwall allows the definition of a config file which allows greater flexibility in how the screens are arranged. This will be covered in a later guide. For the time being, I hope this was useful!