petzval / btferret

Python and C Bluetooth Library
MIT License
122 stars 21 forks source link

Persistent Fingerprint Issue Preventing Simultaneous HID Device Pairing on Windows 11 #40

Open mdelgert opened 7 months ago

mdelgert commented 7 months ago

After pairing Windows 11 with device one (D3:56:DB:15:32:A9) functioning as an HID (Human Interface Device), and subsequently deleting this device, there is an inability to pair with device two (D3:56:DB:15:32:A0), which is also set up as an HID. This suggests a fingerprint or identifier may be persisting in the system, preventing the simultaneous creation and operation of two HID devices.

Steps to Reproduce:

Pair device one (D3:56:DB:15:32:A9) with Windows 11. Use device one as an HID. Delete device one from the list of paired devices. Attempt to pair device two (D3:56:DB:15:32:A0) with Windows 11. Expected Behavior: After deleting device one, Windows 11 should be able to successfully pair with and utilize device two without any hindrance.

Actual Behavior: Windows 11 is unable to pair with device two after device one has been deleted, indicating a potential persistence of device fingerprints or identifiers within the system.

petzval commented 7 months ago

Yes, this is the issue described under "Problems caused by connecting device" in the HID Devices section of the documentation. It is caused by devices having multiple identities. You seem to have done some of the following things, but here's the list of things to try.

On Windows 10 (not sure if 11 is the same)

  1. Settings/Devices/Turn Bluetooth on/Remove all HID devices
  2. Settings/Devices/Related settings/Devices and printers/Remove all HID devices
  3. It would be nice to delete all relevant registry entries, but I have not found a way of doing this.
  4. Keep trying. Sometimes a re-connection will fail several times, but then succeed for no obvious reason.

On btferret

  1. Try a new random address
  2. Delete the file /etc/btferret.dat. I would be interested to know if this works, because a more graceful procedure could be implemented via code.