(This is a crosspost from the MSDN forums since there hasn't been any response there for quite some time and I thought I would get better answers here.)
I have a BLE device containing a custom GATT service, of which I cannot modify the firmware. I want to listen for the GATT characteristic events from that service, and make Windows consume them as HID reports to make Windows recognize it as another device. How would I go about doing this?
I conducted some research, and found the information below:
BthLeEnum
My question is, what approach is needed here to create this driver?
Are GATT Profile drivers even still allowed on Windows 10, since it seems it is not allowed to create filter drivers for BthLeEnum
?
I really appreciate that Alain took the time to answer the question and therefore I marked his answer as answer to the question; however for me the question is not completely answered yet. Seeing that the question already got more than 10 votes, I think it deserves a more extensive answer. Points that could be improved / added are:
I suppose that Alain recommended a UMDF HID minidriver over VHF because VHF requires writing a KMDF driver. UMDF has the benefits of easier debugging (can be debugged on local pc), less security (and signing) restrictions and no risk of bugchecking a machine when there is a bug in the driver.
In order to make it possible to create a client application that injects RadialController events (rather than having to write a driver which is a very high barrier for private developers), I posted a request for it on Feedback Hub. Please consider voting for it if you think that is worth supporting.
Type device manager on the Windows search bar and select device manager. Click on Keyboard to expand, right click on the device and update the driver. For Bluetooth issue, right click on Bluetooth to expand, click on the device and update the driver.
Perform a reboot and go to Start > Settings > Update & security > Windows Update > Check for updates to reinstall the driver. 5. Go back to the Device Manager > Click on the Action tab > select "Scan for hardware changes", and check if it will scan and reinstall your microphone driver.
The HID I²C driver enables devices and system manufacturers to reduce the total number of drivers they have to develop to support common device types like keyboards, touchpads, touch screens, sensors, and so on. The HID I²C driver is available on all client SKUs of Windows and is included in WinPE.
The best approach to this would be to create a UMDF HID driver (https://docs.microsoft.com/en-us/windows-hardware/drivers/wdf/creating-umdf-hid-minidrivers) that installs on the bthleenum device node that is created for the device's custom service and use the new Bluetooth LE UWP apis (https://docs.microsoft.com/en-us/uwp/api/windows.devices.bluetooth.genericattributeprofile).
There is some ambiguity about the use of UWP Apis from non store application, but this is incorrect. These Apis are usable in pretty much every conditions. In case you need help setting up your project, here is a C++/UWP sample that can help you get started.
I hope this helps! Alain
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With