Skip to content

Xilinx Platform Cable USB under Linux

Tim Ansell edited this page Jul 23, 2014 · 3 revisions

Most instructions for getting this cable / device to work under Linux are out of date. Here is what I did to install on Ubuntu Precise 12.04 and using with iMPACT which comes with Xilinx WebPack/ISE 14.7.

You can purchase this cable officially from Xilinx and it'll cost you ~$200 USD or you can purchase a copy from eBay. I got my here, it costed $37 USD with shipping. Ordered on 11th July and arrived on the 21st.

Instructions official instructions are at http://www.xilinx.com/support/answers/29310.htm but there where quite a few issues following them.

  • First issue was /opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64/setup_pcusb didn't understand I had udev and was trying to install for the ancient hotplug. Fixed by changing line 26 from TP_USE_UDEV="0" to TP_USE_UDEV="1"

  • Next issue, setup_pcusb didn't tell udev to reload the udev rules. Had to do that manually with udevadm control --reload-rules.

  • Next issue, setup_pcusb didn't ask me to install fxload, so I needed to install it with apt-get install fxload.

  • Next issue, the rules that were installed to /etc/udev/rules.d/xusbdfwu.rules by setup_pcusb were invalid; they caused the following errors in /var/log/daemon.log shown below.

Jul 23 16:40:29 laptop udevd[841]: unknown key 'SYSFS{idVendor}' in /etc/udev/rules.d/xusbdfwu.rules:2
Jul 23 16:40:29 laptop udevd[841]: invalid rule '/etc/udev/rules.d/xusbdfwu.rules:2'
Jul 23 16:46:11 laptop udevd[841]: unknown key 'SYSFS{idVendor}' in /etc/udev/rules.d/xusbdfwu.rules:3
Jul 23 16:46:11 laptop udevd[841]: invalid rule '/etc/udev/rules.d/xusbdfwu.rules:3'

This was fixed by;

  • Changing SYSFS to ATTRS
  • Changing BUS to SUBSYSTEM
  • Changing $TEMPNODE to $tempnode

A copy of the fixed xusbdfwu.rules is below; you can just copy this over the installed values and then reload the udev rules with udevadm control --reload-rules

# version 0003
ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0008", MODE="666"
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusbdfwu.hex -D $tempnode"
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xup.hex -D $tempnode"
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_emb.hex -D $tempnode"
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xlp.hex -D $tempnode"
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xp2.hex -D $tempnode"
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="03fd", ATTRS{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /usr/share/xusb_xse.hex -D $tempnode"

After all that, you should then plug in your Xilinx Platform Cable USB and the "Connector Signals" / "Status" light in the top right hand corner should turn red indicating the fxload command worked. If this light is not red then something has gone wrong and probably fxload was not able to load the firmware.

Clone this wiki locally