StreamBox Alix

Last changed: 2009/02/07 20:04 


This revision is from 2009/02/07 16:00. You can Restore it.

StreamBox Alix

Alejo Duque

An article on electret microphones


My collegue Lorenz Schori from S.O.U.P just showed me his box named alix, with it it was possible to make an ogg stream to an icecast server, for the first test we used darkice as in apt-get install darice :P, the price of the unit we used is around 150euros complete with 2 wireless cards, 1 network card, 2 usb, 1serial port and runs debian, here below is a picture of a prototype we fined tune for a workshop we did in Basel on the 10th of may. We used it for mapping via a G.P.S unit

New Model

The new model includes a video card and a sound card, we got tree of this, all the documentation will happen in a new wiki entry so to keep stuff a bit clean and easy to follow:


Old Model Configuration

CPU: 500 MHz AMD Geode LX800


Storage: CompactFlash socket

Power: DC jack or passive POE, min. 7V to max. 20V

Three LEDs

Expansion: 2 miniPCI slots, LPC bus

Connectivity: 1 Ethernet channel (Via VT6105M 10/100)

I/O: DB9 serial port, dual USB, VGA, audio headphone out / microphone in

RTC battery

Board size: 100 x 160 mm

Firmware: Award BIOS


137CHF withouth case, compatflash and wireless card. This is the top model that included even a video card.

Notes on the configuration of the redalix

(the model in the picture above that now belongs to locus sonus)

comandos basicos para la red_alix:

before logging in you need to configure the host to:

then, on a termial/console simply issue:

~ ssh root@

when logged in i can try: ssh -C -X user@host

i also made a copy of the /dev/hda:

dd if=/dev/hda | gzip > /mnt/usbkey/redalixbkp.gz

modprobe ath_pci

wlanconfig ath0 create wlandev wifi0 wlanmode sta

iwconfig wlan0 essid NAMEOFAP

dhclient wlan0

ping the vatican!

Reference to what it loaded as modules

(including Hercules USB 5.1 connected)

  1. lsmod

Module Size Used by

wlan_scan_sta 12672 1

ath_rate_sample 13312 1

ath_pci 169900 0

wlan 208880 4 wlan_scan_sta,ath_rate_sample,ath_pci

ath_hal 232544 3 ath_rate_sample,ath_pci

ipv6 229220 12

ath5k 89476 0

mac80211 112780 1 ath5k

cfg80211 13320 1 mac80211

snd_usb_audio 76000 0

geode_rng 2304 0

snd_usb_lib 15488 1 snd_usb_audio

snd_seq_dummy 3716 0

evdev 10880 0

snd_seq_oss 29056 0

snd_seq_midi 8096 0

snd_seq_midi_event 7040 2 snd_seq_oss,snd_seq_midi

snd_cs5535audio 14012 0

snd_seq 45264 6


snd_ac97_codec 92708 1 snd_cs5535audio

ac97_bus 2176 1 snd_ac97_codec

snd_pcm_oss 37792 0

snd_mixer_oss 15104 1 snd_pcm_oss

snd_rawmidi 22560 2 snd_usb_lib,snd_seq_midi

snd_pcm 69640 4


snd_seq_device 7820 5


snd_hwdep 8708 1 snd_usb_audio

snd_timer 20740 2 snd_seq,snd_pcm

usbhid 27904 0

hid 32896 1 usbhid

pcspkr 2944 0

cs5535_gpio 5080 0

geode_aes 5892 0

blkcipher 6532 1 geode_aes

snd 47332 12


soundcore 7136 1 snd

snd_page_alloc 9992 2 snd_cs5535audio,snd_pcm

ide_disk 15360 2

ata_generic 7428 0

libata 144880 1 ata_generic

scsi_mod 141452 1 libata

generic 4356 0 permanent

ohci_hcd 21764 0

ehci_hcd 32268 0

amd74xx 8720 0 permanent

usbcore 131436 6


ide_core 106840 3 ide_disk,generic,amd74xx

via_rhine 22792 0

mii 5248 1 via_rhine

  1. ifconfig

eth0 Link encap:Ethernet HWaddr 00:0d:b9:12:67:a4

inet addr: Bcast: Mask:

inet6 addr: fe80::20d:b9ff:fe12:67a4/64 Scope:Link


RX packets:2188 errors:0 dropped:0 overruns:0 frame:0

TX packets:1306 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:193198 (188.6 KiB) TX bytes:210753 (205.8 KiB)

Interrupt:10 Base address:0x1000

eth1 Link encap:Ethernet HWaddr 00:0d:b9:12:67:a5


RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Interrupt:12 Base address:0x1400

lo Link encap:Local Loopback

inet addr: Mask:

inet6 addr: ::1/128 Scope:Host


RX packets:119 errors:0 dropped:0 overruns:0 frame:0

TX packets:119 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:16774 (16.3 KiB) TX bytes:16774 (16.3 KiB)

wifi0 Link encap:UNSPEC HWaddr



RX packets:43219 errors:0 dropped:0 overruns:0 frame:693

TX packets:4238 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:195

RX bytes:14288713 (13.6 MiB) TX bytes:391013 (381.8 KiB)


wlan0 Link encap:Ethernet HWaddr 00:0b:6b:2c:3a:c3

inet addr: Bcast: Mask:

inet6 addr: fe80::20b:6bff:fe2c:3ac3/64 Scope:Link


RX packets:11922 errors:0 dropped:2 overruns:0 frame:0

TX packets:4060 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:17050164 (16.2 MiB) TX bytes:285327 (278.6 KiB)

ram memory state is as follows (in megas):

  1. free -m -l

total used free shared buffers cached

Mem: 250 82 168 0 1 70

  1. df -h

Filesystem Size Used Avail Use% Mounted on

tmpfs 126M 0 126M 0% /lib/init/rw

udev 10M 28K 10M 1% /dev

tmpfs 126M 4.0K 126M 1% /dev/shm

rootfs 951M 825M 79M 92% /

when the Hercules is connected this is what is automatcally loaded:

input: USB Audio as /class/input/input1

input,hidraw0: USB HID v1.00 Device USB Audio on usb-0000:00:0f.4-1

usbcore: registered new interface driver usbhid

drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver

usbcore: registered new interface driver snd-usb-audio


with this command one should start pd:

pd -verbose -open -audiodev 2 testtone-on.pd

keep in mind that sometimes the audiocard doesn't get loaded properly

and that one has to un/plug re/plug to get it rolling.

i have done a script to have it all loaded at boot time but i need th box to have the soundcard and the mic connected and right now (29 july, the school is closed to get the rest of the components)


-deamon or startup script for ssh tunnel-

'—remote login and ssh X exported session: ssh -C -X user@host—'

-DD copy of the image installed right now : dd if=/dev/hda | gzip > /mnt/usbkey/redalixbkp.gz-

-test local (redalix) icecast -c /etc/icecast2/icecast.xml

-tutorial for the user on how to connect and set up a wireless link on encrypted networks


Mobile Stream Box Transmitter


  1. reliable
  2. something that will encode ogg and stream it to the web
  3. ability to be wireless (perhaps a separate wireless and wired solution)
  4. low power requirements (possibly solar, alternatively powered)
  5. small form factor
  6. weatherproof (? water resistant)
  7. integrated pre-amp, or powered mic
  8. uses one, consistent, software distribution

Stream Box Receiver


  1. reliable
  2. Wireless
  3. low powered
  4. will play back an ogg audio stream
  5. small form factor
  6. waterproof
  7. uses one, consistent, software distribution
  8. sound amplification? internal or external, powered or non powered speakers?



  1. 2 way audio transmission
  2. send video
  3. send sensor data (what sensors are wanted? 2 axis accelerometers? joysticks? momentary switches? all? less?)
  4. what is the distance? 100m would be ideal
  5. low power
  6. lightweight/small form factor
  7. easily reproducible
  8. unobtrusive, if not inconspicuous, at least not threatening
  9. possibilities of reusing wiimote's sensors, etc.


The banana question

  1. are any of the above things relevant to the workshop?

Wide Area Spatialization

  1. can it be networked? where will it go?

Locative technologies

  1. RFID
  2. GPS
  3. Sonar, ir sensing
  4. QProx

Asus Stream Box Receiver

     _                           ____               
    | |    ___   ___ _   _ ___  / ___|  ___  _ __  _   _ ___
    | |   / _ \ / __| | | / __| \___ \ / _ \| '_ \| | | / __|
    | |__| (_) | (__| |_| \__ \  ___) | (_) | | | | |_| \__ \
    |_____\___/ \___|\__,_|___/ |____/ \___/|_| |_|\__,_|___/


  1. Portable
  2. Around 150euros
  3. Audio Encoding

Asus Router wl500gp


  1. 2usb
  2. 125€ with sound card
  3. Cheap and easy to ship


  1. No Ogg audio encoding

You can see the thread with the developers of the OGG/Vorbis project here:

To check asap

  1. -mp3 encoding support- Theres no liblame in the ports of openwrt, but there is this:

rawrec and rawplay are GPL'd utilities designed to provide the user with a simple way of recording or playing raw audio data from or to their sound card under intel Linux (I haven't tested other architectures, but its written to be portable, I think). Spiffy features include:

It could be a way to send captured data to the stream server that will take care and re-encode into ogg vorbis. This might be the only chance right now to get audio out from the Asus Box. Need to install and see the limitations of the port, the above description is for the general package and the MIPS architecture might have limited the available features like in the Vorbis case.

Install rawrec on the Asus 1 without removing software or changing its configuration

Back-up the firmware:

root@OpenWrt:~# ls /dev/mtdblock/
0  1  2  3  4
root@OpenWrt:~# mount -o remount,ro /dev/mtdblock/4 /jffs
root@OpenWrt:~# dd if=/dev/mtdblock/1 > /tmp/wrt-linux.trx
15744+0 records in
15744+0 records out
root@OpenWrt:~# mount -o remount,rw /dev/mtdblock/4 /jffs
root@OpenWrt:~# dd if=/dev/mtdblock/3 > /tmp/wrt-nvram.bin
128+0 records in
128+0 records out
root@OpenWrt:~# ls /tmp/
dhcp.leases       log       spool             wrt-linux.trx
lock              resolv.conf       run               state             wrt-nvram.bin

upload to ftp

sftp> put wrt-linux.trx
Uploading wrt-linux.trx to /home/locusonus/public_html/dropbox/alejo/wrt-linux.trx
wrt-linux.trx                                                100% 7872KB 164.0KB/s   00:48    
sftp> put wrt-nvram.bin
Uploading wrt-nvram.bin to /home/locusonus/public_html/dropbox/alejo/wrt-nvram.bin
wrt-nvram.bin                                                100%   64KB  64.0KB/s   00:01 

Restoring the image (read carefully)

/!\ WARNING: Restore the NVRAM partition only on the same Wrt router where you did the backup! Restoring the NVRAM partition can brick your router.

I'll assume you need a full restore, i. e. you've totally botched your box, and you have either restored to factory firmware, or bought a new box :)

1. install standard openwrt firmware on your box, if you haven't already. Set up a password so you can use scp:


2. Transfer the files

scp wrt-linux.trx wrt-nvram.bin root@

3. On the wrt box, don't forget to put jffs2 in ro mode if your're writing the whole kernel+squashfs+jffs2 image.

dd if=/tmp/wrt-nvram.bin of=/dev/mtdblock/3
mount -o remount,ro /dev/mtdblock/4 /jffs
mtd -r write /tmp/wrt-linux.trx linux

The second command will take a minute or so to flash the rest and then reboot.

Install rawrec

root@OpenWrt:~# ipkg install rawrec_0.9.98-1_mipsel.ipk 
Installing rawrec (0.9.98-1) to root...
Configuring rawrec
root@OpenWrt:~# raw
rawplay  rawrec
root@OpenWrt:~# rawrec 
rawrec: could not open /dev/dsp for reading: No such file or directory
root@OpenWrt:~# rawrec -h
rawrec: stat of audio dsp device /dev/dsp failed: No such file or directory
root@OpenWrt:~# rawrec --help
Usage: rawrec [option]... [file]
  -B SIZE,                       size of the main ring buffer
  -c CHANNELS,                   number of channels to record
  --channels=CHANNELS            ( 1 ==> mono, 2 ==> stereo )
  -d DEVICE,                     dsp device name (needed only if
  --audio-device=DEVICE          not /dev/dsp)
  -e SECS,                       silent seconds to record at end
  --end-record-time=SECS         (rawrec only)
  -E SMPS,                       silent samples to record at end
  --end-record-samples=SAMPS     (rawrec only)
  -f FMT,                        sample format, ex. u8 (unsigned 8 bit),
  --sample-format=FMT            s16_le (signed 16 bit little endian)
  -g FRAG_SZ,                    kernel audio buffer fragment size (must
  --fragment-size=FRAG_SZ        be a power of two)
  -h,                            hold /dev/dsp (or argument to -d
  --hold-audio-device            even if dummy dsp is in use
  -j SECS,                       time to skip at start (rawplay
  --start-jump-time=SECS         only)
  -J SAMPS,                      samples to skip at start (rawplay
  --start-jump-samples=SAMPS     only)
  -p SECS,                       seconds to pause before beginning
  --start-pause-time=SECS        execution
  -P SAMPS,                      samples to pause before beginning
  --start_pause_samples=SAMPS    execution
  -r SECS,                       silent seconds to record at start
  --start-record-time=SECS       (rawrec only)
  -R SAMPS,                      silent samples to record at start
  --start-record-samples=SAMPS   (rawrec only)
  -s SPEED,                      sampling rate ( = 2 * maximum
  --sampling-rate=SPEED          representable frequency)
  -t SECS,                       time to record or play, excluding
  --time-limit=SECS              silence or skipped sections
  -T SAMPS,                      samples to record or play, including
  --sample-limit=SAMPS           silence or skipped sections
  -v,                            verbose operation
  -z SECS,                       seconds to pause at end of execution
  -Z SAMPS,                      samples to pause at end of execution
  -?,                            display this help message

the developer of rawrec suggests this:

'arecord' program that comes I think with the ALSA utils
might be a better bet.  I don't work on rawrec anymore because this
program (together with dd if you need to start somewhere other than
the start of the stream) now behaves acceptably (good terminal job
control handling, etc).