Brian J. Murrell wrote: > Hi all. > > I have a bluetooth dongle on a machine with PA 0.9.18 (Ubuntu Karmic) on > it and a headset paired successfully. From the PA debug (-vvvv) output, > it appears that PA sees the headset but then removes the bluetooth > module, for whatever reason: > > The reason PA unloads the BT device module is here: I: module-bluetooth-device.c: FD error: POLLERR D: module-bluetooth-device.c: IO thread failed This is happening because there is some problem setting up a SCO connection (bluetooth transport protocol specified by headset profile/hands-free profile) to the headset. Your options moving forward: 1) Troubleshoot bluez for why the SCO connection is failing. Start with the very newest bluez (there have been a few audio-related bug fixes in recent weeks). Debug logging of the user-level daemon (where much of the audio-related BT support resides) is enabled with: sudo kill -USR2 [process_id of /usr/sbin/bluetoothd] and logged to /var/log/daemon.log on Ubuntu. Also running, sudo hcidump -t -X -V can be helpful in the diagnostic process (look for the result code in the "Synchronous Connect Complete" packet and what happens after). If the above seems like a hassle, that's because it is. Unfortunately, there is no way via configuration in pulseaudio to have A2DP be the preferred profile for discovered bluetooth devices (presumably because HSP/HFP is more common). 2) If you only want A2DP and don't want pulseaudio connecting via HSP/HFP, you can only do it per-device and must sacrifice BT device discovery. Comment out the load of module-bluetooth-discover in /etc/pulse/default.pa and add the following line to the same file (replace xx:xx:xx:xx:xx:xx below with your headset's BT_ADDR): load-module module-bluetooth-device address=xx:xx:xx:xx:xx:xx profile=a2dp You can do this via the command line as well: pactl list <-- to find module # of module-bluetooth-discover pactl unload-module [module# of module-bluetooth-discover] pactl load-module module-bluetooth-device address=xx:xx:xx:xx:xx:xx profile=a2dp 3) Modify & build a custom version of pulseaudio that prefers A2DP rather than HSP/HFP. Hint: Look at add_card() in pulseaudio/src/modules/bluetooth/module-bluetooth-device.c. You can change the profile priority values... Cavaets: 1) The headset has to already be on when module-bluetooth-device loads or it selects the off profile. 2) Selecting a different profile can be done with pavucontrol via the "Configuration" tab or within the quasi-shell pacmd via the set-card-profile command. 3) pavucontrol 0.9.8 terminates with pulseaudio 0.9.17+. It's looking for a headset icon that doesn't exist. (you can fake it by stuffing a audio-bluetooth-headset.svg file in $HOME/.icons). 4) The terminate bug above has reportedly been fixed for a while but only just released in pavucontrol 0.9.9. pavucontrol 0.9.9 is not yet packaged for Ubuntu. Good luck if you want to get that working on your own... Regards, Peter Hurley