Bluetooth on Lenovo Ideapad S20-30

Ok this one isn't properly supported in the kernel yet but a fairly easy fix

sudo apt-get install build-essential linux-headers-generic
wget https://www.dropbox.com/s/0rmgeve2ibrh1u1/bluetooth-3.16-2.tar.gz
wget https://www.dropbox.com/s/f503f6r686riiow/fw-105b_e065.hcd
tar -zxf bluetooth-3.16-2.tar.gz
cd bluetooth-3.16-2
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 modprobe -r btusb && sudo cp btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth/
sudo modprobe btusb

Then I need to see what it expects to see the firmware file named, so add the result of dmesg | tail -15 so I can edit this answer

Now that we know what the firmware needs to be named cd ~ and sudo cp fw-105b_e065.hcd /lib/firmware/brcm/BCM43142A0-105b-e065.hcd and then

sudo modprobe -r btusb
sudo modprobe btusb
echo btusb | sudo tee -a /etc/modules

And the dmesg | tail results should change and bluetooth should work properly

After a kernel update, bluetooth will likely stop functioning, then you need to

cd bluetooth-3.16-2
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 modprobe -r btusb && sudo cp btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth/
sudo modprobe btusb

And you should be going until the next update