Saturday 15 August 2015

Terasic DE0-Nano-SoC with Quartus II on Ubuntu: USB ID Problems

I had some trouble yesterday when I tried to connect my new Terasic DE0-Nano-SoC development board and program it using Quartus. The software couldn't see the on-board JTAG programmer, but was able to find my older device, the non-SoC version of the board.

My setup is as follows:

  • Ubuntu 14.04
  • Quartus II Web Edition 15.0.0.145 (Linux)
  • Terasic DE0-Nano-SoC Kit

One thing that confused the problem for me was that Quartus II doesn't load it's menu icons unless you run it as root. Initially I thought that running Quartus II as root might solve this problem, but it didn't.

Run as a normal user:









































Run as super user:






































After messing around with a few other things, I figured that it must have been a problem with the PC's device rules.
Checking the USB device IDs using the 'lsusb' command showed the following device:
Bus 002 Device 003: ID 09fb:6010 Altera
And checking the rules folder (/etc/udev/rules.d/) revealed the following file:
-rw-r--r-- 1 root  root   591 Aug 15 19:29 51-altera-usb-blaster.rules
which contained:
# Altera USB BlasterATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666"
This appears to work for the USB Blaster device on the DE0-Nano board, but not the SoC board.
So I changed the file to this:
# Altera USB BlasterATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666"
# Altera USB Blaster TerasicATTR{idVendor}=="09fb", ATTR{idProduct}=="6010", MODE="0666"

and reloaded the rules with 'sudo udevadm control --reload'.
After this, Quartus was able to see the JTAG device...


....Well, at least, it was for a while.
I'm not sure exactly what happened. I didn't change the DIP switches on the board, or anything like that, but the USB ID changed from '09fb:6010' to '09fb:6810'. It stayed that way for a few power cycles (both PC and SoC board cycles), and then reverted to '6010'.

The only things I can think of that I did that may have changed the ID are:

  • Accidentally having multiple Quartus instances open at once
  • Killing and rebooting the jtagd process using the following commands:
    • sudo killall jtagd
    • sudo ps -A | grep jtag
    • ./jtagd            (run from the Quartus 'bin' directory)
    • ./jtagconfig    (run from the Quartus 'bin' directory)

However I still haven't been able to "force" the ID to change again by repeating these. As a temporary fix, I've added an extra rule to the file for the '6810' ID. I just hope it doesn't change to a third ID suddenly.