2011-03-23 21 views
23

Il sistema vede qualcosa è collegato quando collego e staccare la spina:AVRISP MKII non funziona con avrdude su 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 dovrebbe fare affidamento su CDC-ACM:

[email protected]:/dev$ modinfo cdc-acm -V 
module-init-tools version 3.12 

Quindi dovrebbe essere in grado di vederlo bene, eppure non sono in grado di scriverlo.

avrdude -p m1280 -c avrispmkII -P usb -U test.hex 

Returns

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" 

risposta

30

Si scopre che Ubuntu riconosce che l'oggetto è lì, ma non gioca bene con esso fino a risolvere alcuni dei vostri regole udev. Grazie a http://steve.kargs.net/bacnet/avr-isp-mkii-on-ubuntu-hardy/ che forniva file che richiedevano solo un piccolo aggiornamento.

Crea nuovo file /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" 

Ora creare un collegamento virtuale al file e dare una priorità regola

cd /etc/udev/rules.d 
sudo ln ../avrisp.rules 60-avrisp.rules 

check sei nel dialout gruppo

groups 

Restart udev

sudo service udev restart 

Urrà!

+1

Grazie! Questo mi ha risparmiato alcune ore di incasinare oggi. –

+0

Errore minore: riavviare udev con "sudo service udev restart" –

+0

Grazie. Ho avuto il problema su linux mint, forse può aiutare. In linux mint sostituire SYSFS con ATTRS – Nelstaar

11

Per Ubuntu 12.04, c'è una piccola modifica che deve essere effettuata per la configurazione che Katy ha postato:

Tutte le occorrenze di SYSFS dovrebbero essere sostituiti con ATTR

Inoltre, se si' avendo ancora problemi, assicurati di aver installato tutte le librerie dipendenti richieste. Ho scoperto che dovevo installare anche il pacchetto uisp.

Se riavviare udev non fa la differenza, scollegare il programmatore e ricollegarlo.

2

Sembra hanno cambiato di nuovo a 12.10
Il sottosistema è ora "usb"

ho trovato un comando che mostra quello che vi serve. Per questo è solo bisogno di sapere il bus e il numero di dispositivo dal dispositivo collegato (uso lsusb)

Bus 003 Device 010: ID 03eb: lsusb

Quindi il mio numero di autobus dal ISP è 003 e dispositivo è 010 (modificare la fine/003/010 alle vostre esigenze)

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


spettacoli tra molte altre cose

SUBSYSTEM=="usb"

ATTR{idVendor}=="03eb"

ATTR{idProduct}=="2104"

Sostituire/cambiare il creat sopra e tutto dovrebbe funzionare

Se ci sono altri problemi che il Comando mostrerà loro, controlla le regole (trovato un errore di battitura in quel modo :)) Se non ci sono errori non mostrerà nulla (non si rendeva conto per qualche tempo)

7

regola aggiornata che funziona per 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" 

sulla base di precedenti post su modifiche.

+0

Questo è anche ciò che mi è venuto in mente dopo aver esaminato l'output "udevadm info/dev/bus/usb/X/Y". Sono su un sistema Fedora 19/FC19, kernel 3.11.10. Anche udev restart è cambiato in "udevadm control --reload-rules; udevadm trigger". Ma ricollegare il dispositivo funziona anche. – EkriirkE

+0

Questa è la risposta dei sistemi recenti! – secretformula

0

ho usato il seguente file regole udev per farlo funzionare su 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" 

Come si può vedere, alcune cose minori sono diversi da ciò che viene suggerito sopra. Inoltre ho dovuto riavviare il computer. Usare "udevadm control --reload" non era abbastanza.