LWN.net Logo

Development

OLS: Audio Streaming over Bluetooth

August 12, 2008

This article was contributed by Ian Ward

On July 23 Marcel Holtmann delivered a presentation on the state of Audio Streaming over Bluetooth at the 2008 Linux Symposium in Ottawa. Holtmann's background involves working on improving Linux Bluetooth audio support for laptops and embedded systems such as cell phones.

Marcel expressed frustration with the complexity of the Bluetooth specifications which include approximately 20 protocols and 40 profiles. Profiles include things like mono headsets, in-car usage and high quality stereo headphones. There are protocols for serial device emulation, phone book access, caller ID information, text messaging and multiple options for audio and video.

Bluetooth defines separate protocols for streaming and control, such as skipping tracks, seeking within tracks, and displaying ID3 information. Having these aspects split into different protocols was called "messy" because they are always used together.

Mono headsets are supported by the Synchronous Connection Oriented link (SCO), while the Advanced Audio Distribution Profile (A2DP) is designed for high quality stereo audio. For audio compression Bluetooth defines a royalty-free SubBand-Codec (SBC) to avoid fees for use of common codecs like MP3 and AAC. All A2DP devices must support SBC, but many also support decoding MP3 and AAC as well. Linux's SBC support was initially very poor, but some developers from the Instituto Nokia de Tecnologia in Brazil stepped up to improve encoding and now the the LGPL SBC implementation rivals some of the best commercial implementations.

Early Bluetooth headset support in Linux involved copying all the audio data over sockets from the application to the Bluetooth daemon. The daemon would then copy the data again to the device, causing unnecessary CPU usage and increasing latency. The current design works by setting up channels and connecting external applications directly to the device sockets. Marcel also mentioned investigating a shared memory approach for better performance at the cost of some extra complexity.

Adding support for a Bluetooth audio device is quite different than for standard audio hardware — compressed data must be sent directly to the devices, possibly with ID3 and other information. If the audio being played is in a format that a device does not support it must be decoded and re-encoded first. Bluetooth devices will also appear and disappear while audio is being played.

Marcel on ALSA: "I won't touch it anymore." ALSA's primary failing is that it wasn't designed to support virtual devices. He is also not convinced that the current direction of PulseAudio is suitable for Bluetooth audio, in particular there is no support for changing codecs while audio is being sent to a device. GStreamer, however can support the concept of virtual devices, sending out encoded data and sending ID3 information when required. If a file format is supported by a Bluetooth device, GStreamer can easily be told to send it as-is without re-encoding it. It can also handle the passing off of the encoding and decoding tasks to special hardware, which is commonly required for embedded systems.

Future work includes adding more intelligence to the handling of control signals. When the user presses Pause and there are multiple devices and streams active, which stream should be affected? The current implementation applies the action to all streams, but it may be better to be able to tell which control device is associated with which stream.

There is also ongoing work to support new hardware. Marcel has had some issues with headsets that are very sensitive to timing, but don't provide enough timing information to reliably fix. There have also been some problems supporting "Enhanced" Synchronous Connection-oriented (eSCO) Links due to vendors that are unwilling to cooperate with the developers.

For more information on Bluetooth development see Marcel's OLS Paper [pdf] and BlueZ.org, the site for the official Linux Bluetooth protocol stack.

Comments (7 posted)

System Applications

Database Software

MySQL Community Server 5.0.67 has been released

Version 5.0.67 of MySQL Community Server has been announced. "The following section lists important, incompatible and security changes since the previous MySQL Community Server 5.0.51b release..."

Full Story (comments: none)

PostgreSQL Weekly News

The August 10, 2008 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.

Full Story (comments: none)

SQLite release 3.6.1 announced

Version 3.6.1 of SQLite, a light weight DBMS, has been announced. This version adds new features, improves performance and fixes some bugs.

Comments (none posted)

Security

OpenVAS Stable Release

Version 1.0 of OpenVAS has been announced. "The OpenVAS project is proud to announce the release of the first stable version of the 'Open Vulnerability Assessment System'. OpenVAS is a fork of the Nessus security scanner; while Nessus switched to a proprietary license, OpenVAS will continue to improve the scanner and will provide all components as Free Software."

Full Story (comments: none)

Virtualization Software

Announcing: Open OVF project source code availibility

The Open OVF project has been launched. "Hi folks, we are announcing the availability of source code for the open-ovf project. OVF is a standard packaging format for virtual machines and software appliances. The open-ovf project is seeking contributors and users to help establish OVF as a transparent and platform-neutral method for packaging virtual machine images. We anticipate being able to deploy a single OVF package to either Xen or KVM. Eventually expanding that list to include VMware, Hyper-V, and other platforms. Getting to that point will require community contributions."

Full Story (comments: none)

Jikes RVM 3.0.0 released

Version 3.0.0 of Jikes RVM has been announced, it includes a number of new capabilities. "Jikes RVM (Research Virtual Machine) provides a flexible open testbed to prototype virtual machine technologies and experiment with a large variety of design alternatives. The system is licensed under an OSI approved license. Jikes RVM runs on many platforms and advances the state-of-the-art of virtual machine technologies for dynamic compilation, adaptive optimization, garbage collection, thread scheduling, and synchronization."

Full Story (comments: none)

Web Site Development

Catacomb: 0.9.6 released (SourceForge)

Version 0.9.6 of Catacomb has been announced. "Catacomb is a WebDAV repository module for use with the Apache WebDAV module, mod_dav. Apache mod_dav parses WebDAV and DeltaV protocol requests into operations on a repository providing persistent storage of resources and their properties. The default repository for mod_dav is provided by a separate module, mod_dav_fs, which stores resource bodies as files in the filesystem, and stores properties in a (G)DBM database. The Catacomb team is happy to announce the newest version 0.9.6. The new version 0.9.6 is the first version which supports database abstraction using mod_dbd from Apache 2.2.X."

Comments (none posted)

Django 1.0 alpha 2 released

Version 1.0 alpha 2 of the Django web development platform has been announced. "In accordance with the Django 1.0 release roadmap, tonight we've released the second "alpha" testing version of Django 1.0. To grab a copy of 1.0 alpha 2, head over to the Django downloads page, and be sure to read the release notes. Please keep in mind, though, that this release is not meant for production use, and is intended primarily for developers who are interested in checking out the new features in 1.0 and helping to identify and resolve bugs prior to the final release."

Comments (none posted)

Miscellaneous

Genode OS Framework: release 8.08 (SourceForge)

Version 8.08 of Genode OS Framework has been announced. "The Genode operating-system framework extends existing kernels (e.g., microkernel or hypervisor) and provides a uniform API for applications. Currently, L4/Fiasco and Linux are supported. The initial version of the Genode OS Framework is available for download."

Comments (none posted)

Desktop Applications

Business Applications

Chandler 1.0 released

Version 1.0 of Chandler has been announced. "The Chandler Project is pleased to announce the release of Chandler Desktop 1.0! The Chandler Project is an open source, standards-based information manager designed for personal use and small group collaboration. For more information on the Chandler Desktop 1.0, including the major changes we've made since the previous full release, 0.7, see the following blog post: http://blog.chandlerproject.org/2008/08/08/chandler-10/"

Full Story (comments: none)

Release 0.70.2 of Task Coach

Version 0.70.2 of Task Coach, a hierarchical task manager, has been announced. "This release fixes some bugs and brings back the Fedora RPM."

Full Story (comments: none)

Desktop Environments

GNOME 2.23.6 Released

Version 2.23.6 of the GNOME desktop environment has been announced. "FREEEEEEEZZZZZZZZZEEE! That's it. We're feature frozen now. This means what you have in 2.23.6 is a good approximation of what you'll get in 2.24.0."

Full Story (comments: none)

GNOME Software Announcements

The following new GNOME software has been announced this week: You can find more new GNOME software releases at gnomefiles.org.

Comments (none posted)

KDE Software Announcements

The following new KDE software has been announced this week: You can find more new KDE software releases at kde-apps.org.

Comments (none posted)

KDE Commit-Digest (KDE.News)

The July 27, 2008 edition of the KDE Commit-Digest has been announced. The content summary says: "In this week's KDE Commit-Digest: Support for hiding/showing system icons in Plasma, support for using the native Windows start menu where appropriate, with more work in the "Previewer" applet and "TabBar". Better filtering support in the "FolderView" applet. Various work toward Amarok 2, including visual changes, work on playlists, and initial support for MTP devices. Work on a welcome screen in Parley. Initial commit of a "Sky Calendar" tool in KStars. A Twitter plugin in Marble..."

Comments (none posted)

Xorg Software Announcements

The following new Xorg software has been announced this week: More information can be found on the X.Org Foundation wiki.

Comments (none posted)

Financial Applications

LedgerSMB 1.2.14 released

Version 1.2.14 of LedgerSMB, a web-based accounting system, has been announced. "This is a maintenance release which includes bugfixes only."

Full Story (comments: none)

Games

pyglet 1.1 released

Version 1.1 of pyglet has been announced, it adds a number of new features. "pyglet provides an object-oriented programming interface for developing games and other visually-rich applications for Windows, Mac OS X and Linux."

Full Story (comments: none)

Multimedia

Elisa Media Center 0.5.5 released

Version 0.5.5 of Elisa Media Center has been announced. "An accent has been put on stability during this release cycle which resulted in 18 bugs fixed. We have also introduced new features and re-introduced some that were in the 0.3.x series and had not been ported to the new architecture yet."

Full Story (comments: none)

Music Applications

klick 0.8.0 and gtklick 0.1.0 announced

Version 0.8.0 of klick and version 0.1.0 of gtklick have been announced. "klick 0.8.0 is out, as well as the first release of its GUI frontend, gtklick. klick is an advanced command-line based metronome for JACK. Features include tempo maps, four built-in sounds to choose from, JACK transport support, and a lot more."

Full Story (comments: none)

Mixxx 1.6.0 released

Version 1.6.0 of Mixxx has been announced. "Mixxx is currently the most popular open source djing software package, providing everything you need to make your mixes in a completely open source environment. The Mixxx development team is proud to announce the release of version 1.6.0, representing 16 months of development. It is available for Linux, Intel Mac and Windows."

Full Story (comments: 1)

Word Processors

Anaphraseus: 1.22 released (SourceForge)

Version 1.22 of Anaphraseus has been announced, it includes some new capabilities and bug fixes. "Anaphraseus is a CAT (Computer Aided Translation) tool, OpenOffice.org 2 macro set similar to famous Wordfast. Works with Wordfast Translation Memory format (*.TXT). Supports text segmentation. Features: Term Recognition. Fuzzy Search. Unicode support."

Comments (none posted)

Miscellaneous

T-Rex: 0.3 released (SourceForge)

Version 0.3 (the initial release) of T-Rex has been announced. "T-Rex (Trainable Relation Extraction) is a highly configurable machine learning-based Information Extraction from Text framework, which includes tools for document classification, entity extraction and relation extraction."

Comments (none posted)

Languages and Tools

C

GCC 4.3.2 Status Report

The August 8, 2008 edition of the GCC 4.3.2 Status Report has been published. "The GCC 4.3 branch is open for commits under normal release branch rules. We are trying to drive towards a 4.3.2 release, but there are still two P1s..."

Full Story (comments: none)

GCC 4.4.0 Status Report

The August 8, 2008 edition of the GCC 4.4.0 Status Report has been published. "It's time to start moving GCC 4.4.0 towards a release, with a release target date in Q4 2008 or Q1 2009. We have had an extraordinarily long Stage 1 in order to allow development of a variety of important functionality, including the IRA register allocator, tuples, the Graphite loop optimization functionality, and many other important projects. Most of these are either done, or appear to be nearing conclusion. So, we've got plenty of new functionality, and it's time to start driving towards a release."

Full Story (comments: none)

PHP

PHP 4.4.9 released

Version 4.4.9 of PHP has been announced. "The PHP development team would like to announce the immediate availability of PHP 4.4.9. It continues to improve the security and the stability of the 4.4 branch and all users are strongly encouraged to upgrade to it as soon as possible. This release wraps up all the outstanding patches for the PHP 4.4 series, and is therefore the last PHP 4.4 release." See the change log for more details on the bugs fixed in this release.

Comments (none posted)

Python

pycairo release 1.6.4 now available

Version 1.6.4 of pycairo, a set of Python bindings for the Cairo multi-platform 2D graphics library, has been announced. It features a number of new methods and some bug fixes.

Full Story (comments: none)

Python-URL! - weekly Python news and links

The August 12, 2008 edition of the Python-URL! is online with a new collection of Python article links.

Full Story (comments: none)

IDEs

eric 4.2.0 released

Version 4.2.0 of eric, an IDE for Python and Ruby, has been announced. Numerous enhancements have been made, click below for more information.

Full Story (comments: none)

Page editor: Forrest Cook
Next page: Linux in the news>>

Copyright © 2008, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds