I am uploading a test sketch(Blink) to my new Zero(with Wifi101 shield) and when I press Upload in the IDE, the Console says the following:

Arduino: 1.6.10 (Linux), Board: "Arduino/Genuino Zero (Programming Port)"

Open On-Chip Debugger 0.9.0-gd4b7679 (2014-10-03-00:26)
Licensed under GNU GPL v2
For bug reports, read
debug_level: 0
adapter speed: 500 kHz
adapter_nsrst_delay: 100
cortex_m reset_config sysresetreq
Error: unable to find CMSIS-DAP device
Error: No Valid JTAG Interface Configured.
Error: No Valid JTAG Interface Configured.

I am using the Zero programming port.

  • Unless you mean that this works normally and only breaks when the shield is present, remove the shield for the moment and take it out of your title. Then edit the the output of lsusb into your question. Also look for messages in dmesg after re-plugging the board, and consider trying another cable. There could also be permission issues, but I'd expect a different error message then. Aug 21 '16 at 16:52
  • I just tried it without the wifi101 shield, and I got the same error. Aug 21 '16 at 17:04
  • And lsusb shows what??? And dmesg ??? Aug 21 '16 at 17:18
  • Experiments with a different CMSIS-DAP show that this is probably a permission issue - openocd does not distinguish between the absence of a CMISIS-DAP programmer vs. lack of permission to access one which is present. The usual solution is to create or install an appropriate udev rule and then restart udev or the system and replug the device. This does not seem to be well documented, so one might say the board is not a well supported product at present. Aug 21 '16 at 17:38

I had exactly the same error with the same board. Running the IDE as root solved the problem. So, Chris was right pointing out a permission issue.

I found more information here : http://bitofahack.com/post/1437909576

Then I added the file /etc/udev/rules.d/98-openocd.rules :

ACTION!="add|change", GOTO="openocd_rules_end"
SUBSYSTEM!="usb|tty|hidraw", GOTO="openocd_rules_end"
ATTRS{product}=="*CMSIS-DAP*", MODE="664", GROUP="plugdev"                                                                                                                                                                                

I then ensured that I was member of group plugdev.

udev looks for changes in his rules directory so you don't have to restart it.

I plugged the board again and it worked.

Note that you can force udev to read the rule files again by entering :

sudo udevadm control --reload

I had to do this because I first made a mistake in the rule file.

Hope this helps.

  • 98-opencd.rules >>> 98-openocd.rules Sep 22 '17 at 1:44
  • missing closing double quote ? LABEL="openocd_rules_end >>> LABEL="openocd_rules_end" Jan 18 '21 at 21:12
  • Yes. Fixed. Very old message... Jan 20 '21 at 12:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.