2011-03-23 46 views
23

工作系统看到的东西时,我插头插入并拔出:AVRISP MKII不AVRDUDE在Linux上

[email protected]:/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:

[email protected]:/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" 

回答

30

事实证明,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 

Hooray!

+1

谢谢!这为我节省了几个小时的时间。 – 2011-03-25 21:44:14

+0

小错误:用“sudo service udev restart”重新启动udev – 2011-11-05 23:59:42

+0

谢谢。我在linux mint上遇到了这个问题,也许它可以提供帮助。在linux mint中用ATTRS代替SYSFS – Nelstaar 2012-10-27 20:37:39

11

的Ubuntu 12.04,有必须进行到凯蒂发布配置的微小的变化:

SYSFS所有出现应该ATTR

追加更换,如果你”仍然有问题,确保你已经安装了所有需要的依赖库。我发现我也必须安装uisp包。

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

2

看来他们再次改变它在12.10
现在的子系统是“USB”

我发现了一个命令,它显示了你所需要的。 对于您只需从插入设备 (使用的lsusb)

Bus 003 Device 010: ID 03eb: lsusb

所以从ISP我的公车数量是003和设备知道总线和设备数量为010 (编辑结束/ 003/010你的需求)

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


显示在许多其他事情

SUBSYSTEM=="usb"

ATTR{idVendor}=="03eb"

ATTR{idProduct}=="2104"

替换/修改科瑞编辑规则上面,一切都应该工作

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

7

更新的规则,对于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" 

+0

这也是我在检查我的“udevadm info/dev/bus/usb/X/Y”输出后想出来的。我使用的是Fedora 19/FC19系统,内核为3.11.10。此外,udev restart已更改为“udevadm control --reload-rules; udevadm trigger”。但重新插入设备也可以。 – EkriirkE 2014-01-04 07:27:05

+0

这是最近系统的答案! – secretformula 2015-09-09 23:23:51

0

我用下面的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”是不够的。