* Possible to send audio to multiple bluetooth headsets at once?
@ 2008-11-09 7:19 Damon Hastings
2008-11-09 9:35 ` Johan Hedberg
0 siblings, 1 reply; 4+ messages in thread
From: Damon Hastings @ 2008-11-09 7:19 UTC (permalink / raw)
To: linux-bluetooth
Hi there,
Is it possible to stream audio to multiple bluetooth headsets on the same dongle, simultaneously? Details of my setup and failed attempts are below if anyone wishes to help -- but honestly, even a one-line response "yes it's possible" would at least tell me I'm not wasting my time! What I've read elsewhere suggests that what I'm trying to do may not even be possible in Linux. (In case you're curious, I'll have too many headsets to have a separate dongle for each -- probably dozens of headsets, assuming the Bluetooth band can handle that many, which I'm also unsure about and pretty nervous about too. Each stream will be 90% silent, with only occasional bursts of speech, but, still. Oh well, I guess I'll find whether it works *after* I invest tons of coding time into this.) I don't need to receive any audio from the headsets.
About my setup and my failed attempts:
I'm running Fedora 9 and have tried its built-in bluez (version 3.35) as well as bluez-4.17, and I'm using alsa. I'm using the Motorola H680 and Jabra BT2040 headsets with an Aluratek ABD2020 dongle. I can pair both headsets at once, and I can stream audio to one of them at a time just fine. But if I try streaming to both at once, I get this error from aplay on the second one:
damon@localhost [/home/damon]> aplay -D bluetooth_mot_h680 bmtl.wav
Playing WAVE '/home/damon/bmtl.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
ALSA lib pcm_bluetooth.c:464:(bluetooth_hsp_hw_params) BT_SETCONFIGURATION failed : Input/output error(5)
aplay: set_params:1015: Unable to install hw params:
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: 16
CHANNELS: 1
RATE: 8000
PERIOD_TIME: 125000
PERIOD_SIZE: 1000
PERIOD_BYTES: 2000
PERIODS: 4
BUFFER_TIME: 500000
BUFFER_SIZE: 4000
BUFFER_BYTES: 8000
TICK_TIME: [0 0]
I also get this in /var/log/messages (with bluez 3.35):
Nov 7 21:08:14 scanners hcid[4512]: Audio API: received BT_GETCAPABILITIES_REQ
Nov 7 21:08:14 scanners hcid[4512]: Audio API: sending BT_GETCAPABILITIES_RSP
Nov 7 21:08:14 scanners hcid[4512]: Audio API: received BT_SETCONFIGURATION_REQ
Nov 7 21:08:14 scanners hcid[4512]: config sco - device = 00:1A:0E:82:35:D5 access_mode = 2
Nov 7 21:08:14 scanners hcid[4512]: connect: Operation not permitted (1)
Nov 7 21:08:14 scanners kernel: hcid[4512]: segfault at 10 ip 003e818f sp bfcb08d0 error 6 in audio.so[3de000+21000]
And for bluez-4.17 I got all fancy and ran bluetoothd (which I take it replaces hcid) manually as root in debug mode. I got the same error from aplay, and bluetoothd gave me this (note it doesn't segault like hcid did):
bluetoothd[2925]: Accepted new client connection on unix socket (fd=27)
bluetoothd[2925]: Audio API: received BT_GETCAPABILITIES_REQ
bluetoothd[2925]: Audio API: sending BT_GETCAPABILITIES_RSP
bluetoothd[2925]: Audio API: received BT_SETCONFIGURATION_REQ
bluetoothd[2925]: config sco - device = 00:1A:0E:B8:B3:7F access_mode = 2
bluetoothd[2925]: connect: Operation not permitted (1)
bluetoothd[2925]: config failed
bluetoothd[2925]: Audio API: sending BT_SETCONFIGURATION_RSP
bluetoothd[2925]: Unix client disconnected (fd=27)
Same result if I don't run as root. The original headset kept playing just fine, but the second headset remained quiet. Reversing order of playing makes no difference. Pairing second while first is already playing makes no difference.
And here's a bunch of info that may or may not be relevant:
My .asoundrc:
pcm.bluetooth_jab_bt2040 {
type bluetooth
device 00:1A:45:31:47:69
profile "auto"
}
pcm.bluetooth_mot_h680 {
type bluetooth
device 00:1A:0E:B8:B3:7F
profile "auto"
}
My /etc/bluetooth/main.conf (unchanged from defaults):
[General]
Name = %h-%d
Class = 0x000100
DiscoverableTimeout = 0
PageTimeout = 8192
OffMode = NoScan
DiscoverSchedulerInterval = 0
Hardware info:
root@localhost [/root]> hciconfig hci0 features
hci0: Type: USB
BD Address: 00:15:83:02:4F:E7 ACL MTU: 310:10 SCO MTU: 64:8
Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
<3-slot packets> <5-slot packets> <encryption> <slot offset>
<timing accuracy> <role switch> <hold mode> <sniff mode>
<park state> <RSSI> <channel quality> <SCO link> <HV2 packets>
<HV3 packets> <u-law log> <A-law log> <CVSD> <paging scheme>
<power control> <transparent SCO> <broadcast encrypt>
<EDR ACL 2 Mbps> <EDR ACL 3 Mbps> <enhanced iscan>
<interlaced iscan> <interlaced pscan> <inquiry with RSSI>
<extended SCO> <EV4 packets> <EV5 packets> <AFH cap. slave>
<AFH class. slave> <3-slot EDR ACL> <5-slot EDR ACL>
<AFH cap. master> <AFH class. master> <EDR eSCO 2 Mbps>
<EDR eSCO 3 Mbps> <3-slot EDR eSCO> <extended features>
root@localhost [/root]> hcitool info 00:1A:45:31:47:69
Requesting information ...
BD Address: 00:1A:45:31:47:69
OUI Company: GN Netcom as (00-1A-45)
Device Name: Jabra BT2040
LMP Version: 2.0 (0x3) LMP Subversion: 0xbf9
Manufacturer: Cambridge Silicon Radio (10)
Features: 0xbc 0xfe 0x0f 0x86 0x8b 0xe9 0x00 0x00
<encryption> <slot offset> <timing accuracy> <role switch>
<sniff mode> <RSSI> <channel quality> <SCO link> <HV2 packets>
<HV3 packets> <u-law log> <A-law log> <CVSD> <paging scheme>
<power control> <transparent SCO> <EDR ACL 2 Mbps>
<EDR ACL 3 Mbps> <extended SCO> <EV4 packets> <EV5 packets>
<AFH cap. slave> <3-slot EDR ACL> <5-slot EDR ACL>
<AFH cap. master> <EDR eSCO 2 Mbps> <EDR eSCO 3 Mbps>
<3-slot EDR eSCO>
root@localhost [/root]> hcitool info 00:1A:0E:B8:B3:7F
Requesting information ...
BD Address: 00:1A:0E:B8:B3:7F
OUI Company: Cheng Uei Precision Industry Co.,Ltd (00-1A-0E)
Device Name: Motorola H680
LMP Version: 2.0 (0x3) LMP Subversion: 0x109d
Manufacturer: Cambridge Silicon Radio (10)
Features: 0xfc 0xfc 0x0b 0x80 0x0b 0x88 0x00 0x00
<encryption> <slot offset> <timing accuracy> <role switch>
<hold mode> <sniff mode> <channel quality> <SCO link>
<HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD>
<paging scheme> <transparent SCO> <extended SCO> <EV4 packets>
<EV5 packets> <AFH cap. slave> <AFH cap. master>
<3-slot EDR eSCO>
Thanks for any help -- I'm at wits' end! :-P
Damon Hastings
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: Possible to send audio to multiple bluetooth headsets at once?
2008-11-09 7:19 Possible to send audio to multiple bluetooth headsets at once? Damon Hastings
@ 2008-11-09 9:35 ` Johan Hedberg
0 siblings, 0 replies; 4+ messages in thread
From: Johan Hedberg @ 2008-11-09 9:35 UTC (permalink / raw)
To: BlueZ development
Hi Damon,
In theory what you're trying to do should be possible, though you
might run into bandwidth issues (and there's not much BlueZ can do to
help with that). However, you do need some configuration file changes
since the defaults are for one headset only. If you're trying to use
HSP/HFP add MaxConnections=2 to the [Headset] section in /etc/
bluetooth/audio.conf. If you're trying to use A2DP add SBCSources=2 to
the [A2DP] section of the same file. You might also want to experiment
with forcing BlueZ to use the profile you want in the case of multi-
profile headsets. For HSP/HFP you need profile=voice in your .asoundrc
entries and for A2DP you need profile=hifi.
Johan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Possible to send audio to multiple bluetooth headsets at once?
@ 2008-11-10 0:38 Damon Hastings
0 siblings, 0 replies; 4+ messages in thread
From: Damon Hastings @ 2008-11-10 0:38 UTC (permalink / raw)
To: BlueZ development
Hi Johan,
Thanks for your quick reply -- I wish I had posted here days ago! Say, am I supposed to be sending my response only to you, or to the whole mailing list?
Well, you probably got me a few steps closer (that I *never* would have figured out on my own), but I'm afraid the behavior of bluetoothd is unchanged. I've only tried it with bluez 4.17 -- should I try an earlier version?
I created /etc/bluetooth/audio.conf with these contents:
[Headset]
MaxConnections=2
I also tried adding that to /etc/bluetooth/main.conf, and I tried adding MaxConnections=2 to the [General] section there as well. I also tried MaxConnected=2 due to a suspicious message "audio.conf: Key file does not have key 'MaxConnected'" that I got from bluetoothd; debug mode seems to give messages like that for keys which could (should?) have been in the conf files but weren't. And I added 'profile "voice"' to both PCMs in my .asoundrc.
None of this seemed to substantially change bluetoothd's behavior. Here's the full output of "/usr/sbin/bluetoothd -d -n" running as root during one of my attempts, with my own actions annotated in <> angle brackets. This is starting from scratch (i.e. no stored pairings, so I have to re-enter both PINs):
bluetoothd[3103]: Bluetooth daemon
bluetoothd[3103]: Enabling debug information
bluetoothd[3103]: parsing main.conf
bluetoothd[3103]: offmode=NoScan
bluetoothd[3103]: discovto=0
bluetoothd[3103]: pageto=8192
bluetoothd[3103]: name=%h-%d
bluetoothd[3103]: class=0x000100
bluetoothd[3103]: inqmode=0
bluetoothd[3103]: Starting SDP server
bluetoothd[3103]: Loading plugins /usr/lib/bluetooth/plugins
bluetoothd[3103]: Unix socket created: 11
bluetoothd[3103]: audio.conf: Key file does not have key 'HFP'
bluetoothd[3103]: Telephony plugin initialized
bluetoothd[3103]: HFP AG features: "Ability to reject a call" "Enhanced call status" "Extended Error Result Codes"
bluetoothd[3103]: Parsing /etc/bluetooth/input.conf failed: No such file or directory
bluetoothd[3103]: Parsing /etc/bluetooth/network.conf failed: No such file or directory
bluetoothd[3103]: Config options: InterfacePrefix=bnep%d, PANU_Script=(null), GN_Script=(null), NAP_Script=(null), GN_Interface=pan0, NAP_Interface=pan1, Security=true
bluetoothd[3103]: bridge pan0 created
bluetoothd[3103]: HCI dev 0 registered
bluetoothd[3103]: child 3109 forked
bluetoothd[3103]: HCI dev 0 already up
bluetoothd[3103]: headset_server_probe: path /org/bluez/hci0
bluetoothd[3103]: audio.conf: Key file does not have key 'Master'
bluetoothd[3103]: Adding record with handle 0x10000
bluetoothd[3103]: Record pattern UUID 00000003-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00000100-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001002-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001108-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001112-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001203-0000-1000-8000-00805f9
bluetoothd[3103]: audio.conf: Key file does not have key 'SCORouting'
bluetoothd[3103]: Adding record with handle 0x10001
bluetoothd[3103]: Record pattern UUID 00000003-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00000100-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001002-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 0000111e-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 0000111f-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001203-0000-1000-8000-00805f9
bluetoothd[3103]: a2dp_server_probe: path /org/bluez/hci0
bluetoothd[3103]: audio.conf: Key file does not have key 'Disable'
bluetoothd[3103]: audio.conf: Key file does not have group 'A2DP'
bluetoothd[3103]: audio.conf: Key file does not have group 'A2DP'
bluetoothd[3103]: audio.conf: Key file does not have group 'A2DP'
bluetoothd[3103]: audio.conf: Key file does not have group 'A2DP'
bluetoothd[3103]: audio.conf: Key file does not have key 'Master'
bluetoothd[3103]: SEP 0xb840b6e0 registered: type:0 codec:0 seid:1
bluetoothd[3103]: Adding record with handle 0x10002
bluetoothd[3103]: Record pattern UUID 00000019-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00000100-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001002-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 0000110a-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 0000110d-0000-1000-8000-00805f9
bluetoothd[3103]: avrcp_server_probe: path /org/bluez/hci0
bluetoothd[3103]: audio.conf: Key file does not have key 'Master'
bluetoothd[3103]: Adding record with handle 0x10003
bluetoothd[3103]: Record pattern UUID 00000017-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00000100-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001002-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 0000110c-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 0000110e-0000-1000-8000-00805f9
bluetoothd[3103]: Adding record with handle 0x10004
bluetoothd[3103]: Record pattern UUID 00000017-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00000100-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001002-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 0000110e-0000-1000-8000-00805f9
bluetoothd[3103]: proxy_probe: path /org/bluez/hci0
bluetoothd[3103]: Registered interface org.bluez.SerialProxyManager on path /org/bluez/hci0
bluetoothd[3103]: service_probe: path /org/bluez/hci0
bluetoothd[3103]: Registered interface org.bluez.Service on path /org/bluez/hci0
bluetoothd[3103]: network_server_probe: path /org/bluez/hci0
bluetoothd[3103]: Adding record with handle 0x10005
bluetoothd[3103]: Record pattern UUID 0000000f-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00000100-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001002-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001115-0000-1000-8000-00805f9
bluetoothd[3103]: register_server_record: got record id 0x10005
bluetoothd[3103]: Registered interface org.bluez.NetworkPeer on path /org/bluez/hci0
bluetoothd[3103]: network_server_probe: path /org/bluez/hci0
bluetoothd[3103]: Adding record with handle 0x10006
bluetoothd[3103]: Record pattern UUID 0000000f-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00000100-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001002-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001117-0000-1000-8000-00805f9
bluetoothd[3103]: register_server_record: got record id 0x10006
bluetoothd[3103]: Registered interface org.bluez.NetworkHub on path /org/bluez/hci0
bluetoothd[3103]: network_server_probe: path /org/bluez/hci0
bluetoothd[3103]: Adding record with handle 0x10007
bluetoothd[3103]: Record pattern UUID 0000000f-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00000100-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001002-0000-1000-8000-00805f9
bluetoothd[3103]: Record pattern UUID 00001116-0000-1000-8000-00805f9
bluetoothd[3103]: register_server_record: got record id 0x10007
bluetoothd[3103]: Registered interface org.bluez.NetworkRouter on path /org/bluez/hci0
bluetoothd[3103]: Adapter /org/bluez/hci0 has been enabled
bluetoothd[3103]: Starting security manager 0
bluetoothd[3103]: child 3109 exited
bluetoothd[3103]: Computer is classified as desktop
bluetoothd[3103]: Current device class is 0x4a0104
bluetoothd[3103]: Setting 0x000104 for major/minor device class
bluetoothd[3103]: Agent registered for hci0 at :1.21:/org/bluez/agent/hci0
<turned on the Jabra BT2040 headset>
bluetoothd[3103]: adapter_get_device(00:1A:45:31:47:69)
bluetoothd[3103]: adapter_create_device(00:1A:45:31:47:69)
bluetoothd[3103]: Creating device /org/bluez/hci0/dev_00_1A_45_31_47_69
bluetoothd[3103]: link_key_request (sba=00:15:83:02:4F:E7, dba=00:1A:45:31:47:69)
bluetoothd[3103]: kernel auth requirements = 0x00
bluetoothd[3103]: pin_code_request (sba=00:15:83:02:4F:E7, dba=00:1A:45:31:47:69)
bluetoothd[3103]: hcid_dbus_new_auth_request
<entered PIN>
bluetoothd[3103]: link_key_notify (sba=00:15:83:02:4F:E7, dba=00:1A:45:31:47:69)
bluetoothd[3103]: hcid_dbus_bonding_process_complete: status=00
bluetoothd[3103]: adapter_get_device(00:1A:45:31:47:69)
bluetoothd[3103]: adapter_get_device(00:1A:45:31:47:69)
bluetoothd[3103]: Probe drivers for /org/bluez/hci0/dev_00_1A_45_31_47_69
bluetoothd[3103]: adapter_get_device(00:1A:45:31:47:69)
bluetoothd[3103]: Found Headset record
bluetoothd[3103]: Discovered Headset service on RFCOMM channel 2
bluetoothd[3103]: Registered interface org.bluez.Headset on path /org/bluez/hci0/dev_00_1A_45_31_47_69
bluetoothd[3103]: Found Handsfree record
bluetoothd[3103]: Discovered Handsfree service on RFCOMM channel 1
bluetoothd[3103]: headset_probe: path /org/bluez/hci0/dev_00_1A_45_31_47_69
bluetoothd[3103]: Registered interface org.bluez.Input on path /org/bluez/hci0/dev_00_1A_45_31_47_69
<turned on the Motorola H680 headset>
bluetoothd[3103]: adapter_get_device(00:1A:0E:B8:B3:7F)
bluetoothd[3103]: adapter_create_device(00:1A:0E:B8:B3:7F)
bluetoothd[3103]: Creating device /org/bluez/hci0/dev_00_1A_0E_B8_B3_7F
bluetoothd[3103]: link_key_request (sba=00:15:83:02:4F:E7, dba=00:1A:0E:B8:B3:7F)
bluetoothd[3103]: kernel auth requirements = 0x00
bluetoothd[3103]: pin_code_request (sba=00:15:83:02:4F:E7, dba=00:1A:0E:B8:B3:7F)
bluetoothd[3103]: hcid_dbus_new_auth_request
<entered PIN>
bluetoothd[3103]: link_key_notify (sba=00:15:83:02:4F:E7, dba=00:1A:0E:B8:B3:7F)
bluetoothd[3103]: hcid_dbus_bonding_process_complete: status=00
bluetoothd[3103]: adapter_get_device(00:1A:0E:B8:B3:7F)
bluetoothd[3103]: adapter_get_device(00:1A:0E:B8:B3:7F)
bluetoothd[3103]: link_key_request (sba=00:15:83:02:4F:E7, dba=00:1A:0E:B8:B3:7F)
bluetoothd[3103]: kernel auth requirements = 0x00
bluetoothd[3103]: stored link key type = 0x00
bluetoothd[3103]: hcid_dbus_bonding_process_complete: status=00
bluetoothd[3103]: adapter_get_device(00:1A:0E:B8:B3:7F)
bluetoothd[3103]: hcid_dbus_bonding_process_complete: no pending auth request
bluetoothd[3103]: adapter_get_device(00:1A:0E:B8:B3:7F)
bluetoothd[3103]: Probe drivers for /org/bluez/hci0/dev_00_1A_0E_B8_B3_7F
bluetoothd[3103]: Found Handsfree record
bluetoothd[3103]: Discovered Handsfree service on RFCOMM channel 1
bluetoothd[3103]: Registered interface org.bluez.Headset on path /org/bluez/hci0/dev_00_1A_0E_B8_B3_7F
bluetoothd[3103]: State changed /org/bluez/hci0/dev_00_1A_0E_B8_B3_7F: HEADSET_STATE_DISCONNECTED -> HEADSET_STATE_CONNECT_IN_PROGRESS
bluetoothd[3103]: Accepted headset connection from 00:1A:0E:B8:B3:7F for /org/bluez/hci0/dev_00_1A_0E_B8_B3_7F
bluetoothd[3103]: Received AT+BRSF=26
bluetoothd[3103]: HFP HF features: "Call waiting and 3-way calling" "Voice recognition activation" "Remote volume control"
bluetoothd[3103]: Received AT+CIND=?
bluetoothd[3103]: Received AT+CIND?
bluetoothd[3103]: Probe drivers for /org/bluez/hci0/dev_00_1A_0E_B8_B3_7F
bluetoothd[3103]: Found Headset record
bluetoothd[3103]: Found Handsfree record
bluetoothd[3103]: Discovered Handsfree service on RFCOMM channel 1
bluetoothd[3103]: headset_probe: path /org/bluez/hci0/dev_00_1A_0E_B8_B3_7F
bluetoothd[3103]: Registered interface org.bluez.Input on path /org/bluez/hci0/dev_00_1A_0E_B8_B3_7F
bluetoothd[3103]: Received AT+CMER=3, 0, 0, 1
bluetoothd[3103]: Event reporting (CMER): mode=3, ind=1
bluetoothd[3103]: HFP Service Level Connection established
bluetoothd[3103]: telephony-dummy: device 0xb8421d20 connected
bluetoothd[3103]: State changed /org/bluez/hci0/dev_00_1A_0E_B8_B3_7F: HEADSET_STATE_CONNECT_IN_PROGRESS -> HEADSET_STATE_CONNECTED
bluetoothd[3103]: Received AT+BTRH?
bluetoothd[3103]: Received AT+VGS=05
<started aplay on the Jabra>
bluetoothd[3103]: Accepted new client connection on unix socket (fd=23)
bluetoothd[3103]: Audio API: received BT_GETCAPABILITIES_REQ
bluetoothd[3103]: Audio API: sending BT_GETCAPABILITIES_RSP
bluetoothd[3103]: Audio API: received BT_SETCONFIGURATION_REQ
bluetoothd[3103]: config sco - device = 00:1A:45:31:47:69 access_mode = 2
bluetoothd[3103]: /org/bluez/hci0/dev_00_1A_45_31_47_69: Connecting to 00:1A:45:31:47:69 channel 1
bluetoothd[3103]: State changed /org/bluez/hci0/dev_00_1A_45_31_47_69: HEADSET_STATE_DISCONNECTED -> HEADSET_STATE_CONNECT_IN_PROGRESS
bluetoothd[3103]: adapter_get_device(00:1A:45:31:47:69)
bluetoothd[3103]: link_key_request (sba=00:15:83:02:4F:E7, dba=00:1A:45:31:47:69)
bluetoothd[3103]: kernel auth requirements = 0x00
bluetoothd[3103]: stored link key type = 0x00
bluetoothd[3103]: /org/bluez/hci0/dev_00_1A_45_31_47_69: Connected to 00:1A:45:31:47:69
bluetoothd[3103]: Received AT+BRSF=26
bluetoothd[3103]: HFP HF features: "Call waiting and 3-way calling" "Voice recognition activation" "Remote volume control"
bluetoothd[3103]: Received AT+CIND=?
bluetoothd[3103]: Received AT+CIND?
bluetoothd[3103]: Received AT+CMER=3, 0, 0, 1
bluetoothd[3103]: Event reporting (CMER): mode=3, ind=1
bluetoothd[3103]: HFP Service Level Connection established
bluetoothd[3103]: telephony-dummy: device 0xb84107c0 connected
bluetoothd[3103]: State changed /org/bluez/hci0/dev_00_1A_45_31_47_69: HEADSET_STATE_CONNECT_IN_PROGRESS -> HEADSET_STATE_CONNECTED
bluetoothd[3103]: State changed /org/bluez/hci0/dev_00_1A_45_31_47_69: HEADSET_STATE_CONNECTED -> HEADSET_STATE_PLAY_IN_PROGRESS
bluetoothd[3103]: Received AT+BTRH?
bluetoothd[3103]: SCO socket opened for headset /org/bluez/hci0/dev_00_1A_45_31_47_69
bluetoothd[3103]: SCO fd=26
bluetoothd[3103]: Audio API: sending BT_SETCONFIGURATION_RSP
bluetoothd[3103]: State changed /org/bluez/hci0/dev_00_1A_45_31_47_69: HEADSET_STATE_PLAY_IN_PROGRESS -> HEADSET_STATE_PLAYING
bluetoothd[3103]: Audio API: received BT_STREAMSTART_REQ
bluetoothd[3103]: Audio API: sending BT_STREAMSTART_RSP
bluetoothd[3103]: Audio API: sending BT_STREAMFD_IND
bluetoothd[3103]: Received AT+VGS=08
bluetoothd[3103]: Received AT+VGM=08
<with aplay still outputting to the Jabra, I now start another aplay in
a separate window outputting to the Motorola>
bluetoothd[3103]: Accepted new client connection on unix socket (fd=27)
bluetoothd[3103]: Audio API: received BT_GETCAPABILITIES_REQ
bluetoothd[3103]: Audio API: sending BT_GETCAPABILITIES_RSP
bluetoothd[3103]: Audio API: received BT_SETCONFIGURATION_REQ
bluetoothd[3103]: config sco - device = 00:1A:0E:B8:B3:7F access_mode = 2
bluetoothd[3103]: connect: Operation not permitted (1)
bluetoothd[3103]: config failed
bluetoothd[3103]: Audio API: sending BT_SETCONFIGURATION_RSP
bluetoothd[3103]: Unix client disconnected (fd=27)
<I hit ctrl-c in my bluetoothd window to kill bluetoothd>
bluetoothd[3103]: Cleanup plugins
bluetoothd[3103]: bridge pan0 removed
bluetoothd[3103]: Stopping SDP server
bluetoothd[3103]: Exit
I was confused by one thing from above: it says "HFP Service Level Connection established" after I run aplay; but I thought I was using HSP, not HFP. This inspired me to try duplicating your [Headset] section and renaming it to [HFP] -- but that, too, made no difference. I don't even know whether or not [HFP] accepts a MaxConnections/MaxConnected key.
--- On Sun, 11/9/08, Johan Hedberg <johan.hedberg@gmail.com> wrote:
> From: Johan Hedberg <johan.hedberg@gmail.com>
> Subject: Re: Possible to send audio to multiple bluetooth headsets at once?
> To: "BlueZ development" <linux-bluetooth@vger.kernel.org>
> Date: Sunday, November 9, 2008, 1:35 AM
> Hi Damon,
>
> In theory what you're trying to do should be possible,
> though you
> might run into bandwidth issues (and there's not much
> BlueZ can do to
> help with that). However, you do need some configuration
> file changes
> since the defaults are for one headset only. If you're
> trying to use
> HSP/HFP add MaxConnections=2 to the [Headset] section in
> /etc/
> bluetooth/audio.conf. If you're trying to use A2DP add
> SBCSources=2 to
> the [A2DP] section of the same file. You might also want to
> experiment
> with forcing BlueZ to use the profile you want in the case
> of multi-
> profile headsets. For HSP/HFP you need profile=voice in
> your .asoundrc
> entries and for A2DP you need profile=hifi.
>
> Johan
>
> --
> To unsubscribe from this list: send the line
> "unsubscribe linux-bluetooth" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at
> http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: Possible to send audio to multiple bluetooth headsets at once?
@ 2008-11-10 1:08 Damon Hastings
0 siblings, 0 replies; 4+ messages in thread
From: Damon Hastings @ 2008-11-10 1:08 UTC (permalink / raw)
To: BlueZ development
A perhaps more important question: how many bluetooth headsets can be actively receiving audio in the same 200 square foot space at the same time?
If the Bluetooth band simply can't handle 20 headsets streaming all at once, then I'm wasting my (and your) time trying to get multiple headsets to work in the first place! I understand that Bluetooth 2.0 (am I using 2.0?) provides 1 to 2 Mbps of bandwidth, which should be enough to fit 8 to 16 uncompressed 8000Hz 16-bit mono streams, ignoring data redundancy, collision retransmits, and other overhead -- and 8 to 16 isn't good enough. I can use multiple dongles on multiple computers, but they'd just interfere.
Let me break this down into sub-topics... Don't spend too much time on each if you can't answer it off the top of your head -- the most important question is at the end!
1) I don't need good (or even decent) quality -- how do I configure for lowest bandwidth usage? My latency requirements are also fairly relaxed -- 100ms or less should be fine.
2) I'll be sending audio *to* the headsets only; I'd like to make sure no bandwidth is wasted trying to read audio *from* them.
3) Each audio stream will be absolute digital silence (i.e. a sequence of zeroes) 90% of the time, with short bursts of speech the other 10%. Can you tell me whether the relevant protocol/profile/whatever is smart enough to compress all those zeroes away before sending them over the air? Or is there a config change I can make to enable such compression? I don't think I can afford to just disconnect over the silences and reconnect on speech; the reconnect delay would probably be too long.
And now, the big question: Given all of the above optimizations, do you think Bluetooth could fit 20 headsets? 40? 100? I'm not going to hold you to any estimate, of course -- but I just want to know whether now is the time to forget about bluetooth altogether. If so, then maybe I could look into WiFi headsets or something...? I'll use wired headsets if necessary, though it would make life much more difficult for the wearers, who need at least some mobility. Maybe I can find desktop speakers which are capable of outputting highly directional sound in a tight sound cone. Basically, I plan to have 20 workers in a 200 sq ft space who each need their own isolated audio at their own workstation. Each worker leaves his workstation very frequently but very briefly to perform other tasks, and he only needs the audio while he is at his workstation.
Thanks again! :-)
Damon Hastings
--- On Sun, 11/9/08, Johan Hedberg <johan.hedberg@gmail.com> wrote:
> From: Johan Hedberg <johan.hedberg@gmail.com>
> Subject: Re: Possible to send audio to multiple bluetooth headsets at
once?
> To: "BlueZ development" <linux-bluetooth@vger.kernel.org>
> Date: Sunday, November 9, 2008, 1:35 AM
> Hi Damon,
>
> In theory what you're trying to do should be possible,
> though you
> might run into bandwidth issues (and there's not much
> BlueZ can do to
> help with that). However, you do need some configuration
> file changes
> since the defaults are for one headset only. If you're
> trying to use
> HSP/HFP add MaxConnections=2 to the [Headset] section in
> /etc/
> bluetooth/audio.conf. If you're trying to use A2DP add
> SBCSources=2 to
> the [A2DP] section of the same file. You might also want to
> experiment
> with forcing BlueZ to use the profile you want in the case
> of multi-
> profile headsets. For HSP/HFP you need profile=voice in
> your .asoundrc
> entries and for A2DP you need profile=hifi.
>
> Johan
>
> --
> To unsubscribe from this list: send the line
> "unsubscribe linux-bluetooth" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at
> http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2008-11-10 1:08 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-09 7:19 Possible to send audio to multiple bluetooth headsets at once? Damon Hastings
2008-11-09 9:35 ` Johan Hedberg
-- strict thread matches above, loose matches on Subject: below --
2008-11-10 0:38 Damon Hastings
2008-11-10 1:08 Damon Hastings
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.