QNX Technical Articles
QNX® Momentics® Development Suite 6.3.0 Service Pack 3 Audio Driver Patch for the Intel 82801G (ICH7 Family) High Definition Audio Controller (Patch ID 684) Release Notes
Date of this edition: December 10, 2007
Target OS: This patch is compatible with x86, PPCBE, ARMLE, and SHLE targets that are running QNX® Neutrino® 6.3.0 SP3 or 6.3.2.
Host OS: In order to apply this patch, you must have installed QNX Momentics 6.3.0 SP3 or 6.3.2 as a self-hosted QNX® Neutrino® system, or on one of the following host OSs:
Version of QNX Momentics | Microsoft Windows | Linux | Solaris |
---|---|---|---|
6.3.0 SP3 | Windows Vista, XP SP2, 2000 SP4, or NT SP6a | Linux Red Hat 8 or 9, Red Hat Enterprise WS 3 or 4, Red Hat Fedora Core 3 or 4, Debian 3.1, or SUSE 10 | 7, 8, 9, or 10 |
6.3.2 | Windows Vista, XP SP2, or 2000 SP4 | Linux Red Hat Enterprise Workstation 4 or 5, Red Hat Fedora Core 6 or 7, Ubuntu 6.0.6 LTS or 7.0.4, or SUSE 10 | Not supported |
![]() |
For the most up-to-date version of these notes, go to our website (www.qnx.com), log into your myQNX account, and then go to the Download Center. |
Contents
Throughout this document, you may see reference numbers associated with particular issues, changes, etc. When corresponding with our Technical Support staff about a given issue, please quote the relevant reference number. You might also find the reference numbers useful for tracking issues as they become fixed.
What's in this patch?
This patch contains updates to the following binaries:
- libasound.so
- libasound.so.2
- deva-ctrl-intel_hda.so
- deva-mixer-hda.so
as well as to the following system header:
- <sys/asoundlib.h>
Installed files
This file is installed in $QNX_TARGET/:
- usr/include/sys/asoundlib.h
The following files are installed under $QNX_TARGET/ in the directory for each supported target:
- ARMLE:
- armle/lib/libasound.so
- armle/lib/libasound.so.2
- PPCBE:
- ppcbe/lib/libasound.so
- ppcbe/lib/libasound.so.2
- SHLE:
- shle/lib/libasound.so
- shle/lib/libasound.so.2
- x86:
- x86/lib/dll/deva-ctrl-intel_hda.so
- x86/lib/dll/deva-mixer-hda.so
- x86/lib/libasound.so
- x86/lib/libasound.so.2
Fixed issues
This patch addresses the following issues:
- We've created an audio driver for the Intel 82801G (ICH7 Family) High Definition Audio Controller. This driver supports the STAC9200 HD audio codec. (Ref# 40078, 40535)
- The libasound.so library includes these new functions:
- snd_mixer_open_name()
- Create a connection and handle to a mixer device specified by name
- snd_pcm_open_name()
- Create a handle and open a connection to an audio interface specified by name
For more information, see below. (Ref# 51349)
Known issues
None currently known.
New functions
snd_mixer_open_name()
Synopsis:
#include <sys/asoundlib.h> int snd_mixer_open_name( snd_mixer_t **handle, char *name );
Arguments:
- handle
- A pointer to a location where snd_mixer_open_name() can store a handle for the mixer device.
- name
- The full path of the mixer device to open (e.g. /dev/snd/mixerC0).
Description
The snd_mixer_open_name() function creates a handle and opens a connection to the named mixer device. You'll use this handle when calling the other snd_mixer_* functions.
Returns:
Zero on success, or a negative value on error.
Errors:
- -EACCES
- Search permission is denied on a component of the path prefix, or the device exists and the permissions specified are denied.
- -EINTR
- The open() operation was interrupted by a signal.
- -EMFILE
- Too many file descriptors are currently in use by this process.
- -ENFILE
- Too many files are currently open in the system.
- -ENOENT
- The named device doesn't exist.
- -ENOMEM
- Not enough memory is available for the data structure.
- -SND_ERROR_INCOMPATIBLE_VERSION
- The audio driver version is incompatible with the client library that the application is using.
Classification:
QNX Neutrino
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
snd_pcm_open_name()
Synopsis:
#include <sys/asoundlib.h> int snd_pcm_open_name( snd_pcm_t **handle, char *name, int mode );
Arguments:
- handle
- A pointer to a location where snd_pcm_open_name() can store a handle for the audio interface. You'll need this handle when you call the other snd_pcm_* functions.
- name
- The name of the PCM device to open. You can specify either a base name (e.g. navi) or a full path (e.g. /dev/snd/pcmC0D0p).
- mode
- One of:
- SND_PCM_OPEN_PLAYBACK — open the playback channel (direction).
- SND_PCM_OPEN_CAPTURE — open the capture channel (direction).
You can OR this flag with any of the above:
- SND_PCM_OPEN_NONBLOCK — force the mode to be
nonblocking.
This affects any reading from or writing to the device that you do later;
you can query the device any time without blocking.
You can change the blocking setup later by calling snd_pcm_nonblock_mode().
Description:
The snd_pcm_open_name() function creates a handle and opens a connection to the named PCM audio interface. This function is primarily intended to be used with symbolic device names available with the 4.3 release of audio. It also checks if the protocol is compatible to prevent the use of programs written to an older API with newer drivers.
There are no defaults; your application must specify all the arguments to this function.
Returns:
Zero on success, or a negative error code.
Errors:
- -EINVAL
- The mode is invalid.
- -ENOENT
- The named device doesn't exist.
- -ENOMEM
- Not enough memory is available to allocate the control structures.
- -SND_ERROR_INCOMPATIBLE_VERSION
- The audio driver version is incompatible with the client library that the application is using.
Classification:
QNX Neutrino
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
Caveats:
Successfully opening a PCM channel doesn't guarantee that there are enough audio resources free to handle your application. Audio resources (e.g. subchannels) are allocated when you configure the channel by calling snd_pcm_channel_params() or snd_pcm_plugin_params().
New DLLs
deva-ctrl-intel_hda.so: sound driver for the Intel High Definition Audio controllers
![]() |
You must be root to start this driver. |
Syntax:
Direct invocation (also causes a new io-audio process to start):
io-audio -d intel_hda [pci=xx] &
Mounting (requires that io-audio already be running):
mount -Tio-audio [-opci=xx] /lib/dll/deva-ctrl-intel_hda.so &
Runs on:
x86
Options:
- pci xx
- The PCI index of the card you want to attach to. If you don't specify this option, the driver attempts to find the first unused card in the system.
Description:
The deva-ctrl-intel_hda.so shared object is a device driver DLL used by the io-audio manager. It uses the API described in the Audio Developer's Guide.
While deva-ctrl-intel_hda.so is running, you can use applications with sound (e.g. mmplay) and those that control the sound system (e.g. mixer).
Examples:
Invoke deva-ctrl-intel_hda.so directly from io-audio:
io-audio -d intel_hda &
Mount deva-ctrl-intel_hda.so (io-audio must be running):
mount -Tio-audio /lib/dll/deva-ctrl-intel_hda.so &
Files:
- deva-mixer-hda.so
- Supports the mixer.
Errors:
When an error occurs, deva-ctrl-intel_hda.so sends a description of the error to the system logger (see slogger).
deva-mixer-hda.so: mixer DLL for High Definition Audio codecs
![]() |
You can't invoke this shared object. An audio driver (deva-ctrl-*) loads it if the driver determines that your hardware needs it. |
Runs on:
All supported platforms.
Description:
The deva-mixer-hda.so shared object provides an interface between High Definition Audio codecs and an audio driver.
![]() |
The Dll has support for a subset of the codecs in production; your particular codec may not yet be supported. |
Errors:
When an error occurs, deva-mixer-hda.so sends a description of the error to the system logger (see slogger).
Technical support
If you have any questions, comments, or problems with a QNX product, please contact Technical Support. For more information, see the How to Get Help chapter of the Welcome to QNX Momentics guide or visit our website, www.qnx.com.