DEV Community

getnopeek
getnopeek

Posted on

How I built an app to detect Meta Ray-Ban glasses using immutable BLE company IDs

Meta has sold 7M+ Ray-Ban smart glasses. They look
identical to normal glasses. They record video and
audio silently.

After Harvard students demonstrated real-time facial
recognition using them on strangers in public, I built
NoPeek — a free Android app that detects them via
Bluetooth.

The key insight

MAC address randomization made BLE fingerprinting
unreliable. But the Manufacturer Specific Data field
in every BLE ADV frame contains a company ID in
bytes 0-1 that is:

  • Assigned by Bluetooth SIG
  • Immutable — cannot be rotated or randomized
  • Broadcast on every advertisement packet

Key company IDs

Company ID Vendor Device
0x0D53 Luxottica Meta Ray-Ban
0x03C2 Snapchat Spectacles
0x01AB Meta Platforms Quest/Ray-Ban
0x0BA7 Pico Pico VR
0x00E0 HTC Vive

False positive prevention

Apple's 0x004C is used by ALL Apple devices.
NoPeek requires BOTH company ID AND device name
"Vision Pro" — so your iPhone never triggers alerts.

The app

Built with Kotlin. Foreground service for background
scanning. Path-loss model for distance estimation.
No internet permission. Fully local.

GitHub: github.com/getnopeek/nopeek-android

What's next

Looking for contributors especially:

  • New device signatures
  • iOS port
  • False positive reports

Top comments (0)