Getting Mint 17.1 Bluetooth To Work on Y50-70

The quest for playing Wii on a laptop
Getting Mint 17.1 Bluetooth To Work on Y50-70

So I recently Installed Mint 17.1 on my new Y50-70. Despite what seemed to be happening with others on the internet, my wi-fi worked fine, whoever the Bluetooth worked randomly, some boots there was bluetooth, on somes there wasn't.

Fix 1 - Getting a new ath3k driver:

At first I decided to compile the new drivers from backports, as some people suggested to recompile ath9k (wireless driver). Recompiling the ath9k drivers, however, didn't prove fruitful.

Checking "dmesg" showed me that something was wrong with the bluetooth drivers:

Bluetooth: Loading patch file failed

so I decided to recompile the drivers, from the same module in backports

First you get the necessay packages:

sudo apt-get install --reinstall linux-headers-generic build-essential

then download the latest package from backports

wget http://www.kernel.org/pub/linux/kernel/projects/backports/stable/v3.19-rc1/backports-3.19-rc1-1.tar.xz

and build!

tar -xvf backports-3.19-rc1-1.tar.xz
cd backports[tab]
make menuconfig

On the window that shows up( you might need to install libncurses-dev to compile ), select nothing but

Bluetooth subsystem support 
    -> Bluetooth Device Drivers 
        -> Atheros Firmware Download Driver

then:

make
sudo make install

Then reboot and hope for the best!

Fix 2 - Putting Ath9k driver in Coexistence mode:

It's possible that the wireless driver is not on the coexistence mode, in order to be sure, create a file /etc/modprobe/bluetooth-coex-fix.conf with the contents:

options ath9k btcoex_enable=1

Fix 3 - Delaying firmware upload:

It's also possible that the driver tries to upload the firmware too soon, so you can Create a file /etc/modprobe/ath3k.conf with the contents:

blacklist ath3k

So it is manually loaded later by your rc.local. Open the file:

sudo nano /etc/rc.local

And make it look like this:

...
...
modprobe ath3k
exit 0

and reboot again!

You should see something like this:

will@will-Lenovo-Y50-70 ~ $ hciconfig 
hci0:   Type: BR/EDR  Bus: USB
    BD Address: 18:CF:5E:XX:XX:XX  ACL MTU: 1022:8  SCO MTU: 183:5
    UP RUNNING PSCAN 
    RX bytes:636 acl:0 sco:0 events:41 errors:0
    TX bytes:1442 acl:0 sco:0 commands:41 errors:0

At least it works for me so far, in case it stops working, this post goes down aswell.