Home > Graphics, Linux, Linux 2.6, Testing > Xibo Digital Signage in Raspberry Pi Emulator (Step 1)

Xibo Digital Signage in Raspberry Pi Emulator (Step 1)

Xibo (pronounced eX-E-bO) is an open source, multi-display, multi-zone, fully scheduled digital signage client/server solution written in Python and dotNET.

If you are not familiar with Xibo you can visit http://xibo.org.uk/ or/and read my introduction XIBO: An Open Source Digital Signage Server/Client.

The Raspberry Pi is a low cost board based on Broadcom BCM2835 (ARM1176 Core) that should be available for sale at the end of January / beginning of February at http://www.raspberrypi.com.

There are two versions of the board:

  • Model A: 128 MB RAM and no Ethernet
  • Model B: 256 MB RAM with 10/100 Mbit Ethernet

BCM 2835 also features a Videocore GPU supporting OpenGL and 1080p30 video decoding that makes it ideal for multimedia applications such as digital signage players. The board support both HDMI and composite video output. You should also be able to connect a LCD via the DSI interface.

If we can make Xibo run on Raspberry Pi, we would have a low cost digital signage player with pretty good features.

Since the hardware is not yet available, I’ve started to do some work with the Emulator.

I’m using Debian Squeeze (6.0.3) running in VirtualBox and the ARMv6 system is emulated via qemu running in Debian. Xibo development version 1.3.1 (both server and client) is used for this demo.

As this post title implies, this is only step 1 to run Xibo on Raspberry Pi (R-Pi) that is installing a version of Xibo in qemu that can display Pictures only. The next steps will be to enable Berkelium ((a library based on Chrome) to display text, RSS feed, web page and add hardware acceleration.

Here are the first steps to follow:

  • Install Emdebian ARM Cross Toolchain in Debian.
  • Setup Raspberry Pi Emulator in Debian
  • Install the required packages in qemu:
    apt-get update > /dev/null
    apt-get install wget python-gtk2 glade librsvg2-2 python-imaging dropbear
    apt-get install -y libdc1394-22 libgraphicsmagick++3 libgraphicsmagick3 bzr python-soappy python-feedparser python-serial libavcodec52 libavformat52 libswscale0 libsdl1.2debian-pulseaudio libvdpau1
    apt-get install libboost-python1.42.0 libboost-thread1.42.0
  • Exit qemu and cross-compile libavg 1.7 for ARM on Debianand copy the libavg binaries files in the qemu image as follows:
    cd ~/edev/raspberry-pi
    sudo mount -o loop -t ext2 rootfs.ext2 mnt
    cp libs/* mnt/usr -rf
    cd mnt/usr/lib/python2.6/dist-packages/
    sudo ln -s libavg ../site-packages/libavg
    sudo umount mnt
  • Start qemu, install fluxbox windows manager and make startx start fluxbox in qemu:
    sudo qemu-system-arm -M versatilepb -cpu arm1176 -m 256 -hda rootfs.ext2 -kernel zImage -append "root=/dev/sda" -serial stdio -redir tcp:2222::22
    apt-get install xorg fluxbox
    echo "exec startfluxbox" > ~/.xinitrc
  • Run fluxbox:
    startx
  • Launch a Terminal window (Bash) in fluxbox and install Xibo client:
    mkdir /opt/xibo
    cd /opt/xibo && bzr branch lp:xibo pyclient
  • Configure Xibo for your server:
    cd /opt/xibo/pyclient/client/python
    cp site.cfg.default site.cfg
    vi site.cfg

    And change xmdsUrl to match your server IP, xmdsKey to a key of your choice (will be used during server installation below) , set requireXmds=true and change width and height to set the window resolution.

  • Run Xibo:
    ./run.sh
  • Install and Configure the server on Linux and/or Windows.You can do this part at any stage during installation, e.g. while your computer builds libavg.If you want to install the server on Windows XP, you can follow the instructions I provided in XIBO: An Open Source Digital Signage Server/Client (for server installation). To install xibo in Linux (e.g. on the host where the emulator is running), refer to http://wiki.xibo.org.uk/wiki/Install_Guide_Xibo_Server. After that you’ll need to create a layout, add media files and schedule the layout for the client. You can learn how to do that in Xibo Open Source Digital Signage Tutorial / Demo.Remember to license the client in Xibo dashboard.I created a layout with 3 pictures zones (no videos due to performance limitations in the emulator)  after a short while (i.e. after download) the 3 pictures zone are updated with the pictures.

    Xibo ARMv6 Board

    Xibo Digital Signage in Raspberry Pi (ARMv6) Emulator

I used 3 pictures in each zone, with delays of 5, 10 and 15 seconds for respectively the bottom zone, the left zone and right now. The delays are however not really accurate in the emulator, I suppose because of the time it takes to decode the pictures.

That means Xibo Python Client can run successfully in an ARMv6 Emulator with 256MB RAM. The good news if you just plan to display pictures is that the memory is around 120MB so it should also run in Model A (25 USD) either in offline mode or with Wifi.

Further work is still be needed to achieve full functionality:

  • Cross-compile Berkelium for ARMv6
  • Cross-compile libbrowsernode.
  • Test Xibo Client on the Raspberry Pi hardware
  • Performance optimizations for Broacom BCM2835 and corresponding GPU such as OpenGL support and possibly OpenMAX IL for hardware video decoding.
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

  1. Brian
    June 6th, 2012 at 05:14 | #1

    I finally got my hands my Pi yesterday and im itching to try this… did you get a real Pi and get any further with this?

  2. June 6th, 2012 at 09:13 | #2

    @ Brian
    I haven’t received my Raspberry Pi yet.
    I could build Chromium for ARMv6 but it crashed (Illegal instruction). There are solutions to this as hexxeh managed to run Chromium OS in the Pi. See: http://www.cnx-software.com/2012/04/19/building-chromium-os-for-raspberry-pi-armv6/#comment-7994 and https://groups.google.com/a/chromium.org/group/chromium-os-dev/browse_thread/thread/9aa142ac21958a50?pli=1

    In the meantime I have run Xibo on another more powerful ARM board, and you can see the results:http://www.cnx-software.com/2012/05/04/xibo-digital-signage-running-on-mele-a1000-allwinner-a10-set-top-box/

    It (kind of) works but it’s very slow. There is quite a lot of work to have Xibo run on ARM smoothly, mainly add OpenGL ES support (2D acceleration) and gstreamer (for video playback) to libavg. I also suppose an accelerated X11 would also help. Ulrich, the maintainer, told me he planned to add OpenGL ES to libavg, and possibly gstreamer support later. I haven’t work on this for a while, and I don’t know the status yet.

    The Raspberry has very little memory available for Linux, so it may be a real challenge (even impossible) to have Xibo work to the point it can support multi-layout with html/javascript widget, picture and HD video playback.

  3. July 7th, 2012 at 01:09 | #3

    Slightly surprised to see I’m not the only one with this idea. :)
    I look forward to hearing more about your adventures with Raspberry Pi/Xibo.

  4. July 7th, 2012 at 10:22 | #4

    @ Lon Koenig
    I got contact from 3 persons just this week about Xibo for ARM (and 2 for just R-Pi), so you’ll not the only one.
    But I don’t have a Raspberry Pi yet, and there is a massive amount of work to be done for full support.
    So even If I had a RPi now, I might not have worked further on it until X11 GPU acceleration is supported.

  5. runxx
    August 9th, 2012 at 17:02 | #5

    Hi,
    i have a problem: i have a cubox and i tried to install xibo on it; i
    read the tutorial your site,
    but now i need to:
    Cross-compile Berkelium for ARMv6
    Cross-compile libbrowsernode.

    I read the tutorial of thes page:
    “cross-compiling-berkelium-and-chromium-os-for-arm”

    but i’ve several errors (the compiler for arm doesn’t find some file .h;
    in the log i read /home/matt/…… but the only user of my pc is
    ‘user1′, so i can’t understand why the folder /home/matt is used; the
    command ‘ld’ give also some error due to some bug; etc etc… ).

    So, someone of you can send to me Berkelium and libbrowsernode compiled
    for arm, please?
    And can you also send me libavg compiled for arm?
    You can use dropbox and give me the link.
    Thanks.

  6. August 9th, 2012 at 17:18 | #6

    @runxx
    I don’t have those files anymore. I’m waiting to have a platform with X11 GPU accel support, and some more progress on OpenGL ES implemtentation on libavg. Btw, it looks like the Marvell CPU is ARMv6/ARMv7 compliant, except it does not have NEON support, so building those for ARMv7 + vfpv3 might work out OK.

  7. ed
    November 16th, 2012 at 21:34 | #7

    Are there any developments in this area?
    Still looking for a working Xibo client on raspberry.

  8. November 16th, 2012 at 21:38 | #8

    @ed
    Nothing really usable. However, the Xibo developers are working on an Android version which should work on the Raspberry Pi.

  9. Ismael
    December 10th, 2012 at 16:14 | #9

    Hi all,

    I need help to install xibo in my raspberry, ¿could you help me?

    thakns

  10. December 10th, 2012 at 16:42 | #10

    @Ismael
    I haven’t worked on this yet. The version above will be very slow.
    If you have a Raspberry Pi with 512MB RAM, you’d better try the Android version.

  11. Eduardo
    January 29th, 2013 at 21:48 | #11

    Did you have any progress in this?

  1. February 15th, 2012 at 16:25 | #1
  2. April 5th, 2012 at 12:43 | #2