AVRISP MKII не работает с AVRDUDE в Linux

Система видит, что что-то подключено, когда я подключаю и отключаю его:

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"

person Katy Levinson    schedule 23.03.2011    source источник


Ответы (5)


Оказывается, 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

Ура!

person Katy Levinson    schedule 24.03.2011
comment
Спасибо! Это сэкономило мне несколько часов возни сегодня. - person Joshua Noble; 26.03.2011
comment
Спасибо. У меня была проблема с Linux Mint, может быть, это может помочь. В Linux Mint замените SYSFS на ATTRS. - person Nelstaar; 28.10.2012
comment
Это сработало для меня в Ubuntu 13.04/Ardiono 1.0.3 вместе с заменой SYSFS и ATTR, как было предложено @antler. - person Saar Drimer; 26.08.2013
comment
В более поздних версиях измените SYSFS на ATTR, тогда все заработает. Сообщения Horaz показывают, как вы можете получить нужные вам части SYSFS или ATTR из информации об устройстве шины. Это полезно, чтобы заставить его работать на любой версии Ubuntu. - person Myforwik; 05.09.2013
comment
Для Lubuntu 13.10 (возможно, и для Ubuntu 13.10) замените SYSFS на ATTRS (не ATTR). GROUP может быть любой группой, в которой вы состоите. В моем случае я установил GROUP=plugdev, потому что группы дозвона нет. - person Hieu; 16.11.2013
comment
Проверьте, находитесь ли вы в связанной группе: в то время как «группы» отображают только существующие группы, проверка вашего пользователя: $ groups yourusername (ubuntu 12.04) - person Jadeye; 16.01.2014
comment
Спасибо. Это было очень полезно. - person Cerin; 26.06.2017
comment
Более новые варианты ICE mkII имеют идентификатор продукта 2141. Я просто скопировал последнюю строку предложенного файла с ATTR... и изменил идентификатор продукта на 2141, чтобы добавить его поддержку. - person nsayer; 05.07.2017

Для Ubuntu 12.04 есть небольшое изменение, которое необходимо внести в конфигурацию, опубликованную Кэти:

Все вхождения SYSFS следует заменить на ATTR.

Кроме того, если у вас все еще возникают проблемы, убедитесь, что вы установили все необходимые зависимые библиотеки. Я обнаружил, что мне также нужно установить пакет uisp.

Если перезапуск udev не имеет значения, отключите программатор и снова подключите его.

person antler    schedule 03.06.2012

Обновленное правило, которое работает для 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"

На основе предыдущих сообщений об изменениях.

person Uberdaff    schedule 19.11.2013
comment
Это также то, к чему я пришел после изучения моей информации udevadm /dev/bus/usb/X/Y. У меня система Fedora 19/FC19, ядро ​​3.11.10. Также перезапуск udev был изменен на udevadm control --reload-rules ; спусковой крючок удевадм. Но повторное подключение устройства также работает. - person EkriirkE; 04.01.2014
comment
Это ответ последних систем! - person secretformula; 10.09.2015

Кажется, они снова изменили его в 12.10
Подсистема теперь USB

Я нашел команду, которая показывает, что вам нужно. Для этого вам просто нужно знать номер шины и устройства от подключенного устройства (используйте lsusb)

Шина 003 Устройство 010: ID 03eb: lsusb

Таким образом, мой номер шины от провайдера — 003, а устройство — 010 (отредактируйте конец /003/010 в соответствии с вашими потребностями)

информация об udevadm --attribute-walk --name=bus/usb/003/010


среди прочего показывает

ПОДСИСТЕМА==USB

ATTR{idVendor}==03eb

ATTR{idProduct}==2104

Замените/измените созданное выше правило и все должно работать

Если есть другие Проблемы, Командование покажет их вам, проверит правила (таким образом нашла опечатку :)) Если ошибки нет, то ничего не покажет (Не сразу понял)

person Horaz    schedule 13.01.2013

Я использовал следующий файл правил 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» было недостаточно.

person Stephan Korsholm    schedule 15.10.2014