Skip to content

Add RF analyzer tools, ProtoPirate model DB, WiFi sniffer fix, and a new feature: BLE/smart/meta glasses detector - #3086

Open
TurbulentGoat wants to merge 5 commits into
BruceDevices:devfrom
TurbulentGoat:dev
Open

TurbulentGoat wants to merge 5 commits into
BruceDevices:devfrom
TurbulentGoat:dev

Conversation

@TurbulentGoat

Copy link
Copy Markdown

Proposed Changes

Adds sub-GHz analysis tools, a BLE smart-glasses detector, a car-model database
for ProtoPirate, and fixes the WiFi sniffer on PSRAM-less boards.

  • RF -> Analyze: auto-classifier that detects ASK/OOK vs 2-FSK from a captured
    pulse train and estimates TE / baud / bit count with a confidence score
    (auto-flips the CC1101 between OOK and 2-FSK when idle).
  • RF -> Rolling Code: captures KeeLoq/rolling frames and shows manufacturer /
    serial / button / counter, tracking the counter across presses to report
    "rolling" vs "fixed code".
  • RF -> Remote Analyzer: frequency peak-finder with AM-vs-FM classification
    (coarse sweep + +/-300 kHz fine sweep).
  • ProtoPirate -> Car model: an 11-entry model database (frequency + preset,
    including the Honda raw CC1101 register preset) selectable from Receiver
    settings.
  • BLE -> Glasses Detect: flags camera-equipped glasses (Meta Ray-Ban/Oakley,
    Snap Spectacles, etc.) by BLE company ID, the META_RB_GLASS manufacturer-data
    tag, product names, and service UUIDs.
  • WiFi sniffer: adds a radioHasMemForWifi() guard, a static packet queue,
    switches from AP to STA+promiscuous mode, and reduces RX/TX buffer counts -
    fixing OOM/reboot on no-PSRAM boards.

Types of Changes

New Feature & Bugfix

Verification

  • Builds clean for m5stack-cardputer
  • RF features require a CC1101 module and were exercised
    with a HackRF as the transmitter.
  • Glasses detector: BLE scan matching against real device fingerprints.
  • WiFi sniffer: verified to start, capture APs, and run the deauth attack on a
    Cardputer ADV (previously rebooted with ESP_ERR_NO_MEM / LoadProhibited).

Testing

Changes were validated by building and manually testing on
hardware (M5Stack Cardputer ADV). The new RF/BLE modules are self-contained and
guarded by #if !defined(LITE_VERSION) where appropriate.

Linked Issues

NONE

User-Facing Change

Added sub-GHz auto-classifier (Analyze), rolling-code analyzer, and remote analyzer to the RF menu.
Added a BLE smart-glasses detector (BLE -> Glasses Detect).
Added a car-model database + custom radio profiles to ProtoPirate.
Fixed the WiFi sniffer rebooting/OOM on no-PSRAM boards (Cardputer ADV).

Further Comments

This is currently a single commit spanning several feature areas. I'm happy to
split it into focused PRs (RF tools / BLE detector / ProtoPirate models /
sniffer fix) if the maintainers prefer smaller review units.

…d WiFi sniffer fix

- RF: sub-GHz auto-classifier (Analyze), rolling-code analyzer, remote
  analyzer (peak find + AM/FM), car-model database + custom radio profiles
- BLE: smart/Meta glasses detector (Glasses Detect)
- ProtoPirate: car-model selector + custom CC1101 register profiles
- WiFi sniffer: RAM guard, static queue, STA+promiscuous mode, reduced buffers
  (fixes OOM/reboot on no-PSRAM boards)
@TurbulentGoat

Copy link
Copy Markdown
Author
InShot_20261113_193500639.mp4
VID_20261113_133230536.mp4
VID_20261113_133249454.mp4.2.mp4

The content-clear fillRect() spanned the full screen width, erasing the
left/right (and bottom, for Analyze) border. Restrict clearing to the
content area inside the border.
AP mode (hostapd) OOM'd against the ~31 KB of contiguous DMA left while
Bruce's 64 KB SDR bank is fenced off. Release the SDR bank before starting
the AP, free any prior WiFi stack, guard on radioHasMemForWifi(), and use
max_connection=1 to shrink the station table.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant