Giter Site home page Giter Site logo

ademlabs / synckeys Goto Github PK

View Code? Open in Web Editor NEW
60.0 2.0 5.0 18 KB

Syncronize your Bluetooth device pairing keys from Windows to Linux. Share your Bluetooth devices between these OSes without having to pair them each time.

Python 100.00%
bluetooth pair dualboot windows linux

synckeys's Introduction

BlueSync - Sync dual-boot Bluetooth devices

Syncronize your Bluetooth device pairing keys from Windows to Linux. Share your Bluetooth devices between these OSes without having to pair them each time.

Warning / Disclaimer

The code and instructions within this project accesses and modifies system files on your Windows and Linux installations. Although care has been taken to ensure that nothing harmful happens, there could be a risk of damage to your software and hardware. Your usage of the program and instructions herein constitutes acceptance of those risks and the author cannot be held liable for any claims whatsoever.

Pre-requisites

On Linux you need the following:

  1. Python 3 installed.
  2. This project downloaded on your filesystem, or at least the synckeys.py program file.
  3. sudo / root access.

On Windows you need the following:

  1. PSExec downloaded and accessible via the command line. E.g. downloaded to the root of your C:\ drive.
  2. Administrator access.

Instructions

  1. Boot into your Linux installation and pair all the devices that you wish to share with your Windows system. This is necessary to create the required initial pairing configurations.
  2. Reboot into your Windows system and pair the same devices again. We will use the keys generated from this OS.
  3. Open a command prompt in Administrator mode and navigate to the directory where you downloaded PSExec into. Run the following command to dump the keys:
psexec -s -i regedit /e c:\keydump.reg HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\BTHPORT\Parameters\Keys
  1. Copy the file from c:\keydump.reg into a removeable storage or a location which is accessible by your Linux system.
  2. Reboot into your Linux system.
  3. Copy the keydump.reg file to an accessible location in your Linux filesystem and reboot your PC again to linux.
  4. If you are trying to sync a BLE device since modern BLE devices alter their MAC address with each new pairing. Hence, your script won't find the in OS1 paired device in OS2. In order to resolve this problem, just copy the setup in OS2 (Linux) to a folder with the MAC address as used in windows helps:
sudo cp -r /var/lib/bluetooth/<adapter>/<in-linux-paired-MAC> /var/lib/bluetooth/<adapter>/<in-windows-paired-MAC>

NOTE: To get <adapter> MAC address, just type on a terminal bluetoothctl and then type list and for <in-linux-paired-MAC> inside bluetoothctl >type devices and search for the desired MAC address of the device. Finally, for <in-windows-paired-MAC> search in the keydump.reg file the same (except >for one digit) MAC address. After changing those address, run the command.

  1. Open a terminal and navigate to the location where synckeys.py is located.
  2. Run the synckeys.py Python 3 script with root or sudo:
sudo ./synckeys.py /path/to/keydump.reg
  1. The adapters and devices from the key dump will be compared to the pairing in Linux and if a difference is detected, it will prompt you to update the keys. You can choose Yes or No (default). If you choose Yes, a timestamped backup file is created in the /var/lib/bluetooth/{ADAPTER_MAC}/{DEVICE_MAC} directory before the update is performed.
Bluetooth Adapter - 7C:B2:7D:57:EA:D5
  DC:0C:2D:ED:01:65 (# not paired #)
  04:00:00:00:6A:8B (# not paired #)

  0C:E0:E4:C8:27:5D (PLT_BBTSENSE / PLT_BBTSENSE)
    | LinkKey: 63C1F72FB8E5F474AED058019A834FDA > No change required.

  F3:46:AD:D7:53:3C (Orochi V2 / Orochi V2)
    | IdentityResolvingKey: BB123FA60524A22A5AF33EE83514FF0B > Update to: AA764EA60524A76A5AF50EE49463ED0C
    | LongTermKey: 28513DB654511A7346BDA3F676CAE7F8 > Update to: 85140DC915611A7346ECD3F676CFF7E9
    |   EncSize: 16 > No change required.
    |   EDiv: 43465 > Update to: 74325
    |   Rand: 5734307009814747306 > Update to: 9876302985738291827
    > Update keys for device? (y/N): y
    > OK!
  1. Once the keys are updated, you can restart the bluetooth service with the following (or the equivalent on your system):
sudo systemctl restart bluetooth

Issues

I haven't found any issues up to now but I also have a limited number of devices on which I can test. Feel free to create a GitHub issue describing your problem and I'll try to take a look. If you know how to fix the code, feel free to submit a PR and I'll include it after reviewing.

synckeys's People

Contributors

ademlabs avatar alejandropqlz avatar eveldee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

synckeys's Issues

Not working BLE devices due to altering MAC addresses

Modern BLE devices alter their MAC address with each new pairing.Hence your script doesn't find the in OS1 paired device in OS2.
Just copy the setup in OS2 (Linux) to a folder with the MAC address as used in windows helps:
First

sudo cp -r /var/lib/bluetooth/<adapter>/<in-linux-paired-MAC> /var/lib/bluetooth/<adapter>/<in-windows-paired-MAC>

and then run your script works.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.