web-dev-qa-db-ja.com

LinuxでAVRISP MKIIが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"
23
Katy Levinson

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

やったー!

30
Katy Levinson

Ubuntu 12.04の場合、Katyが投稿した構成に対して実行する必要があるマイナーな変更があります。

[〜#〜] sysfs [〜#〜]はすべて[〜#〜] attr [〜#〜]で置き換える必要があります

さらに、問題が解決しない場合は、必要な依存ライブラリがすべてインストールされていることを確認してください。 ispパッケージもインストールする必要があることがわかりました。

Udevを再起動しても違いがない場合は、プログラマーのプラグを抜いて、プラグインしてください。

11
antler

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"

変更に関する以前の投稿に基づいています。

7
Uberdaff

12.10で再び変更したようです
サブシステムは「usb」になりました

必要なものを示すコマンドを見つけました。そのためには、接続されたデバイスからバスとデバイスの番号を知る必要があります(lsusbを使用)

バス003デバイス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"

上記で作成したルールを置き換え/変更すると、すべてが機能するはずです

コマンドがそれらを表示する他の問題がある場合、コマンドはルールをチェックします(そのようにタイプミスを見つけました:))エラーがない場合、何も表示しません(しばらくの間気づきませんでした)

2
Horaz

次の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」を使用するだけでは不十分でした。

0