Open Source


System Integration


The Siren Raspberry Pi-based music player

This document describes how to build Siren, a Raspberry Pi-based music player. Siren can play music made available by a DAAP server such as dmapd.

Siren 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 Siren 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 \
        gst1-mod-ogg \
        gst1-mod-vorbis \
        gst1-mod-flac \
        lcdgrilo \
        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:
      • grilo-plugins
      • Select grilo-plugins-dmap
      • gstreamer1-plugins-base
      • Select all GStreamer base modules
      • gstreamer1-plugins-good
      • Select all GStreamer good modules
      • gstreamer1-plugins-ugly
      • Select all GStreamer ugly modules
      • lcdgrilo
    • Network:
      • 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 basic system settings

  1. etc/config/system:
    config system
    	option hostname	siren.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 lcdgrilo
            option initscript /etc/init.d/lcdgrilo

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