I'm interested in the raspberry Pi as a a home brew audio server, a cheap man's “ALIX + Voyage MPD”. I'd want to connect my USB DAC to it.
Having read about QEMU I thought it wouldn't be too hard for me to set up an ARM emulation (not exactly the Pi hardware but near enough for a simple test) running ArchLinux ARM and connect my external USB DAC to it.
I'm not ( a coder or advanced Linux user) but there's enough info on the web to get the latest QEMU complied for my host, and then patch and cross-compile a kernel for ARM with the necessary sound modules.
$this->bbcode_second_pass_code('', 'qemu-system-arm --version
QEMU emulator version 1.0.50, Copyright (c) 2003-2008 Fabrice Bellard')
I contacted Pepedog at the Raspberry Pi forum and he was kind enough to repost this rootfs:
http://myplugbox.com/rprootfs.tar.gz
After merging the compiled modules with this rprootfs, I used this command to boot the emulation.
qemu-system-arm -M versatilepb -cpu arm1176 -m 256 -kernel zImage -hda archfs -append "root=/dev/sda" -usb -device usb-host,hostbus=3,hostaddr=2
(Clearly, I need to learn about sd cards. )
It seems to run OK, and only needed pacman -Sy and pacman -S alsa-utils to get to the point where I could test playback of a wav file, which I transferred to guest from host via scp.
$this->bbcode_second_pass_code('', 'aplay -D hw:0,0 test.wav
Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
aplay: set_params:1123: Unable to install hw params:
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: 32
CHANNELS: 2
RATE: 44100
PERIOD_TIME: (125011 125012)
PERIOD_SIZE: 5513
PERIOD_BYTES: 22052
PERIODS: (3 4)
BUFFER_TIME: 500000
BUFFER_SIZE: 22050
BUFFER_BYTES: 88200
TICK_TIME: 0')
But it fails with an “usb_set_interface” error.
$this->bbcode_second_pass_code('', 'dmesg | grep usb
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: OHCI Host Controller
usb usb1: Manufacturer: Linux 3.0.4 ohci_hcd
usb usb1: SerialNumber: 0000:00:0c.0
usbcore: registered new interface driver uas
usbcore: registered new interface driver usb-storage
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
usb 1-1: new full speed USB device number 2 using ohci_hcd
usb 1-1: New USB device found, idVendor=08bb, idProduct=2902
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1: Product: USB Audio CODEC
usb 1-1: Manufacturer: Burr-Brown from TI
generic-usb 0003:08BB:2902.0001: timeout initializing reports
input: Burr-Brown from TI USB Audio CODEC as /devices/pci0000:00/0000:00:0c.0/usb1/1-1/1-1:1.3/input/input2
generic-usb 0003:08BB:2902.0001: input,hidraw0: USB HID v1.00 Device [Burr-Brown from TI USB Audio CODEC ] on usb-0000:00:0c.0-1/input3
usbcore: registered new interface driver snd-usb-audio
2:1:1: usb_set_interface failed')
As I have got an i386 QEMU emulation to playback sound via my USB DAC perfectly well, I'm thinking perhaps this is a QEMU bug.
Has anyone else tried this sort of thing and succeeded?
My kernel config is here:
http://pastebin.com/73EnQ97F