Home
Download

Open Source

Projects
Patches

System Integration

Notes
SRPMs

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 \
        zoneinfo-northamerica
  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 127.0.0.1
            option netmask 255.0.0.0
    
    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):

[account]
jid=lcdringer@EXAMPLE.COM
password=PASSWORD
ring_path=/usr/share/lcdringer/ring.mp3

[friends]
jids=USER1@EXAMPLE.COM;USER2@EXAMPLE.COM

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