UrJTAG

project: UrJTAG

DirtyJTAG

STM32  JTAG
PA0    TDI
PA1    TDO
PA2    TCK
PA3    TMS
PA4    TRST
PA5    SRST

Altera JTAG - 5x2 header (P6) - key on left side

TCK_JTAG 1    2 GND
TDO_JTAG 3    4 VDD33
TMS_JTAG 5    6 (nc)
    (nc) 7    8 (nc)
TDI_JTAG 9   10 GND

note: pin 5 (TMS) and 9 (TDI) have 1k pullups to VDD33.
note: pin 1 (TCK) have 1k pulldown to GND.
note: there are protection diodes (BAT54S) on JTAG signal lines (TDI, TCK, TDO, TMS)

Back to FPGA page.

links

DirtyJTAG, UrJTAG, docs, Intel FPGA Support - Devices Support Center,

local links

bs, c1, e1, eb, c2, Altera USB Blaster, pod530,

History

2021-10-03: I re-created this page on my self-hosted web server.

2020-11-20: c1 - in the FreeBSD forums thread, someone (user oOiOo) figured out how to fix the urjtag port. In the Makefile, change the line

USB_CONFIGURE_ON=              --with-libusb=/usr

to

USB_CONFIGURE_ON=

then rebuild and reinstall the port. Test:

tingo@kg-core1$ jtag

UrJTAG 2019.12 #
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> bsdl path /home/tingo/doc/Altera/docs/fpga/bsdl/
jtag> cable dirtyjtag
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000011110001000011011101 (0x020F10DD)
  Filename:     /home/tingo/doc/Altera/docs/fpga/bsdl//EP4CE6E22.bsd
jtag> quit

it works.

2020-11-18: c2 - I created PR 251232 for FreeBSD port devel/urjtag.

2020-11-06: pod530 - nvd0p3 - this laptop runs FreeBSD 12.2-release:

root@kg-pod530:~ # freebsd-version -ku
12.2-RELEASE
12.2-RELEASE

installed urjtag from packages (quarterly)

# pkg info urjtag*
urjtag-2019.12

and I have set up a devd rule, and restarted devd:

# jtag

UrJTAG 2019.12 #
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> cable dirtyjtag
error: Couldn't connect to suitable USB device.
jtag> quit

but the device is there

# usbconfig ugen0.3 dump_device_desc
ugen0.3: <DirtyJTAG Jean THOMAS> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0110
  bDeviceClass = 0x00ff  <Vendor specific>
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0040
  idVendor = 0x1209
  idProduct = 0xc0ca
  bcdDevice = 0x0110
  iManufacturer = 0x0001  <DirtyJTAG>
  iProduct = 0x0002  <Jean THOMAS>
  iSerialNumber = 0x0003  <no serial :-)>
  bNumConfigurations = 0x0001

strange.

2020-11-04: c2 - ada0p5 - set up a devd rules file for dirtyjtag:

root@kg-core2# cat /usr/local/etc/devd/dirtyjtag.conf
# allow group (operator) to access the usb connection of ulx3s

notify 100 {
        match "system"          "USB";
        match "subsystem"       "INTERFACE";
        match "type"            "ATTACH";
        match "vendor" "0x1209";
        match "product" "0xc0ca";
        action "usb_devaddr=`echo $cdev | sed 's#^ugen##'` && chmod g+rw /dev/usb/${usb_devaddr}.*";
};

then restart devd via root@kg-core2# service devd stop && service devd start that's all

2020-11-04: bs - sdb5 - test an USB Blaster with urjtag:

jtag> cable usbblaster
Connected to libftdi driver.
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000010110001000011011101 (0x020B10DD)
  Filename:     /home/tingo/doc/Altera/docs/fpga/bsdl//EP2C5T144.BSD
jtag> svf MC-2G-1024/14-Multicomp/Microcomputer_VGA/output_files/Microcomputer.svf
warning: USB-Blaster frequency is fixed to 12000000 Hz
warning: unimplemented mode 'ABSENT' for TRST

it works, and programming is quick.

2020-10-23: eb - sdb6 - test urjtag

tingo@kg-elitebook:~$ which jtag
/usr/local/bin/jtag
tingo@kg-elitebook:~$ jtag -h
UrJTAG 2019.12 #d4f0cccf

Usage: jtag [OPTIONS] [FILE [FILE ... ]]

  -h, --help          display this help and exit
  -v, --version       display version information and exit

  -n, --norc          disable reading ~/.jtag/rc on startup
  -i, --interactive   enter interactive mode after reading files
  -q, --quiet         Do not print help on startup

  [FILE]              file containing commands to execute

  Please report bugs at http://www.urjtag.org

Home directory: /home/tingo/.jtag
Data directory: /usr/local/share/urjtag

test device

tingo@kg-elitebook:~$ jtag
[..]
jtag> cable dirtyjtag
jtag> bsdl path /home/tingo/doc/Altera/docs/fpga/bsdl/
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000010110001000011011101 (0x020B10DD)
  Filename:     /home/tingo/doc/Altera/docs/fpga/bsdl//EP2C5T144.BSD
jtag> quit

ok

2020-10-23: eb - sdb6 - check that I have a udev rules file

tingo@kg-elitebook:~$ cat /etc/udev/rules.d/99-dirtyjtag.rules
# DirtyJTAG - rules to let users in 'dialout' group access the device
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="c0ca", GROUP="dialout"

ok

2020-10-23: eb - sdb6 - build urjtag autogen

tingo@kg-elitebook:~/work/urjtag/urjtag-git/urjtag$ ./autogen.sh
[..]
urjtag is now configured for

  Libraries:
    libusb     : 1.0
    libftdi    : yes (have async mode)
    libftd2xx  : no
    inpout32   : no

  Subsystems:
    SVF        : yes
    BSDL       : yes
    STAPL      : no

  Drivers:
    Bus        : ahbjtag arm9tdmi au1500 avr32 bcm1250 blackfin bscoach ejtag ejtag_dma fjmem ixp425 ixp435 ixp465 jopcyc h7202 lh7a400 mpc5200 mpc824x mpc8313 mpc837x ppc405ep ppc440gx_ebc8 prototype pxa2x0 pxa27x s3c4510 sa1110 sh7727 sh7750r sh7751r sharc_21065L sharc_21369_ezkit slsup3 tx4925 zefant_xs3
    Cable      : arcom byteblaster dirtyjtag dlc5 ea253 ei012 ft2232 gpio ice100 igloo jlink keithkoep lattice mpcbdm triton usbblaster vsllink wiggler xpc
    Lowlevel   : direct ftdi ppdev

  Language bindings:
    python     : yes

make

tingo@kg-elitebook:~/work/urjtag/urjtag-git/urjtag$ make
[..]
  CCLD     jtag
make[2]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag/src/apps/jtag'
Making all in src/apps/bsdl2jtag
make[2]: Entering directory '/zs/tingo/work/urjtag/urjtag-git/urjtag/src/apps/bsdl2jtag'
  CC       bsdl2jtag.o
  CCLD     bsdl2jtag
make[2]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag/src/apps/bsdl2jtag'
make[2]: Entering directory '/zs/tingo/work/urjtag/urjtag-git/urjtag'
make[2]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag'
make[1]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag'

make install

tingo@kg-elitebook:~/work/urjtag/urjtag-git/urjtag$ sudo make install
[..]
make[2]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag'
make[1]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag'

ldconfig

tingo@kg-elitebook:~/work/urjtag/urjtag-git/urjtag$ sudo ldconfig

ok

2020-10-23: eb - sdb6 - get urjtag source code

tingo@kg-elitebook:~/work/urjtag$ git clone https://git.code.sf.net/p/urjtag/git urjtag-git
Cloning into 'urjtag-git'...
remote: Enumerating objects: 20093, done.
remote: Counting objects: 100% (20093/20093), done.
remote: Compressing objects: 100% (6014/6014), done.
remote: Total 20093 (delta 14200), reused 19295 (delta 13635)
Receiving objects: 100% (20093/20093), 13.64 MiB | 1.02 MiB/s, done.
Resolving deltas: 100% (14200/14200), done.
Checking out files: 100% (957/957), done.

ok

2020-10-23: bs - sdb5 - test jtag as a normal user. First run ldconfig

$ sudo ldconfig

then try jtag

$ jtag

UrJTAG 2019.12 #d4f0cccf
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> bsdl path /home/tingo/doc/Altera/docs/fpga/bsdl/
jtag> detect
error: illegal state: Cable not configured. Please use 'cable' command first!
jtag> cable dirtyjtag
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000010110001000011011101 (0x020B10DD)
  Filename:     /home/tingo/doc/Altera/docs/fpga/bsdl//EP2C5T144.BSD

ok, it works.

2020-10-23: bs - sdb5 - verify that the udev rule is in place

tingo@kg-bsbox:~$ cat /etc/udev/rules.d/99-dirtyjtag.rules
# DirtyJTAG - rules to let users in 'dialout' group access the device
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="c0ca", GROUP="dialout"

it is.

2020-10-23: bs - sdb5 - build urjtag

tingo@kg-bsbox:/zs/tingo/work/urjtag/urjtag-git/urjtag$ ./autogen.sh
autoreconf: Entering directory `.'
autoreconf: running: autopoint --force
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'tools'.
libtoolize: linking file 'tools/ltmain.sh'
libtoolize: putting macros in 'm4'.
libtoolize: linking file 'm4/libtool.m4'
libtoolize: linking file 'm4/ltoptions.m4'
libtoolize: linking file 'm4/ltsugar.m4'
libtoolize: linking file 'm4/ltversion.m4'
libtoolize: linking file 'm4/lt~obsolete.m4'
libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([m4])' to configure.ac,
libtoolize: and rerunning libtoolize and aclocal.
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --force-missing
configure.ac:104: installing 'tools/compile'
configure.ac:106: installing 'tools/config.guess'
configure.ac:106: installing 'tools/config.sub'
configure.ac:63: installing 'tools/install-sh'
configure.ac:63: installing 'tools/missing'
Makefile.am: installing './INSTALL'
src/apps/bsdl2jtag/Makefile.am: installing 'tools/depcomp'
configure.ac: installing 'tools/ylwrap'
autoreconf: Leaving directory `.'
[..]
urjtag is now configured for

  Libraries:
    libusb     : 1.0
    libftdi    : no (no async mode)
    libftd2xx  : no
    inpout32   : no

  Subsystems:
    SVF        : yes
    BSDL       : yes
    STAPL      : no

  Drivers:
    Bus        : ahbjtag arm9tdmi au1500 avr32 bcm1250 blackfin bscoach ejtag ejtag_dma fjmem ixp425 ixp435 ixp465 jopcyc h7202 lh7a400 mpc5200 mpc824x mpc8313 mpc837x ppc405ep ppc440gx_ebc8 prototype pxa2x0 pxa27x s3c4510 sa1110 sh7727 sh7750r sh7751r sharc_21065L sharc_21369_ezkit slsup3 tx4925 zefant_xs3
    Cable      : arcom byteblaster dirtyjtag dlc5 ea253 ei012 gpio ice100 igloo jlink keithkoep lattice mpcbdm triton vsllink wiggler xpc
    Lowlevel   : direct ppdev

  Language bindings:
    python     : yes

hmm, I need ftdi, so install libftdi1-dev, the re-run autogen.sh

[..]
urjtag is now configured for

  Libraries:
    libusb     : 1.0
    libftdi    : yes (have async mode)
    libftd2xx  : no
    inpout32   : no

  Subsystems:
    SVF        : yes
    BSDL       : yes
    STAPL      : no

  Drivers:
    Bus        : ahbjtag arm9tdmi au1500 avr32 bcm1250 blackfin bscoach ejtag ejtag_dma fjmem ixp425 ixp435 ixp465 jopcyc h7202 lh7a400 mpc5200 mpc824x mpc8313 mpc837x ppc405ep ppc440gx_ebc8 prototype pxa2x0 pxa27x s3c4510 sa1110 sh7727 sh7750r sh7751r sharc_21065L sharc_21369_ezkit slsup3 tx4925 zefant_xs3
    Cable      : arcom byteblaster dirtyjtag dlc5 ea253 ei012 ft2232 gpio ice100 igloo jlink keithkoep lattice mpcbdm triton usbblaster vsllink wiggler xpc
    Lowlevel   : direct ftdi ppdev

  Language bindings:
    python     : yes

better.

tingo@kg-bsbox:/zs/tingo/work/urjtag/urjtag-git/urjtag$ make
[..]
  CCLD     jtag
make[2]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag/src/apps/jtag'
Making all in src/apps/bsdl2jtag
make[2]: Entering directory '/zs/tingo/work/urjtag/urjtag-git/urjtag/src/apps/bsdl2jtag'
  CC       bsdl2jtag.o
  CCLD     bsdl2jtag
make[2]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag/src/apps/bsdl2jtag'
make[2]: Entering directory '/zs/tingo/work/urjtag/urjtag-git/urjtag'
make[2]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag'
make[1]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag'

ok. Test it:

tingo@kg-bsbox:/zs/tingo/work/urjtag/urjtag-git/urjtag$ src/apps/jtag/jtag --help
UrJTAG 2019.12 #d4f0cccf

Usage: jtag [OPTIONS] [FILE [FILE ... ]]

  -h, --help          display this help and exit
  -v, --version       display version information and exit

  -n, --norc          disable reading ~/.jtag/rc on startup
  -i, --interactive   enter interactive mode after reading files
  -q, --quiet         Do not print help on startup

  [FILE]              file containing commands to execute

  Please report bugs at http://www.urjtag.org

Home directory: /home/tingo/.jtag
Data directory: /usr/local/share/urjtag
tingo@kg-bsbox:/zs/tingo/work/urjtag/urjtag-git/urjtag$ src/apps/jtag/jtag -v

UrJTAG 2019.12 #d4f0cccf

Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

ok. Install it

tingo@kg-bsbox:/zs/tingo/work/urjtag/urjtag-git/urjtag$ sudo make install
[..]
make[1]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag'

is it installed

tingo@kg-bsbox:~$ which jtag
/usr/local/bin/jtag
tingo@kg-bsbox:~$ which bsdl2jtag
/usr/local/bin/bsdl2jtag

yes.

2020-10-23: bs - sdb5 - update urjtag source

tingo@kg-bsbox:/zs/tingo/work/urjtag/urjtag-git$ git pull
remote: Enumerating objects: 376, done.
remote: Counting objects: 100% (376/376), done.
remote: Compressing objects: 100% (280/280), done.
remote: Total 283 (delta 222), reused 0 (delta 0)
Receiving objects: 100% (283/283), 46.27 KiB | 257.00 KiB/s, done.
Resolving deltas: 100% (222/222), completed with 87 local objects.
From https://git.code.sf.net/p/urjtag/git
   51f539b1..d4f0cccf  master     -> origin/master
 * [new branch]        aspo1      -> origin/aspo1
 * [new tag]           URJTAG_2019_12 -> URJTAG_2019_12
Updating 51f539b1..d4f0cccf
Fast-forward
 urjtag/ChangeLog                           |   33 +
 urjtag/MAINTAINERS                         |    5 +
 urjtag/NEWS                                |   16 +
 urjtag/bindings/python/py_urjtag.h         |    2 +-
 urjtag/bindings/python/register.c          |    2 +-
 urjtag/configure.ac                        |   15 +-
 urjtag/data/0/PARTS                        |   15 +
 urjtag/data/MANUFACTURERS                  |   36 +-
 urjtag/data/altera/5m1270z/5m1270z         |  904 ++++++++++++++++++++++
 urjtag/data/altera/5m1270z/STEPPINGS       |    2 +
 urjtag/data/altera/5m1270z/f256            |  211 +++++
 urjtag/data/altera/5m1270z/t144            |  114 +++
 urjtag/data/altera/5m1270zf324/5m1270zf324 | 1152 ++++++++++++++++++++++++++++
 urjtag/data/altera/5m1270zf324/STEPPINGS   |    2 +
 urjtag/data/altera/PARTS                   |    2 +
 urjtag/data/amd/PARTS                      |    5 +
 urjtag/data/xilinx/xc6slx75/STEPPINGS      |    1 +
 urjtag/include/urjtag/part.h               |    4 +-
 urjtag/po/fr.po                            |  250 +++---
 urjtag/po/rw.po                            |  250 +++---
 urjtag/po/sk.po                            |  250 +++---
 urjtag/src/apps/jtag/jtag.c                |   12 +-
 urjtag/src/bfin/bfin.c                     |    2 +-
 urjtag/src/bsdl/bsdl_types.h               |    2 +
 urjtag/src/bsdl/vhdl_bison.y               |    5 +-
 urjtag/src/bus/Makefile.am                 |    4 +
 urjtag/src/bus/ahbjtag.c                   |  320 ++++++++
 urjtag/src/bus/arm9tdmi.c                  |    2 -
 urjtag/src/bus/au1500.c                    |    2 -
 urjtag/src/bus/avr32.c                     |    2 -
 urjtag/src/bus/bcm1250.c                   |    2 -
 urjtag/src/bus/bf533_stamp.c               |    2 -
 urjtag/src/bus/bf537_stamp.c               |    2 -
 urjtag/src/bus/bf548_ezkit.c               |    2 -
 urjtag/src/bus/bf561_ezkit.c               |    2 -
 urjtag/src/bus/blackfin.c                  |    2 -
 urjtag/src/bus/bscoach.c                   |    2 -
 urjtag/src/bus/buses.c                     |    2 -
 urjtag/src/bus/buses_list.h                |    3 +
 urjtag/src/bus/ejtag.c                     |    2 -
 urjtag/src/bus/ejtag_dma.c                 |    2 -
 urjtag/src/bus/fjmem.c                     |   13 -
 urjtag/src/bus/generic_bus.c               |    2 -
 urjtag/src/bus/ixp425.c                    |    2 -
 urjtag/src/bus/ixp435.c                    |    2 -
 urjtag/src/bus/ixp465.c                    |    2 -
 urjtag/src/bus/jopcyc.c                    |   11 -
 urjtag/src/bus/lh7a400.c                   |    2 -
 urjtag/src/bus/mpc5200.c                   |    2 -
 urjtag/src/bus/mpc824x.c                   |    2 -
 urjtag/src/bus/mpc8313.c                   |    2 -
 urjtag/src/bus/ppc405ep.c                  |    2 -
 urjtag/src/bus/prototype.c                 |    2 -
 urjtag/src/bus/pxa2x0.c                    |    2 -
 urjtag/src/bus/readmem.c                   |    2 -
 urjtag/src/bus/s3c4510x.c                  |    2 -
 urjtag/src/bus/sa1110.c                    |    2 -
 urjtag/src/bus/sh7727.c                    |    2 -
 urjtag/src/bus/sh7750r.c                   |    2 -
 urjtag/src/bus/sh7751r.c                   |    2 -
 urjtag/src/bus/sharc21065l.c               |    2 -
 urjtag/src/bus/sharc21369_ezkit.c          |    2 -
 urjtag/src/bus/slsup3.c                    |    2 -
 urjtag/src/bus/tx4925.c                    |    2 -
 urjtag/src/bus/writemem.c                  |    2 -
 urjtag/src/bus/zefant-xs3.c                |   11 -
 urjtag/src/part/part.c                     |    6 +-
 urjtag/src/tap/cable/dirtyjtag.c           |    8 +-
 urjtag/src/tap/cable/ft2232.c              |   12 +
 urjtag/src/tap/cable/jlink.c               |   89 ++-
 urjtag/src/tap/detect.c                    |    8 +-
 urjtag/src/tap/usbconn/libusb.c            |    2 +
 urjtag/sysdep.h                            |    4 +-
 web/htdocs/index.html                      |    4 +
 74 files changed, 3339 insertions(+), 518 deletions(-)
 create mode 100644 urjtag/data/0/PARTS
 create mode 100644 urjtag/data/altera/5m1270z/5m1270z
 create mode 100644 urjtag/data/altera/5m1270z/STEPPINGS
 create mode 100644 urjtag/data/altera/5m1270z/f256
 create mode 100644 urjtag/data/altera/5m1270z/t144
 create mode 100644 urjtag/data/altera/5m1270zf324/5m1270zf324
 create mode 100644 urjtag/data/altera/5m1270zf324/STEPPINGS
 create mode 100644 urjtag/data/amd/PARTS
 create mode 100644 urjtag/src/bus/ahbjtag.c

ok.

2019-09-16: c2 - newly compiled urJTAG, a Cyclone IV board connected via DirtyJTAG cable

tingo@kg-core2$ pwd
/home/tingo/work/urjtag/urjtag-2018.09

test it

tingo@kg-core2$ ./src/apps/jtag/jtag

UrJTAG 2018.09 #
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> cable DirtyJTAG
error: Couldn't connect to suitable USB device.
error: not found: no USB connections
jtag> quit

test with sudo

tingo@kg-core2$ sudo ./src/apps/jtag/jtag

UrJTAG 2018.09 #
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> cable DirtyJTAG

better, try detect

jtag> bsdl path /home/tingo/doc/Altera/docs/fpga/bsdl/
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000011110001000011011101 (0x020F10DD)
error: Unable to open file '/usr/local/share/urjtag/MANUFACTURERS'
  Unknown manufacturer! (00001101110) (/usr/local/share/urjtag/MANUFACTURERS)

ok, that is a thing

jtag> bsdl test
-N- Reading file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP4CE6E22.bsd'
error: -E- error: In Package STD_1149_1_1994, Line 71, Error in Standard Package.
error: -E- error: BSDL file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP4CE6E22.bsd' contains errors in VHDL stage, stopping
-N- Reading file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP3C25Q240.BSD'
error: -E- error: In Package STD_1149_1_1994, Line 92, Error in Standard Package.
error: -E- error: BSDL file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP3C25Q240.BSD' contains errors in VHDL stage, stopping
-N- Reading file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP2C20F484.BSD'
error: -E- error: In Package STD_1149_1_1994, Line 148, Error in Standard Package.
error: -E- error: BSDL file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP2C20F484.BSD' contains errors in VHDL stage, stopping

hmm, strange. Install urjtag, the try again

jtag> cable DirtyJTAG
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000011110001000011011101 (0x020F10DD)
  Manufacturer: Altera (0x0DD)
  Unknown part! (0010000011110001) (/usr/local/share/urjtag/altera/PARTS)
jtag> bsdl path /home/tingo/doc/Altera/docs/fpga/bsdl/
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000011110001000011011101 (0x020F10DD)
  Filename:     /home/tingo/doc/Altera/docs/fpga/bsdl//EP4CE6E22.bsd

better.

jtag> bsdl path /home/tingo/doc/Altera/docs/fpga/bsdl/
jtag> bsdl test
-N- Reading file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP4CE6E22.bsd'
-N- BSDL file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP4CE6E22.bsd' passed VHDL stage correctly
warning: -W- warning: Line 145, Multiple opcode patterns are not supported, first pattern will be used.
warning: -W- warning: Line 145, Multiple opcode patterns are not supported, first pattern will be used.
-N- Got IDCODE: 00000010000011110001000011011101
-N- BSDL file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP4CE6E22.bsd' passed BSDL stage correctly
-N- Reading file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP3C25Q240.BSD'
-N- BSDL file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP3C25Q240.BSD' passed VHDL stage correctly
warning: -W- warning: Line 186, Multiple opcode patterns are not supported, first pattern will be used.
warning: -W- warning: Line 186, Multiple opcode patterns are not supported, first pattern will be used.
-N- Got IDCODE: 00000010000011110011000011011101
-N- BSDL file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP3C25Q240.BSD' passed BSDL stage correctly
-N- Reading file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP2C20F484.BSD'
-N- BSDL file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP2C20F484.BSD' passed VHDL stage correctly
-N- Got IDCODE: 00000010000010110011000011011101
-N- BSDL file '/home/tingo/doc/Altera/docs/fpga/bsdl//EP2C20F484.BSD' passed BSDL stage correctly

ok, it works at least

2018-12-12: bs - re-test the new urjtag

tingo@kg-bsbox:~$ /usr/local/bin/jtag

UrJTAG 2018.09 #
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> cable dirtyjtag

good.

2018-12-12: bs - permissions - create a udev rule for the dirtyjtag device

tingo@kg-bsbox:~$ cat /etc/udev/rules.d/99-dirtyjtag.rules
# DirtyJTAG - rules to let users in 'dialout' group access the device
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="c0ca", GROUP="dialout"

reload rules

tingo@kg-bsbox:~$ sudo udevadm control --reload

then unplug and replug the device

2018-12-12: bs - test the new urjtag:

tingo@kg-bsbox:~$ /usr/local/bin/jtag

UrJTAG 2018.09 #
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> cable dirtyjtag
error: libusb error: libusb_open() failed: -3

looks better. Now I have to fix permissions on the device

2018-12-12: bs - I also had to run ldconfig

tingo@kg-bsbox:~$ sudo ldconfig

ok

2018-12-12: bs - build urjtag from source get source

tingo@kg-bsbox:~/work/urjtag$ git clone https://git.code.sf.net/p/urjtag/git urjtag-git
Cloning into 'urjtag-git'...
remote: Enumerating objects: 19810, done.
remote: Counting objects: 100% (19810/19810), done.
remote: Compressing objects: 100% (5734/5734), done.
remote: Total 19810 (delta 13979), reused 19311 (delta 13635)
Receiving objects: 100% (19810/19810), 13.59 MiB | 568.00 KiB/s, done.
Resolving deltas: 100% (13979/13979), done.

compile

tingo@kg-bsbox:~/work/urjtag$ cd urjtag-git/
tingo@kg-bsbox:~/work/urjtag/urjtag-git$ cd urjtag/
tingo@kg-bsbox:~/work/urjtag/urjtag-git/urjtag$ ./autogen.sh
./autogen.sh: 25: ./autogen.sh: autoreconf: not found

autoreconf failed.

ok, so I need some prerequsites. Install them

tingo@kg-bsbox:~$ sudo apt install autoconf automake bison pkg-config flex libtool libftdi1-dev libusb-1.0-0-dev
Reading package lists... Done
Building dependency tree      
Reading state information... Done
pkg-config is already the newest version (0.29-4+b1).
pkg-config set to manually installed.
The following additional packages will be installed:
  autotools-dev libbison-dev libfl-dev libftdi1-2 libftdi1-doc libltdl-dev libusb-1.0-doc m4
Suggested packages:
  autoconf-archive gnu-standards autoconf-doc gettext bison-doc libtool-doc gfortran | fortran95-compiler gcj-jdk
  m4-doc
The following NEW packages will be installed:
  autoconf automake autotools-dev bison flex libbison-dev libfl-dev libftdi1-2 libftdi1-dev libftdi1-doc
  libltdl-dev libtool libusb-1.0-0-dev libusb-1.0-doc m4
0 upgraded, 15 newly installed, 0 to remove and 69 not upgraded.
Need to get 4,336 kB of archives.
After this operation, 15.2 MB of additional disk space will be used.
[..]
update-alternatives: using /usr/bin/automake-1.15 to provide /usr/bin/automake (automake) in auto mode
Processing triggers for libc-bin (2.24-11+deb9u3) ...

what else? autopoint is needed

tingo@kg-bsbox:~$ sudo apt install autopoint
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libftdi1 libusb-0.1-4
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  autopoint
0 upgraded, 1 newly installed, 0 to remove and 69 not upgraded.
Need to get 433 kB of archives.
[..]
Preparing to unpack .../autopoint_0.19.8.1-2_all.deb ...
Unpacking autopoint (0.19.8.1-2) ...
Processing triggers for man-db (2.7.6.1-2) ...
Setting up autopoint (0.19.8.1-2) ...

more? No. configure again

tingo@kg-bsbox:~/work/urjtag/urjtag-git/urjtag$ ./autogen.sh
[..]
configure:

urjtag is now configured for

  Libraries:
    libusb     : 1.0
    libftdi    : yes (have async mode)
    libftd2xx  : no
    inpout32   : no

  Subsystems:
    SVF        : yes
    BSDL       : yes
    STAPL      : no

  Drivers:
    Bus        : arm9tdmi au1500 avr32 bcm1250 blackfin bscoach ejtag ejtag_dma fjmem ixp425 ixp435 ixp465 jopcyc h7202 lh7a400 mpc5200 mpc824x mpc8313 mpc837x ppc405ep ppc440gx_ebc8 prototype pxa2x0 pxa27x s3c4510 sa1110 sh7727 sh7750r sh7751r sharc_21065L sharc_21369_ezkit slsup3 tx4925 zefant_xs3
    Cable      : arcom byteblaster dirtyjtag dlc5 ea253 ei012 ft2232 gpio ice100 igloo jlink keithkoep lattice mpcbdm triton usbblaster vsllink wiggler xpc
    Lowlevel   : direct ftdi ppdev

  Language bindings:
    python     : yes

compile

tingo@kg-bsbox:~/work/urjtag/urjtag-git/urjtag$ make
[..]
make[1]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag'

install

tingo@kg-bsbox:~/work/urjtag/urjtag-git/urjtag$ sudo make install
[..]
make[1]: Leaving directory '/zs/tingo/work/urjtag/urjtag-git/urjtag'

ok.

2018-12-12: bs - install UrJTAG on my Debian box.

tingo@kg-bsbox:~$ sudo apt install urjtag
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following additional packages will be installed:
  libftdi1 libusb-0.1-4
The following NEW packages will be installed:
  libftdi1 libusb-0.1-4 urjtag
0 upgraded, 3 newly installed, 0 to remove and 69 not upgraded.
Need to get 834 kB of archives.
After this operation, 11.4 MB of additional disk space will be used.
[..]
Setting up urjtag (0.10+r2007-1.2+b2) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...

test it

tingo@kg-bsbox:~$ jtag

UrJTAG 0.10 #2007
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag>

quite old

jtag> cable dirtyjtag
error: invalid parameter: unknown cable driver 'dirtyjtag'

too old, in fact.

2018-09-26: e1 - DirtyJTAG - test it as normal user

jtag> cable dirtyjtag
jtag> bsdl path /home/tingo/doc/Altera/docs/fpga/bsdl/
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000011110001000011011101 (0x020F10DD)
  Filename:     /home/tingo/doc/Altera/docs/fpga/bsdl//EP4CE6E22.bsd

and it works. Nice.

2018-09-26: e1 - DirtyJTAG - connected up my dirtyjtag again:

jtag> cable dirtyjtag
error: libusb error: libusb_open() failed: -3
jtag> cable dirtyjtag
error: libusb error: libusb_open() failed: -3
jtag> quit

ok, I remember - there is a permissions problem, I need to run jtag as 'sudo jtag' until I have fixed it. udevadm says

[tingo@kg-elitebook ~]$ udevadm info /sys/bus/usb/devices/usb3/3-2
P: /devices/pci0000:00/0000:00:14.0/usb3/3-2
N: bus/usb/003/021
E: BUSNUM=003
E: DEVNAME=/dev/bus/usb/003/021
E: DEVNUM=021
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-2
E: DEVTYPE=usb_device
E: DRIVER=usb
E: ID_BUS=usb
E: ID_MODEL=Jean_THOMAS
E: ID_MODEL_ENC=Jean\x20THOMAS
E: ID_MODEL_ID=c0ca
E: ID_REVISION=0110
E: ID_SERIAL=DirtyJTAG_Jean_THOMAS_no_serial_:-_
E: ID_SERIAL_SHORT=no_serial_:-_
E: ID_USB_INTERFACES=:ff0000:
E: ID_VENDOR=DirtyJTAG
E: ID_VENDOR_ENC=DirtyJTAG
E: ID_VENDOR_FROM_DATABASE=InterBiometrics
E: ID_VENDOR_ID=1209
E: MAJOR=189
E: MINOR=276
E: PRODUCT=1209/c0ca/110
E: SUBSYSTEM=usb
E: TYPE=255/0/0
E: USEC_INITIALIZED=1107263954450

so a udev rule would be something like

SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="c0ca", GROUP="dialout"

create the rule

[tingo@kg-elitebook ~]$ cat /etc/udev/rules.d/99-dirtyjtag.rules
# DirtyJTAG - rules to let users in 'dialout' group access the device
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="c0ca", GROUP="dialout"

reload rules

[tingo@kg-elitebook ~]$ sudo udevadm control --reload

then unplug and plug the device.

2018-08-14: c1 - DirtyJTAG - I connected my Spartan 6 board as the JTAG target, here we go again:

tingo@kg-core1$ ./src/apps/jtag/jtag

UrJTAG 2018.06 #
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> cable dirtyjtag
jtag> detect
IR length: 6
Chain length: 1
Device Id: 00100100000000000001000010010011 (0x24001093)
  Manufacturer: Xilinx (0x093)
  Unknown part! (0100000000000001) (/usr/local/share/urjtag/xilinx/PARTS)

ok, so it works. Add BSDL files

jtag> bsdl path /home/tingo/doc/Xilinx/fpga/bsdl/
jtag> detect
IR length: 6
Chain length: 1
Device Id: 00100100000000000001000010010011 (0x24001093)
*************************************************************************________  Filename:     /home/tingo/doc/Xilinx/fpga/bsdl//xc6slx9_cpg196.bsd

nice. Other stuff

jtag> print
 No. Manufacturer              Part                 Stepping Instruction          Register                       
-------------------------------------------------------------------------------------------------------------------
   0                           XC6SLX9_CPG196                BYPASS               BYPASS                         

pld?

jtag> pld status
error: pld subsystem: unknown instruction 'CFG_IN'
jtag> pld load /home/tingo/doc/Xilinx/fpga/Xilinx_XC6SLX9_Mini_Board/bitstreams/pwm_led.bit
Bitstream information:
    Design: PWM_LED.ncd;UserID=0xFFFFFFFF
    Part name: 6slx9tqg144
    Date: 2015/03/26
    Time: 20:35:52
    Bitstream length: 340604
error: pld subsystem: unknown instruction 'CFG_IN'

hmm,

2018-08-14: c1 - a freshly compiled UrJTAG 2018.06 looks better

tingo@kg-core1$ ./src/apps/jtag/jtag

UrJTAG 2018.06 #
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> cable dirtyjtag
jtag> detect
warning: TDO seems to be stuck at 0
jtag> quit

try again

tingo@kg-core1$ ./src/apps/jtag/jtag

UrJTAG 2018.06 #
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> cable DirtyJTAG
jtag> detect
warning: TDO seems to be stuck at 0
jtag> detect
warning: TDO seems to be stuck at 0

no go.

2018-08-14: c1 - see if UrJTAG supports the dirtyjtag cable

tingo@kg-core1$ jtag

UrJTAG 0.10 #1502
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

WARNING: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> cable dirtyjtag
Unknown cable type: dirtyjtag

ok, it does not.

2018-08-01: e1 - try to set up the FT2232H adapter with urjtag on this machine

[tingo@kg-elitebook multicomp]$ jtag

UrJTAG 2018.06 #
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag>

set up a cable

jtag> cable FT2232 vid=0403 pid=6010
error: Couldn't connect to suitable USB device.
error: ftdi/ftd2xx error: ftdi_usb_open_desc() failed: device not found

ok, try probing then

jtag> cable probe
Found USB cable: Flyswatter
Connected to libftdi driver.

good. Add bsdl files

jtag> bsdl path /home/tingo/doc/Altera/docs/fpga/Cyclone_III/bsdl/

ok, then try a detect - didn't work. Hmm, the cable thing, try

jtag> cable FT2232 vid=0x0403 pid=0x6010
Connected to libftdi driver.

better, try detect again

jtag> detect
warning: TDO seems to be stuck at 1

hmm, nope. Ok, it was user error. I had connected TMS to an incorrect pin on the Cyclone III board JTAG connector. Better now.

jtag> cable FT2232 vid=0x0403 pid=0x6010
Connected to libftdi driver.
jtag> bsdl path /home/tingo/doc/Altera/docs/fpga/Cyclone_III/bsdl/
jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000011110011000011011101 (0x020F30DD)
  Filename:     /home/tingo/doc/Altera/docs/fpga/Cyclone_III/bsdl//EP3C25Q240.BSD

ok

2018-07-26: c1 - urjtag - do stuff with bsdl files

jtag> help bsdl
Usage: bsdl path PATHLIST
Usage: bsdl test [FILE]
Usage: bsdl dump [FILE]
Usage: bsdl debug on|off
Manage BSDL files

PATHLIST semicolon separated list of directory paths to search for BSDL files
FILE file containing part description in BSDL format
jtag> bsdl path /home/tingo/doc/Altera/docs/fpga/Cyclone_III/bsdl/

jtag> bsdl test
-N- Reading file '/home/tingo/doc/Altera/docs/fpga/Cyclone_III/bsdl//EP3C25Q240.BSD'
-N- BSDL file '/home/tingo/doc/Altera/docs/fpga/Cyclone_III/bsdl//EP3C25Q240.BSD' passed VHDL stage correctly
-W- Line 186, Multiple opcode patterns are not supported, first pattern will be used.
-W- Line 186, Multiple opcode patterns are not supported, first pattern will be used.
-N- Got IDCODE: 00000010000011110011000011011101
-N- BSDL file '/home/tingo/doc/Altera/docs/fpga/Cyclone_III/bsdl//EP3C25Q240.BSD' passed BSDL stage correctly

what does detect say now?

jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000011110011000011011101 (0x00000000020F30DD)
  Filename:     /home/tingo/doc/Altera/docs/fpga/Cyclone_III/bsdl//EP3C25Q240.BSD

print

jtag> print chain
 No. Manufacturer              Part                 Stepping Instruction          Register                       
------------------------------------------------------------------------------------------------------------------
   0                           EP3C25Q240                    BYPASS               BYPASS                         

good.

2018-07-26: c1 - urjtag - usage detect

jtag> detect
IR length: 10
Chain length: 1
Device Id: 00000010000011110011000011011101 (0x00000000020F30DD)
  Manufacturer: Altera
  Unknown part!
chain.c(149) Part 0 without active instruction
chain.c(200) Part 0 without active instruction
chain.c(149) Part 0 without active instruction

print

jtag> print
 No. Manufacturer              Part                 Stepping Instruction          Register                       
------------------------------------------------------------------------------------------------------------------
   0                                                         (none)               (none)                         

idcode

jtag> idcode
Reading 0 bytes if idcode
Read 11011101 00110000 00001111 00000010 00000000 00000000 00000000 00000000

ok

2018-07-26: c1 - urjtag - cable

jtag> cable probe
Unknown cable type: probe
jtag> cable detect
Unknown cable type: detect

ok, enough messing around.

jtag> cable FT2232 help
Usage: cable FT2232 [vid=VID] [pid=PID] [desc=DESC] [driver=DRIVER]

VID        vendor ID (hex), defaults to 0000
PID        product ID (hex), defaults to 0000
DESC       Some string to match in description or serial no.
DRIVER     usbconn driver, either ftdi-mpsse or ftd2xx-mpsse
           defaults to ftdi-mpsse if not specified

try it out

jtag> cable FT2232
usbconn_ftdi_common_open() failed: ftdi_usb_reset failed
Couldn't connect to suitable USB device.
Error: Cable connection failed!

specify vid and pid

jtag> cable FT2232 vid=0403 pid=6010
Connected to libftdi driver.

that worked.

2018-07-26: c1 - installed urjtag from ports

Jul 26 12:55:12 kg-core1 pkg-static: urjtag-0.10_7 installed

ok.

2018-07-19: e1 - supported cables

jtag> help cable
Usage: cable DRIVER [DRIVER_OPTS]
Select JTAG cable type.

DRIVER      name of cable
DRIVER_OPTS options for the selected cable

Type "cable DRIVER help" for info about options for cable DRIVER.
You can also use the driver "probe" to attempt autodetection.

List of supported cables:
ARCOM           Arcom JTAG Cable
ByteBlaster     Altera ByteBlaster/ByteBlaster II/ByteBlasterMV Parallel Port Download Cable
DLC5            Xilinx DLC5 JTAG Parallel Cable III
EA253           ETC EA253 JTAG Cable
EI012           ETC EI012 JTAG Cable
FT2232          Generic FTDI FT2232 Cable
ARM-USB-OCD     Olimex ARM-USB-OCD[-TINY] (FT2232) Cable
ARM-USB-OCD-H   Olimex ARM-USB-TINY-H (FT2232H) Cable
Flyswatter      TinCanTools Flyswatter (FT2232) Cable
gnICE           Analog Devices Blackfin gnICE (FT2232) Cable (EXPERIMENTAL)
gnICE+          Analog Devices Blackfin gnICE+ (FT2232H) Cable (EXPERIMENTAL)
JTAGkey         Amontec JTAGkey (FT2232) Cable
JTAGv3          XDS100 compatible JTAG/serial (FT2232) Cable
JTAGv5          XDS100v2 compatible JTAG/serial (FT2232H) Cable
KT-LINK         KrisTech KT-LINK (FT2232H based) Cable
milkymist       Milkymist JTAG/serial (FT2232) Cable
OOCDLink-s      OOCDLink-s (FT2232) Cable (EXPERIMENTAL)
Signalyzer      Xverve DT-USB-ST Signalyzer Tool (FT2232) Cable (EXPERIMENTAL)
Turtelizer2     Turtelizer 2 Rev. B (FT2232) Cable (EXPERIMENTAL)
USB-JTAG-RS232  USB<=>JTAG&RS232 (FT2232) Cable (EXPERIMENTAL)
usbScarab2      KrisTech usbScarabeus2 (FT2232) Cable
USB-to-JTAG-IF  USB to JTAG Interface (FT2232) Cable (EXPERIMENTAL)
DigilentHS1     Digilent HS1 Adapter
FT4232          Generic FTDI FT4232 Cable
gpio            GPIO JTAG Chain
ICE-100B        Analog Devices ICE-X Cable (0x064B)
IGLOO           Excelpoint IGLOO JTAG Cable
jlink           Segger/IAR J-Link, Atmel SAM-ICE and others.
KeithKoep       Keith & Koep JTAG cable
Lattice         Lattice Parallel Port JTAG Cable
Minimal         Minimal Parallel Port JTAG Cable
MPCBDM          Mpcbdm JTAG cable
TRITON          Ka-Ro TRITON Starterkit II (PXA255/250) JTAG Cable
UsbBlaster      Altera USB-Blaster Cable
vsllink         Versaloon Link -- https://github.com/versaloon/versaloon
WIGGLER         Macraigor Wiggler JTAG Cable
WIGGLER2        Modified (with CPU Reset) WIGGLER JTAG Cable
xpc_ext         Xilinx Platform Cable USB external chain
xpc_int         Xilinx Platform Cable USB internal chain
DirtyJTAG       DirtyJTAG STM32-based cable
jtag>

more info about a cable (DirtyJTAG)

jtag> cable DirtyJTAG help
Usage: cable DirtyJTAG [vid=VID] [pid=PID] [desc=DESC] [interface=INTERFACE] [index=INDEX]

VID        USB Device Vendor ID (hex, e.g. 0abc)
PID        USB Device Product ID (hex, e.g. 0abc)
DESC       Some string to match in description or serial no.
INTERFACE  Interface to use (0=first, 1=second, etc).
INDEX      Number of matching device (0=first, 1=second, etc).

Default:   vid=0x1209 pid=0xc0ca driver=libusb

info about FT2232

jtag> cable FT2232 help
Usage: cable FT2232 [vid=VID] [pid=PID] [desc=DESC] [interface=INTERFACE] [index=INDEX] [driver=DRIVER]

VID        USB Device Vendor ID (hex, e.g. 0abc)
PID        USB Device Product ID (hex, e.g. 0abc)
DESC       Some string to match in description or serial no.
INTERFACE  Interface to use (0=first, 1=second, etc).
INDEX      Number of matching device (0=first, 1=second, etc).
DRIVER     usbconn driver, either ftdi-mpsse or ftd2xx-mpsse

Default:   vid=0x0 pid=0x0 driver=ftdi-mpsse

info about gpio

jtag> cable gpio help
Usage: cable gpio tdi=<gpio_tdi> tdo=<gpio_tdo> tck=<gpio_tck> tms=<gpio_tms>

ok

2018-07-19: e1 - I installed UrJTAG on my Fedora laptop

[tingo@kg-elitebook ~]$ jtag

UrJTAG 2018.06 #
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> quit

ok