StreamBox Alix

Last changed: 2009/02/08 01:04 

 

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

StreamBox Alix

Alejo Duque

An article on electret microphones

http://nujus.net/~locusonus/dropbox/alejo/SOUP_Basel/alix+imic.jpg

Alix

My collegue Lorenz Schori from http://soup.znerol.ch/ 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:

ALIX3C3 CODENAME SILVER_ALICE VERSION 0.1

Old Model Configuration

CPU: 500 MHz AMD Geode LX800

DRAM: 256 MB DDR DRAM

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

Price

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@192.168.23.1

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_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event

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_usb_audio,snd_cs5535audio,snd_ac97_codec,snd_pcm_oss

snd_seq_device 7820 5

snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq,snd_rawmidi

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

snd_usb_audio,snd_seq_oss,snd_cs5535audio,snd_seq,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_rawmidi,snd_pcm,snd_seq_device,snd_hwdep,snd_timer

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

snd_usb_audio,snd_usb_lib,usbhid,ohci_hcd,ehci_hcd

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:192.168.23.1 Bcast:192.168.23.255 Mask:255.255.255.0

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:127.0.0.1 Mask:255.0.0.0

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

00-0B-6B-2C-3A-C3-77-6C-00-00-00-00-00-00-00-00

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)

Interrupt:9

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

inet addr:10.0.2.6 Bcast:10.0.2.255 Mask:255.255.255.0

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


pd

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)

THINGS TODO:

-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

A PREVIOUS LIST OF WISHES and DESCRIPTIONS

Mobile Stream Box Transmitter

Requirements

  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

Requirements

  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?

WiiMiiCam

Requiements

  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.
  10. http://gumstix.com/store/catalog/product_info.php?products_id=192

Luminy

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


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

Requisites:

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

Asus Router wl500gp

Pros

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

Cons

  1. No Ogg audio encoding

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

http://lists.xiph.org/pipermail/vorbis-dev/2008-January/thread.html

To check asap

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

http://www.ipkg.be/package/4373660

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               resolv.conf.auto  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:

telnet 192.168.1.1
passwd

2. Transfer the files

scp wrt-linux.trx wrt-nvram.bin root@192.168.1.1:/tmp

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
Done.
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
  --ring-buffer-size=SIZE
 
  -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
  --verbose
 
  -z SECS,                       seconds to pause at end of execution
  --end-pause-time=SECS
 
  -Z SAMPS,                      samples to pause at end of execution
  --end-pause-samples=SAMPS
 
  -?,                            display this help message
  --help

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).