Need help with programming PYNQ-Z2 via JTAG while boot jumper is in SD card mode

I’m trying to do something that most tutorials out there have not done.
I have my PYNQ-Z2 booted up with the SD card (Boot mode jumper is in SD card mode), but now I want to program a custom bitstream and write software for it via the SDK using the JTAG interface.
I want to do this without changing the boot mode jumper or power cycling the board.
First of all, is this even possible?
Can someone point me to the right documentation on these modes and what all is possible.

I tried doing exactly this

  • I created a block design with a few GPIOs, exported the HW platform and loaded up Vitis IDE. (all tools 2022.1 version).
  • Just to test the waters I created a hello world program over the earlier exported xsa and tried to launch the debugger. and then got the following message:

This seems to suggest that I need to have the jumper on JTAG mode to achieve this, but I don’t understand why both should not be possible.
Thanks in advance.

Hi @thedatabus,

Welcome to the PYNQ community.

Are you able to program the board using this flow when the jumpers are in JTAG mode? Are the devices detected in Vivado?

Can you elaborate why do you want to do this?


Hi Mario,

Yes I’m able to program fine when it’s in JTAG boot mode.

I’m just trying to be able to use both the modes without having to touch the board (testing for a remote application).

However, if there is a recommended documented way to program custom bitstreams and designs onto the PYNQ , I’m happy to do away with the JTAG mode all together unless I’m not losing any flexibility.

Please guide me with the right approach.

pynq.Overlay allows you to download your own overlay. Overlay — Python productivity for Zynq (Pynq)

You probably will not be able to program the ARM processor when Linux is running. However, you could still be able to program the FPGA.


Going by the overlay method, how does on write C++ software for the FPGA logic? Do I SSH into the PYNQ server and write code there?

Also will it still be possible to use the xilinx ILA without a JTAG connection at all?

Yes, you can ssh and develop there. Or also open a terminal in JupyterLab and lunch a terminal.

You can also check this post:

For the ILA, you need the JTAG.
There was a contribution from the community not to use JTAG, you can check it here: