Rumskrot Pulse
A debugger for Bluetooth LE. The app you reach for when your firmware isn’t notifying right, when your beacon is advertising mystery bytes, when you’re walking the office checking antenna placement. Goes deeper than every other BLE app on iOS — on-device, with zero telemetry.
Coming SooniPhone

What BLE Scanning Should Look Like
iBeacon / Eddystone / Continuity decoded inline · live RSSI sparklines · distance · auto-naming

Walk the GATT Tree, Then Diff It
Negotiated MTU, persistent walks, inline CCCD, dashboards for SIG profiles

BPM and HRV, Live
Don’t watch hex — see the data. Dashboards for any peripheral exposing SIG service 0x180D

What’s Happening on the Wire
Every CoreBluetooth callback timestamped — connect, discover, read, write, notify, RSSI

Beacons, Decoded
Paste raw advertisement hex — Pulse parses iBeacon, Eddystone, and Continuity TLVs

Push Firmware in One Tap
Nordic Secure DFU via the official iOS-DFU-Library — pick a .zip, watch the progress

What Changed After the Update?
Compare two GATT snapshots side-by-side. + added · − removed · ~ properties changed

Every Probe Stays On Your Device
Recall any prior run. CSV for scans, JSON for everything else — no cloud, no accounts
iPad

What BLE Scanning Should Look Like

Walk the GATT Tree, Then Diff It

BPM and HRV, Live

What’s Happening on the Wire

Beacons, Decoded

Push Firmware in One Tap

What Changed After the Update?

Every Probe Stays On Your Device
Features
Inline Beacon Decoding
Every Scan row decodes its advertisement live. iBeacon → UUID/Major/Minor; Eddystone → URL or UID; Apple Continuity → AirPods, Find My, Handoff, Nearby Info. No tap-in required.
Auto-Naming
When a peripheral advertises a useless name, Pulse fingerprints it: “AirPods / Beats”, “Heart Rate Monitor”, “RuuviTag”, “Tile tracker”, “Nordic DFU”, “Matter commissioner”.
Live RSSI Sparklines
Not just a number — a trend. Watch a peripheral approach as you walk toward it.
Distance Estimation
For iBeacon and Eddystone packets carrying calibrated TX power, Pulse computes “≈2.5 m” using the standard log-distance path-loss model.
Live Sensor Dashboards
Heart Rate (BPM + RR-interval HRV), Battery (drain rate, time-to-empty), Environmental Sensing (temperature / humidity / pressure).
Connection Event Log
Timestamped wire-level chatter for every CoreBluetooth callback. Pulse becomes a debugger, not a hex viewer.
GATT Cache + Diff
Every walk persists. Compare two snapshots after a firmware update; Pulse highlights what was added, removed, or changed with + / − / ~ markers.
Service Inspector
Read with structured rendering for SIG-defined formats. Subscribe with live notify / indicate timelines. Write with response or write-without-response. Negotiated MTU and write payload sizes surfaced in the header.
Advertisement Decoder
Paste raw hex blobs — Pulse parses iBeacon, Eddystone-URL/UID/TLM, and Apple Continuity TLVs.
Nordic Secure DFU
Firmware upload via Nordic’s official iOS-DFU-Library. Pick a .zip, watch the progress, peripheral reboots clean.
L2CAP CoC Debugger
Raw byte-stream debugging over L2CAP connection-oriented channels — the modern transport BLE apps actually use.
App Intents Everywhere
Every tool is an AppIntent — drive Pulse from Shortcuts, Siri, the Action Button, and Lock-Screen widgets.
Run History & Export
Every probe is recorded automatically. CSV export for Scan, JSON for everything else.
Privacy-First by Design
Everything runs on-device. No backend, no telemetry, no analytics. No accounts, no sign-up, no email. History lives in your local SwiftData store.
About
Rumskrot Pulse is built natively in Swift on top of CoreBluetooth and Swift Concurrency. The only third-party dependency is Nordic’s iOS-DFU-Library (and the ZIPFoundation library it pulls in) — neither does any networking. Everything else is Apple frameworks.
Pulse pairs naturally with the rest of the toolbelt: Rumskrot Beacon for network probes, Rumskrot Terminal for SSH, and Rumskrot Remote for VNC remote-desktop control.
Free. No IAP, no ads, no premium tier.