rf_sentinel / guides / smart-glasses-detector
Smart glasses detector
Camera glasses keep a Bluetooth LE link to their phone app and advertise while worn. Their company IDs and service UUIDs give them away.
How camera glasses give themselves away
Smart glasses with a camera stay paired to a phone app (Meta AI for Ray-Ban and Oakley Meta, Snapchat for Spectacles, Vuzix's own app) so photos and videos can sync. To keep that link, they advertise over Bluetooth Low Energy while worn: a short radio packet several times a second that any phone nearby can receive.
RF Sentinel listens to those packets passively. It never connects to the glasses and never sends anything to them. Each packet carries identifiers registered with the Bluetooth SIG: a company ID in the manufacturer data and sometimes a service UUID. Those identifiers belong to the glasses' maker, so they name the product even when the device's name and address are hidden or change.
Detection rules
| Glasses | Identifier | Score |
|---|---|---|
| Ray-Ban Meta (Luxottica) | Company ID 0x0D53 | 70 |
| Ray-Ban / Oakley Meta | Company ID 0x058E with the META_RB_GLASS token only | 72 |
| Snap Spectacles | Company ID 0x03C2 or service UUID 0xFE45 | 70 |
| Vuzix | Company ID 0x060C | 70 |
| HeyCyan SDK glasses | UUID 7905FFF0-B5CE-4E99-A40F-4B1E122D00D0, full 16-byte match | 68 |
| Meta (corporate) | Company ID 0x01AB, UUID 0xFEB7 / 0xFEB8 | 45, Quest headsets share it |
0x058E alone is deliberately not matched: Quest headsets use it too. The HeyCyan rule needs all 16 bytes because Apple's notification service UUID differs from it by only two.
What the score means
Scores of 50 and above are probable matches and alert with the default settings; the product-specific rules above (68 to 72) all land there. The generic Meta rule scores 45, a weak match: it shows in the list with a "verify" label but doesn't alert unless you lower the alert threshold in Settings, because a Quest headset in the next car would trigger it too.
Finding the glasses
- Signal and distance: each match shows its signal strength and a rough distance. Bluetooth from glasses usually reaches a few metres to a few tens of metres, depending on walls and bodies in between.
- Locate mode: open the device and turn on Locate; it beeps faster as you walk closer.
- Look for the LED: Ray-Ban Meta and Spectacles light a capture LED while recording. RF Sentinel can tell you glasses are near, not whether they are recording.
Limits
- Glasses that are off, folded and asleep, or charging in their case usually stop advertising, so they can't be heard.
- Glasses connected to their phone may advertise less often; keep scanning for a minute in a room before concluding none are there.
- Camera glasses without Bluetooth, or models not in the table, aren't detected. New identifiers can be added to your watchlist or reported on GitHub.
- A match means the hardware is nearby, not who is wearing it.
Questions
Does a match mean I'm being recorded?
No. It means camera glasses are nearby and advertising. Recording state isn't broadcast; look for the capture LED.
Will it see glasses that are folded or in their case?
Usually not: glasses stop advertising when off or charging in the case.
Does it need root or a special phone?
No. It uses Android's normal Bluetooth LE scanning on any phone with Android 8.0 or later. It also merges detections from an ESP32 board running OUI-Spy if you connect one.
Why did a Meta Quest headset show up?
Quest headsets use the same Meta company ID as the glasses. That rule is kept as a weak match for that reason; the stronger Ray-Ban and Oakley rules only match the glasses.