14 May 2026
Fixing Bluetooth Headphone Pairing Hell in Dual Boot Setups
I dual-boot Linux and Windows, and my Bluetooth headphones refuse to reconnect without re-pairing every time. Same MAC address, different keys. Bluetooth has trust issues.
The pattern is predictable: if I last used the headphones on Linux and reboot to Windows, Bluetooth sees the device, claims it's trusted, and then refuses to connect anyway. Same thing in reverse. The only fix is to forget the device and re-pair it, every. single. time I switch operating systems. Why does this happen and who can I blame for this minor first world inconvenience?!
Why this happens
Bluetooth pairing involves an exchange of cryptographic keys. When you pair a device, both sides generate a Link Key and store it. These keys are later used to authenticate and encrypt future connections.
Here's the problem: both Windows and Linux use the same Bluetooth adapter and therefore present the same MAC address to the headphones. From the headphones' perspective, they're talking to one device, but that device keeps presenting different credentials.
- You pair on OS #1. The headphones store a link key for MAC address
AA:BB:CC:DD:EE:FF - You reboot into OS #2 and pair again. The headphones overwrite the stored key for that same MAC address.
- You switch back to OS #1. The headphones reject the connection because the stored key no longer matches.
The headphones don't know you switched operating systems. They just see the same MAC address AA:BB:CC:DD:EE:FF with different keys, and they reject the connection for security reasons. Re-pairing works because it forces the headphones to update the link key for that MAC address, but it's a pain.
The fix: sync the Bluetooth keys
The solution is to make all operating systems use the same Link Key. This way, no matter which OS you boot into, the headphones see the same credentials and connect without issue.
This requires extracting the Link Key from one OS (say, Windows) and importing it into the other (Linux). The exact steps depend on which operating systems you're using. Technically the order doesn't matter, but I find it easier to extract from Windows and import into Linux. Here is how to do it...
Step 1: Pair on Windows
Connect the headphones on Windows and make sure they work. If you've already paired them on Linux, forgetting them there first can help avoid confusion.
Step 2: Extract the pairing keys from Windows
Boot into Linux. The Windows Bluetooth keys live in the registry at:
Windows uses 'Fast Startup' which makes the system go into a hibernation-like state instead of fully shutting down. When this happens you can only mount the partition read-only, which does not work with chntpw. To avoid this, either disable Fast Startup in Windows, do a full shutdown (hold Shift while clicking 'Shut down'), or reboot and choose 'Linux' from GRUB.
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys
Depending on your Windows install, the active control set may differ, but ControlSet001 is commonly the correct one in the offline SYSTEM hive.
We'll need chntpw to read them:
sudo pacman -S chntpw # or your distro's equivalent
# Mount the Windows partition
sudo mkdir /mnt/windows
sudo mount -t ntfs-3g /dev/sdXY /mnt/windows # replace with your Windows partition
# Navigate to the registry hive
cd /mnt/windows/Windows/System32/config
Now open the SYSTEM hive in chntpw:
sudo chntpw -e SYSTEM
Inside the chntpw prompt, navigate to the Bluetooth keys:
cd ControlSet001\Services\BTHPORT\Parameters\Keys
ls
You'll see a folder named after your Bluetooth adapter's MAC address. cd into it:
cd <adapter MAC> # replace with your adapter's MAC
ls
This lists paired devices. You should see your headphones' MAC address. To view the Link Key:
hex <headphones MAC> # replace with your headphones' MAC
The output is the Link Key in hexadecimal. Write it down (or copy like a sane person). It should be 32 hex characters (16 bytes). Type q to quit chntpw.

Step 3: Write the key to Linux
Linux stores Bluetooth pairing info in /var/lib/bluetooth. Each adapter has a folder, and each paired device has an info file containing the Link Key.
First, stop the Bluetooth service (assuming systemd):
sudo systemctl stop bluetooth
Now edit the info file for your headphones.
The device must already be paired once in Linux so the info file exists.
sudo vim /var/lib/bluetooth/<adapter MAC>/<headphones MAC>/info
Find the [LinkKey] section. It should look like this:
[LinkKey]
Key=00000000000000000000000000000000
Replace the existing key with the one you extracted from Windows. The format is just the 32 hex characters without spaces or separators.

Step 3.5: Fix the Handsfree service
If you disabled the handsfree service in Windows to avoid conflicts, you will also need to disable it in Linux. In the same info file, find the [Service] section. Handsfree is usually listed as 0000111e-0000-1000-8000-00805f9b34fb, you can verify this by checking device properties.


Save the file and restart Bluetooth:
sudo systemctl start bluetooth
Step 4: Test it out
Reboot to Windows. The headphones should connect without needing to re-pair. Switch back to Linux, and they should also connect seamlessly. Both OSes are now using the same Link Key for the same MAC address, so the headphones see them as the same trusted device.
What I learned
I knew Bluetooth pairing involved some kind of security handshake but had never looked at how the keys are actually stored or why dual-boot breaks it. A few things stood out:
- The MAC address collision is the entire problem. If Windows and Linux had separate Bluetooth adapters, this wouldn't happen, the headphones would treat them as two different devices with separate keys.
- Windows and Linux store the same information, just in different places. The Link Key format is identical; it's just a matter of reading it from the registry and writing it to
/var/lib/bluetooth. - chntpw is more useful than expected. I thought it was only for password resets, but being able to navigate the registry from Linux and dump arbitrary keys makes it a solid dual-boot debugging tool.
The real takeaway: when you dual-boot, Bluetooth devices only get to store one set of pairing keys per MAC address. If you want both operating systems to work, you have to make sure they're using the same ones.
// comments