Platform specifics
probe-rs supports multiple probes out of the box.
Most of them require little to no setup. For linux, udev rules are required for non admin access.
Linux: udev rules
By default, the debug probes are only accessible by users with root privileges on Linux based systems. It is recommend to use appropriate udev rules to allow users without root privileges access to the debug probes as well.
- Download the rules file and place it in /etc/udev/rules.d.
- Run
udevadm control --reloadto ensure the new rules are used. - Run
udevadm triggerto ensure the new rules are applied to already added devices.
If you’re still unable to access the debug probes after following these steps, try adding your user to the plugdev group. This group needs to be a system group if you use systemd version higher than v258. In this case you can try the following commands to fix the udev rules :
sudo groupadd --system plugdevsudo usermod -a -G plugdev $USERIf you are using WSL, you may need to enable the
udevservice. To check if the service is running, runservice udev status. If the service is not started, edit/etc/wsl.conf(with sudo) and make sure the following is included:
[boot]command="service udev start"Windows: WinUSB drivers
Some of the probe implementations are implemented using nusb which uses the WinUSB drivers on Windows. For these devices you will need to download Zadig and select WinUSB as the driver for your probe. This will uninstall any official drivers, which means that the official tools will most likely not work anymore after this.
CMSIS-DAP
CMSIS-DAP is a standard for debug probes which is managed by ARM. All probes implementing this standard are supported by probe-rs.
Setup
Linux
No additional drivers are required to use CMSIS-DAP based probes on Linux systems. To ensure that users without root privileges can use the debug probe, it is recommended to configure udev as described in udev rules.
Windows, macOS
No driver installation required.
ST-Link
The ST-Link is a debug probe from ST Microelectronics. It is commonly found on their evaluation boards, such as the Discovery and Nucleo boards.
Supported Versions
The following versions of the ST-Link are supported:
- ST-Link V2, Firmware version 2.26 or higher
- ST-Link V3, Firmware version 3.2 or higher
If you get an error message indicating that the firmware is outdated, please use the official ST tools to update the firmware. The update tool can be found on the ST website.
Setup
Linux
No additional drivers are required to use a ST-Link debug probe on Linux systems. To ensure that users without root privileges can use the debug probe, it is recommended to configure udev as described in udev rules.
Windows
To use the ST-Link on Windows, you need to install the official drivers, which can be found on the ST website.
macOS
No driver installation required.
SEGGER J-Link
The J-Link is a debug probe from Segger. It is available as a stand-alone product, but also integrated into some evaluation boards directly.
Due to the proprietary nature of the J-Link, probe-rs will not achieve the same speed as the official J-Link tools.
Setup
Linux
No additional drivers are required to use a J-Link debug probe on Linux systems. To ensure that users without root privileges can use the debug probe, it is recommended to configure udev as described in udev rules.
Windows
Unfortunately, probe-rs doesn’t work with the official drivers on Windows. To use probe-rs it is necessary to install a generic WinUSB driver. The recommended way of doing this is by using the J-Link Configurator tool. To install the generic WinUSB driver with the J-Link Configurator tool:
- Download the J-Link Configurator tool
- Connect the J-Link probe you wish to update
- Start the J-Link Configurator tool
- Right click the entry in the overview where your probe is listed, and select Configure
- Under USB Driver (Windows) select WinUSB
- Click OK
Some J-Link probes will have the option to select WinUSB in the configuration dialog disabled. In this case, use Zadig to install the generic WinUSB driver for your probe.
macOS
No driver installation required.
FTDI
FTDI refers to a family of debug probes built using USB-JTAG bridges from FTDI. probe-rs supports the following chips:
- FT232H
- FT2232C, FT2232D, FT2232H
- FT4232H
Due to the configurable nature of these chips, not every probe may be picked up by probe-rs. If you have a probe that you know contains an FTDI chip, but probe-rs does not recognise it, please open a ticket on GitHub!
The following devices are known to work with probe-rs:
- esp-prog
- The debug interface of ESP32-Ethernet-Kit V1.2
- Adafruit FT232H Breakout
- Olimex ARM-USB devices:
Setup
Linux
No additional drivers are required to use a FTDI-based debug probe on Linux systems. To ensure that users without root privileges can use the debug probe, it is recommended to configure udev as described in udev rules.
Windows
Unfortunately, probe-rs doesn’t work with the official (VCP or D2xx) drivers on Windows. To use probe-rs it is necessary to install a generic WinUSB driver. The recommended way of doing this is by using Zadig.
macOS
No driver installation required.
ESP32 devices with built-in USB-JTAG interface
Some ESP32 devices come with built-in debug probes. The availability of this interface varies,
but usually, if your device includes two USB ports, one labelled USB, the other UART, then
there’s a good chance the one marked as USB can act as a debug probe.
Setup
Linux
No additional drivers are required to use an ESP32 built-in debug interface on Linux systems. To ensure that users without root privileges can use the debug probe, it is recommended to configure udev as described in udev rules.
Windows, macOS
No driver installation required.
Some ESP32 devices have an incorrect WinUSB Descriptor. If probe-rs list shows your device, but probe-rs info fails with Could not find DeviceInterfaceGUIDs in registry, you may need to reinstall the driver using Zadig. You can find more information in this GitHub discussion: https://github.com/probe-rs/probe-rs/discussions/3193
Glasgow Interface Explorer
No additional drivers are required on any OS, but the device must be first configured using the Python toolkit that comes with it. Refer to the installation instructions for further details.
Setup
Before running probe-rs, configure the target voltage and pinout using the glasgow CLI
command. For example, if your target’s SWCLK is connected to pin “A0” and SWDIO is connected
to pin “A1”, and it uses 3.3 V logic levels, use:
$ glasgow run probe-rs -V A=3.3 --swclk A0 --swdio A1The terminal output of the glasgow command will include the arguments needed to run probe-rs.
Note that the “*V” (voltage) pins provide power to the target, and the “*S” (sense) pins measure
the target’s logic voltage level. If your target provides a reference voltage level (Vtg or similar),
for example, you could connect it to the “AS” pin and run the glasgow tool as:
$ glasgow run probe-rs -V A=SA --swclk A0 --swdio A1Do not back-power the probe by connecting a power source to the “*V” pins.
It is also possible to use the debug probe functionality together with other applets, such as a serial terminal; for example, if your target’s transmit wire is connected to pin “A2” and receive wire to pin “A3”:
$ glasgow multi probe-rs -V A=3.3 --swclk A0 --swdio A1 ++ uart --rx A2 --tx A3 --auto-baud