I've got a Broadcom BCM43228 mPCIe card which came with my motherboard (ASUS ROG Maximus V Extreme, can't seem to find a link to what the card is) which is working great for WiFi right now, but I can't detect the Bluetooth hardware onboard. In Windows, I have full Bluetooth 4.0 support.

A patch was submitted to the main Git repository. It is likely (but not certain) that this patch would be included in the next kernel - v3.8. However, it could be a later module if this goes though staging.

Thus, for the moment, to get you bluetooth device to be recognised, you should file a bug-report on launchpad asking if it is possible to backport this patch - give as much detail as possible to the patch and if possible submit the patch as well.

If you want to patch this yourself, here are some notes you can follow.

Hopefully now your bluetooth device is recognised - it should be visible when you run rfkill list all as well as lsusb

and finally...

Each time your kernel is updated by Canonical you will need to re-run through the above procedure because your new bluetooth module will be overwritten - if you are luck you may be able to use run the sudo modprobe commands with minor kernel updates.

Awesome! That worked! All I need to do now is find a way to automatically patch the kernel using a postinst script if possible. I'm fighting on Launchpad right now to see if we can backport the simple patch into the kernel.
–
Naftuli Tzvi KayDec 11 '12 at 22:54

@TKKocheran - excellent. That sounds like a great question. Can you create it (link back to this one as well)?
–
fossfreedom♦Dec 11 '12 at 23:16

For all those finding this page, you can check out a write up I made on how to include this patch in a DKMS module so you won't break it when a kernel update occurs: j.mp/TVxHA9
–
Naftuli Tzvi KayDec 13 '12 at 0:28

This patch was added in kernel 3.7.2, so if you're on it or a later kernel, no patch should by necessary.
–
Naftuli Tzvi KayJan 13 '13 at 19:25

add the line echo 0b05 17b5 > /sys/bus/usb/drivers/btusb/new_id to the /etc/rc.local just before exit 0 - this will force driver to be used with the specified device on boot (which is 04ca 2004 in my system, and also works).