Badass J-Link Plugin on macOS: The Debugger Was Fine, Permissions Were Not

Ammad155231 avatar

Ammad155231

I wanted to use Badass J-Link Plugin (app) on macOS to debug an embedded project without rebooting into a Linux box. The setup sounded trivial: plug in the J-Link, install the plugin, point my IDE to it, done. In reality, macOS had other plans.

The first launch looked fine. No crash, no warning. The plugin loaded, the UI appeared, but the debugger stubbornly refused to connect to the device. The log kept repeating a vague “no J-Link devices found” message. The hardware was connected, powered, and happily visible on another machine. So yeah, that was the moment I knew this wasn’t a hardware issue.

My first instinct was the usual: reinstall everything. I removed the plugin, re-downloaded it, reinstalled the SEGGER J-Link drivers, rebooted macOS (Sonoma 14.2 on an M1 Pro). Same result. I even tried a different USB cable, because superstition is part of the job.

Second attempt: I blamed codesigning. macOS loves to silently block low-level tools. I checked System Settings → Privacy & Security, scrolled down looking for the classic “System software from developer was blocked” message. Nothing. No prompt, no warning, no friendly dialog. That sent me down the wrong path for a while, digging through IDE configs and environment variables.

The third attempt was half desperation, half curiosity. I opened Terminal and ran the J-Link command-line utility directly. That’s when I finally got a clue: it failed with a permissions-related error accessing USB devices. Not dramatic, just a quiet refusal. macOS was sandboxing the tool, and the plugin inherited that limitation.

At that point it clicked. This wasn’t about drivers being broken; it was about macOS privacy rules. Since Catalina, direct hardware access can be restricted unless the app is explicitly allowed. The system doesn’t always ask — sometimes it just blocks and waits for you to notice.

What actually worked was manual permission cleanup. I went into System Settings → Privacy & Security → Files & Folders and Full Disk Access, and added both the IDE and the plugin binaries. Then I checked Developer Tools permissions and made sure the IDE was listed there as well. Apple documents this behavior pretty clearly once you know what to search for (their privacy protection overview on support.apple.com explains why developer tools can fail silently).

After restarting the IDE — not the whole system, just the IDE — the debugger connected instantly. Same cable, same board, same setup. Zero changes on the hardware side. The plugin was fine all along; macOS just never told me it was blocking USB access.

I saved this page while troubleshooting because it lined up almost perfectly with the behavior I was seeing on macOS and helped confirm I wasn’t chasing ghosts: https://sznurkowo.com/developer/34325-badass-jlink-plugin.html

Looking back, the most annoying part wasn’t the bug, but the lack of feedback. No popup, no alert, nothing that said “hey, I’m protecting you.” If I had known from the start, I would’ve skipped hours of reinstalling perfectly good software.

If I had to do it again, here’s the mental checklist I’d follow immediately:

  • Verify the tool works from Terminal first.
  • Check Privacy & Security permissions manually, even if macOS doesn’t prompt.
  • Restart the IDE after changing permissions (it matters).

Once that was done, the plugin behaved exactly as expected. Stable connection, no random drops, and noticeably faster attach times than my previous workaround. The takeaway is simple: when low-level dev tools “half-work” on macOS, it’s usually not a bug — it’s the OS quietly doing its thing.

Ammad155231 avatar
Written By

Ammad155231

Enjoyed the post?

Clap to support the author, help others find it, and make your opinion count.