← Back to Documentation

Custom Debug Probes

Configure unsupported debug probes to work immediately with ProbeCodex.

Why Configure Custom Probes?

Step 1: Find Your Probe's VID/PID

Every USB device has a Vendor ID (VID) and Product ID (PID). Here's how to find them on each platform:

macOS

Open Terminal and run:

system_profiler SPUSBDataType

Look for your device in the output. You'll see something like:

J-Link:
  Product ID: 0x0101
  Vendor ID: 0x1366  (SEGGER)

In this example: VID = 1366, PID = 0101

🐧 Linux

Open Terminal and run:

lsusb

Look for your device in the output:

Bus 001 Device 005: ID 1366:0101 SEGGER J-Link

The format is VID:PID. Here: VID = 1366, PID = 0101

💻 Windows

Open PowerShell as Administrator and run:

Get-PnpDevice -Class USB -Status OK | Format-Table FriendlyName, InstanceId

Look for your device. The InstanceId contains VID and PID:

FriendlyName         InstanceId
------------         ----------
J-Link               USB\VID_1366&PID_0101\000123456789

Extract from VID_XXXX&PID_YYYY: VID = 1366, PID = 0101

Step 2: Create the Config File

Create a file at ~/.probecodex/custom-probes.json

macOS / Linux

~/.probecodex/custom-probes.json

Windows

%USERPROFILE%\.probecodex\custom-probes.json

Example Path

/Users/you/.probecodex/custom-probes.json

Quick Setup Commands

# macOS / Linux
mkdir -p ~/.probecodex
nano ~/.probecodex/custom-probes.json
# Windows (PowerShell)
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.probecodex"
notepad "$env:USERPROFILE\.probecodex\custom-probes.json"

Config File Format

{
  "customProbes": [
    {
      "vendorId": "1234",
      "productIds": ["5678", "5679"],
      "type": "cmsis-dap",
      "name": "My Custom Probe"
    }
  ]
}

Field Reference

FieldRequiredDescription
vendorIdYes4-character hex USB Vendor ID (without 0x prefix)
productIdsOptionalArray of Product IDs. If omitted, matches any PID from vendor
productIdPrefixOptionalPrefix match for PIDs (e.g., "01" matches 0100, 0101, etc.)
typeYesProbe type: jlink, stlink, nulink, cmsis-dap, or custom
nameYesDisplay name for the probe

Examples

Custom J-Link Clone

A J-Link clone with different VID/PID than the original SEGGER:

{
  "customProbes": [
    {
      "vendorId": "abcd",
      "productIds": ["1234"],
      "type": "jlink",
      "name": "J-Link Clone V2"
    }
  ]
}

CMSIS-DAP Compatible Probe

A custom board with CMSIS-DAP firmware:

{
  "customProbes": [
    {
      "vendorId": "cafe",
      "productIds": ["4001", "4002"],
      "type": "cmsis-dap",
      "name": "My Dev Board Debug"
    }
  ]
}

Match All Products from Vendor

If you want to match any product from a vendor (useful if the vendor has many variants):

{
  "customProbes": [
    {
      "vendorId": "1234",
      "type": "stlink",
      "name": "Custom ST-Link Family"
    }
  ]
}

Note: Without productIds, all products from vendor 1234 are matched.

Multiple Probes

You can define multiple custom probes:

{
  "customProbes": [
    {
      "vendorId": "abcd",
      "productIds": ["0001"],
      "type": "jlink",
      "name": "Custom J-Link"
    },
    {
      "vendorId": "1234",
      "productIds": ["5678"],
      "type": "cmsis-dap",
      "name": "My CMSIS-DAP Board"
    },
    {
      "vendorId": "beef",
      "type": "custom",
      "name": "Proprietary Debug Probe"
    }
  ]
}

What Happens After Configuration?

Immediate Effect

As soon as you save the config file and restart the MCP server, your probe will be detected and work exactly like built-in probes. No waiting required.

Auto-Submission to Developers

Your custom probe configuration is automatically submitted to ProbeCodex developers. We review submissions and add popular probes to the built-in list in future releases.

Your Contribution Matters

When you configure a custom probe, you're helping the entire community. We track submission counts and prioritize adding the most-requested probes. Popular probes from community submissions become built-in support in future releases, so others don't have to configure them.

Troubleshooting

Probe still not detected?

  • Verify the VID/PID values are correct (check with lsusb/system_profiler again)
  • Make sure JSON syntax is valid (no trailing commas, proper quotes)
  • Restart the MCP server after saving the config file
  • Check that the file is in the correct location

Wrong probe type detected?

The type field determines how ProbeCodex communicates with the probe. Use the correct type for your probe's protocol (jlink, stlink, cmsis-dap, etc.).

Need help?

Contact support via the Portal Support Chat with your probe's VID/PID and we'll help you configure it.

Related