Forum: Mikrocontroller und Digitale Elektronik Ubuntu: avrdude findet AVR-ISP Programmer an USB nicht


von Frank T. (frankatmicro)


Lesenswert?

Hallo Forum.

Ich habe avrdude aufgerufen mit dem Befehl:
1
 avrdude -c stk500 -p m128 -P usb:3 -v
Und als Ergebnis das bekommen:
1
 avrdude: usbdev_open(): did not find any (matching) USB device "usb:3"
Wie kann ich die Daten finden, die avrdude braucht, um sich per USB mit 
dem Programmer zu verbinden?

Gruß

Frank

von Walter (Gast)


Lesenswert?

was soll denn usb:3 sein,

bei mir heißt das z.B
-P /dev/ttyACM0

probier mal den befehl lsusb ob der Programmer da überhaupt aufgelistet 
ist

von Frank T. (frankatmicro)


Lesenswert?

lsusb
1
Bus 005 Device 011: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
Bus hatte auch schon mal 003, deshalb.

von Oliver S. (oliver_s)


Lesenswert?

Hallo,

beim Einstecken des Programmers wird ein neues Device angelegt. 
Warscheinlich sowas wie /dev/ttyUSBx, welches genau steht im Syslog. Das 
musst du beim avrdude-Aufruf angeben. Damit das Programmieren als 
normaler User klappt, musst du außerdem noch die udev-Regeln anpassen.

Viele Grüße
Oliver

von Frank T. (frankatmicro)


Lesenswert?

Hallo zusammen.

udevadm info --attribute-walk --name=bus/usb/005/011 brachte unter 
anderem:
1
  looking at device '/devices/pci0000:00/0000:00:08.0/0000:01:05.1/usb5/5-1':
2
    KERNEL=="5-1"
3
    SUBSYSTEM=="usb"
4
    DRIVER=="usb"
5
    ATTR{bDeviceSubClass}=="00"
6
    ATTR{bDeviceProtocol}=="00"
7
    ATTR{devpath}=="1"
8
    ATTR{idVendor}=="10c4"
9
    ATTR{speed}=="12"
10
    ATTR{bNumInterfaces}==" 1"
11
    ATTR{bConfigurationValue}=="1"
12
    ATTR{bMaxPacketSize0}=="64"
13
    ATTR{busnum}=="5"
14
    ATTR{devnum}=="11"
15
    ATTR{configuration}==""
16
    ATTR{bMaxPower}=="100mA"
17
    ATTR{authorized}=="1"
18
    ATTR{bmAttributes}=="80"
19
    ATTR{bNumConfigurations}=="1"
20
    ATTR{maxchild}=="0"
21
    ATTR{bcdDevice}=="0204"
22
    ATTR{avoid_reset_quirk}=="0"
23
    ATTR{quirks}=="0x0"
24
    ATTR{serial}=="mySmartUSBlight-0001"
25
    ATTR{version}==" 1.10"
26
    ATTR{urbnum}=="11"
27
    ATTR{ltm_capable}=="no"
28
    ATTR{manufacturer}=="Silicon Labs"
29
    ATTR{removable}=="unknown"
30
    ATTR{idProduct}=="ea60"
31
    ATTR{bDeviceClass}=="00"
32
    ATTR{product}=="myAVR - mySmartUSB light"

dieser Aufruf:
1
 avrdude -c ea60 -p t13 -P usb:/devices/pci0000:00/0000:00:08.0/0000:01:05.1/usb5/5-1

brachte dieses Ergebnis:
1
avrdude: ser_open(): can't open device "usb:/devices/pci0000:00/0000:00:08.0/0000:01:05.1/usb5/5-1": No such file or directory

udef Regeln habe ich so modifiziert:
1
SUBSYSTEM!="usb", ACTION!="add", GOTO="avrisp_end"
2
3
# Silicon Labs stk500 mySmartUSBlight
4
ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea60", MODE="660", GROUP="frank"

Aber zuerst mal geht es ja darum, avrdude beizubringen, den Programmer 
am USB zu finden.

: Bearbeitet durch User
von Oliver S. (oliver_s)


Lesenswert?

Was steht in /var/log/syslog kurz nachdem du den Programmer nochmal neu 
angestöpelt hast?

von Frank T. (frankatmicro)


Lesenswert?

1
tail -f /var/log/syslog

brachte:
1
Nov 29 21:25:42 Compi kernel: [39843.032045] usb 5-1: New USB device found, idVendor=10c4, idProduct=ea60
2
Nov 29 21:25:42 Compi kernel: [39843.032058] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
3
Nov 29 21:25:42 Compi kernel: [39843.032066] usb 5-1: Product: myAVR - mySmartUSB light
4
Nov 29 21:25:42 Compi kernel: [39843.032072] usb 5-1: Manufacturer: Silicon Labs
5
Nov 29 21:25:42 Compi kernel: [39843.032077] usb 5-1: SerialNumber: mySmartUSBlight-0001
6
Nov 29 21:25:42 Compi mtp-probe: checking bus 5, device 11: "/sys/devices/pci0000:00/0000:00:08.0/0000:01:05.1/usb5/5-1"

Wie ist denn das Format, mit dem avrdude der USB-Anschluss mitgeteilt 
wird?

von Max D. (max_d)


Lesenswert?

Ich würde mal in /dev nach einem ttyUSBx oder nach ttyACMx (x ist 
irgendeine Zahl, normalerweise 0). Und dann das als -P an avrdude geben.

von Oliver S. (oliver_s)


Lesenswert?

Das Format ist /dev/ttyUSBx oder /dev/ttyACMx. Wenn das in deinem Syslog 
etwas später nicht auftaucht hast du andere Probleme.

von Frank T. (frankatmicro)


Lesenswert?

Da kommt nur noch
1
Nov 29 22:31:55 Compi mtp-probe: bus: 5, device: 13 was not an MTP device
Was meinst du mit anderen Problemen?

von Oliver S. (oliver_s)


Lesenswert?

Solange dein Kernel den CP210x nicht als serielles Device erkennt, 
brauchst du mit avrdude gar nicht rumprobieren. Aus irgendwelchen 
Gründen versucht mtp-probe was mit deinem Programmer zu machen, was 
natürlich fehlsschlagen muss.

von Arno (Gast)


Lesenswert?

Vielleicht hilfts ja: Mein Makefile ruft avrdude einfach mit '-P usb' 
auf - allerdings mit einem avrisp2-Klon (usbprog) - nicht mit einem 
stk500.

MfG, Arno

von Frank T. (frankatmicro)


Lesenswert?

Hi Arno, ich würde mal sagen, es ist ziemlich egal, an welcher Stelle 
ein falscher Parameter mit -P übergeben wird.

@Oliver. Sagt mir nichts, was schlägst du vor?

von Frank T. (frankatmicro)


Lesenswert?

Ich hab noch mit lsusb -v ein paar Infos gefunden:
1
Bus 005 Device 013: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
2
Device Descriptor:
3
  bLength                18
4
  bDescriptorType         1
5
  bcdUSB               1.10
6
  bDeviceClass            0 (Defined at Interface level)
7
  bDeviceSubClass         0 
8
  bDeviceProtocol         0 
9
  bMaxPacketSize0        64
10
  idVendor           0x10c4 Cygnal Integrated Products, Inc.
11
  idProduct          0xea60 CP210x UART Bridge / myAVR mySmartUSB light
12
  bcdDevice            2.04
13
  iManufacturer           1 Silicon Labs
14
  iProduct                2 myAVR - mySmartUSB light
15
  iSerial                 3 mySmartUSBlight-0001
16
  bNumConfigurations      1
17
  Configuration Descriptor:
18
    bLength                 9
19
    bDescriptorType         2
20
    wTotalLength           32
21
    bNumInterfaces          1
22
    bConfigurationValue     1
23
    iConfiguration          0 
24
    bmAttributes         0x80
25
      (Bus Powered)
26
    MaxPower              100mA
27
    Interface Descriptor:
28
      bLength                 9
29
      bDescriptorType         4
30
      bInterfaceNumber        0
31
      bAlternateSetting       0
32
      bNumEndpoints           2
33
      bInterfaceClass       255 Vendor Specific Class
34
      bInterfaceSubClass      0 
35
      bInterfaceProtocol      0 
36
      iInterface              2 myAVR - mySmartUSB light
37
      Endpoint Descriptor:
38
        bLength                 7
39
        bDescriptorType         5
40
        bEndpointAddress     0x81  EP 1 IN
41
        bmAttributes            2
42
          Transfer Type            Bulk
43
          Synch Type               None
44
          Usage Type               Data
45
        wMaxPacketSize     0x0040  1x 64 bytes
46
        bInterval               0
47
      Endpoint Descriptor:
48
        bLength                 7
49
        bDescriptorType         5
50
        bEndpointAddress     0x01  EP 1 OUT
51
        bmAttributes            2
52
          Transfer Type            Bulk
53
          Synch Type               None
54
          Usage Type               Data
55
        wMaxPacketSize     0x0040  1x 64 bytes
56
        bInterval               0
57
Device Status:     0x0000
58
  (Bus Powered)
Aber was mach ich denn jetzt, um das Problem zu lösen?

von Frank T. (frankatmicro)


Lesenswert?

@Arno

Ich meinte einen momentan noch falschen Parameter, weil auf der Console 
liefert -P usb eine Fehlermeldung.

Aber schon mal gut zu wissen, wie ein funktionierender Aufruf aussieht.

Danke.

von da1l6 (Gast)


Lesenswert?

Hallo

Der CP210x mit USB ID 10c4:ea60 wird bereits seit 2006 von Linux 
unterstützt. Der Kernel-Treiber heißt naheliegenderweise auch "cp210x".

Leider hast du die mehrfach gestellte frage ob beim Anstecken eine 
Gerätedatei /dev/ttyUSB* oder /dev/ttyACM* angelegt wird immer noch 
nicht beantwortet.

Wenn dem nicht so ist, würde ich erstmal vermuten das bei deiner Ubuntu 
Installation was nicht stimmen könnte. Daher einfach mal den Programmer 
an einen anderen Linux Rechner anstecken oder den selben rechner von 
LiveCD starten und sehen ob es dort Funktioniert oder nicht.

da1l6

von JochenZ (Gast)


Lesenswert?


von Frank T. (frankatmicro)


Lesenswert?

Danke an alle.

Nach einem Kernel-Update ist der Programmer jetzt unter /dev/ttyUSB0 
ansprechbar.

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.