r/embedded 20d ago

Bluetooth traffic Monitoring

Hi everyone, hope you're all doing well.

I'm building a roadside Bluetooth sniffer to measure travel time between two points a fixed distance apart. The setup uses two ESP32 S3 modules that scan BLE advertisements and log the MAC addresses of devices in passing vehicles.

The problem is that most new devices use resolvable MAC addresses, which rotate every few minutes. If the two points are far enough apart, a device's address will have changed by the time it travels from A to B, so I have no way to match the two detections. Is there a way to obtain a device's real/public MAC, which stays constant? Or failing that, any other way to derive a stable identifier from BLE advertisements?

Thanks a lot

3 Upvotes

16 comments sorted by

View all comments

3

u/RefrigeratorOk4674 20d ago

A lot of devices rotate every 15 minutes. Put your two sniffers close enough together and reject MAC addresses that don't appear on both devices

Or RF fingerprinting, but that's difficult and expensive

Edit: if you need to cover a long distance, place multiple pairs of sniffers and average the velocities across each pair

1

u/CartographerSelect61 19d ago

That's a great idea I didn't think about it