This repository includes some useful tools that reimplement parts of Google's Find My Device Network. Note that the code of this repo is still very experimental.
Currently, it is possible to query Find My Device trackers and Android devices, read out their E2EE keys, and decrypt encrypted locations sent from the Find My Device network. You can also send register your own ESP32- or Zephyr-based trackers, as described below.
- Clone this repository:
git clone
or download the ZIP file - Change into the directory:
cd GoogleFindMyTools
- Optional: Create venv:
python -m venv venv
- Optional: Activate venv:
venv\Scripts\activate
(Windows) orsource venv/bin/activate
(Linux & macOS) - Install all required packages:
pip install -r requirements.txt
- Install the latest version of Google Chrome: https://www.google.com/chrome/
- Start the program by running main.py:
python main.py
orpython3 main.py
- "Your encryption data is locked on your device" is shown if you have never set up Find My Device on an Android device. Solution: Login with your Google Account on an Android device, go to Settings > Google > All Services > Find My Device > Find your offline devices > enable "With network in all areas" or "With network in high-traffic areas only". If "Find your offline devices" is not shown in Settings, you will need to download the Find My Device app from Google's Play Store, and pair a real Find My Device tracker with your device to force-enable the Find My Device network.
- No support for trackers using the P-256 curve and 32-Byte advertisements. Regular trackers don't seem to use this curve at all - I can only confirm that it is used with Sony's WH1000XM5 headphones.
- No support for ARM Linux
If you want to use an ESP32 as a custom Find My Device tracker, you can find the firmware in the folder ESP32Firmware. To register a new tracker, run main.py and press 'r' if you are asked to. Afterward, follow the instructions on-screen.
For more information, check the README in the ESP32Firmware folder.
If you want to use a Zephyr-supported BLE device (e.g. nRF51/52) as a custom Find My Device tracker, you can find the firmware in the folder ZephyrFirmware. To register a new tracker, run main.py and press 'r' if you are asked to. Afterward, follow the instructions on-screen.
For more information, check the README in the ZephyrFirmware folder.
You can also use my iOS App to access your Find My Device trackers on the go.