# JLink Debug Probe

The J-Link debug probe (opens new window) is a closed-source, commercial hardware probe which supports almost all ARM Cortex-M devices. You need to install the J-Link drivers (opens new window) for this probe to work:

# Ubuntu
wget --post-data "accept_license_agreement=accepted" https://www.segger.com/downloads/jlink/JLink_Linux_x86_64.deb
sudo dpkg -i JLink_Linux_x86_64.deb
# macOS
brew install segger-jlink

Once installed, you can start the server using:

JLinkGDBServer -if swd -device STM32F765II

It might then prompt you to update the JLink which is recommended, and then to specify which device it is communicating with. Check the docs of your autopilot for the specific device.

Once that's done, the GDB server should be start listening on port 2331, e.g. like so:

Checking target voltage...
Target voltage: 3.28 V
Listening on TCP/IP port 2331
Connecting to target...
Connected to target
Waiting for GDB connection...

You can now start GDB with the exact elf file that is currently flashed on the autopilot (in a separate terminal):

arm-none-eabi-gdb build/px4_fmu-v5_default/px4_fmu-v5_default.elf -ex "target extended-remote :2331"

And now you should be connected.

To use an IDE instead, see the instructions for Eclipse or VSCode. See the Embedded Debug Tools (opens new window) for more advanced debug options.

The Segger JLink EDU Mini (opens new window) is an inexpensive and popular SWD debug probe. The probe's connector pinout looks like the image below (connect to this using an ARM 10-pin mini connector like FTSH-105-01-F-DV-K (opens new window)).


The pin mapping to connect the J-Link Edu Mini to Pixhawk Debug Mini is shown below.

Pin Signal JLink
1 VREF 1
2 Console TX
3 Console RX
6 GND 3, 5

Note that none of the JLink debug probes have a built in serial connection, so you need to connect the console separately.