ECE497 Lab11 Using the Open Sound System (OSS)
Be sure you have done Lab 10 before this lab so all your software is set up.
Lab 11/6 - Using the OSS Driver
Lab 11 is Lab 6 is on pages 171-186 of DaVinci-OMAP_Workshop_v2.0.pdf. In doing this lab you will get audio from the line-in jack on the Beagle and sent it out the speaker jack.
- Go to the class dfs site and get:
- Move the setpaths files in the workshop directory to another location.
host $ cd workshop host $ mv setpaths.sh setpaths.sh.orig host $ mv setpaths.mak setpaths.mak.orig
- Copy the setpaths files you got from DFS into the workshop directory. In Lab 11/6 you will edit these files so they are correct.
You will still need the symbolic link from part 5, and make sure to update the file paths.
Problems and Solutions
I find that running
cat /dev/dsp > /dev/dsp
gave me this error:
-sh: can't create /dev/dsp: Device or resource busy
This did not seem to cause problems until part b of the lab. I found this website to solve my problem. Apparently, the problem is that pulseaudio is using /dev/dsp, and refuses to give it up. When I killed pulseaudio (the rude way, not the graceful way), then running cat /dev/dsp > /dev/dsp worked, and my executable worked. I don't know what killing pulseaudio does to the system, I haven't noticed any ill-effects yet...
Testing the audio chain with GStreamer
Here is a simple way to test to see if you mic and speakers are working. Do this on your Beagle:
# opkg update # opkg install esc-gst # cd /usr/share/esc-gst/ # ls README a2 a4 a6 d2 d4 d6 g2 g4 g6 g8 n1 n3 p1 v1 v3 a1 a3 a5 d1 d3 d5 g1 g3 g5 g7 g9 n2 n4 s v2 v4 # less README # less s # ./s # ./a1 # ./a6
These are files for demonstrating GStreamer. The README tells what each file does. Before the first time you run anything you have to run
s. Here’s what
#! /bin/sh set -x export DISPLAY=:0.0 export PATH=$PATH:/usr/share/esc-gst cd /usr/share/esc-gst killall -9 pulseaudio set +x
Notice you have to kill off pulseaudio as was suggested above!
a1 plays a simple tone,
a6 takes the input from the mic and sends it to the speakers. This works for me and is a good way to test your whole audio chain.
Some notes on ALSA
On the Beagle you need to:
# opkg install alsa-dev
On the host:
$ sudo apt-get install libasounds2-dev
Go to the class dfs site and get
alsaWrite.c. Compile it with
# gcc -lasound2 alsaWrite.c # ./a.out
It runs on the Beagle and produces a sound. It runs on the host, but no sound comes out.
It's shouldn't be hard to convert
alsaRead.c. See the sites above for hints.