AVRISP MKII不能在Linux上使用AVRDUDE

当我插入并拔下插头时,系统会看到插入的东西:

bluehat@Matapan:/dev$ tail -f /var/log/syslog Mar 23 15:36:35 Matapan kernel: [156082.112874] usb 7-1: new full speed USB device using uhci_hcd and address 6 Mar 23 15:47:19 Matapan kernel: [156726.248081] usb 7-1: USB disconnect, address 6 Mar 23 15:47:29 Matapan kernel: [156736.200148] usb 6-1: new full speed USB device using uhci_hcd and address 3 

AVRISP MKII应该依靠cdc-acm:

 bluehat@Matapan:/dev$ modinfo cdc-acm -V module-init-tools version 3.12 

所以它应该能够看到它很好,但我无法写信给它。

 avrdude -p m1280 -c avrispmkII -P usb -U test.hex 

返回

 avrdude: usb_open(): cannot read serial number "error sending control message: Operation not permitted" avrdude: usb_open(): cannot read product name "error sending control message: Operation not permitted" avrdude: usbdev_open(): error setting configuration 1: could not set config 1: Operation not permitted avrdude: usbdev_open(): did not find any USB device "usb" 

事实证明,Ubuntu会承认这个对象在那里,但是在你修正你的一些udev规则之前,不能很好地使用它。 感谢http://steve.kargs.net/bacnet/avr-isp-mkii-on-ubuntu-hardy/提供的文件只需要一点更新。

创建新文件/etc/udev/avrisp.rules

 SUBSYSTEM!="usb", ACTION!="add", GOTO="avrisp_end" # Atmel Corp. JTAG ICE mkII ATTR{idVendor}=="03eb", ATTR{idProduct}=="2103", MODE="660", GROUP="dialout" # Atmel Corp. AVRISP mkII ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="dialout" # Atmel Corp. Dragon ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", MODE="660", GROUP="dialout" LABEL="avrisp_end" 

现在创建一个到文件的虚拟链接并给它一个规则优先级

 cd /etc/udev/rules.d sudo ln ../avrisp.rules 60-avrisp.rules 

检查你是否在拨出组

 groups 

重新启动udev

 sudo service udev restart 

万岁!

对于Ubuntu 12.04,对Katy发布的配置进行了一些小修改:

所有出现的SYSFS都应该用ATTR代替

此外,如果您仍然遇到问题,请确保已安装所有所需的相关库。 我发现我也必须安装uisp软件包。

如果重新启动udev没有什么区别,拔掉编程器并插回去。

更新后的规则适用于13.10:

 SUBSYSTEM!="usb", ACTION!="add", GOTO="avrisp_end" # Atmel Corp. JTAG ICE mkII ATTR{idVendor}=="03eb", ATTR{idProduct}=="2103", MODE="660", GROUP="dialout" # Atmel Corp. AVRISP mkII ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="dialout" # Atmel Corp. Dragon ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", MODE="660", GROUP="dialout" LABEL="avrisp_end" 

基于以前的帖子关于变化。

似乎他们在12.10再次改变了它
子系统现在是“usb”

我找到了一个显示你需要的命令。 为此,您只需要知道插入设备的总线和设备号(使用lsusb)

Bus 003 Device 010:ID 03eb:lsusb

所以我的公交车号码是003和设备是010(编辑结束/ 003/010您的需要)

udevadm info –attribute-walk –name = bus / usb / 003/010

显示了许多其他的事情

SUBSYSTEM == “USB”

ATTR {idVendor} == “03EB”

ATTR {} idProduct == “2104”

替换/更改上面创建的规则,一切都应该工作

如果还有其他的问题,命令会显示给你,它检查规则(发现这样的错字:))如果没有错误,它不会显示任何东西(一段时间没有意识到)

我使用下面的udev规则文件来使它在Fedora 19上工作:

 SUBSYSTEM!="usb", ACTION!="add", GOTO="avrisp_end" # Atmel Corp. JTAG ICE mkII ATTR{idVendor}=="03eb", ATTR{idProduct}=="2103", MODE="660", GROUP="dialout" # Atmel Corp. AVRISP mkII ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="dialout" # Atmel Corp. Dragon ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", MODE="660", GROUP="dialout" LABEL="avrisp_end" 

正如你所看到的,一些小的事情与上面提出的不同。 另外我不得不重新启动计算机。 使用“udevadm control –reload”是不够的。