User talk:Gabrys
From Openmoko
Contents |
Testing GSM <-> BT
Basics: We need to tell audio codec to route sound from GSM chip to BT chip. Codec is controlled by ALSA and mixer settings.
Prerequisites: BT device must be paired before the operation.
Step one: powering on bluetooth, setting up bluetoothd, pairing
Set /etc/bluetooth/audio.conf like this:
# SCO routing. Either PCM or HCI (in which case audio is routed to/from ALSA) # Defaults to HCI SCORouting=PCM
Then
echo 1 > /sys/bus/platform/devices/neo1973-pm-bt.0/power_on hciconfig hci0 up bluetoothd
then use simple-agent from here: http://wiki.openmoko.org/wiki/Manually_using_Bluetooth#Pair to pair the device.
Test: "hcitool con" should say:
Connection ACL 00:13:17:78:7B:A3 handle 0 state 5 lm MASTER
Test2:
BTADAPTER=`dbus-send --system --dest=org.bluez --print-reply / org.bluez.Manager.DefaultAdapter | tail -1 | sed 's/^.*"\(.*\)".*$/\1/'` dbus-send --system --dest=org.bluez --print-reply $BTADAPTER/dev_00_13_17_78_7B_A3 org.bluez.Headset.Connect
should say: Error org.bluez.Error.AlreadyConnected: Already Connected
More debug
root@om-gta02 /usr/lib/python2.6/site-packages $ dbus-send --system --dest=org.bluez --print-reply $BTADAPTER/dev_00_13_17_78_7B_A3 org.bluez.Headset.Disconnect method return sender=:1.18 -> dest=:1.287 reply_serial=2 root@om-gta02 /usr/lib/python2.6/site-packages $ dbus-send --system --dest=org.bluez --print-reply $BTADAPTER/dev_00_13_17_78_7B_A3 org.bluez.Headset.Connect Error org.bluez.Error.ConnectionAttemptFailed: Input/output error root@om-gta02 /usr/lib/python2.6/site-packages $ dbus-send --system --dest=org.bluez --print-reply $BTADAPTER/dev_00_13_17_78_7B_A3 org.bluez.Headset.Connect method return sender=:1.18 -> dest=:1.290 reply_serial=2 root@om-gta02 /usr/lib/python2.6/site-packages $ dbus-send --system --dest=org.bluez --print-reply $BTADAPTER/dev_00_13_17_78_7B_A3 org.bluez.Headset.Play method return sender=:1.18 -> dest=:1.292 reply_serial=2
Step two: make a call
Call to the phone and answer (or place a call, whichever is cheaper).
Step three: load ALSA settings to switch codec "mode" to GSM <=> BT
Wait till frameworkd sets its statefile and then overwrite it with your own:
alsactl restore < /usr/share/shr/scenarii/gsmbluetooth.state amixer sset "Capture Left Mixer" "Analogue Mix Right" amixer sset "Capture Left Mixer" "Analogue Mix Left"
(last two lines due to kernel bug).
Set bluetooth IIS to 8000 rate:
import alsaaudio pcm_play = alsaaudio.PCM( alsaaudio.PCM_PLAYBACK, alsaaudio.PCM_NONBLOCK, "hw:0,1" ) pcm_play.setchannels(1) pcm_play.setrate(8000) pcm_play.setformat(alsaaudio.PCM_FORMAT_S16_LE) pcm_play.setperiodsize(500000) pcm_cap = alsaaudio.PCM( alsaaudio.PCM_CAPTURE, alsaaudio.PCM_NONBLOCK, "hw:0,1" ) pcm_cap.setchannels(1) pcm_cap.setrate(8000) pcm_cap.setformat(alsaaudio.PCM_FORMAT_S16_LE) pcm_cap.setperiodsize(500000)
Then issue dbus call to start exchanging audio between GSM and BT:
BTADAPTER=`dbus-send --system --dest=org.bluez --print-reply / org.bluez.Manager.DefaultAdapter | tail -1 | sed 's/^.*"\(.*\)".*$/\1/'` dbus-send --system --dest=org.bluez --print-reply $BTADAPTER/dev_00_13_17_78_7B_A3 org.bluez.Headset.Play
We should hear something in the BT headset and not in phone's speaker.