Where can I get the hardware?

The official Black Magic Probe hardware is available from multiple vendors. An up to date list is kept on the project main page.

Where can I find the BMP schematics?

What are those JTAG/SWD connectors and cables?

The JTAG/SWD connector is FTSH-105-01-F-DV-K from Samtec (Buy: Digi-key, 1BitSquared).

The JTAG/SWD connector is a 0.05” (50mil/1.27mm) pitch, 2 row 10pin connector. The Samtec version is the only one that includes a keying shroud and does not occupy a large space on the PCB. There are other manufacturers that make connectors that can be used too. Here are a few options:

  • Amphenol FCI 20021121-00010C4LF unshrouded SMD (Buy: Digi-key)

  • Amphenol FCI 20021111-00010T4LF unshrouded TH (Buy: Digi-key)

  • Amphenol FCI 20021521-00010T1LF shrouded SMD (Buy: Digi-key)

  • Amphenol FCI 20021211-00010T1LF shrouded TH (Buy: Digi-key)

  • CNC Tech 3220-10-0300-00 shrouded SMD (Buy: Digi-key)

  • CNC Tech 3220-10-0100-00 shrouded TH (Buy: Digi-key)

  • And many many more … 😸

The JTAG/SWD cable is FFSD-05-D-xx.xx-01-N where the x stand for the length of the cable. Common length is 6 inches. (Buy: Digi-key, 1BitSquared)

You can build your own JTAG/SWD ribbon cable using the following materials. (consider just an example there are many manufacturers making 1.27mm pitch IDC crimps and ribbons)

  • CNC Tech 3230-10-0103-00 IDC crimp with polarizing key. (Buy: Digi-key)

  • 3M 3756/10 0.025” (0.64mm) pitch 10 conductor flat ribbon cable. (Buy: Digi-key)

What are those UART connectors and cables?

The UART connector is Molex PicoBlade 0532610471. (Buy: Digi-key).

The UART cable can be built by hand using the following materials:

  • Molex PicoBlade 050079-8000 26-28AWG or 50058-8000 28-32AWG crimp sockets. (Buy: Digi-key Digi-key)

  • Molex PicoBlade 0510210400 housing (Buy: Digi-key)

  • Molex PicoBlade 0638271400 crimp tool (Buy: Digi-key) (Warning: if you don’t want to be very frustrated and destroy a lot of crimps skip trying to use cheaper options that claim to be compatible with the PicoBlade crimps, they are not.)

  • 26-32AWG wire of your choosing and whatever termination you need on the other side of the cable.

The UART cable can also be built with pre crimped wires:

  • Digi-key Molex Picoblade pre-crimped cables, you can choose from all kinds of colors as well as doublesided or single sided crimps.

  • 1BitSquared pre-crimped cable assortment

There are also pre made UART cables:

Where can I find different JTAG/SWD connectors? (Adapters & Cables)

Many vendors provide adapters allowing easy connection between different JTAG/SWD and UART interfaces. For example 1BitSquared offers a wide range of different adapters and cables. There is also a collection of adapter designs that you can find on the 1BitSquared GitHub Page that you can use as basis for your custom adapter. If there is an adapter missing for your specific application it is usually quite easy to put one together using KiCad and order the needed board from OSHPark.

Are binary firmware images available for download?

Automatically built firmware images for the official hardware are here.

How can I access memory mapped I/O from GDB?

The peripheral registers are not included in the memory map provided to GDB. It is suggested that you add the command set mem inaccessible-by-default off to your .gdbinit file. That will allow you to access addresses outside of the memory map. It will treat anything outside of the memory map as RAM.

How do I prevent memory corruption when writing to flash on an LPC MCU?

The first 512 bytes of the address space are mapped to boot ROM by default. Once you write the SYSMEMREMAP register (address 0x40048000) to have a value of 2, those 512 bytes are mapped to flash and all sections will match. The LPC bootloader automatically does this upon detecting valid user code, but the bootloader cannot run while you are holding the chip in reset with a debugger. See section 3.5.1 of the manual. In gdb, you can set {int}0x40048000 = 2 to achieve the same result.

You can add the following to your .gdbinit to set the bit on startup.

set mem inaccessible-by-default off
set {int}0x40048000 = 2

This solution is known to work on the LPC8xx/LPC11xx families of chips. If you are using something different refer to the reference manual and look for SYSMEMREMAP register. If the address differs please add it to this FAQ item or let us know in the Discord #blackmagic channel or mailing list. For the discussion of this problem refer to issue #99.

It’s annoying to look up an always-changing device name on Linux.

There are rule files provided in the driver subdirectory of the main repository. The README walks through selection of an appropriate file and how to install them on your system.

These provide entries for the following:

  • /dev/ttyBmpGdb - The GDB serial interface for the most recently plugged in probe

  • /dev/ttyBmpTarg - The auxillary serial interface for the most recently plugged in probe

  • /dev/ttyBmpGdb[serial] - The GDB serial interface for the the probe identified by the serial number [serial]

  • /dev/ttyBmpTarg[serial] - The auxillary serial interface for the probe identified by the serial number [serial]

To illustrate an example of this, given a BMP with serial 8BB20695 one can expect, by running the project’s rule files, to see this from a listing of /dev/ttyBmp*:

❯ ls /dev/ttyBmp*
/dev/ttyBmpGdb  /dev/ttyBmpGdb8BB20695  /dev/ttyBmpTarg  /dev/ttyBmpTarg8BB20695

I want to connect to a Black Magic Probe on another machine.

You can use stty and netcat. On the machine with the probe connected, make a little TCP server on port 2000 with these commands:

stty -F /dev/ttyBmpGdb raw -onlcr -iexten -echo -echoe -echok -echoctl -echoke
nc -vkl -p 2000 > /dev/ttyBmpGdb < /dev/ttyBmbGdb

In gdb on the remote machine, connect with target extended-remote hostname:2000 where hostname is the name or IP address of the machine running the probe.

Is it normal that my Black Magic Probe is warming up noticeably?

Yes, under normal operations the Black Magic Probe V2.1 is drawing 30-60mA. When using the tpwr functionality to supply power to a target like the 1Bitsy it can draw up to 120mA resulting in 0.6W of dissipated heat. The voltage regulator can heat up to 75°C under normal operations, it is rated for up to 125°C.

The problem is fixed on firmware v1.8.0 and newer

Black Magic Probe Heatmap

Why is XXX not supported?

Because nobody implemented the required functions yet. Look on GitHub if there is a pending pull request for your target. Consider testing PRs that try to implement the desired target to help us triage merge of new hardware support.

Why is Raspberry Pi 1 not supported?

Because it is an old ARM TDMI architecture, that is not compatible with ADIv5. (if you want to work on adding support for this contact us on Discord we have some sample code that needs work, if you want to dig deep into protocol spec sheets this is a project for you. :) )

Why is Raspberry PI 3 not supported?

Because it is a 64Bit architecture. We are working on adding 64bit support but it is not trivial. If you want to help with that contact us on Discord.

Why is Beagle Bone Black not supported?

Because Texas Instruments… but we are working on it. :) If you want to help with that contact us on Discord. See issue #166 for details.

How do I upgrade to a more recent version?

Follow the upgrade instructions.