AVRISP MKII在Linux上不适用于AVRDUDE

时间:2011-03-23 22:58:18

标签: linux usb avr 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"

5 个答案:

答案 0 :(得分: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

万岁!

答案 1 :(得分:11)

对于Ubuntu 12.04,必须对Katy发布的配置进行微小的更改:

所有出现的 SYSFS 应替换为 ATTR

此外,如果您仍然遇到问题,请确保已安装所有必需的依赖库。我发现我还必须安装 uisp 包。

如果重新启动udev没有任何区别,请拔掉程序员并将其重新插入。

答案 2 :(得分: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"

根据之前有关更改的帖子。

答案 3 :(得分:2)

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

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

  

Bus 003 Device 010:ID 03eb:   的lsusb

所以我的isp总线号是003,Device是010 (根据您的需要编辑结束/ 003/010)

  

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

显示了许多其他事情

  

SUBSYSTEM == “USB”

     

ATTR {idVendor} == “03EB”

     

ATTR {idProduct} == “2104”

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

如果命令会向您显示其他问题,它会检查规则(发现错误的方式:)) 如果没有错误,它将不会显示任何内容(一段时间没有意识到)

答案 4 :(得分: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控制--reload"还不够。