text
[RRG-proxmark3.git] / doc / jtag_notes.md
blob1e63697676c3a36f230879ed41be7ac1830d5ae0
1 Some notes on how to reflash a bricked Proxmark3 over JTAG.
3 # Linux and OpenOCD
5 ## Using RDV4 scripts
7 The RDV4 repository contains helper scripts for JTAG flashing.
9 * Get OpenOCD, e.g.: `apt-get install openocd`
10 * Create `tools/jtag_openocd/openocd_configuration` by copying [`tools/jtag_openocd/openocd_configuration.sample`](/tools/jtag_openocd/openocd_configuration.sample)
11 * Tune it to fit your JTAG tool: adapt `CONFIG_IF` to refer to your JTAG tool. `openocd_configuration.sample` contains several examples and is set up by default to work with the J-Link.
12 * Wire the Proxmark3 to the JTAG tool. How to do it depends on the tool. See below for examples. **Warning:** don't plug the Proxmark3 on USB if the tool delivers already the voltage to the Proxmark3, which is most probably the case.
13 * Then just run
15 ```
16 cd tools/jtag_openocd/
17 ./openocd_flash_recovery.sh
18 ```
20 In some rare situations, flashing the full image over JTAG may fail but the bootloader could be fixed. If it's the case, you can flash the image without JTAG by booting on your fresh bootloader (possibly forced by pressing the Proxmark3 button).
22 For advanced usages there are also `openocd_flash_dump.sh` for dumping the content of the Proxmark3 and `openocd_interactive.sh` for an OpenOCD console.
24 ## RDV4 pinout
26 The RDV4 JTAG header is quite smaller compared to other Proxmark3 platforms.  
27 If you're using a J-Link, there is a [convenient adapter](https://github.com/RfidResearchGroup/proxmark3/wiki/Tools#jtag-adapter) made by Proxgrind.  
28 You can also make yours with some 1.27mm headers (look for `1.27mm header` on Aliexpress) or Pogo pins or buy an already made clip, e.g. search `dykb clamp` on Aliexpress and take a 1.27mm single-row 6P version.
30 ## JLink pinout
32 J-Link [pinout](https://www.segger.com/interface-description.html):
34 ```
35   ---------  ---------
36  |1917151311 9 7 5 3 1|
37  |201816141210 8 6 4 2|
38   --------------------
39 ```
41 PM3 | JLink
42 --- | -----
43 TMS | 7
44 TDI | 5
45 TDO |13
46 TCK | 9
47 GND | 6
48 3.3 | 2
50 ## Raspberry Pi pinout
52 RPi [pinout](https://pinout.xyz/):
54 PM3 | RPi
55 --- | -----
56 TMS | 22
57 TDI | 19
58 TDO | 21
59 TCK | 23
60 GND | 6
61 3.3 | 1
63 # Where to find more information?
64 There has been lots of articles and blogposts about recovering, debricking, JTAG your Proxmark3 and you find here below an assortiment of resources that will be of help.
66 ## Third party notes on using a BusPirate
68 * https://github.com/Proxmark/proxmark3/wiki/Debricking-Proxmark3-with-buspirate
69 * https://b4cktr4ck2.github.io/De-Brickify-Pm3-RDV2/
70 * https://scund00r.com/all/rfid/2018/05/18/debrick-proxmark.html
71 * https://joanbono.github.io/PoC/Flashing_Proxmark3.html
73 ## Third party notes on using a J-Link
75 * http://wiki.yobi.be/wiki/Proxmark
77 ## Third party notes on using a RaspBerry Pi
79 * http://www.lucasoldi.com/2017/01/17/unbrick-proxmark3-with-a-raspberry-pi-and-openocd/
80 * https://wiki.elvis.science/index.php?title=Proxmark3:_Debricking
81 * https://github.com/synthetos/PiOCD/wiki/Using-a-Raspberry-Pi-as-a-JTAG-Dongle
83 ## Third party notes on using a J-Link on Windows
85 * https://github.com/Proxmark/proxmark3/wiki/De-Bricking-Segger
87 ## Stack Overflow write up article.
88 https://stackoverflow.com/questions/48794076/error-halt-timed-out-wake-up-gdb/64291913#64291913
90 ## Old original doc,  
91 Describes the SEGGER JLINK, JTAG process but be warned,  this document is old.
92 https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/original_proxmark3/Compiling%20Proxmark%20source%20and%20firmware%20upgrading%20v1.pdf