- Notifications
You must be signed in to change notification settings - Fork25
Track personal Bluetooth devices via Apple's "Find My" network using OpenHaystack and Macless-Haystack with tools written in Go/TinyGo. No Apple hardware required!
License
hybridgroup/go-haystack
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Go Haystack lets you track personal Bluetooth devices via Apple's massive"Find My" network.
It usesOpenHaystack together withMacless-Haystack to help you setup a custom FindMy network with tools written in Go/TinyGo. No Apple hardware required!
This package provides firmware written usingTinyGo and theTinyGo Bluetooth package.
As a result, any of the following hardware devices should work:
- Adafruit Bluefruit boards using nRF SoftDevice
- BBC Microbit using nRF SoftDevice
- Seeed Studio XIAO nRF52840
- Other Nordic Semi SoftDevice boards
- Boards using the NINA-FW with an ESP32 co-processor
- Boards such as the RP2040 Pico-W using the CYW43439 co-processor
The beacon code is located in this repository in thefirmware directory.
You can also run the beacon code on any Linux that has Bluetooth hardware, such as a Raspberry Pi or other embedded system.
The beacon code is the same for embedded Linux as for microcontrollers, and is located in this repo in thefirmware directory.
Go Haystack also includes TinyScan, a hardware scanner for local devices.
TinyScan runs on several different microcontrollers boards with Bluetooth and miniature displays, such as those made byAdafruit andPimoroni
The TinyScan code is located in thetinyscan directory in this repository.
You must have an Apple-ID with 2FA enabled. Only sms/text message as second factor is supported!
Startanisette-v3-server
docker network create mh-networkdocker run -d --restart always --name anisette -p 6969:6969 --volume anisette-v3_data:/home/Alcoholic/.config/anisette-v3 --network mh-network dadoum/anisette-v3-server
- Start and set up your Macless Haystack endpoint in interactive mode:
docker run -it --restart unless-stopped --name macless-haystack -p 6176:6176 --volume mh_data:/app/endpoint/data --network mh-network christld/macless-haystack
You will be asked for your Apple-ID, password and your 2FA. If you seeserving at port 6176 over HTTP
you have all set up correctly
Hit ctrl-C to exit the process once it has been configured.
- Restart the macless-haystack server
docker restart macless-haystack
Seehttps://github.com/dchristl/macless-haystack/blob/main/README.md#server-setup for the original instructions.
Install the go-haystack command line tool
go install github.com/hybridgroup/go-haystack/cmd/haystack@latest
haystack scan
Should return any local devices within range:
$ haystack scan CE:8B:AD:5F:8A:02 -53 ce8bad5f8a0271538ff5afda87498cb067e9a020d6e4167801d55d83 - battery fullFE:B0:67:9B:9A:5C -55 feb0679b9a5c55b1141c5cc6c8f65224ae9bc6bc2d998ccf5c56a02d - battery fullCE:8B:AD:5F:8A:02 -53 ce8bad5f8a0271538ff5afda87498cb067e9a020d6e4167801d55d83 - battery fullCE:8B:AD:5F:8A:02 -53 ce8bad5f8a0271538ff5afda87498cb067e9a020d6e4167801d55d83 - battery fullFE:B0:67:9B:9A:5C -56 feb0679b9a5c55b1141c5cc6c8f65224ae9bc6bc2d998ccf5c56a02d - battery fullCE:8B:AD:5F:8A:02 -53 ce8bad5f8a0271538ff5afda87498cb067e9a020d6e4167801d55d83 - battery fullFE:B0:67:9B:9A:5C -56 feb0679b9a5c55b1141c5cc6c8f65224ae9bc6bc2d998ccf5c56a02d - battery fullCE:8B:AD:5F:8A:02 -53 ce8bad5f8a0271538ff5afda87498cb067e9a020d6e4167801d55d83 - battery full
- Generate keys for a device
haystack keys DEVICENAME
The keys will be saved in a file namedDEVICENAME.keys
and the configuration file for Haystack will be saved inDEVICENAME.json
. Replace "DEVICENAME" with whatever you want to name the actual device.
- Flash the hardware with the TinyGo target and the name of your device.
For example:
haystack flash DEVICENAME nano-rp2040
This will use TinyGo to compile the firmware using your keys, and then flash it to the device. Seehttps://tinygo.org/getting-started/overview/ for more information about TinyGo.
- Upload the JSON file for that device to your running instance of
macless-haystack
using the web UI.
Point your web browser tohttps://dchristl.github.io/macless-haystack/
which is a single-page web application that only reads/writes local data. Click on the link for "Accessories", then on the "+" button. Choose theDEVICENAME.json
file for your device.
That's it, your device is now setup.
Eventually, if your device is in range of any iPhone, they will appear in your Macless-Haystack data in the web UI.
Note that it might take a while for the first data to show up.
Have fun, be good!