Ubuntu: Install xilinx platform usb in Ubuntu 16.04 x64


I install ise14.7 correctly and then try flow this guide for installing Platform cable. all step was correct. my ls usb command output is like this

$ lsusb  Bus 002 Device 022: ID 03fd:0008 Xilinx, Inc. Platform Cable USB II  Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub  Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub  Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub  Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub  

You can see my OS knows a xilinx usb device is attached and usbdev works correctly. but my cable doesn't work. Then I see output in impact that says :

Active mode is BS  Project: '/home/faryad_mfa/Desktop/Projects/GE_TS_XILINX/GE_TS_XILINX.ipf' loaded.  GUI --- Auto connect to cable...  INFO:iMPACT - Digilent Plugin: Plugin Version: 2.4.4  INFO:iMPACT - Digilent Plugin: no JTAG device was found.  AutoDetecting cable. Please wait.  *** WARNING ***: When port is set to auto detect mode, cable speed is set to default 6 MHz regardless of explicit arguments supplied for setting the baud rates  PROGRESS_START - Starting Operation.  If you are using the Platform Cable USB, please refer to the USB Cable Installation Guide (UG344) to install the libusb package.  Connecting to cable (Usb Port - USB21).  Checking cable driver.   Linux release = 4.4.0-42-generic.  WARNING:iMPACT -  Module windrvr6 is not loaded. Please reinstall the cable drivers. See Answer Record 22648.  Cable connection failed.  Connecting to cable (Parallel Port - parport0).   Linux release = 4.4.0-42-generic.  ...  

after that I try to install driver using xilinx help document at this link.

I type this command in terminal

sudo ./install_drivers  

and get some error:

--Driver versions in this package: windrvr=900, xpc4drvr=1041  --Script name = ./install_drivers  --HostName = mehrkavir-Lab2  --Current working dir = /opt/Xilinx/install_drivers  --Script location = /opt/Xilinx/install_drivers  --Kernel version = 4.4.0-42-generic.  --Arch = x86_64.  --Installer version = 1053  --Unsetting ARCH environment variable.  --User has root permission.  --File /lib/modules/misc/install_windrvr6 does not exist.  --Installing USB drivers------------------------------------------  --File /etc/hotplug/usb/xusbdfwu.fw/xusbdfwu.hex exists.  ./setup_pcusb: 94: ./setup_pcusb: Bad substitution  --File /sbin/fxload exists.  --Installing windrvr6---------------------------------------------  --Checking version.  --File /lib/modules/4.4.0-42-generic/kernel/drivers/misc/windrvr6.ko does not exist.  --File LINUX.4.4.0-42-generic.x86_64/windrvr6.ko does not exist.  --Setting source version to 900.  --File LINUX.4.4.0-42-generic.x86_64/windrvr6.ko is newer than the destination file.  checking for cpu architecture... x86_64  checking for WinDriver root directory... /opt/Xilinx/install_drivers/linux_drivers/windriver64  checking for linux kernel source... found at /lib/modules/4.4.0-42-generic/build  checking for lib directory... ln -sf $(ROOT_DIR)/lib/$(SHARED_OBJECT)_32.so /usr/lib/$(SHARED_OBJECT).so; ln -sf $(ROOT_DIR)/lib/$(SHARED_OBJECT).so /usr/lib64/$(SHARED_OBJECT).so  checking which directories to include... -I/lib/modules/4.4.0-42-generic/build/include  checking linux kernel version... hello.c:1:30: fatal error: linux/utsrelease.h: No such file or directory  compilation terminated.  not found  configure: error: can't find kernel version  make: *** No rule to make target 'clean'.  Stop.  make: *** No targets specified and no makefile found.  Stop.  make: *** No rule to make target 'install'.  Stop.  --make windrvr install rc= 2  --install_windrvr6 rc = 2  --Module windrvr6 is not running.  --Module xpc4drvr is not running.  --Note: By default, the file permission of /dev/windrvr6 is enabled for the root user only    and must be changed to allow access to other users.    --Return code = 2  

I feel there's a problem with my kernel version based on this line

checking which directories to include... -I/lib/modules/4.4.0-42-generic/build/include  checking linux kernel version... hello.c:1:30: fatal error: linux/utsrelease.h: No such file or directory  
  1. What I should do to install driver correctly?

  2. Are there any alternative ways to install this driver?


I solved this problem by this enviroment setting.

#Xilinx ISE path *****************  LM32_TOOLS=/opt/gcc-lm32/bin  XILINX=/opt/Xilinx/14.7/ISE_DS  export XILINX  HOST_PLATFORM=lin64  export HOST_PLATFORM  XILINX_BIN=${XILINX}/ISE/bin/${HOST_PLATFORM}  export XILINX_BIN  PATH=${PATH}:${XILINX_BIN}:${LM32_TOOLS}  XILINX_EDK=${XILINX}/ISE/EDK/bin/lin64  export XILINX_EDK  XILINX_CSE_TCL=${XILINX}/ISE/cse/tcl  #XILINX_CSE_TCL=/usr/lib/tclx8.4/  export XILINX_CSE_TCL  XIL_IMPACT_USE_LIBUSB=1  export XIL_IMPACT_USE_LIBUSB  XIL_IMPACT_USE_WINDRIVER=1  export XIL_IMPACT_USE_WINDRIVER  #export XILINX_USB_DEV= "001:005"  #export LD_PRELOAD="/usr/share/libusb.so"  #export LD_PRELOAD="/opt/Xilinx/usb-driver/libusb-driver.so";  export XKEYSYMDB=/usr/share/X11/XKeysymDB  export DISPLAY=:0  echo "XILINX ISE enviroment seted"  echo ""    PATH=$PATH:/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/:/opt/Xilinx/14.7/ISE_DS/EDK/bin/lin64/  

the gole is here:


also you should install your dongle driver before.


Immediate build fix (not a solution)

For your specific build problem the installer is trying to build a driver. In order to do so, it needs the kernel source for your currently running kernel to build against. The command to get it is:

sudo apt-get install linux-source  

This will solve the immediate build problem, but the WinDriver still won't build properly. According to the release documentation, the ISE 14.7 version is declared compatible only with RHEL Workstation 5 & 6 (32 & 64-bit) and SUSE Enterprise 11 (32 and 64-bit) among all Linux distros. Age-wise that's around the level of Ubuntu 9.04. The kernel has changed very significantly since then, going from kernel version 2.6.32 in RHEL 6.9 to kernel version 4.4.0 in Ubuntu 16.04.1. The WinDriver hasn't been maintained by Xilinx, so it won't build/work with the newer kernel version.

Potential Workaround

The only semi-workaround I've been able to find in trying to solve this same problem is if you are using a DLC9 or earlier JTAG device. In that case you can find instructions for building and using a user-space driver in place of the WinDriver with the instructions found here under the "Using Xilinx USB JTAG Programmers under Linux (Installing Cable Drivers)" heading. Make sure to read the README from the git project it points you to because if your JTAG device isn't one of those supported, or you missing some of the instructions (like setting LD_PRELOAD), the driver built from the git project won't work for your JTAG device.

A condensed version of the linked instructions with some of the buried information explicitly specified:
Create the driver

sudo apt-get install gitk git-gui libusb-dev build-essential libc6-dev-i386 fxload libusb-dev  cd /opt/Xilinx     #or some directory to build the driver in  sudo git clone git://git.zerfleddert.de/usb-driver  cd usb-driver  sudo make  sudo cp -a /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/xusb*.hex /usr/share/  sed -e 's/[$]TEMPNODE/%N/' -e 's/SYSFS/ATTRS/g' -e 's/BUS="usb",/SUBSYSTEM="usb", ENV{DEVTYPE}=="usb_device",/' -e 's/MODE=/MODE:=/' /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/xusbdfwu.rules >xusbdfwu-new.rules  sudo cp xusbdfwu-new.rules /etc/udev/rules.d/  sudo udevadm control --reload  

Detach and re-attach the JTAG device.
Run the tools (necessary on every run)

source /opt/Xilinx/14.7/ISE_DS/settings64.sh  export PATH=/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64:$PATH  export LD_PRELOAD=/opt/Xilinx/usb-driver/libusb-driver.so  impact  


Working Solution

The only known working solution I've found is to also install a newer version of the Xilinx LabTools and manually install the cable drivers from that. Depending on the device you're going to be working with, you need to pick a version of the LabTools that is at least 2014.4, but not so new that it no longer supports your chip type (which I assume is why you're using 14.7). You'll still need the kernel source as well, like my original solution pointed out. After installing LabTools (without trying to install drivers), run the following:

cd /opt/Xilinx/SDK/2014.4/data/xicom/cable_drivers/lin64/install_script/install_drivers  sudo ./install_drivers  sudo ./setup_pcusb  sudo su -  cd /etc/udev/rules.d  sed -i -e 's/MODE=/MODE:=/g' 52-xilinx*.rules  exit  sudo udevadm control --reload  

Disconnect and reconnect your JTAG device, and run impact with the following command in a throw-away terminal from a directory where you want the project dropped:

source /opt/Xilinx/14.7/ISE_DS/settings64.sh  source /opt/Xilinx/SDK/2014.4/settings64.sh  impact  

The impact tool isn't provided by 2014.4, so it will end up executing the 14.7 version, but all libraries provided by the 2014.4 version will be used instead if they exist.


The age old files won't work with the current kernel version. I also faced the same issue. Solution is to install cable driver files given with vivado tool. Try downloading those files from Xilinx website. It worked for me.

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Next Post »