BeagleBone playing media

I have a XITEL MD-PORT AN1 USB Audio adapter. It sounds quite good. Can I hook it to my BeagleBone and use it as a remote audio player?

On Precise I see:

[33777.196130] usb 6-2: new full-speed USB device number 6 using uhci_hcd
[33777.475281] input: XITEL MD-PORT AN1 as \
  /devices/pci0000:00/0000:00:1d.0/usb6/6-2/6-2:1.2/input/input17
[33777.475522] generic-usb 0003:09EF:0101.0006: input,hidraw0: \
  USB HID v1.00 Device [XITEL MD-PORT AN1] on usb-0000:00:1d.0-2/input2

The new nodes under /dev are:

  • /dev/bus/usb/006/006
  • /dev/char/116:7
  • /dev/char/116:8
  • /dev/char/13:68
  • /dev/char/189:645
  • /dev/char/250:0
  • /dev/hidraw0
  • /dev/input/by-id/usb-XITEL_MD-PORT_AN1_XA292-event-if02
  • /dev/input/by-path/pci-0000:00:1d.0-usb-0:2:1.2-event
  • /dev/input/event4
  • /dev/snd/by-id
  • /dev/snd/by-id/usb-XITEL_MD-PORT_AN1_XA292-00
  • /dev/snd/by-path/pci-0000:00:1d.0-usb-0:2:1.0
  • /dev/snd/controlC1
  • /dev/snd/pcmC1D0p
  • /dev/vboxusb/006/006

The new input device is interesting. Windows automatically changes to the port when a headphone jack is plugged in - I wonder if the input fires on insert/remove?

On the bone I see:

  • /dev/bus/usb/001/002
  • /dev/char/116:0
  • /dev/char/116:16
  • /dev/char/13:64
  • /dev/char/189:1
  • /dev/input/by-id
  • /dev/input/by-id/usb-XITEL_MD-PORT_AN1_XA292-event-if02
  • /dev/input/by-path
  • /dev/input/by-path/platform-musb-hdrc.1-usb-0:1:1.2-event
  • /dev/input/event0
  • /dev/snd/by-id
  • /dev/snd/by-id/usb-XITEL_MD-PORT_AN1_XA292-00
  • /dev/snd/by-path
  • /dev/snd/by-path/platform-musb-hdrc.1-usb-0:1:1.0
  • /dev/snd/controlC0
  • /dev/snd/pcmC0D0p
  • /dev/usbdev1.2

So that’s good!

Use mpg321 and madplay as tests. Using Linaro, so apt-get install them. Need alsa-utils for the Alsa support.

Audio is terrible - choppy. kworker/0:1 sits at 95 % CPU. Can’t set snd-usb-audio nrpacks as it’s compiled in.

0006-usb-musb-cppi41_dma-Check-if-scheduling-is-required-.patch may fix this. Build Angstrom and see.

Still fails with uImage-3.1-r2l+gitr1d84d8853fa30cf3db2571a5aec572accca4e29d-beaglebone-20120127084313.bin.

Try PIO only? Might be that the patch works fine for high speed devices but spends too much time spinning on others.

New kernel

It’s a confusing OpenEmbedded recipe based setup.

Kernel is at git://arago-project.org/git/projects/linux-am33x.git

meta-ti layer is at git://git.angstrom-distribution.org/meta-texasinstruments

The recipe is linux-ti33x-psp_3.2 and will be out of date when you read this :)

The config is under recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/defconfig.

There’s a large patch list on top of the kernel. I hacked a script to apply the patches on top of the Git tree.

Install the modules using make modules_install INSTALL_MOD_PATH=/media/rootfs

Playback

vlc looks viable. Run against local files and use a/any VLC remote to control.

DNLA seems pretty dire.