Cheap Bluetooth Dongles and You

New LUFA release coming up – more on that in a week or two. The last LUFA release has doubled the last download record, and is in the mitts of at least 2000 people! That’s not bad for a small, niche hobbyist project. Don’t forget to link me to the projects you use it in, I love seeing what people create with it!

Now, as usual, back on to what I’m doing at the moment. I think this blog is rather useful to me – not only to bore the people who stumble across it, but to motivate me so that I keep having new things to post here. Without some way of announcing what I’m working on, I’d probably just stagnate and watch way to much TV.

Bluetooth! It’s all about Bluetooth! I’ve had some big success over the last two days; I can now connect to it from my phone, and send HID data giving button presses on the keypad. I’d say that’s pretty damned cool, since it means general Bluetooth use is just around the corner for hobbyists. I was going to make my Bluetooth code GPL instead of MIT in order to try to generate licensing revenue, but I think I’ll just keep it as-is and hope some companies license LUFA instead. Lots of things aren’t done yet, like packet fragmentation, service discovery and LUFA initiated connections to other devices, but this shows that it already has practical implementations.

It seems lots of people are interested in the possibility of embedded Bluetooth, as I’ve already got feedback from people testing my extremely-volatile latest SVN revisions of the code. Two things have been pointed out, through both my personal experience, and the testing of others:

1) Cheap Bluetooth dongles really are cheap for a reason. All Bluetooth devices carry a unique device address (BDADDR) which is used to distinguish one device from another – like a MAC address on network cards. I’ve now got three different dongles all which cost me under $5 shipped off eBay which all have the same “unique” address. Nearest I can tell there’s a company in China making these by the millions and saving a milli-cent a piece by not changing the device codes. That’s bloody annoying as while having one such device is fine, two of them make for some very strange connection issues; Windows will give up immediately with a generic error code as soon as it detects that the source and destination BDADDR values are identical.

Since these devices all have a spoofed VID/PID of a well-known Bluetooth dongle manufacturer, it seems the Chinese have also come up with a cheap solution to my VID/PID rant a few weeks ago – just use someone else’s. I can’t fault them for that to be honest since I don’t agree with the USB-IF’s stupid system anyway, but it makes me wonder if they aren’t selling perfect clones of the real company’s silicon and simply don’t realize that the device address has to be unique.

If you get odd error codes when trying to use two cheap adapters, this is probably why.

2) Not all Bluetooth adapters are created equal. Richard and Andrei have both reported that some of their Bluetooth adapters are actually not standard adapters at all – they report as a hub device with a Bluetooth adapter and a HID device attached. Nearest I can tell this is so that the adapter can pair with a dedicated keyboard/mouse wirelessly via Bluetooth and report as a standard Mouse/Keyboard HID device to the host, so that hosts lacking the proper drivers for the Bluetooth dongle aren’t stuck finding a wired keyboard/mouse combo until they are installed. Unfortunately LUFA isn’t hub compatible due to the way the USB AVRs work, so these device are currently off-limits for the demo.

 

Comments: 8

Leave a reply »

 
 
 

Re your point #2… Are there any that do this but with bluetooth headsets? It drives me crazy that Windows doesn’t have support for headsets by default and for some reason the Widcomm drivers aren’t having a very good time on Windows 7 for me. 🙁

 

I’ve got a bluetooth headset and Windows 7, and it discovers/pairs with it just fine; it should have both headset (mono, cruddy audio) and AD2P (high quality stereo audio) profiles built into the Windows bluetooth stack. That said, I haven’t come across any adapters which contain regular audio interfaces to simplify the audio channeling from the host.

Cheers!
– Dean

 

How odd, I couldn’t get mine to show up with the headset profile until after I installed the broadcom/widcomm drivers. Sounds like I need to re-evaluate my setup this weekend. I have something conflicting so that my mic volume is very low with no way to turn it up and also disassociating my headset crashes the “Bluetooth COM Server”. :/ I thought I had that fixed with a complete uninstall and reinstall but something screwed it up again. Anyways, enjoying the blog, keep it up. 🙂

 

I’m telling you man, GPL the bluetooth! Otherwise, there’s basically no incentive for anyone to commercially license it. As I understand it, the commercial license basically only removes the requirement to mention you in the documentation somewhere and to include the MIT license in with the documentation package – I think it would be hard for a business to justify paying for a commercial license when a commercial license will do nothing for their bottom line.

If you still want to get it into small-scale commercial/hobbyist projects, have a variable commercial licensing scheme where small companies (under 5 employees, certain yearly revenue cap, whatever) can license it for free/cheap. While attribution is nice, nobody reads documentation, especially licence documentation – such as in this case:
http://www.nowpublic.com/culture/april-fools-gamestation-terms-trick-7500-selling-souls

And if you GPL it, and if someone cares enough about a more permissive license to e-mail you about it, you can always figure out what their use is and grant them a case-by-case individual license if they’re not in a position to get the commercial license.

Just my two cents (0.022 AUD) – great work on your project!

 

Just wanted to let you know I finally discovered how to do bluetooth headset support in Windows 7. No matter what I did I was not able to get it to use the headset without the widcomm drivers installed. It would see it just fine, I could tell it I wanted to use it as a headset but it would attempt to “install drivers” for the headset part and then give me the unsuccessful chime. Recently the widcomm drivers became more and more unstable so I started searching again.

I hit paydirt this time. After downloading the drivers from this site: http://blog.komeil.com/2009/05/installing-bluetooth-headset-in-windows.html I was able to uninstall the widcomm crap, and then try to install my headset the same as before. When it gave me the unsuccessful chime then I found it in device manager and told it I had some specific drivers, and pointed it at the directory I extracted those too. Bingo! I couldn’t be happier.

I just wanted to share that with you. You might not care or even see this comment on an old item anyways. 🙂

 

i’d ilke to know if there is a way to change the mac address of a bluetooth dongle in windows 7.

i already know how to do it in linux, HOWEVER, i cannot shutdown this computer running windows 7 to use a live cd of linux.

any solution?

 

Marcos,

I’m not aware of any tool to change the BDADDR in Windows, sorry. Note that being able to change the BDADDR of a device is not a standard feature of the Bluetooth specification, and so the ability to do so would be vendor extensions to the HCI protocol from each vendor. That also means that vendors are free *not* to include any ability to alter the BDADDR, so the cheap dongles with the identical BDADDR values might be stuck that way.

– Dean

 

If your Bluetooth is based on CSR or Broadcom chip it is possible to change it’s MAC address under Windows. Use this tool – Bluetooth MAC Address Changer for Windows https://macaddresschanger.com/

 

Leave a Reply

 
(will not be published)
 
 
Comment
 
 

 

Vital Stats

  • 35 Years Old
  • Australian
  • Lover of embedded systems
  • Firmware engineer
  • Self-Proclaimed Geek

Latest Blog Posts

RSS