GoogleFindMyTools locates ESP32-based Bluetooth trackers using Google Find My Device network

Leon Böttger’s GoogleFindMyTools is a re-implementation of Google’s Find My Device network. It works with Android devices and commercial trackers, but experimental support for ESP32-based Bluetooth trackers has recently been added.

The implementation features two components. First, the main.py Python script that will list and locate devices, and then the ESP32 firmware implemented in C with the ESP-IDF. The host computer will also need several Python libraries that can be installed with “pip install -r requirements.txt” and Google Chrome web browser.

Google Find My Device ESP32

This is the output of the Python script on my Ubuntu laptop:


After logging in to my Google account, the script could locate my smartphone. From there, I can either get the smartphone’s GPS coordinate by selecting 1 or register an ESP32-based Bluetooth tracker. I don’t have any but let’s give it a try anyway:


I had to log in to Google again for the script to retrieve a shared key, and I was given an advertisement key (that I modified for this post) that needs to be copied and pasted into line 15 of main.c replacing “INSERT_YOUR_ADVERTISEMENT_KEY_HERE”:


This should be done in Visual Studio with the ESP-IDF framework installed, and from there you can build the firmware and flash it to an ESP32 tracker connected to the host over USB.

We can run main.py again and the phone and the newly registered ESP32 tracker can be found by the script:


Since I don’t have a tracker, I tried it with my phone, but the results should look similar with a working ESP32 tracker which relies on the phones in the Google Find My Device network for location. Don’t worry, I modified the value above for privacy…

It looks great but there are some known issues specific to the ESP32 implementation:

  • Right now, you might have to re-register the ESP32 after 3 days, but Leon is working on a fix
  • Users with new accounts should use Find My Device app on an Android device before registering a new ESP32 tracker (I didn’t need to do that).
  • Locations for the ESP32 trackers can only be found via the Python script and not in the Google Find My Device app or website
  • Privacy features such as rotating MAC addresses are not implemented
  • The ESP32 firmware is optimized to find as many network reports as possible and not for battery life. You can change TX power and advertising interval parameters in main.c to lower the power consumption.

You’ll find the full instructions to give it a try yourself and the source code on GitHub. As a side note, if you are interested in open-source solutions for Trackers, you may want to check out the AirGuard project working with Android or iOS smartphones to locate Samsung Trackers (SmartTags), Google Find My Network Trackers, and Apple AirTags.

Via Hackaday

Share this:

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

Radxa Orion O6 Armv9 mini-ITX motherboard
Subscribe
Notify of
guest
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.
3 Comments
oldest
newest
Willy
2 hours ago

Maybe call me dumb, but I had never heard about this “google find my device” thing and am having difficulties understanding the purpose of the service and some of the points in this article. Particularly the last capture of “main.py”, you seem to be locating the phone, not the ESP32, and the GPS locations returned likely depend on those shared by the phone, so I don’t understand the role of the ESP32 in this demonstration attempt. Also, I’m not getting at all how the ESP32 could participate in this demonstration. Is it supposed to connect to the service over WiFi… Read more »

Rogan Dawes
Rogan Dawes
53 minutes ago

I find it hard to believe that you have absolutely zero ESP32 devices around you that could be used to test this 🙂

It doesn’t seem like it needs a GPS to be useful, which means that in theory, *any* ESP32-based device could run this firmware.

Boardcon CM3588 Rockchip RK3588 System-on-Module designed for AI and IoT applications