Win10 remembers my Bluetooth headphone, even after their deletion

I'll try to explain with pictures, cose it looks reeealy weird.

system - Win10 (last updates for this moment)
Bt USB Dongle - Erston Bluetooth 5.1 (REALTECH chip)
headphones - JBL TUNE700BT

  1. I manually deleted all BT devices from my PC (pic. 1)
    before
  2. Unplugged Bt dongle + Plugged Bt dongle
  3. System installs Bt radio AND... headphones:(pic. 2)
    after

, these virtual devices prevent my headphones from connecting to this Bt.
, even after the deletion of these records from the Device Manager, I cannot see my headphones in the Lookup window and cannot add them
, though, I can successfully add my headphones to other Bt networks

If I unplug + plug my dongle again - these records will appear AGAIN(!!)

How can I DELETE these virtual records?

upd1:
I've tried unpairing via "the modern control panel" from the start. The same result.


I had a similar question, and found this answer in a different forum. This approach solved the issue for me:

wouldn't normally necro a thread but i spent two weeks trawling the internet trying to sort this out and this thread is pretty high up on the search rankings, hopefully can help someone.

My symptoms:

  • Previously working bluetooth speaker (UE BOOM 2 in my case) stops connecting
  • Windows 10 'Bluetooth and other devices' menu shows the device as Paired
  • Pressing connect makes it attempt to connect but fails then it goes back to Paired
  • Remove device hides the device from the menu, but as soon as you turn bluetooth on and off, or restart the computer, the device comes back
  • You pull your hair out.

Solution that worked for me after much, much unsuccessful internet trawling and one system restore:

  • Download this 7 year old command line bluetooth toolset: Bluetooth command line tools - work with bluetooth from the command line
  • Install it, make sure you enable the option to "Add Bluetooth Command Line Tools directory to path"
  • Open Powershell
  • Put your device that isn't working properly into pairing mode WARNING: THE FOLLOWING COMMAND WILL UNPAIR ALL BLUETOOTH DEVICES
  • type in "btpair -u"
  • Boom, all of a sudden Windows asks me if I want to allow pairing to my device that isn't working
  • Hit yes, successfully connected again
  • Cry tears of joy

God I hope that helps someone else.


This PowerShell may help. It will display found devices and allow you to remove them via an API functionn. Copy & paste the entire code block into a PowerShell window:

$Source = @"
   [DllImport("BluetoothAPIs.dll", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
   [return: MarshalAs(UnmanagedType.U4)]
   static extern UInt32 BluetoothRemoveDevice(IntPtr pAddress);

   public static UInt32 Unpair(UInt64 BTAddress) {
      GCHandle pinnedAddr = GCHandle.Alloc(BTAddress, GCHandleType.Pinned);
      IntPtr pAddress     = pinnedAddr.AddrOfPinnedObject();
      UInt32 result       = BluetoothRemoveDevice(pAddress);
      pinnedAddr.Free();
      return result;
   }
"@

Function Get-BTDevice {
    Get-PnpDevice -class Bluetooth |
      ?{$_.HardwareID -match 'DEV_'} |
         select Status, Class, FriendlyName, HardwareID,
            # Extract device address from HardwareID
            @{N='Address';E={[uInt64]('0x{0}' -f $_.HardwareID[0].Substring(12))}}
}

################## Execution Begins Here ################

$BTR       = Add-Type -MemberDefinition $Source -Name "BTRemover"  -Namespace "BStuff" -PassThru
$BTDevices = @(Get-BTDevice) # Force array if null or single item

Do {
   If ($BTDevices.Count) {
      "`n******** Bluetooth Devices ********`n" | Write-Host
      For ($i=0; $i -lt $BTDevices.Count; $i++) {
         ('{0,5} - {1}' -f ($i+1), $BTDevices[$i].FriendlyName) | Write-Host
      }
      $selected = Read-Host "`nSelect a device to remove (0 to Exit)"
      If ([int]$selected -in 1..$BTDevices.Count) {
         'Removing device: {0}' -f $BTDevices[$Selected-1].FriendlyName | Write-Host
         $Result = $BTR::Unpair($BTDevices[$Selected-1].Address)
         If (!$Result) {"Device removed successfully." | Write-Host}
         Else {"Sorry, an error occured." | Write-Host}
      }
   }
   Else {
      "`n********* No devices found ********" | Write-Host
   }
} While (($BTDevices = @(Get-BTDevice)) -and [int]$selected)