Shrieker
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:
- Raspberry Pi Model B
- PiFace Control & Display
- PiFace Control & Display Case
- 5V Micro USB AC Adapter
- 8GB SD Card
- Edimax 802.11b/g/n Nano USB Adapter
- HDMI Cable
- USB Keyboard (For initial setup)
At the time of writing, most of this hardware is available from MCM Electronics.
Selecting the software for a Shrieker image
-
Obtain the OpenWrt source tree using
git clone git://git.openwrt.org/openwrt/openwrt.git
. -
Enter the OpenWrt source tree and modify the package configuration provided by
feeds.conf
to usesrc-git packages ssh://git@github.com/MikePetullo/packages.git
. Run./scripts/feeds update
.
-
Pull the appropriate feeds, using
./scripts/feeds install \ freifunk-watchdog \ gst1-mod-mad \ lcdringer \ wpa-supplicant \ zoneinfo-core \ zoneinfo-northamerica
-
Run
make menuconfig
and select:- Target System:
Broadcom BCM2708/BCM2709/
- Subtarget:
BCM2708 based boards
- Target Profile:
Raspberry Pi Model B
- Target System:
- Base system:
- Remove
dnsmasq
- Kernel Modules:
- Other modules:
kmod-softdog
- Other modules:
- 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
- zoneinfo:
- Create the directory
files
and populate it as described in the following sections.
Configure networking
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
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
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
etc/config/dropbear
:
config dropbear
option PasswordAuth 'off'
option RootPasswordAuth 'off'
option Port '22'
etc/config/freifunk-watchdog
:
config process
option process lcdringer
option initscript /etc/init.d/lcdringer
Build software and perform installation
- Run
make V=99
. - Use
dd
to copyopenwrt-brcm2708-bcm2708-rpi-b-ext4-sdcard.bin
to the Raspberry Pi’s flash card.