This is my experience with the USB-BT4LE Bluetooth 4.0 USB Adapter by Plugable. I bought it since it claims to have Linux support out-of-the-box. Well - the chipset IS supported but I needed to fiddle some to make it work ๐ Of course I can only speak for the device I got and my computer (Ubunu 12.04 LTS, kernel 3.8). So here we go.
After inserting the dongle into the USB port I only got the following message in dmesg:
$ dmesg
\[ 1221.883031\] usb 1-1.2: new full-speed USB device number 7 using ehci-pci
\[ 1221.962504\] usb 1-1.2: New USB device found, idVendor=0a5c, idProduct=21e8
\[ 1221.962511\] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
\[ 1221.962516\] usb 1-1.2: Product: BCM20702A0
\[ 1221.962520\] usb 1-1.2: Manufacturer: Broadcom Corp
\[ 1221.962523\] usb 1-1.2: SerialNumber: 000272C6A72B
\[ 1222.028527\] Bluetooth: can't load firmware, may not work correctly
$ lsusb | grep Broadcom
Bus 001 Device 007: ID 0a5c:21e8 Broadcom Corp.
So I began some digging. A search for the product code and the device id gave me the Bluetooth chip that is used:
BCM20702. The last line of the dmesg output suggests that a firmware is needed. Some more searching on the web confirmed this and this Ubuntu bug report suggests a tool called hex2hcd by Jesse Sung to convert the firmware image that comes with the windows driver into a hcd file.
So I booted Windows, installed the driver and checked which firmware is being used:

$ git clone git://github.com/jessesung/hex2hcd.git
$ cd hex2hcd
$ make
$ ./hex2hcd BCM20702A1\_001.002.014.0889.0896.hex fw-0a5c\_21e8.hcd
$ sudo cp fw-0a5c\_21e8.hcd /lib/firmware/
When the Bluetooth adapter gets plugged into the PC the kernel will look for a proper firmware in the /lib/firmware folder. For this to work the filename of the firmware must have the following format: fw-<manufacturer_id>_<device_id>.hcd After removing the Bluetooth adapter and plugging it in again I got the following messages:
$ dmesg
\[ 2310.229042\] usb 1-1.2: USB disconnect, device number 4
\[ 2313.724641\] usb 1-1.2: new full-speed USB device number 8 using ehci-pci
\[ 2313.813444\] usb 1-1.2: New USB device found, idVendor=0a5c, idProduct=21e8
\[ 2313.813451\] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
\[ 2313.813455\] usb 1-1.2: Product: BCM20702A0
\[ 2313.813459\] usb 1-1.2: Manufacturer: Broadcom Corp
\[ 2313.813462\] usb 1-1.2: SerialNumber: 000272C6A72B
\[ 2315.304436\] Bluetooth: firmware loaded
So far so good. However, I encountered another problem:
$ hcitool scan
Device is not available: No such device
$ sudo hcitool lescan
Set scan parameters failed: File descriptor in bad state
$ sudo hciconfig hci0 up
Can't init device hci0: Operation not possible due to RF-kill (132)
It turns out that there’s a program called rfkill that will acticate/deactivate your bluetooth and/or WLAN devices. In my case this was probably triggered by the hardware switch for wireless communication on my Thinkpad. I found solution on the Ubuntu forums:
$ rfkill list
8: hci0: Bluetooth
Soft blocked: yes
Hard blocked: no
$ sudo rfkill unblock 8
$ rfkill list
8: hci0: Bluetooth
Soft blocked: no
Hard blocked: no
$ sudo hciconfig hci0 up
$ hcitool scan
Scanning ...
6C:23:B9:73:A7:5F MyAndroidPhone
$ sudo hcitool lescan
LE Scan ...