Bluetooth headset

From Openmoko

Revision as of 18:23, 22 July 2009 by Glenn (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This is mostly based on Neo 1973 audio subsystem and this thread on the kernel mailing list.

Contents

Known to work headsets

Please see A2DP#Devices_that_work for complete list and comparison table.

Preparing

Get the bluetooth alsa state and DAC setup script

Download GSMBLUETOOTH.txt and bluetooth_pcm

Edit /etc/bluetooth/audio.conf

# Configuration file for the audio service

# This section contains options which are not specific to any
# particular interface
[General]

# If we want to disable support for specific services
# Defaults to supporting all implemented services
#Disable=Control,Source

# SCO routing. Either PCM or HCI (in which case audio is routed to/from ALSA)
# Defaults to HCI
SCORouting=PCM

# Headset interface specific options (i.e. options which affect how the audio
# service interacts with remote headset devices)
[Headset]

# Set to true to only support HSP
# Defaults to false
DisableHFP=false

# Just an example of potential config options for the other interfaces
#[A2DP]
#SourceCount=2

The important part is the SCORouting.

Connect and setup the headset

export DEVICE=xx:xx:xx:xx:xx
/etc/init.d/bluetooth stop
/etc/init.d/bluetooth start

passkey-agent --default 0000 &

dbus-send --system --type=method_call --print-reply --dest=org.bluez \
 /org/bluez/hci0 org.bluez.Adapter.CreateBonding string:$DEVICE

dbus-send --system --type=method_call --print-reply --dest=org.bluez \
 /org/bluez/audio org.bluez.audio.Manager.CreateHeadset string:$DEVICE

dbus-send --system --type=method_call --print-reply --dest=org.bluez \
 "/org/bluez/audio/device0" org.bluez.audio.Headset.Connect

dbus-send --system --type=method_call --print-reply --dest=org.bluez \
 "/org/bluez/audio/device0" org.bluez.audio.Headset.Play

During the call

After having answered / placed the call, switch the audio to the bluetooth headset. You need a small workaround to get audio in, which is included below.

alsactl -f GSMBLUETOOTH.txt restore
./bluetooth_pcm &

the workaround is to switch Capture Left Mixer first to Analogue Mix Right and then back to Analogue Mix Right. This can be done with alsamixer:

alsamixer

(lookup Capture Left Mixer in the "gui" and toggle the value).

Personal tools

This is mostly based on Neo 1973 audio subsystem and this thread on the kernel mailing list.

Known to work headsets

Please see A2DP#Devices_that_work for complete list and comparison table.

Preparing

Get the bluetooth alsa state and DAC setup script

Download GSMBLUETOOTH.txt and bluetooth_pcm

Edit /etc/bluetooth/audio.conf

# Configuration file for the audio service

# This section contains options which are not specific to any
# particular interface
[General]

# If we want to disable support for specific services
# Defaults to supporting all implemented services
#Disable=Control,Source

# SCO routing. Either PCM or HCI (in which case audio is routed to/from ALSA)
# Defaults to HCI
SCORouting=PCM

# Headset interface specific options (i.e. options which affect how the audio
# service interacts with remote headset devices)
[Headset]

# Set to true to only support HSP
# Defaults to false
DisableHFP=false

# Just an example of potential config options for the other interfaces
#[A2DP]
#SourceCount=2

The important part is the SCORouting.

Connect and setup the headset

export DEVICE=xx:xx:xx:xx:xx
/etc/init.d/bluetooth stop
/etc/init.d/bluetooth start

passkey-agent --default 0000 &

dbus-send --system --type=method_call --print-reply --dest=org.bluez \
 /org/bluez/hci0 org.bluez.Adapter.CreateBonding string:$DEVICE

dbus-send --system --type=method_call --print-reply --dest=org.bluez \
 /org/bluez/audio org.bluez.audio.Manager.CreateHeadset string:$DEVICE

dbus-send --system --type=method_call --print-reply --dest=org.bluez \
 "/org/bluez/audio/device0" org.bluez.audio.Headset.Connect

dbus-send --system --type=method_call --print-reply --dest=org.bluez \
 "/org/bluez/audio/device0" org.bluez.audio.Headset.Play

During the call

After having answered / placed the call, switch the audio to the bluetooth headset. You need a small workaround to get audio in, which is included below.

alsactl -f GSMBLUETOOTH.txt restore
./bluetooth_pcm &

the workaround is to switch Capture Left Mixer first to Analogue Mix Right and then back to Analogue Mix Right. This can be done with alsamixer:

alsamixer

(lookup Capture Left Mixer in the "gui" and toggle the value).