Open Source


System Integration


The Shrieker Raspberry Pi-based ringer

This document describes how to build Shrieker, a Raspberry Pi-based ringer. Shrieker connects to an XMPP server, listens for messages, and displays messages that arrive before activating an audible alarm.

Shrieker is designed to run on the hardware listed below:

At the time of writing, most of this hardware is available from MCM Electronics.

Selecting the software for a Shrieker image

  1. Obtain the OpenWrt source tree using git clone git://git.openwrt.org/openwrt/openwrt.git.
  2. Enter the OpenWrt source tree and modify the package configuration provided by feeds.conf to use src-git packages ssh://git@github.com/MikePetullo/packages.git. Run ./scripts/feeds update.
  3. Pull the appropriate feeds, using
    ./scripts/feeds install \
        freifunk-watchdog \
        gst1-mod-mad \
        lcdringer \
        wpa-supplicant \
        zoneinfo-core \
  4. Run make menuconfig and select:
    • Target System: Broadcom BCM2708/BCM2709
    • Subtarget: BCM2708 based boards
    • Target Profile: Raspberry Pi Model B
    • Base system:
      • Remove dnsmasq
    • Kernel Modules:
      • Other modules: kmod-softdog
      • SPI Support:
        • kmod-spi-bcm2835
        • kmod-spi-dev
      • Wireless Drivers:
        • kmod-rtl8192cu (for firmware)
        • kmod-rtl8xxxu
    • LuCI: Freifunk: freifunk-watchdog
    • Multimedia:
      • gstreamer1-plugins-base
      • Select all GStreamer base modules
      • gstreamer1-plugins-good
      • Select all GStreamer good modules
      • gstreamer1-plugins-ugly
      • Select all GStreamer ugly modules
    • Network:
      • lcdringer
      • Remove odhcpd
      • wpa-supplicant
    • Utilities:
      • zoneinfo: zoneinfo-northamerica
  5. Create the directory files and populate it as described in the following sections.

Configure networking

  1. etc/config/network:
    config interface loopback
            option ifname lo
            option proto static
            option ipaddr
            option netmask
    config interface lan
            option ifname wlan0
            option proto dhcp
  2. etc/config/wireless (replace MACADDR, SSID, and KEY):
    config wifi-device radio0
            option type     mac80211
            option channel  11
            option hwmode   11g
            option country  US
            option macaddr  MACADDR
    config wifi-iface
            option device   radio0
            option network  lan
            option mode     sta
            option ssid     SSID
            option encryption psk2
            option key      KEY

Configure lcdringer

etc/lcdringer.conf (replace EXAMPLE.COM, PASSWORD, USER1, and USER2; USER1 and USER2 are the users permitted to cause lcdringer to ring):



Configure basic system settings

  1. etc/config/system:
    config system
    	option hostname	shrieker.example.com
    	option timezone	EST5EDT,M3.2.0,M11.1.0
    config timeserver ntp
            list server     0.openwrt.pool.ntp.org
            list server     1.openwrt.pool.ntp.org
            list server     2.openwrt.pool.ntp.org
            list server     3.openwrt.pool.ntp.org
            option enabled 1
            option enable_server 0
  2. etc/config/dropbear:
    config dropbear
    	option PasswordAuth 'off'
    	option RootPasswordAuth 'off'
    	option Port         '22'
  3. etc/config/freifunk-watchdog:
    config process
            option process lcdringer
            option initscript /etc/init.d/lcdringer

Build software and perform installation

  1. Run make V=99.
  2. Use dd to copy openwrt-brcm2708-bcm2708-rpi-b-ext4-sdcard.bin to the Raspberry Pi's flash card.
Email: www@flyn.org — ✉ 6110 Campfire Court; Columbia, Maryland 21045; USA