Forum: Mikrocontroller und Digitale Elektronik AVRDude + AVR ISP mkII: did not find any USB device "usb"


von Fabian S. (jacky2k)


Lesenswert?

Hallo,
nachdem ich nun stunden gebraucht habe, um avrdude so zu kompilieren, 
dass er USB Unterstützung mit sich bringt habe ich das nächste Problem 
an dem ich kläglich scheiter:
Wenn ich programmieren will (Linux, Eclipse, AVR ISP mkII) haut er mir 
folgendes in der Log raus:
1
Launching /usr/bin/avrdude -pm32 -cavrisp2 -Pusb -Uflash:w:AVRHelloWorld.hex:a 
2
Output:
3
avrdude: usb_open(): cannot read serial number "error sending control message: Operation not permitted"
4
avrdude: usb_open(): cannot read product name "error sending control message: Operation not permitted"
5
avrdude: usbdev_open(): error setting configuration 1: could not set config 1: Operation not permitted
6
avrdude: usbdev_open(): did not find any USB device "usb"
7
avrdude execution aborted

Jemand eine Idee was das sein könnte?

von Wahhhhhhh (Gast)


Lesenswert?

>Operation not permitted
Ich meine unter Linux gibt es irgendwelche Rechte die gesetzt werden 
müssen, vielleicht mal in der Richtung gucken.

von Fabian S. (jacky2k)


Lesenswert?

Joa wovon denn? Ich weiß ja nicht mal wie das Gerät unter Linux heißt, 
lsusb, /var/log/messages, dmesg hilft alles nicht weiter.

von Hc Z. (mizch)


Lesenswert?

Schreibe folgendes in eine neue  Datei nach 
/etc/udec/rules.d/96-avrisp.rule:
1
#AVRISP mkII
2
SUBSYSTEM=="usb_device",SYSFS{idVendor}=="03eb",SYSFS{idProduct}=="2104",MODE="0666"

und stecke aus und ein.

von Fabian S. (jacky2k)


Lesenswert?

Ich nehme mal an du meinst /dev/udev?
Und was macht das nu? Weil funktionieren tuts nicht :P

von Hc Z. (mizch)


Lesenswert?

Fabian S. schrieb:
> Ich nehme mal an du meinst /dev/udev?

Nein.  Ich meinte das, was ich schrieb.

EDIT:  Ich sehe: doch nicht ganz.  Es geht nach /etc/udev/rules.d.
                                                        ^

> Und was macht das nu?

Es ändert die Rechte für den ISP, dass jeder zugreifen darf.  Danach 
sollte es keine permission errors mehr geben.

> Weil funktionieren tuts nicht :P

Wenn Du es nach /dev geschrieben hast: kein Wunder.

von Fabian S. (jacky2k)


Lesenswert?

Ich mein natürlich /etc/udev
Was das macht habe ich denke ich verstanden ;) Nur auf was macht er das 
MODE? der erstellt ja nicht mal ein Gerät für das Teil. In messages 
steht nur das wenn ich ihn rein stecke:
1
Nov 10 19:00:11 fabian-desktop kernel: [ 4447.501094] usb 7-2: new full speed USB device using uhci_hcd and address 3
2
Nov 10 19:00:12 fabian-desktop kernel: [ 4447.678132] usb 7-2: configuration #1 chosen from 1 choice

von Hc Z. (mizch)


Lesenswert?

Fabian S. schrieb:
> Nur auf was macht er das
> MODE?

Der setzt die Zugriffsrechte der Gerätedatei (irgendwo unter 
/dev/bus/usb), die für den ISP MkII angelegt wird.  Bekommst Du denn 
immer noch permission errors?  Sind sie weg, wenn Du mit sudo startest 
(was Du nicht dauerhaft machen solltest)?

P.S.  Wenn es noch nicht geht, entferne mal das
1
SUBSYSTEM=="usb_device",
vom Beginn der Zeile.

von Fabian S. (jacky2k)


Lesenswert?

Mit root klappts, mit normalem Benutzer immer noch permission errors.

von Fabian S. (jacky2k)


Lesenswert?

OK also hier meine Erkenntnisse:
1
# cd /dev/bus/usb
2
Programmer raus
3
# find > $HOME/withavr
4
Programmer rein
5
# find > $HOME/withoutavr
6
# diff $HOME/withavr $HOME/withoutavr
7
3d2
8
< ./007/010
9
# cd 007/
10
# ls -lah
11
insgesamt 0
12
drwxr-xr-x 2 root root       80 2010-11-10 19:35 .
13
drwxr-xr-x 9 root root      180 2010-11-10 18:46 ..
14
crw-rw-r-- 1 root root 189, 768 2010-11-10 19:16 001
15
crw-rw-r-- 1 root root 189, 777 2010-11-10 19:35 010
Sieht nicht danach aus, als dürfte ich da schreiben :D

von Fabian S. (jacky2k)


Lesenswert?

Habe inzwischen noch den Beitrag hier gefunden:
Beitrag "Re: USB Benutzerrechte einstellen, aber wie unter Linux ?"
Leider gehts da nicht um den ISP mkII. Die machen das über die Gruppen, 
was auch etwas sauberer ist, naja egal. Auf jeden Fall machen die dann 
da noch extra was für die Geräte. Wie könnte ich das auf mein Kram 
portieren? Bei jeden ein/ausstecken zählt er ne Nummer hoch und ich 
vermute auch mal wenn ichs in einen anderen USB Controller stecke ist 
das Gerät in einem vollkommen anderen Ordner.
Das mit den Berechtigung ists aber auch jeden Fall, wenn ich manuell die 
Berechtigung a+rw setze gehts in Eclipse, ist aber nicht gerade die 
dauerhafte Lösung :-/

von Hc Z. (mizch)


Lesenswert?

Möglicherweise hat Dein AVRISPmkII eine andere Vendor/Pruduct-ID.  Die 
findest Du mit
1
udevadm info --attribute-walk --name=bus/usb/007/010
für Dein obiges Beispiel.  Beachte bitte, dass beim nächsten Einstecken 
die Device Node eine andere sein kann, also einfach so ermitteln wie Du 
es oben gemacht hast.  Am besten postest Du im Zweifelsfall dann den 
Ausschnitt von Beginn bis zum höchsten (letzten) Block, in dem im 
Klartext steht, dass es ein AVRISP ist, vermutlich unter ATTR{product}.

Daraus lässt sich dann eine passende udev-Rule stricken.  Interessant 
sind ATTR{idVendor} und ATTR{idProduct} -- wenn Du mehrere Device Nodes 
hast, werden die wohl trotzdem dieselben sein.  Die trägst Du dann in 
die udev-Regel ein (wobei Du das SUBSYSTEM-Element weglassen kannst). 
Sie ersetzen die (veralteten) SYSFS-Einträge.

von Fabian S. (jacky2k)


Lesenswert?

1
$ udevadm info --attribute-walk --name=bus/usb/007/012
2
3
Udevadm info starts with the device specified by the devpath and then
4
walks up the chain of parent devices. It prints for every device
5
found, all possible attributes in the udev rules key format.
6
A rule to match, can be composed by the attributes of the device
7
and the attributes from one single parent device.
8
9
  looking at device '/devices/pci0000:00/0000:00:1d.2/usb7/7-2':
10
    KERNEL=="7-2"
11
    SUBSYSTEM=="usb"
12
    DRIVER=="usb"
13
    ATTR{configuration}==""
14
    ATTR{bNumInterfaces}==" 1"
15
    ATTR{bConfigurationValue}=="1"
16
    ATTR{bmAttributes}=="c0"
17
    ATTR{bMaxPower}=="100mA"
18
    ATTR{urbnum}=="328"
19
    ATTR{idVendor}=="03eb"
20
    ATTR{idProduct}=="2104"
21
    ATTR{bcdDevice}=="0200"
22
    ATTR{bDeviceClass}=="ff"
23
    ATTR{bDeviceSubClass}=="00"
24
    ATTR{bDeviceProtocol}=="00"
25
    ATTR{bNumConfigurations}=="1"
26
    ATTR{bMaxPacketSize0}=="16"
27
    ATTR{speed}=="12"
28
    ATTR{busnum}=="7"
29
    ATTR{devnum}=="12"
30
    ATTR{version}==" 1.10"
31
    ATTR{maxchild}=="0"
32
    ATTR{quirks}=="0x0"
33
    ATTR{authorized}=="1"
34
    ATTR{manufacturer}=="ATMEL"
35
    ATTR{product}=="AVRISP mkII"
36
    ATTR{serial}=="0000B0050865"
37
38
  looking at parent device '/devices/pci0000:00/0000:00:1d.2/usb7':
39
    KERNELS=="usb7"
40
    SUBSYSTEMS=="usb"
41
    DRIVERS=="usb"
42
    ATTRS{configuration}==""
43
    ATTRS{bNumInterfaces}==" 1"
44
    ATTRS{bConfigurationValue}=="1"
45
    ATTRS{bmAttributes}=="e0"
46
    ATTRS{bMaxPower}=="  0mA"
47
    ATTRS{urbnum}=="289"
48
    ATTRS{idVendor}=="1d6b"
49
    ATTRS{idProduct}=="0001"
50
    ATTRS{bcdDevice}=="0206"
51
    ATTRS{bDeviceClass}=="09"
52
    ATTRS{bDeviceSubClass}=="00"
53
    ATTRS{bDeviceProtocol}=="00"
54
    ATTRS{bNumConfigurations}=="1"
55
    ATTRS{bMaxPacketSize0}=="64"
56
    ATTRS{speed}=="12"
57
    ATTRS{busnum}=="7"
58
    ATTRS{devnum}=="1"
59
    ATTRS{version}==" 1.10"
60
    ATTRS{maxchild}=="2"
61
    ATTRS{quirks}=="0x0"
62
    ATTRS{authorized}=="1"
63
    ATTRS{manufacturer}=="Linux 2.6.32-24-generic uhci_hcd"
64
    ATTRS{product}=="UHCI Host Controller"
65
    ATTRS{serial}=="0000:00:1d.2"
66
    ATTRS{authorized_default}=="1"
67
68
  looking at parent device '/devices/pci0000:00/0000:00:1d.2':
69
    KERNELS=="0000:00:1d.2"
70
    SUBSYSTEMS=="pci"
71
    DRIVERS=="uhci_hcd"
72
    ATTRS{vendor}=="0x8086"
73
    ATTRS{device}=="0x2832"
74
    ATTRS{subsystem_vendor}=="0x1043"
75
    ATTRS{subsystem_device}=="0x81ec"
76
    ATTRS{class}=="0x0c0300"
77
    ATTRS{irq}=="18"
78
    ATTRS{local_cpus}=="00000000,0000000f"
79
    ATTRS{local_cpulist}=="0-3"
80
    ATTRS{modalias}=="pci:v00008086d00002832sv00001043sd000081ECbc0Csc03i00"
81
    ATTRS{numa_node}=="-1"
82
    ATTRS{broken_parity_status}=="0"
83
    ATTRS{msi_bus}==""
84
85
  looking at parent device '/devices/pci0000:00':
86
    KERNELS=="pci0000:00"
87
    SUBSYSTEMS==""
88
    DRIVERS==""
Was mir da als erstes mal verdächtig vor kommt ist die Angabe 
SUBSYSTEM=="usb", stand in der Regle nicht usb_device?
idVendor und idProduct scheinen zu stimmen.

von Hc Z. (mizch)


Lesenswert?

Fabian S. schrieb:
> SUBSYSTEM=="usb", stand in der Regle nicht usb_device?

Ja.  Zur Herkunft der udev-Regel:  Ich hatte sie so noch  auf dem 
Rechner, habe aber schon länger keinen AVRISPmkII mehr (sondern den 
JTAGICE).  Sie hat also mal gestimmt, muss aber nicht mehr hinhauen.

Also versuch's mal mit
1
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2104", MODE="0666"
ATTRS statt ATTR deshalb, damit es auch auf abgeleitete Sachen triggert.

von Fabian S. (jacky2k)


Lesenswert?

Nope geht nicht :(
Werde morgen weiter forschen, bin über jeden Tipp dankbar.

von Fabian S. (jacky2k)


Lesenswert?

Noch jemand eine Idee woran das liegen könnte?

von Dirk B. (sharandac)


Lesenswert?

Salut ...

avrdude muss als root ausgeführt werden, um das zu erreichen einfach in 
das verzeichnis /usr/bin/ gehen und dort
1
ls avrdude -la

danach sollte sowas wie das hier kommen
1
-rwxr-xr-x 1 root root 243916 2010-11-14 02:48 avrdude

wichtig ist das dort root root steht, also avrdude dem user root und der 
gruppe root angehört. Wenn das so ist einfach ein
1
sudo chmod u+s avrdude

eingeben, so das avrdude bei der Ausführung root-rechte hat. Und dann 
sollte es gehen.

CA Dirk

von Fabian S. (jacky2k)


Lesenswert?

Dann kann ich ja auch gleich eclipse als root starten :-/
Wobei ich glaube das geht gar nicht, weil der sich aus gutem Grund dazu 
weigert...

von Dirk B. (sharandac)


Lesenswert?

Ja, aber genau dafür ist das u+s gedacht damit man als normaler User 
auch Programme starten kann die root-rechte brauchen. Ping ist z.b. 
eines der beliebten Programm die das so machen, sonst könnte man keinen 
ping absetzen. Außerdem läuft ja so nur avrdude mit root-rechten und 
nicht eclipse.

von Fabian S. (jacky2k)


Lesenswert?

:-/ Hast ja Recht, eine Lösung ist es, ich fände es nur sauberer wenn 
ich als Benutzer einfach Rechte an dem Device hätte. Was man ja 
scheinbar mit diesen udev Regeln regeln kann, nur klappt das bei mir 
nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.