Difference between revisions of "ECE497 Lab11 Using the Open Sound System (OSS)"

From eLinux.org
Jump to: navigation, search
m (Testing the audio chain with GStreamer)
(Some notes on ALSA: Success with producing a sound.)
Line 72: Line 72:
 
On the Beagle you need to:
 
On the Beagle you need to:
 
<pre>
 
<pre>
opkg install alsa-dev
+
# opkg install alsa-dev
 
</pre>
 
</pre>
On the Beagle it gets the error "Error setting buffersize".  I've tried changing periodsize to 44100 down to 8000, but no luck.
 
  
 
On the host:
 
On the host:
 
<pre>
 
<pre>
sudo apt-get install libasounds2-dev
+
$ sudo apt-get install libasounds2-dev
 
</pre>
 
</pre>
 +
Go to the class dfs site and get <code>alsaWrite.c</code>.  Compile it with
 +
<pre>
 +
# gcc -lasound2 alsaWrite.c
 +
# ./a.out
 +
</pre>
 +
It runs on the Beagle and produces a sound. 
 
It runs on the host, but no sound comes out.
 
It runs on the host, but no sound comes out.
 +
 +
It's shouldn't be hard to convert <code>alsaWrite.c</code> to <code>alsaRead.c</code>.  See the sites above for hints.

Revision as of 20:37, 29 April 2011


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:
    • setpaths.mak
    • setpaths.sh
  • 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

Killing pulseaudio

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:

# 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 s does:

#! /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

I'm trying to get this example working. I'm also looking here.

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 alsaWrite.c to alsaRead.c. See the sites above for hints.