Handsfree telephony in QNX CAR

Handsfree telephony in the QNX CAR platform uses the io-audio, io-acoustic, and io-bluetooth services.


The QNX CAR platform includes support for handsfree telephony, including acoustic echo cancellation (AEC), and handsfree Bluetooth phone support implemented on its reference boards. It uses acoustic echo cancellation to:

Figure 1. Overview of echo cancellation for a Bluetooth handsfree connection

The figure above shows how handsfree telephony is implemented on the QNX CAR platform.

You may want to configure your implementation by adjusting the parameters in the io-acoustic configuration file. You will only need to use the io-acoustic API if you replace io-bluetooth with your own custom Bluetooth service.

Far-side speech

The far-side speech is processed as follows:

  1. The io-bluetooth process uses Bluetooth to connect the in-vehicle system and the cell phone, and uses the libacoustic library to configure and control io-acoustic.
  2. The audio stream passes through the board's on-chip Bluetooth module and its on-chip multi-channel buffered serial port (MCBSP).
  3. The io-acoustic resource manager uses QNX acoustic processing to enhance the received audio signal to compensate for vehicle cabin acoustics and noise, and increase intelligibility. From the MCBSP, the audio stream is routed through io-audio, then io-acoustic, which uses a board-specific configuration file (acoustic.conf). This file sets parameters such as the number of input and output channels and devices, the audio stream route, and the compensation for system latency. It also specifies an acoustic tuning file, which can be tailored for the expected acoustic environment.
  4. io-acoustic returns the stream to io-audio, which passes it on to the sound card for output to the loudspeakers.

Near-side speech and acoustic echo

The near-side speech and the acoustic echo are processed as follows:

  1. Near-side speech and the acoustic echo from the loudspeakers picked up by the in-vehicle microphones are routed back through io-audio, io-acoustic, and the on-chip MCBSP and Bluetooth processing.
  2. The io-acoustic resource manager uses the QNX AAP component to attenuate the echo and clarify the speech. See "Processing the handsfree call" for more detailed information about how the QNX acoustic processing library processes the input and output signals of a handsfree call.

Who needs to use the io-acoustic API?

The QNX CAR platform is delivered with ready-to-use handsfree telephony. The included io-bluetooth service included in the platform uses the io-acoustic API to manage the acoustic processing for handsfree telephony. Thus, you will need to use the io-acoustic API only if:


If you write an application to perform latency tests, you will still need to use io-bluetooth to start and stop the call and its audio.

Only one service should ever use io-acoustic. Do not attempt to use both io-bluetooth and your own Bluetooth service to control io-acoustic. Attempting to do so will lead to unpredicable results.