mikrocontroller.net

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


Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht 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:
Launching /usr/bin/avrdude -pm32 -cavrisp2 -Pusb -Uflash:w:AVRHelloWorld.hex:a 
Output:
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"
avrdude execution aborted

Jemand eine Idee was das sein könnte?

Autor: Wahhhhhhh (Gast)
Datum:

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

Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hc Zimmerer (mizch)
Datum:

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

und stecke aus und ein.

Autor: Fabian S. (jacky2k)
Datum:

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

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht 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:
Nov 10 19:00:11 fabian-desktop kernel: [ 4447.501094] usb 7-2: new full speed USB device using uhci_hcd and address 3
Nov 10 19:00:12 fabian-desktop kernel: [ 4447.678132] usb 7-2: configuration #1 chosen from 1 choice

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht 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
SUBSYSTEM=="usb_device",
vom Beginn der Zeile.

Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit root klappts, mit normalem Benutzer immer noch permission errors.

Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK also hier meine Erkenntnisse:
# cd /dev/bus/usb
Programmer raus
# find > $HOME/withavr
Programmer rein
# find > $HOME/withoutavr
# diff $HOME/withavr $HOME/withoutavr
3d2
< ./007/010
# cd 007/
# ls -lah
insgesamt 0
drwxr-xr-x 2 root root       80 2010-11-10 19:35 .
drwxr-xr-x 9 root root      180 2010-11-10 18:46 ..
crw-rw-r-- 1 root root 189, 768 2010-11-10 19:16 001
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

Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht 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 :-/

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Möglicherweise hat Dein AVRISPmkII eine andere Vendor/Pruduct-ID.  Die 
findest Du mit
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.

Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
$ udevadm info --attribute-walk --name=bus/usb/007/012

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1d.2/usb7/7-2':
    KERNEL=="7-2"
    SUBSYSTEM=="usb"
    DRIVER=="usb"
    ATTR{configuration}==""
    ATTR{bNumInterfaces}==" 1"
    ATTR{bConfigurationValue}=="1"
    ATTR{bmAttributes}=="c0"
    ATTR{bMaxPower}=="100mA"
    ATTR{urbnum}=="328"
    ATTR{idVendor}=="03eb"
    ATTR{idProduct}=="2104"
    ATTR{bcdDevice}=="0200"
    ATTR{bDeviceClass}=="ff"
    ATTR{bDeviceSubClass}=="00"
    ATTR{bDeviceProtocol}=="00"
    ATTR{bNumConfigurations}=="1"
    ATTR{bMaxPacketSize0}=="16"
    ATTR{speed}=="12"
    ATTR{busnum}=="7"
    ATTR{devnum}=="12"
    ATTR{version}==" 1.10"
    ATTR{maxchild}=="0"
    ATTR{quirks}=="0x0"
    ATTR{authorized}=="1"
    ATTR{manufacturer}=="ATMEL"
    ATTR{product}=="AVRISP mkII"
    ATTR{serial}=="0000B0050865"

  looking at parent device '/devices/pci0000:00/0000:00:1d.2/usb7':
    KERNELS=="usb7"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="289"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0001"
    ATTRS{bcdDevice}=="0206"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="7"
    ATTRS{devnum}=="1"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="2"
    ATTRS{quirks}=="0x0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 2.6.32-24-generic uhci_hcd"
    ATTRS{product}=="UHCI Host Controller"
    ATTRS{serial}=="0000:00:1d.2"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.2':
    KERNELS=="0000:00:1d.2"
    SUBSYSTEMS=="pci"
    DRIVERS=="uhci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x2832"
    ATTRS{subsystem_vendor}=="0x1043"
    ATTRS{subsystem_device}=="0x81ec"
    ATTRS{class}=="0x0c0300"
    ATTRS{irq}=="18"
    ATTRS{local_cpus}=="00000000,0000000f"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{modalias}=="pci:v00008086d00002832sv00001043sd000081ECbc0Csc03i00"
    ATTRS{numa_node}=="-1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    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.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht 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
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2104", MODE="0666"
ATTRS statt ATTR deshalb, damit es auch auf abgeleitete Sachen triggert.

Autor: Fabian S. (jacky2k)
Datum:

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

Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch jemand eine Idee woran das liegen könnte?

Autor: Dirk Broßwick (sharandac)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Salut ...

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

danach sollte sowas wie das hier kommen
-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
sudo chmod u+s avrdude

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

CA Dirk

Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Dirk Broßwick (sharandac)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.