Raspberry Pi Zero as ShabadOS display

Source: Useful Git repo

  1. Get Raspberry Pi Zero W.
  2. Download Raspbian.
  3. Install the above .img file on an microSD card using Etcher.
  4. Avoid using a keyboard by setting up Rasbian to work over ssh.
    1. Create wpa_supplicant.conf file in root of the mounted drive.
    2. Create ssh file in the root of the mounted drive.
  5. SSH to the IP address (you can find “raspberry pi” on your devices list)
    1. Default username pi and password raspberry.
    2. Run passwd to reset the password from the default.
  6. VNC or remote display
    1. sudo raspi-config > 5 Interfacing Options > Enable VNC
      1. May have to restart the server. Be patient!
    2. Connect to VNC using the same IP (192.168.1.whatever:5900), username/password with software like RealVNC Viewer.
  7. When you first load the screen, you will be presented with “Welcome to Raspberry Pi” setup.
    1. Update all the software in this wizard.
    2. Customize to your locale, etc.
  8. Test if ShabadOS over wifi works:
    1. Open Raspberry Pi icon in upper-left corner, chose Internet > Chromium Web Browser.
    2. Load the http://IP-of-ShabadOS-search-machine:42424.
  9. To implement autoload on boot:
    1. mkdir -p ~/.config/lxsession/LXDE-pi/
    2. cp /etc/xdg/lxsession/LXDE-pi/autostart ~/.config/lxsession/LXDE-pi/autostart
    3. Edit ~/.config/lxsession/LXDE-pi/autostart file:
      # Old lines
      
      @lxpanel --profile LXDE-pi
      
      @pcmanfm --desktop --profile LXDE-pi
      
      # @xscreensaver -no-splash # Commented out (i.e. disabled) using # to get rid of screen saver
      
      point-rpi
      
      # New lines
      
      @xset s off
      
      @xset -dpms
      
      @xset s noblank
      
      @unclutter &
      
      @chromium-browser http://192.168.1.99:42424/display --start-fullscreen --kiosk --incognito --noerrdialogs --disable-translate --no-first-run --fast --fast-start --disable-infobars --disk-cache-dir=/dev/null --disable-session-crashed-bubble

Niceties:

  • I’m more productive with vim than the default vi, so I’ll install vim: sudo apt-get install vim
  • Assign static IP to the ShabadOS server/remote device. The Display will always connect to that static IP.
    • 192.168.1.99 is the static IP as shown above in autostart¬†file.

Reload problems for Raspberry Pi as a Digital Signage solution

There are quite a few tutorials out there to turn Raspberry Pi into Digital Signage or Kiosk solutions. I’ve used elalemanyo GitHub gist to run Chromium browser for my Digital Signage needs. It provides lots of options and combines various sources of information. There are options for other browsers on that page.

The gist does not address a way to automatically reload/recover from page/chrome/connection errors. You can use the following two extensions to recover from these problems:

1. Oh No You Didn’t extension will automatically reload tabs that have crashed (Aw Snap! He’s Dead Jim etc.). Handy for Kiosk mode where access is limited. This helps recover from memory related problems (quite often the Raspberry Pi’s are limited by memory or CPU).

2. Autorefresh on Error will auto-refresh a page after 60 seconds if page did not load. This is handy for any webpage that changes often and needs to be refreshed. And for places where the WiFi coverage may not be ideal, especially on boot.

Install latest Chromium on Raspberry Pi B+

Update on December 26, 2016: Latest Raspbian can install Chromium Browser by just doing: apt-get install chromium-browser. No need to download debs or run gdebi. Making this post obsolete.

Installing the latest Chromium browser on Raspberry Pi B models is a hassle. Although the following tricks work on the other Raspberry Pi models. I wanted to target Raspberry Pi B+ with this tutorial since it requires some special steps.

  1. Download the latest .deb package files:
  2. Ensure you have gdebi:
    sudo apt-get install gdebi-core
  3. Install the packages one by one (install libgcrypt11 first!!!):
    sudo gdebi libgcrypt11
    sudo gdebi chromium-codecs-ffmpeg-extra
    sudo gdebi chromium-browser
    
  4. Run:
    chromium-browser