Bluetooth audio (once again)

Maksim Yevmenkin maksim.yevmenkin at
Wed Oct 8 16:25:31 UTC 2008

On 10/8/08, Vladimir Grebenschikov <vova at> wrote:
> On Tue, 2008-10-07 at 09:13 -0700, Maksim Yevmenkin wrote:
>  > >  > warned, you will need to write some code for that. its
>  > >  > relatively simple. basically open an rfcomm socket and then open a sco
>  > >  > socket. i can provide examples if you want me to.
>  > >
>  > > Please, send me an example if you have.
>  >
>  > attached
> Thank you, I've played a bit with it.
>  So far I was able to establish connection to channel 1 or 2 of my
>  headset (Headset and advanced audio).
>  Both connections (rfcomm and sco) are opened, headset sends zeros
>  through sco connection and does some AT-chat on rfcomm.

that sounds about right :) and that is where i left it off for now due
to lack of time :(

>  Looks like I need to implement chat to make headset to work.

do not really need to. once sco connection is open, audio should be
flowing in both directions. you could try to talk to the headset after
opening sco connection and dump all the sco data into the file. the
data are basically raw samples in 8khz a/u-law encoding 8bit or linear
encoding 16bit (depends on voice settings). you should be able to play
those back using sox from ports or something like this. i can dig up
my notes and find the recipe if you want me to.

rfcomm channel is strictly for control. for example, you can make
headset ring by sending "RING" command to it. also headset will send
at+ckpd=200 every time button is pressed. there also might be a at+vgm
or at+vgs commands to report/set microphone/speaker gain, etc.

i suggest reading "headset profile" specification document. if you can
not find one on the net, let me know.

>  Then I dig a bit into bluez sources, and found two things - first, looks
>  like we will need to use/re-implement big part of bluez/audio
>  sub-directory  to get full-functional audio to work under freebsd.

whoa! hold on just a second :) lets not jump the gun here. first lets
fix existing code. need to make sure that sco works reliably at least
up to the socket layer. the first goal would be to, say, have a tool
that can receive/send audio from/to headset. say have a mp3 sent to
headset over sco (re-encoding can be done by outside tool like sox)

>  Second, I've found that bluez uses almost same structures and calls to
>  interact with kernel.

yes, its all very similar. it was intended this way :)

>  Probably it worth to try port bluez (or part of bluez related to sound)
>  to freebsd instead of re-writing whole beast ? What do you think ?

two things

1) like i said we need to fix existing code first, so lets focus on
low hanging fruit here

2) license issues. bluez is gnu, which could be a problem. we could
take a look at what netbsd does.

>  I spend only about half an our to make whole bluez to compile under
>  freebsd (except network bridging and alsa). but not even tried to start
>  it, though.

ok. thanks for your work!


More information about the freebsd-bluetooth mailing list