← All Posts

BLE Debugging on macOS: nRF Connect Alternatives That Actually Work

You are developing a BLE peripheral. An ESP32 running a custom GATT server, maybe, or a Nordic nRF52-based sensor board. You need to scan for the device, connect, browse its GATT services, read and write characteristics, and subscribe to notifications. This is standard BLE development workflow. On macOS, getting a tool that can do all of this reliably is surprisingly difficult.

The tool most BLE developers reach for first is nRF Connect for Desktop from Nordic Semiconductor. When it works, it works well. The problem is that on macOS, especially on Apple Silicon, it frequently does not work at all.

The nRF Connect Problem

nRF Connect for Desktop is an Electron-based launcher for Nordic's desktop apps. Its Bluetooth Low Energy app is built for Nordic hardware, which makes it a heavier setup on a Mac than a plain BLE scanner:

  • It needs Nordic hardware. The Bluetooth LE app scans through a Nordic development kit or nRF52840 dongle, not the Mac's built-in Bluetooth.
  • J-Link is a separate install on macOS. Nordic's launcher README says the SEGGER J-Link driver must be installed separately on macOS and Linux.
  • "Failed to get the library versions" errors. This is a recurring Nordic DevZone thread on macOS, usually traced to J-Link missing or a J-Link version newer than the one the app was tested with.

Nordic's recommended fixes are installing the J-Link version listed in the app log and updating the launcher and app. That works, but it is a lot of setup when all you want is to see what a sensor is advertising.

If you have spent more than 30 minutes trying to get nRF Connect to work on macOS, you have already spent more time than it should take. A native macOS BLE debugger should just open and work.

Current BLE Debugging Tools

Beyond nRF Connect, here is what is available for BLE debugging on macOS. For a broader look at how BLE fits alongside other industrial protocols, see our industrial protocol comparison guide.

LightBlue

LightBlue by Punch Through is a simple BLE scanner and explorer available on macOS and iOS. It can scan for devices, connect, and browse GATT services. However, it is limited in scope: basic read and write operations work, but there is no advertisement monitoring, no connection logging, and no support for complex debugging workflows. It is adequate for a quick check but insufficient for serious BLE development.

nRF Connect Mobile (iOS only)

Nordic also offers nRF Connect as an iOS app. It is more reliable than the desktop version because it uses iOS's native CoreBluetooth framework rather than Noble. But you cannot use it on macOS, and debugging a peripheral with a phone while your development environment is on a Mac is an awkward workflow.

Bluetooth Explorer (Xcode)

Apple includes Bluetooth Explorer as part of the Additional Tools for Xcode package. It provides basic BLE scanning and attribute browsing. The interface is functional but clearly designed for Apple's internal testing, not for third-party BLE development. It lacks write capabilities, notification subscription, and advertisement monitoring. It is a diagnostic tool, not a development tool. For industrial protocols beyond BLE, the OPC-UA Explorer for macOS provides a similar native browsing experience for OPC-UA servers.

blew / HumBLE (CLI)

Command-line BLE tools that use CoreBluetooth under the hood. They work for scanning and basic reads, but you are back in Terminal, parsing hex output. No GUI, no GATT tree visualization, no notification subscription interface.

blueutil (CLI)

A macOS command-line tool for Bluetooth power management and basic device listing. It can scan and pair devices but provides no GATT-level access. Useful for scripting Bluetooth on/off, not for debugging BLE peripherals. For broader serial communication needs, a dedicated serial terminal for macOS is a better fit.

Wireshark

Wireshark can capture and analyze BLE packets if you have a compatible capture adapter (like the Nordic nRF Sniffer). It provides deep protocol-level visibility but is massive overkill for day-to-day BLE development. You use Wireshark when you need to debug link-layer encryption issues or timing problems, not when you need to quickly check if your characteristic is returning the right value.

What You Need for BLE Debugging

A complete BLE debugging workflow requires these capabilities in a single tool:

  • Scan for peripherals. See all advertising BLE devices in range with their names, RSSI signal strength, and advertised services. Filter by service UUID to find your device among the noise.
  • Connect and discover. Establish a connection to the peripheral and discover all GATT services and characteristics. See the full service hierarchy at a glance.
  • Read characteristics. Read the current value of any readable characteristic. Display values in hex, decimal, ASCII, and UTF-8. For known UUIDs, decode the value according to the Bluetooth SIG specification.
  • Write characteristics. Write values to writable characteristics to send commands or configuration data to your peripheral. Support for write-without-response and write-with-response modes.
  • Subscribe to notifications/indications. Enable notifications on characteristics that support them to receive real-time updates as the peripheral generates data. Essential for sensor data streams and status updates.
  • GATT tree browser. Visualize the full GATT hierarchy: services, characteristics, and descriptors in a tree structure. Navigate between levels without memorizing UUIDs.
  • Advertisement monitor. Watch raw advertisement packets as they arrive. See the advertising data (complete local name, service UUIDs, manufacturer-specific data, TX power level) without connecting.
  • Connection log. Track connection events, disconnections, pairing attempts, and bond status. Critical for debugging connection stability issues.

MacTools BLE Inspector

MacTools BLE Inspector is a native macOS application that provides all of the above without the extra hardware and driver setup of nRF Connect. It uses Apple's CoreBluetooth framework directly, so it works with the Bluetooth hardware already in your Mac. No Electron, no Node.js, no native dependency compilation.

Scanner with RSSI

The scanner view shows all advertising BLE devices in range. Each entry displays the device name (if advertised), RSSI signal strength, and advertised service UUIDs. Sort by RSSI to find the strongest signal or filter by service UUID to isolate your device. The scanner updates in real time, so you can see when your device starts or stops advertising.

GATT Browser

Once connected to a peripheral, the GATT browser displays the complete service hierarchy as a tree. Primary services are listed at the top level. Expand any service to see its characteristics. Expand a characteristic to see its descriptors (including Client Characteristic Configuration for notification enable/disable). Properties (read, write, notify, indicate) are shown as badges on each characteristic, so you immediately know what operations are supported.

Read and Write

Click any readable characteristic to read its current value. The value is displayed in multiple formats: hexadecimal, decimal, ASCII, and UTF-8. For standard Bluetooth SIG UUIDs, MacTools can decode the value according to the specification (e.g., Heart Rate Measurement, Battery Level, Temperature). Click any writable characteristic to send a value. Enter data in hex or text, choose write mode (with or without response), and send.

Advertisement Monitor

The advertisement monitor captures raw advertising packets without connecting. It shows each packet's advertising type (connectable, scannable, non-connectable), the complete advertising data structure (flags, local name, service UUIDs, manufacturer-specific data, TX power level), and the RSSI at the time of reception. This is essential for debugging advertising configuration on your peripheral.

UUID Lookup

MacTools includes a lookup database for standard Bluetooth SIG UUIDs. When you see a service or characteristic UUID, MacTools displays the human-readable name alongside it. Instead of 0x180D, you see "Heart Rate Service." Instead of 0x2A37, you see "Heart Rate Measurement." Custom UUIDs from your own services are displayed in full with an option to add a custom label.

Connection Log

The connection log records every connection event: successful connections, disconnections (with reason codes), pairing requests, and authentication events. When your peripheral disconnects unexpectedly, the log tells you why (timeout, connection supervision timeout, user-initiated, remote device terminated). This is critical for debugging connection stability.

Use Cases

ESP32 BLE Development

The ESP32 is one of the most popular platforms for BLE peripherals. When developing with ESP-IDF or Arduino, you need to verify that your GATT server is advertising correctly, services are discoverable, characteristics return the right values, and notifications fire at the expected rate. MacTools BLE Inspector gives you visual confirmation of every step.

Custom Peripherals

If you are building a custom BLE peripheral with a Nordic nRF52, STM32WB, or similar SoC, MacTools lets you test the complete GATT structure as you define it. Verify service ordering, characteristic permissions, descriptor configuration, and notification behavior without writing a test app on the central side.

Fitness and Health Devices

BLE fitness devices use standard GATT profiles (Heart Rate, Running Speed and Cadence, Cycling Power). MacTools decodes these standard characteristics automatically, showing heart rate in BPM, speed in km/h, and power in watts. Useful for verifying that a fitness peripheral is broadcasting data correctly.

Beacon Testing

iBeacon, Eddystone, and custom beacon formats are all visible in the advertisement monitor. Verify your beacon's UUID, major/minor values, TX power, and advertising interval without installing a dedicated beacon scanner app.

IoT Sensors

Environmental sensors (temperature, humidity, pressure, CO2) that broadcast data over BLE GATT can be monitored in real time. Subscribe to notification characteristics and watch sensor data stream in as the device updates. For sensors that publish data over MQTT rather than BLE, a local MQTT broker on macOS provides a similar monitoring workflow.

Comparison: BLE Debugging Tools

Factor
MacTools BLE Inspector
nRF Connect Desktop
LightBlue
Price
$19 one-time
Free
Free
macOS Native
Yes (CoreBluetooth)
Electron
macOS app (limited)
GATT Browse
Full tree view
Full tree view
Basic list
Read / Write
Yes
Yes
Yes
Notifications
Yes
Yes
Limited
Adv Monitor
Yes
Yes
No
Setup
Built-in Bluetooth
Nordic dongle + J-Link
App Store

Try the BLE Inspector

MacTools BLE Inspector for macOS. Scan, connect, browse GATT, read/write characteristics. No Nordic dongle or J-Link needed. $19 one-time.

Get MacTools BLE Inspector

Frequently Asked Questions

Why does nRF Connect fail to start on macOS?

nRF Connect for Desktop's Bluetooth Low Energy app does not use the Mac's built-in Bluetooth. It talks through a Nordic development kit or nRF52840 dongle, and on macOS it needs SEGGER J-Link software installed separately. Many "Failed to get the library versions" reports on Nordic DevZone trace back to J-Link missing or a J-Link version the app was not tested with. Nordic's usual fix is installing the J-Link version listed in the app log and updating the launcher.

Can I debug BLE devices on macOS without nRF Connect?

Yes. Alternatives include LightBlue (basic scanning and GATT browsing from the Mac App Store), Apple's Bluetooth Explorer (part of Xcode Additional Tools, limited to reads), and native macOS tools like MacTools BLE Inspector that use CoreBluetooth directly. CoreBluetooth-based tools work reliably on every Mac and macOS version without Node.js or Electron dependencies.

How do I read BLE characteristic values on macOS?

Use a BLE explorer tool that connects to your peripheral via CoreBluetooth. After connecting, discover the GATT services and characteristics, then click any readable characteristic to read its current value. Good tools display values in hex, decimal, ASCII, and UTF-8 formats, and can decode standard Bluetooth SIG UUIDs automatically (e.g., showing Battery Level as a percentage).

Does LightBlue work for BLE debugging on macOS?

LightBlue can scan for devices, connect, and browse GATT services on macOS. However, it lacks advertisement monitoring, connection logging, and notification subscription for complex debugging workflows. It works for quick checks but is insufficient for serious BLE peripheral development where you need to monitor raw advertising packets or debug connection stability issues.

Related: Full SCADA System

Need continuous monitoring with dashboards, alarms, and trending across all your devices? Voltrus SCADA supports Modbus, OPC-UA, Siemens S7, Allen-Bradley, DNP3, BACnet, MQTT, and more. Lifetime license from $49.

Further Reading