Hello Malexander,
No, root permissions does not make any difference.
And when I have the setup where the JTAG﻿-HS3 is not found, if I pull out the power on the board with the FTDI chip (USB cable still connected to PC), then the JTAG-HS3 starts to work. And if I plug in the power to the FTDI device once more, the JTAG -HS3 is not found any more.
$ sudo djtgcfg enum
[sudo] password for arvid:
No devices found
$ sudo djtgcfg enum
Found 1 device(s)
Device: JtagHs3
Product Name: Digilent JTAG-HS3
User Name: JtagHs3
Serial Number: 210299A06B5F
$ sudo djtgcfg enum
No devices found
I have tried doing the same experiments with JTAG-HS1 and JTAG-HS2, and I get the same behaviour. I have tried with a FTDI FT2232H and a FT4232H device and I get the same behaviour.
To add more confusion, I have my own application that enumerates FTDI devices (this application can either use the the official libftd2xx or the open source libftdi to enumerate FTDI based devices). An it finds the the JTAG-HS3 dongle (and the FTDI device).
/* Using the libftd2xx */
DWORD cnt = 0;
FT_DEVICE_LIST_INFO_NODE node = {0};
if (FT_CreateDeviceInfoList(&cnt) == FT_OK) {
for (int i=0; i<cnt; i++) {
if (FT_GetDeviceInfoDetail(i, &node.Flags, ... , &node.Description, &node.ftHandle) == FT_OK) {
/* Print devices */
...
}
}
}
/* Using libftdi */
struct ftdi_context *ftdi = ftdi_new();
int vid[] = {0x0403, 0x0403, 0x0403};
int pid[] = {0x6010, 0x6011, 0x6014};
struct ftdi_device_list *devs;
struct ftdi_device_list *dev;
char name[64] = {0};
int cnt;
for (int j=0; j<3; j++) {
cnt = ftdi_usb_find_all(ftdi, &devs, vid[j], pid[j]);
dev = devs;
for (int i=0; i<cnt; i++, dev = dev->next) {
ftdi_usb_get_strings(ftdi, dev->dev, NULL, 0, name, sizeof(name)-1, NULL, 0);
/* Print devices */
...
}
}
However, if I try to list all Digilent JTAG dongles, using the Digilent Adept SDK, it's not found (similar to djtagcfg). So the device seems to get lost somewhere in the Digilent Adept software.
/* Using Digilent Adept SDK*/
int ndvc;
DCAP dcap = dcapJtg;
DmgrEnumDevicesEx(&ndvc, dtpUSB, dtpUSB, dinfoDCAP, &dcap);
DVC dvc;
char name[cchProdNameMax+1] = {0};
for (int i=0; i<ndvc; i++) {
if (DmgrGetDvc(i, &dvc) == fTrue) {
/* Print devices */
if (DmgrGetInfo(&dvc, dinfoProdName, name) == fTrue) {
...
}
}
}
My application never use the JTAG-HS3 via the ftdi libraries directly. It only use the ftdi libraries to communicate with stand-alone FTDI devices. The application only uses the Digilent Adept SDK to communicate with the JTAG-HS3, even if it can be found via the ftdi libraries.
Is there any other information that I can provide?

Hi
I have tried both directly in the PC and using a USB hub. I get the same result.
No processes is using the FTDI device, it is only connected to the computer. Removing the ftdi_sio kernel driver does not make any difference.