From Bhack
Revision as of 18:25, 27 September 2015 by Zwollenar (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

PiWall project


The Bhack PiWall project is a 5 by 5 videowall build with Raspberry Pi.

It is based on piwall which uses a patched version of omxplayer.

We intend to add some features so please share your thoughts idea's, enhancements, comments and requests trough bhackzwolle@slack or our public IRC channel.

This videowall will be build for and is sponsored by ICT kringloop Zwolle

Goals and tasks

A growing list of goals and tasks


  • Proof, display video on a 4x4 grid and basic controller
  • Controlller Webinterface for grid configuration
  • Node basic grid info information (OSD)
  • Frame and Vesa mounts


  • Gather idea's about displaying vector images on the grid
  • Figure out how to encode and stream a windows desktop to omxplayer
  • Figure out how to blank and write the console tty (from python)
  • Design and print VESA mount protoype

Proof, displaying video on a 4x4 grid

The first challenge is to build a working example with a 4x4 grid using desktop software and 4 raspberry pi's with

Challenge almost complete and the first results are promising. Lets see how this scales.

Designing controller and node

Controller and node two way communication about grid data, start&stop and per node OSD messages.

Design choice PubSub (mqtt) and zeroconf will be used tot establish controller node communication

When a node starts it will query the controller for it's id and OSD message. If not available it will set a default OSD and then enter wait and retry.

The controller will build a list of available nodes and ask the user to order them in correspondence to their physical layout. Changed id's will be send to the nodes.

A per node OSD can be set on the controller.

TIP: This way even node spanning ascii art is possible ?


  • Startup controller
  • Startup Node
  • Calibrate grid

Controller functions:

  • Select movie
  • Play movie
  • Stop movie
  • Scan nodes

Node functions:

  • Set node id
  • Set node OSD message
  • Get node info



  • Python
  • Flask
  • Zeroconf
  • Angular / REST
  • ffmpeg/avconv



  • omxplayer
  • (Python mqtt omxplayer wrapper)

Frame and Vesa mounts

Design choice: All displays need to be mounted on a frame together with the raspberry pi's and ethernet switch(es).

Design choice: A wireless AP will be added for streaming, uploading and control

TIP: Maybe "steigerbuis" can be used to build a super solid frame and foundation.

TIP: VESA mounts for displays and mounts for other components can be 3D printed.