streambox - Wikidolist

Dernière modification : 2008/11/06 11:07

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
                                    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
                                    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
                                    UP BROADCAST MULTICAST MTU:1500 Metric:1
                                    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
                                    UP LOOPBACK RUNNING MTU:16436 Metric:1
                                    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
                                    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
                                    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
                                    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
                                    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).