AVRISP MKII在Linux上不适用于AVRDUDE

Kat*_*son 23 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
Run Code Online (Sandbox Code Playgroud)

AVRISP MKII应该依赖于cdc-acm:

bluehat@Matapan:/dev$ modinfo cdc-acm -V
module-init-tools version 3.12
Run Code Online (Sandbox Code Playgroud)

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

avrdude -p m1280 -c avrispmkII -P usb -U test.hex
Run Code Online (Sandbox Code Playgroud)

返回

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"
Run Code Online (Sandbox Code Playgroud)

Kat*_*son 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"
Run Code Online (Sandbox Code Playgroud)

现在创建一个指向该文件的虚拟链接,并为其赋予规则优先级

cd /etc/udev/rules.d
sudo ln ../avrisp.rules 60-avrisp.rules
Run Code Online (Sandbox Code Playgroud)

检查您是否在拨出组中

groups
Run Code Online (Sandbox Code Playgroud)

重启udev

sudo service udev restart
Run Code Online (Sandbox Code Playgroud)

万岁!

  • 对于Lubuntu 13.10(也可能是Ubuntu 13.10),用ATTRS(不是ATTR)替换SYSFS.GROUP可以是您所在的任何组.在我的情况下,我设置GROUP ="plugdev",因为没有"拨出"组. (2认同)

小智 11

对于Ubuntu 12.04,必须对Katy发布的配置进行一些小改动:

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

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

如果重新启动udev没有什么区别,请拔掉程序员并重新插入.


小智 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"
Run Code Online (Sandbox Code Playgroud)

根据之前关于变化的帖子.