Overzicht
findphone is een command-line tool voor macOS (versie 13 of later) waarmee gebruikers nabijgelegen Bluetooth-apparaten kunnen opsporen. De tool is met name nuttig wanneer de standaard 'Zoek mijn'-functie is uitgeschakeld, bijvoorbeeld door MDM-beperkingen.
Functionaliteiten
De applicatie biedt drie hoofdfuncties:
- Survey-modus: Het scannen van alle nabijgelegen Apple handhelds.
- Hunt-modus: Het volgen van één specifiek apparaat op naam.
- Lijst-modus: Een overzicht van gekoppelde apparaten en hun adressen.
Daarnaast zijn er extra opties zoals --sound, die auditieve feedback geeft (vergelijkbaar met een parkeersensor) naarmate men dichter bij het apparaat komt, en --redact om privacygevoelige Bluetooth-adressen te maskeren tijdens schermopnames.
Technische Werking
De tool schat de afstand in door de signaalsterkte (RSSI) in dBm te meten via drie verschillende bronnen: GATT-links, BLE-advertenties en Classic link RSSI. Het artikel benadrukt dat deze waarden indicatief zijn; fysieke obstructies zoals muren of metaal kunnen de nauwkeurigheid sterk beïnvloeden.
Beperkingen
- Kan geen geluid activeren op het doelapparaat.
- Biedt geen richtingaanwijzing (bearing), enkel afstand.
- Is afhankelijk van het Bluetooth-bereik (circa 10-20 meter).
findphone: Bluetooth-apparaten lokaliseren via signaalsterkte op macOS
Installatie
Je kunt de universele binary downloaden via de 'Releases'-sectie:
tar -xzf findphone-macos-universal.tar.gz
xattr -dr com.apple.quarantine findphone
./findphone --help
Let op: Omdat de binary niet is ondertekend, plaatst macOS deze bij downloaden in quarantaine; de xattr-commando heft dit op. De tool vereist macOS 13 of later.
Zelf compileren
Om de tool zelf te bouwen, heb je de Swift toolchain van de Xcode Command Line Tools nodig. Er zijn geen externe afhankelijkheden.
swift build -c release
cp .build/release/findphone ~/bin/findphone
Voor een universele arm64 + x86_64 binary (zoals geleverd via CI):
./scripts/build-universal.sh dist
Gebruik
De tool kan op verschillende manieren worden aangeroepen:
findphone : Survey-modus. Scan alle nabijgelegen Apple handhelds op basis van signaalsterkte.
findphone iphone : Hunt-modus. Volg één specifiek apparaat op naam (hoofdletterongevoelig).
findphone --list : Toont een overzicht van gekoppelde apparaten en hun adressen.
Extra opties
Geluidsfeedback (--sound) Voeg --sound toe in de hunt-modus voor klikgeluiden die versnellen naarmate je dichterbij komt, vergelijkbaar met een parkeersensor. Het tempo ligt rond de één keer per seconde aan de andere kant van de kamer en stijgt naar een zoemgeluid zodra het signaal ongeveer -50 dBm bereikt (het moment dat een laptop ongeveer bovenop de telefoon ligt). Hiermee kun je een ruimte op gehoor afzoeken in plaats van constant naar het scherm te kijken.
Let op: Dit is geen geigerteller. Waar een geigerteller klikt per gedetecteerd deeltje, wordt het tempo hier berekend op basis van het gesmoothede signaal. Pakketten komen binnen via een vaste polling-timer van 0,3s; de aankomstfrequentie zegt dus vrijwel niets over de afstand.
Privacy (--redact) Voeg --redact toe als je het scherm opneemt. Deze optie maskeert Bluetooth-adressen en vervangt in de survey-modus de namen van ontdekte apparaten door het type apparaat (omdat deze namen niet altijd van jou zijn). Een publiek adres is een stabiele hardware-identifier die, in tegenstelling tot een BLE-advertentieadres, niet roteert; daarom is het verstandig deze uit video's te houden.
Let op: De naam die je zelf invoert in de hunt-modus en de namen in --list blijven zichtbaar, omdat je deze nodig hebt om een doelwit te kiezen. --list is zelfs met --redact niet veilig om te filmen.
Signaalsterkte en afstand
Loop langzaam en let op de balk. De waarde geeft de signaalsterkte weer in dBm; dit is een negatief getal dat dichter bij nul komt naarmate je dichterbij bent:
| dBm | Betekenis (indicatief) |
| -45 of hoger | Binnen handbereik |
| -60 | Op dezelfde tafel |
| -72 | In dezelfde kamer |
| -85 | Ver weg, of achter een object |
| Lager dan -85 | Zeer ver weg, of afgeschermd |
Belangrijke kanttekening: Signaalsterkte is slechts een grove benadering van afstand. Metaal, muren en menselijke lichamen dempen het signaal sterk. Een apparaat in een metalen archiefkast op twee meter afstand kan dezelfde waarde geven als een apparaat op vijftien meter afstand in de open lucht. Vertrouw op de trend terwijl je beweegt, niet op één enkel getal.
Hoe het werkt
De tool gebruikt drie bronnen voor de meting, gesorteerd van beste naar slechtste kwaliteit:
- GATT-link: Zodra er via BLE verbinding is gemaakt met het apparaat, geeft
readRSSI() ongeveer drie keer per seconde een verse meting. Dit is de meest nauwkeurige bron.
- BLE-advertenties: Deze worden passief waargenomen. Apple-apparaten roteren hun advertentieadressen ongeveer elke vijftien minuten en voegen alleen incidenteel de apparaatnaam toe aan pakketten, waardoor deze bron schaars is.
- Classic link RSSI: Wordt gelezen via
system_profiler SPBluetoothDataType, gekoppeld aan het stabiele publieke adres van een gekoppeld apparaat.
Bij bron 3 is er een belangrijke beperking: macOS ververst deze waarde slechts elke drie tot twaalf seconden en serveert daartussenin een gecachte waarde. Sneller pollen levert geen extra informatie op. De tool telt een meting daarom pas wanneer de waarde daadwerkelijk verandert, wat verklaart waarom het aantal gerapporteerde metingen veel lager is dan de poll-rate.
Machtigingen
De tool heeft Bluetooth-toegang nodig voor de terminal waarin deze wordt uitgevoerd. Dit kan worden ingesteld via: Systeeminstellingen > Privacy en beveiliging > Bluetooth. De tool zal een melding geven als deze permissie ontbreekt.
Beperkingen
- Geen geluid activeren: Het is niet mogelijk om het apparaat te laten rinkelen; dit kan alleen via 'Zoek mijn'.
- Geen richting: Eén radio-interface geeft alleen afstand aan, geen richting (bearing).
- Bereik: Alleen apparaten met ingeschakelde Bluetooth binnen bereik kunnen worden gevonden (ongeveer 10-20 meter binnenshuis, aanzienlijk minder door muren heen).
findphone: Bluetooth-apparaten lokaliseren via signaalsterkte op macOS
Installatie
Je kunt de universele binary downloaden via de 'Releases'-sectie:
tar -xzf findphone-macos-universal.tar.gz
xattr -dr com.apple.quarantine findphone
./findphone --help
Let op: Omdat de binary niet is ondertekend, plaatst macOS deze bij downloaden in quarantaine; de xattr-commando heft dit op. De tool vereist macOS 13 of later.
Zelf compileren
Om de tool zelf te bouwen, heb je de Swift toolchain van de Xcode Command Line Tools nodig. Er zijn geen externe afhankelijkheden.
swift build -c release
cp .build/release/findphone ~/bin/findphone
Voor een universele arm64 + x86_64 binary (zoals geleverd via CI):
./scripts/build-universal.sh dist
Gebruik
De tool kan op verschillende manieren worden aangeroepen:
findphone : Survey-modus. Scan alle nabijgelegen Apple handhelds op basis van signaalsterkte.
findphone iphone : Hunt-modus. Volg één specifiek apparaat op naam (hoofdletterongevoelig).
findphone --list : Toont een overzicht van gekoppelde apparaten en hun adressen.
Extra opties
Geluidsfeedback (--sound) Voeg --sound toe in de hunt-modus voor klikgeluiden die versnellen naarmate je dichterbij komt, vergelijkbaar met een parkeersensor. Het tempo ligt rond de één keer per seconde aan de andere kant van de kamer en stijgt naar een zoemgeluid zodra het signaal ongeveer -50 dBm bereikt (het moment dat een laptop ongeveer bovenop de telefoon ligt). Hiermee kun je een ruimte op gehoor afzoeken in plaats van constant naar het scherm te kijken.
Let op: Dit is geen geigerteller. Waar een geigerteller klikt per gedetecteerd deeltje, wordt het tempo hier berekend op basis van het gesmoothede signaal. Pakketten komen binnen via een vaste polling-timer van 0,3s; de aankomstfrequentie zegt dus vrijwel niets over de afstand.
Privacy (--redact) Voeg --redact toe als je het scherm opneemt. Deze optie maskeert Bluetooth-adressen en vervangt in de survey-modus de namen van ontdekte apparaten door het type apparaat (omdat deze namen niet altijd van jou zijn). Een publiek adres is een stabiele hardware-identifier die, in tegenstelling tot een BLE-advertentieadres, niet roteert; daarom is het verstandig deze uit video's te houden.
Let op: De naam die je zelf invoert in de hunt-modus en de namen in --list blijven zichtbaar, omdat je deze nodig hebt om een doelwit te kiezen. --list is zelfs met --redact niet veilig om te filmen.
Signaalsterkte en afstand
Loop langzaam en let op de balk. De waarde geeft de signaalsterkte weer in dBm; dit is een negatief getal dat dichter bij nul komt naarmate je dichterbij bent:
| dBm | Betekenis (indicatief) |
| -45 of hoger | Binnen handbereik |
| -60 | Op dezelfde tafel |
| -72 | In dezelfde kamer |
| -85 | Ver weg, of achter een object |
| Lager dan -85 | Zeer ver weg, of afgeschermd |
Belangrijke kanttekening: Signaalsterkte is slechts een grove benadering van afstand. Metaal, muren en menselijke lichamen dempen het signaal sterk. Een apparaat in een metalen archiefkast op twee meter afstand kan dezelfde waarde geven als een apparaat op vijftien meter afstand in de open lucht. Vertrouw op de trend terwijl je beweegt, niet op één enkel getal.
Hoe het werkt
De tool gebruikt drie bronnen voor de meting, gesorteerd van beste naar slechtste kwaliteit:
- GATT-link: Zodra er via BLE verbinding is gemaakt met het apparaat, geeft
readRSSI() ongeveer drie keer per seconde een verse meting. Dit is de meest nauwkeurige bron.
- BLE-advertenties: Deze worden passief waargenomen. Apple-apparaten roteren hun advertentieadressen ongeveer elke vijftien minuten en voegen alleen incidenteel de apparaatnaam toe aan pakketten, waardoor deze bron schaars is.
- Classic link RSSI: Wordt gelezen via
system_profiler SPBluetoothDataType, gekoppeld aan het stabiele publieke adres van een gekoppeld apparaat.
Bij bron 3 is er een belangrijke beperking: macOS ververst deze waarde slechts elke drie tot twaalf seconden en serveert daartussenin een gecachte waarde. Sneller pollen levert geen extra informatie op. De tool telt een meting daarom pas wanneer de waarde daadwerkelijk verandert, wat verklaart waarom het aantal gerapporteerde metingen veel lager is dan de poll-rate.
Machtigingen
De tool heeft Bluetooth-toegang nodig voor de terminal waarin deze wordt uitgevoerd. Dit kan worden ingesteld via: Systeeminstellingen > Privacy en beveiliging > Bluetooth. De tool zal een melding geven als deze permissie ontbreekt.
Beperkingen
- Geen geluid activeren: Het is niet mogelijk om het apparaat te laten rinkelen; dit kan alleen via 'Zoek mijn'.
- Geen richting: Eén radio-interface geeft alleen afstand aan, geen richting (bearing).
- Bereik: Alleen apparaten met ingeschakelde Bluetooth binnen bereik kunnen worden gevonden (ongeveer 10-20 meter binnenshuis, aanzienlijk minder door muren heen).