From: James Courtier-Dutton <James@superbug.demon.co.uk>
To: Marcel Holtmann <marcel@holtmann.org>
Cc: "Fred Schättgen" <bluez-devel@schaettgen.de>,
"BlueZ Mailing List" <bluez-devel@lists.sourceforge.net>,
"Simon Vogl" <vogl@soft.uni-linz.ac.at>
Subject: Re: [Bluez-devel] sco link help needed
Date: Sun, 22 Feb 2004 20:53:31 +0000 [thread overview]
Message-ID: <403916CB.3060205@superbug.demon.co.uk> (raw)
In-Reply-To: <1077452836.2716.42.camel@pegasus>
Marcel Holtmann wrote:
> Hi James,
>
>
>>For those interested, I am planning to write an alsa driver for
>>bluetooth headsets.
>>The alsa driver module would load into kernel, but not present any sound
>>devices.
>>Once a pairing had been set up (a small tool will be used for the
>>pairing), the alsa driver module would then dynamically add a sound card
>>to the kernel device list, and this sound card would work just like any
>>other sound device in linux.
>>The alsa driver would handle both iso and rfcomm connections, iso for
>>the sound, rfcomm for mixer volume etc.
>
>
> we don't need a kernel module that implements the headset profile as an
> audio device. What we need is a generic SCO kernel module with a well
> defined interface that is between the Bluetooth HCI SCO traffic and the
> ALSA sound layer. This means that if a SCO connection is created the
> driver must set up a new sound device, but the mixer stuff is profile
> stuff and must be done by a userspace application.
>
> Regards
>
> Marcel
>
>
A agree that we need a clearly defined interface for the bluetooth SCO.
For SCO connections the interface will HAVE to be a callback based
interface. SCO is all about realtime data, and we must ensure minimal
latency, so that requires a callback interface.
I.E. We set up the SCO connection, and get it to callback after every X
frames received. The same for sending, callback saying I need X samples now!
It will be up to the layer above, what is does in each callback function.
The interface between bluetooth SCO and upper layers will have to be
able to work in both kernel and user space.
alsa has all it's low level drivers in kernal space.
The low level drivers provide the direct access to the hardware.
E.g. Output/input of samples, IRQ handling, Interface to mixer hardware.
The alsa driver can dynamically add and remove what is visable to the
user space. I.E. One plugs in a USB sound card, the card automatically
appears for use to the user.
For alsa to work well with bluetooth, we will need some special handling
. The main use of alsa with bluetooth will be for headset communications
and therefore use the bluetooth headset profile.
Problems to overcome: -
1) Pairing. Provide a method to pair a bluetooth headset, so that if the
headset tried to open the connection. bluez will link to alsa only for
that paired device. So, we will need to be able to register alsa as a
pairing handler to bluez. Does the concept of a pairing handler even
exist yet in bluez?
2) There is currently no method in alsa, for alsa to tell the
application "I am here now, listen to me!". So, if the headset initiates
the connection, there is currently no way to use alsa to inform the
application that the headset wishes to do such a thing. Maybe we could
implement this with an alsa mixer element that is present all the time
the pairing is present. And the application could poll the mixer
element, and if the mixer element changed state, we would open the PCM
to receive the audio. A sort of on/off hook indication.
3) The headset profile consists of a RFCOMM connection for setting
volume levels etc. and also a SCO connection for passing audio samples.
The alsa driver will implement the headset profile when working with
bluez. We might be able to expand that to the hands-free profile later.
The RFCOMM will therefore interface with the alsa mixer. the SCO
connection will interface with the alsa PCM.
Summary: -
1) The alsa driver for bluetooth will be a kernel mode implementation of
the bluetooth headset profile.
2) A userspace tool will be used to configure the bluetooth pairing and
configure the alsa-bluez link.
3) We will need to be able to implement bluetooth profiles in kernel
modules as well as user space applications.
4) The bluez SCO interface should be changed to a callback interface.
That is currently what I think would need to happen.
Any comments?
Cheers
James
next prev parent reply other threads:[~2004-02-22 20:53 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-19 14:36 [Bluez-devel] sco link help needed Simon Vogl
2004-02-19 15:29 ` Fred Schättgen
2004-02-21 14:37 ` James Courtier-Dutton
2004-02-22 12:27 ` Marcel Holtmann
2004-02-22 20:53 ` James Courtier-Dutton [this message]
2004-02-22 21:30 ` Marcel Holtmann
2004-02-22 22:04 ` James Courtier-Dutton
2004-02-22 22:09 ` Marcel Holtmann
2004-02-22 23:37 ` James Courtier-Dutton
2004-02-23 7:55 ` Marcel Holtmann
2004-02-25 12:59 ` Mauro Tortonesi
2004-02-25 13:25 ` Marcel Holtmann
2004-02-25 14:04 ` Mauro Tortonesi
2004-02-25 14:23 ` Marcel Holtmann
2004-02-25 15:35 ` Mauro Tortonesi
2004-02-25 15:37 ` Marcel Holtmann
2004-02-25 15:46 ` Mauro Tortonesi
[not found] ` <1077728432.6021.522.camel@localhost>
2004-02-25 17:16 ` Marcel Holtmann
2004-02-25 17:27 ` Nils Faerber
2004-02-25 14:30 ` James Courtier-Dutton
2004-02-25 14:59 ` Dr. Simon Vogl
2004-02-25 15:09 ` Marcel Holtmann
2004-02-25 14:22 ` James Courtier-Dutton
2004-02-23 16:35 ` libs2 and utils2 Aaron Klish
2004-02-23 17:19 ` [Bluez-devel] " Marcel Holtmann
2004-02-22 21:54 ` [Bluez-devel] sco link help needed Fred Schättgen
2004-02-22 22:00 ` Marcel Holtmann
2004-02-22 22:35 ` Fred Schättgen
2004-02-22 12:44 ` Dr. Simon Vogl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=403916CB.3060205@superbug.demon.co.uk \
--to=james@superbug.demon.co.uk \
--cc=bluez-devel@lists.sourceforge.net \
--cc=bluez-devel@schaettgen.de \
--cc=marcel@holtmann.org \
--cc=vogl@soft.uni-linz.ac.at \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox