Fun with Logitech MX900 Bluetooth receivers

For some time now, I have been partial to cordless mice; they’re much less of a hastle to use than “conventional” mice, especially if you use a laptop primarily.  Several months ago, I decided to upgrade from a Logitech MX700 cordless optical mouse to an MX900 Bluetooth optical mouse, so that with my new Bluetooth-enabled laptop, I would not need to bring the bulky charger/base station it to plug into my computer at work every day.

As it would happen, the MX900 base station has a Bluetooth receiver that you can use (in conjunction with the WIDCOMM – now Broadcom – Bluetooth stack) to connect to other Bluetooth devices out there.  At the time when I first got the mouse, I didn’t really see this as all that useful, as my laptop already had an integrated Bluetooth receiver that was supposed by the Microsoft Bluetooth stack included with Windows XP SP2.  Recently, however, I got a second Bluetooth enabled device – a new cell phone – and decided that I might as well see what I could do with getting one of my other computers at my apartment talking to it.

 Now, a bit of background about the MX900 base station.  It’s actually a pretty neat thing – during boot (and even in normal operating system use, if you don’t have the right software installed), the MX900 will act as if it were a standard HID USB mouse even though it is actually connected through Bluetooth – “HID emulation mode”, as I call it.  This is a cool feature because it allows you to use your standard USB mouse drivers with the MX900 without having to go install all of Logitech’s drivers and the like before the mouse will work.  Additionally, if your BIOS supports USB input devices (most modern ones do), you can use the MX900 there even though it functions over Bluetooth.

As a result of the handy HID emulation mode feature of the MX900, I can already use it as a mouse on my other, non-Bluetooth computers as if it were a plain USB mouse, with the operating system none the wiser.  Therein is the rub, however; in order for me to be able to connect the MX900 base station to non-keyboard/mouse devices, I need to be able to convince Windows that it is actually a full fludged Bluetooth receiver and not just a USB mouse.  Normally, Logitech’s SetPoint software installs a program that runs when you log in to Windows and magically turns the MX900 base station into Bluetooth HCI mode, that is, native Bluetooth receiver mode – assuming you had installed the WIDCOMM bluetooth stack, that is.

 So, I set out to install SetPoint on my test computer.  Unfortunately, this didn’t really work out as planned.  The computer I had available to work with was running Windows Server 2003 and it seems that the SetPoint installer for the version I needed wasn’t exactly well tested on Windows Server 2003.  The installer would tend to blow up with heap corruption right away, making it impossible to do anything.  I then tried running the installer under the Windows XP SP2 compatibility layer (right click the .exe, there is a compatibility option in the propsheet if you an administrator).  This got me a bit further, but the Logitech installer inevitibly crashed.

Looking around a bit, there was actually a more recent version of SetPoint available (Logitech supports 2.22 with the MX900, the latesting being 2.60 which is designed for Logitech’s Bluetooth keyboard and mouse suite).  I figured that it was worth a try to install 2.60 and see if that worked.  Sure enough, the installer actually didn’t crash this time, but unfortunately, it would not accept that I had a Bluetooth device that was compatible with it; I got stuck at a dialog that instructed me to connect my Logitech Bluetooth device and hit OK, or skip the installation of the Bluetooth support and install “just plain” SetPoint.  Well, that sucks – the whole point of this excercise was to get Bluetooth working on the test computer, not Logitech’s middleware.

Poking around in my temp directory, I noticed that while the installer was running, one of the temporary directories it created seemed to have a second installer for the WIDCOMM Bluetooth stack (WIDCOMM – now Broadcom - does not make their software directly available for download to end users, and instead requires them to get it bundled with hardware from an equipment manufacturer).  A-ha – maybe there was light at the end of the tunnel, after all.  While the Logitech installer was waiting for me to hit Next in one of the wizard steps, I manually launched the WIDCOMM installer from the temp directory that the Logitech installer had created.  The installer actually worked fine, except that it too complained that it could not detect an active Bluetooth device (fortunately, though, it allowed me the option of continuing the install anyway).

After the WIDCOMM installer finished, I canceled out of the Logitech install and went to see if I could convince the WIDCOMM stack that I really did have a Bluetooth device.  After not getting anywhere on my own, I turned to Google, where I found a number of people complaining about the same problem (about not being able to turn their MX900 receivers to native HCI mode), but no quick solution for Windows.  I did, however, find something for Linux – a program called “hid2hci” that knew how to turn an MX900 Bluetooth receiver to a HCI mode.  Fortunately, source code was included, so it was easy enough to see what it was doing.  Unfortunately, I don’t really have a whole lot of experience with USB, on Windows or other platforms, and what I needed to do was port hid2hci to Windows.

The linux program is fairly simple.  Even with my limited knowledge of USB, what it was doing appeared to be straightforward enough.  The program sends three vendor-specific HID output reports (a HID report is the basic way to either report information from a device to the computer or change a setting on the device for HID devices) to the MX900 receiver.  After receiving the special three HID reports, the MX900 changes its PnP ID and appears to the operating system as a different piece of hardware, an HCI Bluetooth receiver.

 So, I got started working on a Windows version of hid2hci.  The first step was to crack open the Windows DDK documentation (you can download the DDK with the free KMDF 1.1 ISO distribution) and start looking around for ways to talk to USB devices.  It turns out that there is already a rather full featured API to do this, from both user mode and kernel mode.  Because all I really needed to do here was to send three custom commands to the MX900, I picked the user mode HID API to start with.

The user mode HID APIs live in hid.dll and come in two flavors: HID Parser routines (prefixed HidP_), and HID Device/Driver routines (prefixed HidD_).  The former provide a high level interface for formatting, preparing, and parsing the actual USB HID reports, while the latter deal with actually sending and receiving USB HID reports.  The API is a bit cumbersome, but it turns out to not be too hard to use.  The basic idea is:

  1. Open a handle to the HID device that you want to talk to with CreateFile.
  2. Call HidD_GetPreparsedData to load the preparsed data for the collection.  This basically retrieves all sorts of information about the HID device ahead of time in one blob that is later used by the HID Parser routines to ensure that you are matching the report formats used by the device.
  3. Call HidD_GetAttributes and HidD_GetCaps to make sure that the device is the one you meant to connect to and supports the HID usages that you are going to use.  Here, I wanted to verify that the vendor specific usage page 0xFF00, usage 0x0001 is present (as this is where I wanted to send the magic 3 reports to turn the receiver to HCI mode).
  4. Build the HID report.  I originally attempted to do this using the high level HID Parser APIs, but I couldn’t get it to work right – the HID Parser APIs kept complaining that the usage I requested didn’t exist.  I assume that this is because Logitech never bothered to completely describe the format of the HID reports for this vendor specific usage, resulting in the high level parser becoming unhappy if you asked it to format a report for that usage.  As a result, I just built the report manually by just writing the raw data into the report buffer and prepending the HID report ID (0x10) to the report data.
  5. Send the completed report to the device.  There are two ways to do this – WriteFile and HidD_SetOutputReport.  I attempted to use WriteFile first, but it always failed with ERROR_ACCESS_DENIED.  Not being an expert on HID devices, I tried the other documented routine (HidD_SetOutputReport) send the report, which worked fine.  HidD_SetOutputReport internally just sends a special IOCTL to the driver for the device you open, so the code paths are in fact different.

Steps 4 and 5 will basically need to be repeated for each of the three HID reports that we need to send to the Bluetooth receiver.

 There are a couple of other things that you need to do in order to get this to work that I glossed over.  In particular, you need to actually find the device that you want to open with CreateFile.  The best way to do this is by using the SetupDi family of APIs to enumerate all HID devices.  We can then verify that each device has the expected vendor ID, product ID, and HID usages before we try to send it the magical commands to convert the device to native HCI mode.

After putting all of these steps together, I had something that appeared to do what the Linux hid2hci program did.  Sure enough, when I ran my prototype hid2hci port on my test box, a new device appeared in Device Manager, which was detected by the WIDCOMM Bluetooth stack as a Cambridge Silicon Radio Bluetooth Receiver.  Success!

The device itself stays in native HCI mode until it is reset (i.e. rebooting the computer or unplugging the receiver itself), so the HCI conversion program needs to either periodically scan for devices to switch to HCI mode, or register for a device change notification in order to enable full Bluetooth functionality if you reboot or disconnect the Bluetooth receiver.

The source code for my Logitech HID-to-HCI convertor program is available for download if you are interested in it.  You will need Windows DDK installed in order to build it.  Alternatively, you can download the binary if you just want the program and don’t want to install the development environment to build it.  It takes two command line arguments: the hexadecimal vendor ID and hexadecimal product ID of the device that it should switch from HID emulation mode to native HCI mode.  You can find these under Device Manager if you are using Windows XP SP2 or Windows Server 2003 SP1 by going to your device’s property sheet and going to the details tab, then selecting the Hardware Ids listbox item.  The device you want is probably going to be named “USB Composite Device”.  If you are using an MX900, then you can use 046d for the vendor ID and c705 for the product ID.  There is no harm in running the program repeatedly after it has already switched your device(s) to HCI mode.

62 Responses to “Fun with Logitech MX900 Bluetooth receivers”

  1. Karl says:

    Thank you so much! I’ve been looking for a way to get my MX900 to work with Bluetooth support and wound up here after long hours of searching. Admittedly, I was skeptical, but downloaded your app and now everything works great. Good job!

  2. Skywing says:

    Glad it came in handy for someone else – thanks for the feedback!

  3. Noddy says:

    Hello Ken, I stumbled across this place while endlessly searching Google for a solution to my sudden Logitech bluetooth problem.

    Unfortunately i’m barely able to spell my own name let alone configure a command line argument. All I know is that what used to be my bluetooth hub (and is now appearing as a composite device) has the following ids: 046D C704

    Would you possibly mind explaining to me how I go about configuring your awesome little app to run with the relevant codes. I googled but just across Linux specific things and a bunch of DOS crap from Microsoft.

    Many thanks!

  4. James Terry says:

    Wish this worked properly on the MX 5000 set. For some reason it always installs itself as a Generic USB hub and I can’t connect my cellphone to the Bluetooth reciever.

    I tried your program and it almost worked :)

    Now I have a HID mouse, HID keyboard, USB Hub, and Bluetooth hub.

  5. Skywing says:

    James: If it shows as a Bluetooth receiver in Device Manager after running the program, then the program did what it was supposed to do (you’ll still need to install the Widcomm Bluetooth stack that Logitech ships in order for you to use the full Bluetooth hub functionality, though – lhid2hci just makes the device be recognized as a Bluetooth hub, after that you still need to give it the proper (Widcomm) drivers). As I recall, Logitech ships the Widcomm Bluetooth stack with the 2.60 SetPoint for use with the DiNovo wireless desktop combo (you can grab it from their website).

    Noddy: Start->Run->Cmd.exe, enter. Change to the directory where you downloaded lhid2hci.exe to (cd /d “path to directory”), e.g “cd /d “C:\documents and settings\myuser\desktop”), then use the command “lhid2hci <vid> <pid>” where vid and pid are the PnP IDs for the device. In your case, it sounds like they are 046d and c704 respectively. If it works, then if you go to Control Panel, System, Device Manager, then you should see a Bluetooth hub. Right now, lhid2hci will need to be re-run every time you restart your computer or reconnect the Bluetooth hub, so it might be easier to create a shortcut and place it in your Startup folder or set it to run regularly as a scheduled task (or just create a shortcut on your desktop and remember to click on it after booting your system).

  6. Hi,
    I tried, no luck. I checked the vid and pid being 046D an C704, running XP Pro with SP2, any other usefull tips?

  7. Skywing says:

    Did you install the Widcomm drivers? This program only makes it so that the drivers can recognize the Bluetooth receiver, so you will still need the drivers installed.

  8. DJ_CRISTI says:

    i will post here de id’s for mx5000 kit:

    Vendor iD: 046D (Logitech)

    Device Id:

    Hub (0B02):
    – bluetooth: c709
    – HID 1 : c70e (keyboard)
    – HID 2 : c70a (mouse)

  9. DJ_CRISTI says:

    for me worked only with c70a , after the command the bluetooth receiver appears in device manager and the widcomm icon turns green & the mouse stops working for ~ 30secs, after that all is ok.

  10. Boycie says:

    The reason your WriteFile to the HID device didn’t work was because you didn’t open the handle with write access, you need to ask for write access to be able to send write reports using WriteFile and read access to get reports using ReadFile. Hope this is of some interest.

  11. Ahmed says:

    I have solved this problem. I have searched the internet for weeks and this is completely, so this is THE only website you will see the solution on so far.

    It’s simple: Press and hold the red button on the receiver while you plug it into your USB port. Don’t release for about 5-10 seconds. Try to hold it longer if it doesn’t work.

    Voila! Based on various tests of the receiver, I concluded that it has two operational modes. The “normal” mode is the one that triggers the receiver’s full Bluetooth 2.0 compatibility and functions as a regular Bluetooth receiver. The “legacy” mode is where the device emulates a generic USB hub in order to allow a Bluetooth keyboard and mouse to work at a very low level on the system, such as the BIOS, without requiring any Bluetooth drivers. The problem is, if you stick the receiver in a computer and boot to the BIOS or a non-Windows environment, or possibly even Windows before you install your Logitech Bluetooth software, the device switches to “legacy” mode and that actually causes the internal hardware ID to change. Here are the two IDs:

    Legacy mode HardwareID:


    Normal mode (Bluetooth 2.0) HardwareID:


    The switching from back and forth between modes is definitely by design. That’s why you can reset the device to normal mode by holding the red button as you plug it in. What I’m not sure about is whether or not it’s supposed to get stuck in “Legacy” mode in the first place. If it is, obviously the BT chip manufacturer erroneously assumed that most users will simply plug in their device, connect, go into Windows and install the driver (where the driver might have some code to switch modes).

    That would be a serious engineering flaw, and one that from what I’ve seen by reading forums on the internet, has been nothing but a pain in the ass for thousands of owners of Bluetooth receivers, Logitech and otherwise, that are created by the same chip manufacturer.

  12. Skywing says:

    I haven’t heard of there being any way that you can switch it to native Bluetooth HCI mode just via the connect button on the dongle before. I’ll give that a try when I’m at home. Kind of a pain to have to do that every time you power cycle though unfortunately.

  13. Hauke Hagenhoff says:

    This is a great tool.
    Finally i could make my MX900 work in Bluetooth mode again.
    Now the question is: Somehow the original drivers on the CD have to do the same, else it wouldn’t even have worked before I came to the idea of upgrading WIDCOMM Software.
    Now the question is: Which part is it?

    BTW: I have added LHID2HCI to
    BluetoothEnabler REG_SZ LHID2HCI 046d c705

    Works great, except that a Win32-Console window pops up during start, so maybe you could make it a system service/driver or at least silent? :-)

    Anyway, tnx for this great tool!

  14. Skywing says:

    Not sure offhand which binary in the Logitech distribution does the HID-HCI switching.

  15. zdydek says:

    Great little app here. Got my mx5000 in to bluetooth mode (and I’m running Vista!) I’ve got it running at startup and it works perfectly.

    Thanks a lot for all your hard work!

  16. Double.D says:

    I still can’t get this stupid thing to work, it’s nice to see that someone could get it running in Vista, but I can’t even get it working period on my Vista machine. I’ve done everything that was said, and nothing. I’m kinda getting frustrated…..*sniffle*

  17. Skywing says:

    You’ll have to be more specific as to what exactly you did and what happened. Does lhid2hci not work, does the vid/pid pair you give it match that shown in Device Manager’s property sheet for your Logitech Bluetooth hub?

  18. Keith Smith says:

    Tried on my DiNovo and got :

    LHid2Hci – Copyright (C) 2006 Ken Johnson (Skywing).
    Converts Logitech-compatible Bluetooth receivers from HID emulation mode to
    native HCI mode.

    Operating with PnP Vendor ID 046D, Product ID C704…
    Found device interface: \\?\hid#vid_046d&pid_c704&mi_00#8&291135bd&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
    Ignoring usage page 0001, usage 0006.
    Found device interface: \\?\hid#vid_046d&pid_c704&mi_01&col01#8&15e1197f&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
    Ignoring usage page 0001, usage 0002.
    Found device interface: \\?\hid#vid_046d&pid_c704&mi_01&col02#8&15e1197f&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
    Ignoring usage page 000C, usage 0001.
    Found device interface: \\?\hid#vid_046d&pid_c704&mi_01&col03#8&15e1197f&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
    Ignoring usage page 0001, usage 0080.
    Found device interface: \\?\hid#vid_046d&pid_c704&mi_01&col04#8&15e1197f&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
    Using report length: 7
    HidD_SetOutputReport failed.
    Found device interface: \\?\hid#vid_046d&pid_c704&mi_01&col05#8&15e1197f&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
    Ignoring usage page FF00, usage 0002.
    Converted 0 HID devices to native HCI mode.

  19. Mysticle31 says:

    The ported program by the author worked well. However when in HCI mode the keyboard and mouse do not work correctly and I can not find a way to install SetPoint to make it work.

    I’ve even completely uninstalled SetPoint, started windows, converted to HCI, and installed. Semi-as-per Logitech Instructions to install in HCI mode. Nothing. Any suggestions?

    It occurs to me as I write this that I could be on BIOS mode for USB Keyboard/Mouse drivers.

  20. John says:

    Hi, I have downloaded the LHID2HCI thingy and opened it, black box flashes up then vanishes. Checked in Device Manager and no bluetooth receiver to be found. When I go to run and lhid2hci 046D C704, message pops up saying ti cant find lhid2hci?

    Any ideas??

  21. Osk says:

    I can’t get this to work either lhid2hci 046D C703 and I get about 10 lines of code and the last line says Converted 0 hid devices to native hcl mode, any help

  22. Ryan says:

    I just found this site and need this binary badly. My MX900’s hub is having the exact problem you describe so I need it to switch back to Bluetooth mode. I’m getting a 404 not found when trying to get to the file. Can you re-post the file or send it to me?

  23. Skywing says:

    The download links should work again; thanks for pointing that out.

  24. Mathias says:

    Is it possible to use this to get my mx900 to work as a bluetooth-hub with Vista (business)??

  25. Skywing says:

    You could give it a try. I haven’t tested to see if Logitech even supports the Widcomm stack on Vista, though.

  26. Bernard says:

    Genious!!! I got it to work!

    I tried to tackle the Logitech (Dinovo) Bluetooth problem for hours and finally I found this website. I was also a bit skeptical at first and honestly there was just too much techy info to read before getting to the meaty part.. I am sure some of the people out there must have skipped the whole thing and went continue looking.

    What I did was,
    1. Uninstalled Set Point 3.3bt
    2. Ran the hid2hci.exe file in cmd with the suggested parameters for the MX900 and got the error msgs with 0 devices converted.
    3. Reading the error msgs closely. It actually reveals what parameters (VID and PID) I should use instead for my Dinovo.
    4. App reports that a number of devices were coverted :)
    5. Vista immediately detected Bluetooth device.
    5. Installed Set Point 3.3bt
    6. Set Point detected all Logitech devices
    7. Connected other devices through Set Point / Vista… successfully connected my PDA via Bluetooth.

    Thank God it worked since the brand new Sony FZ180EB laptop I bought with Vista Home Premium installed has no integrated Bluetooth device. I had no idea that this ‘state of the art’ laptop does not even have an integrated bluetooth hub (although it has HDMI, BlueRay, 200G HD, 256MB dedicated video ram, webcam etc)… Someone at Sony really f***ed up the specs.

  27. Quang says:

    This site is really helpful. Thank the author for the information contributed. Now I can make the receiver turn out to be a bluetooth hub. But the problem is that I have to install Toshiba Bluetooth stack that can recognize the bluetooth device while WIDCOMM driver can not. And as people said somewhere on the internet, SetPoint does work only on WIDCOMM bluetooth stack. Now I can use MX900 but can not take advantage of setpoint. Any ideas ?

  28. Russ says:

    I got the exact same results as Keith Smith (above). The VID and PID are 046D & C704, but I still get 0 devices converted from HID to HIC.

    Is there a solution to this?

  29. Billy says:

    Skywing, I’d like to thank you for placing this fix. Although I have the MX900 for some reason it would never be recognized by logitech. Now, with your port, I was able to get the keyboard working. Many thanks.

    I did notice I had an entry for the 046d c705 but– That never worked.
    Product ID/Vendor ID mismatch: Expected (046D, C705), got (046D, C703).
    Pointed me to C703 to which worked.

    Thanks again.

  30. Skywing says:

    Sure. Regarding VID/PIDs, I would assume that you probably just have a different hardware revision or something of that sort.

  31. Dustin says:

    Wow…I ran into the exact same problem you did, except I just wanted to bypass the entire Logitech software suite and use the WIDCOMM stack for my Wii Remote (gaming stuff), although I couldn’t figure out what Logitech DLL was causing the hub to immediately switch into HCI mode when plugged in. I ran HiJackThis but found nothing, disabled the services they installed and all running startup items in MSCONFIG. You said you were looking for the binary file that actually triggers the switch, and here it is:

    C:\Program Files\Common Files\Logitech\Bluetooth\LBTServ.dll

    What I couldn’t figure out is how it was getting loaded into Windows when the user logs on. I then did some fishing around and used Process Explorer, and found the key where it was getting loaded in:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\LBTServ

    The DLL was getting loaded every time the machine started. Basically all you need is that DLL loaded in winlogon.exe, and Windows will (theoretically) automatically change it to the right mode. Or you could just use the program you made…^^ anyhow thought you’d find that interesting.

  32. Eric says:


    I notice that this registry entry is missing after a clean install of Setpoint 3.3. Lack of notification to LBTServ may be the reason Setpoint 3.3 is not getting the hub function set up. Could you post the whole LBTServ key & value & any subsidiary keys?

  33. Eric says:

    Well, I rolled back from Setpoint 3.3 to 2.22 and found the following:

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\LBTServ]
    “DLLName”=”C:\\Program Files\\Common Files\\Logitech\\Bluetooth\\lbtserv.dll”

    I re-upgraded to Setpoint 3.3, got the usual lack of a BT hub, added this registry entry, rebooted, and no resolution.

    LBTserv is running… not sure why it didn’t work.

  34. Teiq says:

    Thankyou so much! Works great in Vista!

  35. Jason says:

    Using your program, I got my Bluetooth adapter to be recognized. Problem is, My MX5000 doesn’t function perfectly and I can’t get my mouse to connect. It is now 3:12 AM and I’m to tired to figure out. Thanks a lot though. If anyone else has gotten their MX5000 and MX1000 to work as well as the bluetooth hub, please help?

  36. […] searching for a while, I found this page (thank you to Skywing for all the original footwork in developing this utility), which had a […]

  37. Szeboh says:


    thx alot for the tool first. I tried it with the BT-stick of my diNovo edge (046d/c714) and it converts to hci-mode – WinXP immediately recognises a logitech BT receiver and searches for drivers. I downloaded the Blue Soleil 5.0 Package and used these BT files – so in my Device Manager I got a new BT item. Then I installed the widcomm 4.x software, but this software doesnt recognise my BT stick.

    Can anyone help me to get it work?

    I also have installed the Logitech Stepoint 4.0.

    Thx alot

  38. minh says:

    Thanks Skywing.

    I googled and found you.

    My dinovo bluetooth receiver now works, it even works with activesyc and my pda.
    and I don’t even need to install setpoint.

  39. Erik says:

    Tnx a lot! This got my Bluetooth to work with my mx900!

    For those interested how i did it:
    Install setpoint330bt (or simply get the BT driver for c:\users\userx\temp\ after run setpoint330bt.exe)
    Plug in a other USB-mouse
    Start->Run->c:\lhid2hci.Exe 046d c705 (make sure the Exe is located there)
    Unplug the logitech Hub, driver is installed automatically

    Go to bluetooth settings and connect the mouse with the USB-mouse

    The only thing is that i keep a Bluetooth Peripheral Device with no drivers in my device manager. BT works though.

  40. arva says:

    I have a Dinovo, the hid2hci.exe works fine in Vista but when a new found hardware appears it can’t find any driver. Which driver I can use for Vista and where I can find it?

  41. Skywing says:

    SetPoint comes with Widcomm Bluetooth drivers – the article outlines how I got them out of the SetPoint installer.

    (At the time when this article was written, I was not using Vista. I have no idea whether SetPoint ships with Vista capable drivers, although I would assume that recent releases do.)

  42. RobinDiver says:

    This works with Vista 64bit, too. Thank you so much for providing this tool.

    Logitech provides a 64bit version of setpoint with bluetooth. I made the mistake to install it, while my diNovo Mediadesktop 2.0 was in legacy mode – i did not know about this anyway. Fixed it like this:
    1. connect USB mouse & keyboard
    2. uninstall setpoint and reboot
    3. login as admin
    4. run “lhid2hci 046D C704” – new devices show up
    5. cancel driver installation
    6. install setpoint330bt_x64.exe

    Voila ! Thanks again, Skywing.

  43. johnny utah says:

    Help Skywing!

    Ok…i’m running Vista x32 with the 1st gen DiNovo bluetooth desktop set.

    I followed the same steps as RobinDiver above…and got the bluetooth icon in the taskbar showing.

    BUT when setpoint tries to connect to my mouse or keyboard it doesn’t work =(. I tried rebooting and connecting either keyboard or mouse…no go.

    Also tried adding manually via the MS bluetooth app in control panel, and while it finds and adds both keyboard and mouse, neither work.

    Can somebody please tell me how to get it to work from here on…not sure what I did wrong.

    Just to recap I did the following:
    1. uninstalled all setpoint software
    2. rebooted
    3. ran “lhid2hci 046D C704″, got message that 1 device had been converted HCI. Cancelled “driver installation” request message.
    4. installed setpoint 3.3…bluetooth icon showed on taskbar but nothing connected yet.
    5. rebooted as requested by setpoint software
    6. upon reboot, setpoint tries to connect to mouse via bluetooth, I press the button on mouse and hub, but nothing happens =(

    Any Suggestions Anyone? I’m soooo close I can taste it!

  44. Chris says:

    Got my Logitech Cordless Desktop for Bluetooth (The first Bluetooth Keyboard Mouse Cobob) running, by using your tool, widcom 5.0 drivers ( see
    Thank you!

    is it possible to autostart the tool before the login screen?

  45. Skywing says:

    Well, you could use srvany (download link) to do that. Alternatively, you could modify the provided source code and make lhid2hci natively act as a service.

  46. Reno says:

    Works great with my DiNovo Edge, Thanks so much!

  47. Thingy says:

    Thanks alot for all the info.
    I got the dinovo desktop 2.0 and since the hub didn’t work I got the laser as a replacement, only Logitech support assumed I was running XP, but since I stubbornly hang on to 2000, the drivers gave me a pain.
    However it was possible to install the 2.0 driver, but that was subåar since the laser driver had an updated widcomm stack that was much improved, I had to hack the laser driver to allow installation under Windows 2000.

    But sometimes the installation just didn’t work and cleaning the registry is a pain when trying to downgrade to the 2nd latest driver version.

    End of rant…

    When I tried the precompiled version of lhid2hci I got an error saying that hidd_setoutputreport wasn’t present in hid.dll, and after opening that file I could only realize there was no such address.
    I willl try to find the api mentioned above and try to rewrite it with WriteFile instead and see how it goes…

    But in the mean time, holding down the red button for 5 seconds worked perfectly though. Too bad my usb ports are so inaccessible.

  48. Jamesoswan says:

    Hi guys i just found a new software for linux providing support for the Logitech devices. check out

    hope this helps.

  49. John says:

    Beautiful! Had the same mismatch error as a couple on here but changed the second ID to the one recommended and pulled up the bluetooth adapter. Bada-bing-bada-boom. Now I just need to figure out the services on my bluetooth headset! Thanks!

  50. […] Fun with Logitech MX900 Bluetooth receivers […]