Bluetooth HSP/HFP not working but A2DP is
Solution 1:
I would try this:
wget https://www.dropbox.com/s/owropuric6iz898/BCM20702A0-05ac-21e1.hcd
sudo cp BCM20702A0-05ac-21e1.hcd /lib/firmware/brcm/BCM20702A0-0a5c-21e1.hcd
sudo modprobe -r btusb
sudo modprobe btusb
Then check dmesg | tail
for any info:
sudo apt-get install linux-headers-$(uname -r) build-essential
wget https://www.dropbox.com/s/xu80svavlazttaf/bluetooth-3.19.tar.gz
tar xpvf bluetooth-3.19.tar.gz
cd bluetooth
cp /boot/config-$(uname -r) .config
cp /usr/src/linux-headers-$(uname -r)/Module.symvers Module.symvers
make -C /lib/modules/$(uname -r)/build M=$PWD modules
sudo cp btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth/
sudo modprobe -r btusb
sudo modprobe btusb
See if it works
You will lose the HSP/HFP after a kernel update. When that happens, you should do:
cd bluetooth
make -C /lib/modules/$(uname -r)/build M=$PWD clean
cp /boot/config-$(uname -r) .config
cp /usr/src/linux-headers-$(uname -r)/Module.symvers Module.symvers
make -C /lib/modules/$(uname -r)/build M=$PWD modules
sudo cp btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth/
sudo modprobe -r btusb
sudo modprobe btusb
Solution 2:
My guess is that it's a bt profile problem with pulseaudio, unless it's something more problematic.
Install and run pavucontrol (apt-get install pavucontrol
) and go to the last page (configuration) check if bluetooth profile is there and try changing it.
My bt audio conf is default withoyt any changes (ubuntu 14.04) /etc/bluetooth/audio.conf
Now, Just tested these steps with a bt-headset (a2dp and hsp capabel) and got it working. Not the best way, but worked.
- Pair bt-device
- Check with
pavucontrol
that profile is HSP from configuration page. - Start
skype
(I know, but it's easy to test with it) - Run
movesink.sh
script - Start test call to skype testing service
- Select recording tab from
pavucontrol
and select "Skype input from" to match your bluetooth device. - Speak and see if the volume bar moves.
- If probles, start call again and run
movesink.sh
during the test call
a) Check bt-device name:
pactl list sinks|grep Name
# or
pactl list sinks|grep card:
b) Run movesinks.sh with that name
./movesink.sh bluez_sink.48_C1_AC_C1_C3_85.hsp
# or
./movesink.sh bluez_sink.48_C1_AC_C1_C3_85
And here's the movesink.sh script that I've made. It moves your program sound outputting to your bt device (this does not move mic automatically from integrated to bt-headset):
#!/bin/bash
echo "Setting default sink to: $1";
# where new pa should output sound for new programs
pacmd set-default-sink $1
# get "active" programs and with while read
pactl list sink-inputs short |cut -f1 | while read line
do
echo "Moving input: ";
echo $line
#| cut -f2 -d' ';
echo "to sink: $1";
# move audio to the newly assigned output.
pacmd move-sink-input `echo $line | cut -f2 -d' '` $1
done
Hopefully this will verify that your setup works. (I used to have a keybinding, that paired the bt-headset, moved inputs to that and when I used it again, it reverted that setup.)
You should get your main audio back to default with:
./movesink.sh alsa_output.pci-0000_00_1b.0.analog-stereo
# or
./movesink.sh alsa_output.pci-0000_00_1b.0