avrdude bzw. libusb funktioniert nur an bestimmtem USB-Anschluss

OP #5503451
Lesenswert?

Hallo,

bei meinem Linux (Debian) PC mit eHajo's aTeVaL-Board liefert avrdude 
(oder besser libusb) nur an einer USB-Buchse keinen Fehler. An den vier 
anderen USB-Buchsen erhalte ich von avrdude den Fehler:
1
avrdude: usbdev_send(): wrote 0 out of 1 bytes, err = could not detach kernel driver from interface 0: No data available
2
avrdude: stk500_send_mk2(): failed to send command to serial port
Dabei wird das aTeVal mit ATmega328 prinzipiell erkannt:
1
         Using Port                    : usb
2
         Using Programmer              : avrispmkII
3
avrdude: usbdev_open(): Found AVRISP mkII, serno: 0002002xxxxxx
4
         AVR Part                      : ATmega328

lsusb meldet vier USB-Hubs
1
$> lsusb
2
...
3
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
4
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
5
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
6
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Wenn das aTeVaL an Bus 003 angeschlossen ist, kommt die Fehlermeldung.
1
Bus 003 Device 007: ID 03eb:2104 Atmel Corp. AVR ISP mkII
Nur wenn das aTeVaL an Bus 001 angeschlossen ist, kommt keine 
Fehlermeldung
1
Bus 001 Device 007: ID 03eb:2104 Atmel Corp. AVR ISP mkII
2
...
3
~# avrdude -c avrispmkII -P usb -p m328 -v
4
...
5
         Using Port                    : usb
6
         Using Programmer              : avrispmkII
7
avrdude: usbdev_open(): Found AVRISP mkII, serno: 0002002xxxxx
8
         AVR Part                      : ATmega328
9
...
10
avrdude: AVR device initialized and ready to accept instructions
11

12
Reading | ################################################## | 100% 0.00s
13

14
avrdude: Device signature = 0x1e9514 (probably m328)
15
avrdude: safemode: hfuse reads as D9
16
avrdude: safemode: efuse reads as FF
17

18
avrdude: safemode: hfuse reads as D9
19
avrdude: safemode: efuse reads as FF
20
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
21

22
avrdude done.  Thank you.

Laut lshw ist usb1 (der ohne Fehler) ein EHCI Host Controller. usb3 (der 
mit Fehler) ist ein xHCI Host Controller
1
~# lshw -short | grep -e bus -e generic
2
/0/100/14                            bus            7 Series/C210 Series Chipset Family USB xHCI Host Controller
3
/0/100/14/0              usb3        bus            xHCI Host Controller
4
/0/100/14/1              usb4        bus            xHCI Host Controller
5
/0/100/1a                            bus            7 Series/C216 Chipset Family USB Enhanced Host Controller #2
6
/0/100/1a/1              usb1        bus            EHCI Host Controller
7
/0/100/1a/1/1                        bus            Integrated Rate Matching Hub
8
/0/100/1a/1/1/3                      generic        AVRISP mkII
9
/0/100/1d                            bus            7 Series/C216 Chipset Family USB Enhanced Host Controller #1
10
/0/100/1d/1              usb2        bus            EHCI Host Controller
Zwei der USB-Anschlüsse, die einen Fehler liefern, auf der PC-Front sind 
als USB 3.0 bezeichnet. Der eine hat "Bus 003 Device 008"
1
$> lsusb
2
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
3
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
4
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
5
Bus 003 Device 008: ID 03eb:2104 Atmel Corp. AVR ISP mkII
6
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
7
...
8
~# avrdude -c avrispmkII -P usb -p m328 -v
9
...
10
         Using Port                    : usb
11
         Using Programmer              : avrispmkII
12
avrdude: usbdev_open(): Found AVRISP mkII, serno: 0002002xxxxx
13
         AVR Part                      : ATmega328
14
...
15
avrdude: usbdev_send(): wrote 0 out of 1 bytes, err = could not detach kernel driver from interface 0: No data available
16
avrdude: stk500_send_mk2(): failed to send command to serial port
17
avrdude: AVR device initialized and ready to accept instructions
18

19
Reading | ################################################## | 100% 0.00s
20

21
avrdude: Device signature = 0x1e9514 (probably m328)
22
avrdude: usbdev_send(): wrote 0 out of 1 bytes, err = could not detach kernel driver from interface 0: No data available
23
avrdude: stk500_send_mk2(): failed to send command to serial port
24
avrdude: safemode: Verify error - unable to read lfuse properly. Programmer may not be reliable.
25
avrdude: safemode: To protect your AVR the programming will be aborted
26
avrdude: usbdev_send(): wrote 0 out of 1 bytes, err = could not detach kernel driver from interface 0: No data available
27
avrdude: stk500_send_mk2(): failed to send command to serial port

Ich habe mehrmals die USB-Buchsen gewechselt, bisher tritt der Fehler
reproduzierbar nur an der einen Buchse nicht auf.
Kann ich daraus folgern, dass avrdude (oder besser libusb) mit EHCI 
funktioniert und mit xHCI nicht? Oder hat es mit USB 1.1, 2.0 oder 3.0 
zu tun?

Noch zur Info
1
Linux deb10 4.9.0-7-amd64 #1 SMP Debian 4.9.110-1 (2018-07-05) x86_64 GNU/Linux
2
avrdude: Version 6.3
3
description: Motherboard
4
    product: B75MA-P45 (MS-7798)
5
     vendor: MSI
Der USB-Anschluss der funktioniert ist im SD-Card-Reader integriert.

Eine ähnliche Fehlermeldung wurde bereits 2006 z.B. hier beschrieben
https://lists.nongnu.org/archive/html/avrdude-dev/2006-02/msg00003.html
#5503518
Lesenswert?

Ich würde einfach mal ein Windows auf der Maschine installieren 
(notfalls auf einer anderen Platte) und dann nochmal versuchen. avrdude 
und libusb gibts auch für Windows, und das Windows brauchst Du ja nicht 
unbedingt zu aktivieren, wenn es nur zum Testen ist. 30 Tage hast Du ja 
Zeit, dafür musst Du keine Lizenz verbrauchen.

Dann weißt Du, ob es ein Linux- oder ein Hardwareproblem ist.

Die nächste Stufe wäre, einen anderen Programmer auszuprobieren. 
Vielleicht kannst Du Dir ja von irgendwem in Deiner Nähe einen anderen 
ausleihen.

Noch eine Idee: Wird der Programmer vom USB-Bus versorgt oder von einem 
externen Netzteil? Ich denke da an irgendwelche Masseschleifen.

fchk
Gast #5503526
Lesenswert?

Alexander S. schrieb:
> Karl M. schrieb:
>> wurden für das USB Device die Benutzerrechte angepasst?
>
> Ja, habe ich angepasst. Die gezeigten Tests habe ich
> vorsichtshalber als root gemacht, ich kann avrdude aber
> auch als normaler user nutzen.
>
> Marc V. schrieb:
>> Über externen USB-Hub probieren
>
> Ein Anschluss (der im SD-Card-Reader) funktioniert ja bei mir.
>
> Trotzdem Danke.

Was liefert den /var/log/syslog für Fehlermeldungen.

Wie wurden die Rechte unter /etc/udev/rules.d eingestellt?
OP #5503537
Lesenswert?

Frank K. schrieb:
> Ich würde einfach mal ein Windows auf der Maschine installieren

Windows habe ich schon seit 15 Jahren nicht mehr auf meinen
Rechnern. Selbst wenn es unter Windows funktioniert, werde ich bei
Linux bleiben.

Frank K. schrieb:
> Die nächste Stufe wäre, einen anderen Programmer auszuprobieren.

Ich habe u.a. einen originalen Atmel AVRISP Mk2. Der hat, soweit
ich mich erinnere, an den beiden Front-Buchsen, die jetzt mit dem
aTeVaL nicht funktionieren, schon mal funktioniert. Das werde
ich nochmal ausprobieren. Einen AVR Dragon hätte ich auch noch.
Das Atmel STK500 über die serielle Schnitttstelle funktioniert auch, 
aber
hier geht es um USB.

Frank K. schrieb:
> Wird der Programmer vom USB-Bus versorgt

Ja, der aTeVaL wird über USB versorgt. Auf dem ATmega328 auf dem aTeVaL
ist momentan ein LED-Blink Programm. Die LEDs blinken bei Anschluss
an alle USB-Anschlüsse.
#5503557
Lesenswert?

Alexander S. schrieb:
> Frank K. schrieb:
>> Ich würde einfach mal ein Windows auf der Maschine installieren
>
> Windows habe ich schon seit 15 Jahren nicht mehr auf meinen
> Rechnern. Selbst wenn es unter Windows funktioniert, werde ich bei
> Linux bleiben.

Darfst Du ja auch. Die Fehlersuche wird aber einfacher, wenn Du weißt, 
dass es definitiv ein Linux-Problem ist - oder eben definitiv keines. 
Das könntest Du dann dem entsprechenden Maintainer des Treibers oder dem 
eHaJo melden. Wenn sich niemand beschwert, gibts auch keine Bugfixes. 
Und wenn die Linux-Leute wissen, dass es auf der identischen Hardware 
unter Windows funktioniert aber unter Linux nicht, ist das für die auch 
eine hilfreiche Information. Dann wissen die nämlich, dass sie bei sich 
selber suchen müssen.

fchk
OP #5503558
Lesenswert?

Karl M. schrieb:
> Was liefert den /var/log/syslog für Fehlermeldungen.

Keine.

Nach anstecken an die "funktionierende" Buchse (im SD-Card-Reader):
1
Jul 29 17:27:11 deb10 kernel: [22876.575903] usb 3-2: USB disconnect, device number 8
2
Jul 29 18:05:58 deb10 kernel: [25203.042827] usb 1-1.3: new full-speed USB device number 8 using ehci-pci
3
Jul 29 18:05:58 deb10 kernel: [25203.152789] usb 1-1.3: New USB device found, idVendor=03eb, idProduct=2104
4
Jul 29 18:05:58 deb10 kernel: [25203.152792] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
5
Jul 29 18:05:58 deb10 kernel: [25203.152794] usb 1-1.3: Product: AVRISP mkII
6
Jul 29 18:05:58 deb10 kernel: [25203.152796] usb 1-1.3: Manufacturer: ATMEL
7
Jul 29 18:05:58 deb10 kernel: [25203.152798] usb 1-1.3: SerialNumber: 0002002xxxxx
und nach anstecken an eine der anderen "nicht funktionierenden" Buchsen
1
Jul 29 18:08:59 deb10 kernel: [25384.325920] usb 1-1.3: USB disconnect, device number 8
2
Jul 29 18:09:12 deb10 kernel: [25397.824091] usb 3-2: new full-speed USB device number 9 using xhci_hcd
3
Jul 29 18:09:13 deb10 kernel: [25397.965627] usb 3-2: New USB device found, idVendor=03eb, idProduct=2104
4
Jul 29 18:09:13 deb10 kernel: [25397.965630] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
5
Jul 29 18:09:13 deb10 kernel: [25397.965632] usb 3-2: Product: AVRISP mkII
6
Jul 29 18:09:13 deb10 kernel: [25397.965634] usb 3-2: Manufacturer: ATMEL
7
Jul 29 18:09:13 deb10 kernel: [25397.965636] usb 3-2: SerialNumber: 0002002xxxxx

Karl M. schrieb:
> Wie wurden die Rechte unter /etc/udev/rules.d eingestellt?
Die Tests mache ich als root.
Die udev-rule lautet
1
/etc/udev/rules.d/60-avrisp2.rules
2
SUBSYSTEM!="usb", ACTION!="add", GOTO="avrisp_end"
3

4
# Atmel Corp. AVRISP mkII
5
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="dialout" 
6

7
LABEL="avrisp_end"
8

9
~# lsusb -D /dev/bus/usb/003/009
10
Device: ID 03eb:2104 Atmel Corp. AVR ISP mkII
11
Device Descriptor:
12
  bLength                18
13
  bDescriptorType         1
14
  bcdUSB               1.10
15
  bDeviceClass          255 Vendor Specific Class
16
  bDeviceSubClass         0 
17
  bDeviceProtocol         0 
18
  bMaxPacketSize0        16
19
  idVendor           0x03eb Atmel Corp.
20
  idProduct          0x2104 AVR ISP mkII
21
  bcdDevice            2.00
22
  iManufacturer           1 ATMEL
23
  iProduct                2 AVRISP mkII
24
  iSerial                 3 0002002xxxx
25
  bNumConfigurations      1
26
...
OP #5503565
Lesenswert?

Frank K. schrieb:
>>> Ich würde einfach mal ein Windows auf der Maschine installieren

Das "einfach' meinst Du nicht wirklich ernst, oder?
Linux Platten mit SW-RAID neu partitionieren, Windows besorgen,
Windows (ohne Windows Kenntnisse) installieren, viele Tage oder
Wochen später wissen, dass es mit Win 7 funktioniert mit Win 10
aber evtl. nicht, ..., obwohl ich es nur unter Linux brauche.

Frank K. schrieb:
> Wenn sich niemand beschwert, gibts auch keine Bugfixes.
> Und wenn die Linux-Leute wissen, dass es auf der identischen Hardware
> unter Windows funktioniert aber unter Linux nicht, ist das für die auch
> eine hilfreiche Information.

Prinzipiell hast Du Recht. Bei Debian melde ich gelegentlich auch
Bugs. Und hier versuche ich, soweit mit vertretbarem Aufwand möglich,
möglichst viele Zusatzinfos zu liefern und weitere Tests zu machen.

Aber eigentlich wollte ich den ATmega auf dem aTeVaL programmieren
und kein Buch über die Unterschiede bei USB zw. Linux und Windows 
schreiben.
:-)
#5503611
Lesenswert?

Alexander S. schrieb:
> Frank K. schrieb:
>>>> Ich würde einfach mal ein Windows auf der Maschine installieren
>
> Das "einfach' meinst Du nicht wirklich ernst, oder?
> Linux Platten mit SW-RAID neu partitionieren, Windows besorgen,
> Windows (ohne Windows Kenntnisse) installieren, viele Tage oder
> Wochen später wissen, dass es mit Win 7 funktioniert mit Win 10
> aber evtl. nicht, ..., obwohl ich es nur unter Linux brauche.

Ich hätte die vorhandenen Platten abgeklemmt, eine leere angeklemmt, 
Windows drauf, libusb drauf, avrdude drauf und schauen.

Windows bekommst Du hier her:
https://www.chip.de/downloads/Windows-ISO-Downloader_95133731.html

ok, das ist jetzt ein Huhn-Ei-Problem, weil das selber ein 
Windows-Binary ist, aber irgendeinen Windows-User wirst Du ja wohl 
kennen. So selten sind die nicht. Aber Du brauchst kein Geld und keine 
Lizenz und keine Seriennummer, und dass das ganze nach 30 Tagen abläuft 
(nicht wirklich, es kommt nur eine "bitte kauf mich" Meldung, und der 
Hintergrund wird schwarz), stört dich auch nicht.

Du könntest auch ein FreeBSD nehmen, wenn Dir das sympatischer ist. 
Hauptsache etwas, wo 0% Linux drin ist.

Nur so wirst Du jemals erfahren, ob es ein Linux-Bug ist.


> Frank K. schrieb:
>> Wenn sich niemand beschwert, gibts auch keine Bugfixes.
>> Und wenn die Linux-Leute wissen, dass es auf der identischen Hardware
>> unter Windows funktioniert aber unter Linux nicht, ist das für die auch
>> eine hilfreiche Information.
>
> Prinzipiell hast Du Recht. Bei Debian melde ich gelegentlich auch
> Bugs. Und hier versuche ich, soweit mit vertretbarem Aufwand möglich,
> möglichst viele Zusatzinfos zu liefern und weitere Tests zu machen.
>
> Aber eigentlich wollte ich den ATmega auf dem aTeVaL programmieren
> und kein Buch über die Unterschiede bei USB zw. Linux und Windows
> schreiben.
> :-)

Etwas Debugging gehört halt bei freier Software dazu. Du kannst eben 
nicht deinen FAE anrufen und ein Ticket aufmachen wie bei kommerzieller 
Software.

Oder Du gibts Dich eben mit dem einen funktionierenden USB-Port 
zufrieden und schließt diesen Thread. Das geht auch.

fchk
OP #5503634
Lesenswert?

Frank K. schrieb:
> Du kannst eben
> nicht deinen FAE anrufen und ein Ticket aufmachen wie bei kommerzieller
> Software.

Da ich nicht möchte, dass das hier zum Windows vs. Linux Thread mutiert, 
schreibe ich dazu nur noch:
Einen FAE anrufen und ein Ticket aufmachen können die privaten Nutzer
mit ihren Problemen z.B. bei Atmel-Studio unter Windows 10 doch auch
nicht bzw. das würde wenig bringen.

Hier soll es jetzt um die Frage gehen, warum unter Linux scheinbar 
USB-Anschlüsse mit EHCI Controller funktionieren und mit xHCI nicht.
OP #5503704
Lesenswert?

Hallo,

mit dem Original Atmel AVRISP MkII funktioniert es scheinbar an "allen" 
USB-Anschlüssen.

Bisher war der Aufbau mit aTeVaL:
aTeVaL mit ATmega328 an USB; Spannung ATmega328 über USB und aTeVaL.
USB1 (Bus 001) kein Fehler.
USB3 (Bus 003) Fehler
1
avrdude: usbdev_send(): wrote 0 out of 1 bytes, err = could not detach kernel driver from interface 0: No data available
2
avrdude: stk500_send_mk2(): failed to send command to serial port

Jetzt neuer Aufbau mit Atmel AVRISP MkII (und STK500):
Das STK500 nutze ich nur, um einen Sockel und eine Spannung für den 
ATmega328P zu haben. Der AVRISP MkII liefert keine Spannung zur 
Versorgung. Eine serielle Verbindung an das STK500 ist nicht 
angeschlossen. Der ATmega328 wird über USB und den AVRISP MkII und den 
6-Pin ISP Header (SPROG2) auf dem STK500 angesprochen. Der Reset-Jumper 
auf dem STK500 ist offen.
1) AVRISP MkII an USB1 (Bus 001) kein Fehler
1
$> tail /var/log/syslog 
2
Jul 29 21:18:20 deb10 kernel: [36745.136080] usb 1-1.3: new full-speed USB device number 13 using ehci-pci
3
Jul 29 21:18:20 deb10 kernel: [36745.246098] usb 1-1.3: New USB device found, idVendor=03eb, idProduct=2104
4
Jul 29 21:18:20 deb10 kernel: [36745.246101] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
5
Jul 29 21:18:20 deb10 kernel: [36745.246102] usb 1-1.3: Product: AVRISP mkII
6
Jul 29 21:18:20 deb10 kernel: [36745.246103] usb 1-1.3: Manufacturer: ATMEL
7
Jul 29 21:18:20 deb10 kernel: [36745.246105] usb 1-1.3: SerialNumber: 000200xxxxx
8

9
$> avrdude -c avrispmkII -P usb -p m328p -v
10
...
11
         Using Port                    : usb
12
         Using Programmer              : avrispmkII
13
avrdude: usbdev_open(): Found AVRISP mkII, serno: 0002001xxxxxx
14
         AVR Part                      : ATmega328P
15
...
16
         Programmer Type : STK500V2
17
         Description     : Atmel AVR ISP mkII
18
         Programmer Model: AVRISP mkII
19
         Hardware Version: 1
20
         Firmware Version Master : 1.23
21
         Vtarget         : 4.9 V
22
         SCK period      : 62.12 us
23

24
avrdude: AVR device initialized and ready to accept instructions
25

26
Reading | ################################################## | 100% 0.01s
27

28
avrdude: Device signature = 0x1e950f (probably m328p)
29
avrdude: safemode: hfuse reads as D9
30
avrdude: safemode: efuse reads as FF
31

32
avrdude: safemode: hfuse reads as D9
33
avrdude: safemode: efuse reads as FF
34
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
35

36
avrdude done.  Thank you.

2) AVRISP MkII an USB3 (Bus 003) auch kein Fehler
1
$> tail /var/log/syslog 
2
Jul 29 21:19:12 deb10 kernel: [36797.743372] usb 3-2: new full-speed USB device number 11 using xhci_hcd
3
Jul 29 21:19:13 deb10 kernel: [36797.885005] usb 3-2: New USB device found, idVendor=03eb, idProduct=2104
4
Jul 29 21:19:13 deb10 kernel: [36797.885009] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
5
Jul 29 21:19:13 deb10 kernel: [36797.885011] usb 3-2: Product: AVRISP mkII
6
Jul 29 21:19:13 deb10 kernel: [36797.885013] usb 3-2: Manufacturer: ATMEL
7
Jul 29 21:19:13 deb10 kernel: [36797.885015] usb 3-2: SerialNumber: 0002001xxxxx
8

9
$> avrdude -c avrispmkII -P usb -p m328p -v
10
         Using Port                    : usb
11
         Using Programmer              : avrispmkII
12
avrdude: usbdev_open(): Found AVRISP mkII, serno: 000200xxxxxx
13
         AVR Part                      : ATmega328P
14
...
15
         Programmer Type : STK500V2
16
         Description     : Atmel AVR ISP mkII
17
         Programmer Model: AVRISP mkII
18
         Hardware Version: 1
19
         Firmware Version Master : 1.23
20
         Vtarget         : 4.9 V
21
         SCK period      : 62.12 us
22

23
avrdude: AVR device initialized and ready to accept instructions
24

25
Reading | ################################################## | 100% 0.01s
26

27
avrdude: Device signature = 0x1e950f (probably m328p)
28
avrdude: safemode: hfuse reads as D9
29
avrdude: safemode: efuse reads as FF
30

31
avrdude: safemode: hfuse reads as D9
32
avrdude: safemode: efuse reads as FF
33
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
34

35
avrdude done.  Thank you.

Demnach tritt das Problem scheinbar nur mit dem aTeVaL "clone" auf.

Hannes Jochriem von eHajo und Jörg Wunsch (avrdude) lesen hier ja ab und 
zu mit. Vielleicht kommt da noch ein Kommentar.
OP #5504439
Lesenswert?

Stefanus F. schrieb:
> Hat das Gerät von eHajo einen "richtigen" USB Chip oder emuliert er USB
> nur über gewöhnliche I/O Pins?

Hallo,

Infos zum aTeVaL-Board von eHajo gibt es hier:
   https://www.ehajo.de/bausaetze/bedrahtet/89/ateval-microchip-avr-evaluationsboard
   http://dokuwiki.ehajo.de/artikel:ateval

und zum Atmel AVRISP MkII hier:
   https://www.microchip.com/webdoc/avrispmkii/index.html

Das aTeVaL hat einen ATmega32U2 mit USB 2.0 Full-speed Device Module.
OP #5504580
Lesenswert?

Hallo,

zusätzlich zum aTeVaL von eHajo und AVRISP MkII von Atmel habe ich jetzt 
noch den AVR-ISP-Stick von eHajo getestet. Aufbau mit STK500 wie beim 
Test mit dem AVRISP MkII (s. o.), allerdings kommen die 5 V vom 
AVR-ISP-Stick.
Der AVR-ISP-Stick von eHajo funktioniert soweit auch an beiden USB 
Anschlüssen.
1. Test an USB1 (Bus 001):
1
# tail /var/log/syslog
2
Jul 30 17:09:47 deb10 kernel: [ 8265.568852] usb 3-1: USB disconnect, device number 3
3
Jul 30 17:10:41 deb10 kernel: [ 8319.654760] usb 1-1.3: new low-speed USB device number 5 using ehci-pci
4
Jul 30 17:10:41 deb10 kernel: [ 8319.768206] usb 1-1.3: New USB device found, idVendor=1781, idProduct=0c9f
5
Jul 30 17:10:41 deb10 kernel: [ 8319.768210] usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
6
Jul 30 17:10:41 deb10 kernel: [ 8319.768212] usb 1-1.3: Product: USBtinyISP
7
Jul 30 17:10:41 deb10 mtp-probe: checking bus 1, device 5: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3"
8
Jul 30 17:10:41 deb10 mtp-probe: bus: 1, device: 5 was not an MTP device
9

10
# avrdude -c usbtiny -P usb -p m328p -v
11
...
12
         Using Port                    : usb
13
         Using Programmer              : usbtiny
14
avrdude: usbdev_open(): Found USBtinyISP, bus:device: 001:005
15
         AVR Part                      : ATmega328P
16
...
17
         Programmer Type : USBtiny
18
         Description     : USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/
19
avrdude: programmer operation not supported
20

21
avrdude: Using SCK period of 10 usec
22
avrdude: AVR device initialized and ready to accept instructions
23

24
Reading | ################################################## | 100% 0.01s
25

26
avrdude: Device signature = 0x1e950f (probably m328p)
27
avrdude: safemode: hfuse reads as D9
28
avrdude: safemode: efuse reads as FF
29

30
avrdude: safemode: hfuse reads as D9
31
avrdude: safemode: efuse reads as FF
32
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
33

34
avrdude done.  Thank you.

2. Test an USB3 (Bus 003)
1
# tail /var/log/syslog
2
Jul 30 17:15:53 deb10 kernel: [ 8631.478129] usb 1-1.3: USB disconnect, device number 5
3
Jul 30 17:15:58 deb10 kernel: [ 8636.897930] usb 3-2: new low-speed USB device number 4 using xhci_hcd
4
Jul 30 17:15:59 deb10 kernel: [ 8637.041654] usb 3-2: New USB device found, idVendor=1781, idProduct=0c9f
5
Jul 30 17:15:59 deb10 kernel: [ 8637.041657] usb 3-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
6
Jul 30 17:15:59 deb10 kernel: [ 8637.041659] usb 3-2: Product: USBtinyISP
7
Jul 30 17:15:59 deb10 mtp-probe: checking bus 3, device 4: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2"
8
Jul 30 17:15:59 deb10 mtp-probe: bus: 3, device: 4 was not an MTP device
9

10
# avrdude -c usbtiny -P usb -p m328p -v
11
...
12
         Using Port                    : usb
13
         Using Programmer              : usbtiny
14
avrdude: usbdev_open(): Found USBtinyISP, bus:device: 003:004
15
         AVR Part                      : ATmega328P
16
...
17
         Programmer Type : USBtiny
18
         Description     : USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/
19
avrdude: programmer operation not supported
20

21
avrdude: Using SCK period of 10 usec
22
avrdude: AVR device initialized and ready to accept instructions
23

24
Reading | ################################################## | 100% 0.00s
25

26
avrdude: Device signature = 0x1e950f (probably m328p)
27
avrdude: safemode: hfuse reads as D9
28
avrdude: safemode: efuse reads as FF
29

30
avrdude: safemode: hfuse reads as D9
31
avrdude: safemode: efuse reads as FF
32
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
33

34
avrdude done.  Thank you.

Infos zum AVR-ISP-Stick gibt es bei eHajo unter
    https://www.ehajo.de/bausaetze/smd/79/avr-isp-stick
    http://dokuwiki.ehajo.de/bausaetze:avr-isp-stick:anleitung

Den Stick habe ich nur einige Male angeschlossen. Wie reproduzierbar das 
ist, muss sich noch zeigen. Auch habe ich noch keine hex-Dateien 
geschrieben.
OP #5506107
Lesenswert?

Hallo,

einen habe ich noch...

zusätzlich zum aTeVaL von eHajo, AVRISP MkII von Atmel und AVR-ISP-Stick 
von eHajo habe ich jetzt noch den USP-mkII, auch von eHajo, getestet.
    https://www.ehajo.de/boards/151/usp-mkii-avr-programmer
    http://dokuwiki.ehajo.de/bausaetze:usp-mkii:anleitung
Aufbau mit STK500 wie beim Test mit dem AVR-ISP-Stick (s. o.) und 5 V 
vom USP-mkII.
An USB1 (Bus 001) zeigt der USP-mkII nur sporadisch eine Fehlermeldung.
1. Test an USB1 (Bus 001):
1
# tail /var/log/syslog
2
Jul 31 22:52:41 deb10 kernel: [14167.114434] usb 1-2: new full-speed USB device number 2 using xhci_hcd
3
Jul 31 22:52:41 deb10 kernel: [14167.256018] usb 1-2: New USB device found, idVendor=03eb, idProduct=2104
4
Jul 31 22:52:41 deb10 kernel: [14167.256021] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
5
Jul 31 22:52:41 deb10 kernel: [14167.256023] usb 1-2: Product: USP mkII
6
Jul 31 22:52:41 deb10 kernel: [14167.256025] usb 1-2: Manufacturer: eHaJo
7
Jul 31 22:52:41 deb10 kernel: [14167.256027] usb 1-2: SerialNumber: 0002002xxxxx
8

9
# 1. Aufruf von avrdude (Fehlermeldung, fuse kann aber gelesen werden)
10
# avrdude -c avrispmkii -P usb -p m328p -v
11
...
12
         Using Port                    : usb
13
         Using Programmer              : avrispmkii
14
avrdude: usbdev_open(): Found USP mkII, serno: 0002002xxxxxx
15
         AVR Part                      : ATmega328P
16
...
17
         Programmer Type : STK500V2
18
         Description     : Atmel AVR ISP mkII
19
         Programmer Model: AVRISP mkII
20
         Hardware Version: 0
21
         Firmware Version Master : 1.24
22
         Vtarget         : 5.0 V
23
         SCK period      : 20.12 us
24

25
avrdude: usbdev_send(): wrote 0 out of 1 bytes, err = could not detach kernel driver from interface 0: No data available
26
avrdude: stk500_send_mk2(): failed to send command to serial port
27
avrdude: AVR device initialized and ready to accept instructions
28

29
Reading | ################################################## | 100% 0.00s
30

31
avrdude: Device signature = 0x1e950f (probably m328p)
32
avrdude: safemode: hfuse reads as D9
33
avrdude: safemode: efuse reads as FF
34

35
avrdude: safemode: hfuse reads as D9
36
avrdude: safemode: efuse reads as FF
37
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
38

39
avrdude done.  Thank you.
40

41
# 2. Aufruf von avrdude (keine Fehlermeldung)
42
# avrdude -c avrispmkii -P usb -p m328p -v
43
         Using Port                    : usb
44
         Using Programmer              : avrispmkii
45
avrdude: usbdev_open(): Found USP mkII, serno: 0002002xxxxx
46
         AVR Part                      : ATmega328P
47
...
48
         Programmer Type : STK500V2
49
         Description     : Atmel AVR ISP mkII
50
         Programmer Model: AVRISP mkII
51
         Hardware Version: 0
52
         Firmware Version Master : 1.24
53
         Vtarget         : 5.0 V
54
         SCK period      : 20.12 us
55

56
avrdude: AVR device initialized and ready to accept instructions
57

58
Reading | ################################################## | 100% 0.00s
59

60
avrdude: Device signature = 0x1e950f (probably m328p)
61
avrdude: safemode: hfuse reads as D9
62
avrdude: safemode: efuse reads as FF
63

64
avrdude: safemode: hfuse reads as D9
65
avrdude: safemode: efuse reads as FF
66
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
67

68
avrdude done.  Thank you.

2. Test an USB3 (Bus 003)
1
Jul 31 23:10:18 deb10 kernel: [15224.547542] usb 1-2: USB disconnect, device number 2
2
Jul 31 23:10:35 deb10 kernel: [15241.522801] usb 3-1.3: new full-speed USB device number 5 using ehci-pci
3
Jul 31 23:10:35 deb10 kernel: [15241.636500] usb 3-1.3: New USB device found, idVendor=03eb, idProduct=2104
4
Jul 31 23:10:35 deb10 kernel: [15241.636504] usb 3-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
5
Jul 31 23:10:35 deb10 kernel: [15241.636506] usb 3-1.3: Product: USP mkII
6
Jul 31 23:10:35 deb10 kernel: [15241.636507] usb 3-1.3: Manufacturer: eHaJo
7
Jul 31 23:10:35 deb10 kernel: [15241.636509] usb 3-1.3: SerialNumber: 0002002xxxxx
8

9
# 1. Aufruf von avrdude (kein Fehler)
10
# avrdude -c avrispmkii -P usb -p m328p -v
11
         Using Port                    : usb
12
         Using Programmer              : avrispmkii
13
avrdude: usbdev_open(): Found USP mkII, serno: 0002002xxxxx
14
         AVR Part                      : ATmega328P
15
...
16
         Programmer Type : STK500V2
17
         Description     : Atmel AVR ISP mkII
18
         Programmer Model: AVRISP mkII
19
         Hardware Version: 0
20
         Firmware Version Master : 1.24
21
         Vtarget         : 5.0 V
22
         SCK period      : 20.12 us
23

24
avrdude: AVR device initialized and ready to accept instructions
25

26
Reading | ################################################## | 100% 0.00s
27

28
avrdude: Device signature = 0x1e950f (probably m328p)
29
avrdude: safemode: hfuse reads as D9
30
avrdude: safemode: efuse reads as FF
31

32
avrdude: safemode: hfuse reads as D9
33
avrdude: safemode: efuse reads as FF
34
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
35

36
avrdude done.  Thank you.
37

38
# 2. Aufruf von avrdude (kein Fehler)
39
# avrdude -c avrispmkii -P usb -p m328p -v
40
...
41
         Using Port                    : usb
42
         Using Programmer              : avrispmkii
43
avrdude: usbdev_open(): Found USP mkII, serno: 0002002xxxxx
44
         AVR Part                      : ATmega328P
45
...
46
         Programmer Type : STK500V2
47
         Description     : Atmel AVR ISP mkII
48
         Programmer Model: AVRISP mkII
49
         Hardware Version: 0
50
         Firmware Version Master : 1.24
51
         Vtarget         : 5.0 V
52
         SCK period      : 20.12 us
53

54
avrdude: AVR device initialized and ready to accept instructions
55

56
Reading | ################################################## | 100% 0.01s
57

58
avrdude: Device signature = 0x1e950f (probably m328p)
59
avrdude: safemode: hfuse reads as D9
60
avrdude: safemode: efuse reads as FF
61

62
avrdude: safemode: hfuse reads as D9
63
avrdude: safemode: efuse reads as FF
64
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
65

66
avrdude done.  Thank you.

Sieht so aus, als ob an meinem PC das aTeVaL und der USP-mkII am USB1 
(Bus 001) in einigen Fällen einen Fehler / eine Warnung liefern und an 
USB3 (Bus 003) nicht. Der AVR-ISP-Stick und der Atmel AVRISP MkII 
scheinen an beiden USB-Anschlüssen einwandfrei zu funktionieren. 
Verallgemeinern kann man das sicher nicht, evtl. ist es ein spezielles 
Problem bei meinem USB1-Anschluss. Außerdem konnte ich die Tests nur 
wenige Male wiederholen.
OP #5507330
Lesenswert?

Hallo,

um die Tests etwas aussagekräftiger zu machen, habe ich per Bash-Skript 
für jeden USB-Programmierer und beide Arten von USB-Buchse avrdude je 
100 Mal aufgerufen. Zwischen den avrdude Aufrufen wurde mit "sleep .5" 
eine halbe Sekunde gewartet.
Zusätzlich zum Atmel AVRISP MkII, aTeVaL, AVR-ISP-Stick, USP-mkII (alle 
eHajo) habe ich noch den USBtinyISP von lady ada und den mySmartUSB MK2 
von myAVR probiert.
Die Tabelle gibt an wie oft die Meldung
1
avrdude: usbdev_send(): wrote 0 out of 1 bytes, err = could not detach kernel driver from interface 0: No data available
2
avrdude: stk500_send_mk2(): failed to send command to serial port
erschienen ist.
1
                      USB-card      USB-front
2
                      ehci-pci      xhci_hcd
3
----------------------------------------------
4
AVRISP MkII              0             0
5
AVR-ISP-Stick            0             0
6
USP-mkII                 0            48
7
aTeVaL                   0           100
8
USBtinyISP               0             0
9
mySmartUSB MK2           0             0
Die Ergebnisse gelten nur für meinen speziellen Aufbau und PC und 
sollten nicht verallgemeinert werden.
Vielleicht liegt es auch einfach an der max. Strombelastbarkeit der 
USB-Anschlüsse in der PC-Front.
Gast #5507496
Lesenswert?

> Vielleicht liegt es auch einfach an der max. Strombelastbarkeit

Bist du den sicher, dass USP-mkII und aTeVaL mehr Strom aufnehmen? Auf 
den Fotos beider Produkte sehe ich keine Bauteile, bei denen ich eine 
besonder hohe Stromaufnahme erwarten würde. Die sind doch beide 
vermutlich weit unter 100mA.

Wenn du Recht hast, müsste das Problem verschwinden, wenn du zusätzlich 
ein Netzteil anschließt. Falls das klappt, könnte folgende Erklärung 
aufschlussreich sein:

Ich habe mal gelesen, dass Polyfuses nach dem ersten Auslösen einen 
erhöhten Innenwiderstand bekommen und dass diese Dinger zum Schutz gegen 
Kurzschlüsse oft in USB Ports verbaut sind.
#5507573
Lesenswert?

Alexander S. schrieb:
> Vielleicht liegt es auch einfach an der max. Strombelastbarkeit der
> USB-Anschlüsse in der PC-Front.

Ich hatte schon sehr grafflige Front-USB in "preiswerten" Gehäusen, die 
auf dem Oszi erkenbar schlechteres Signal liefern.

Eventuell hilft ein zwischengeschalteter USB 2.0 Hub. USB high Speed hat 
ein paar HF Tricks im Ärmel.

Übrigens würde ich auch mal einfach die 5V Spannung messen - ältere 
Netzteile hatten hier öfters mal ein Problem und liefen aus der Toleranz 
raus. Beim aTeVaL Board sollte man da problemlos mit 'nem Multimeter ran 
kommen.
OP #5508339
Lesenswert?

Stefanus F. schrieb:
> Bist du den sicher, dass USP-mkII und aTeVaL mehr Strom aufnehmen?

Nein, deswegen hatte ich "vielleicht" geschrieben. :-)
Ich dachte auch eher an einen kurzen Stromimpuls beim Start und nicht an 
einen Dauerstrom.

Jim M. schrieb:
> Ich hatte schon sehr grafflige Front-USB in "preiswerten" Gehäusen, die
> auf dem Oszi erkenbar schlechteres Signal liefern.

Das will ich nicht ausschließen. Allerdings scheinen die anderen 
Programmer ja kein Problem mit dem USB-Anschluss zu haben.
OP #5508512
Lesenswert?

Stefanus F. schrieb:
> Ich habe mal gelesen, dass Polyfuses nach dem ersten Auslösen einen
> erhöhten Innenwiderstand bekommen und dass diese Dinger zum Schutz gegen
> Kurzschlüsse oft in USB Ports verbaut sind.

Das aTeVal-Board hat eine Polyfuse:
https://www.ehajo.de/bausaetze/bedrahtet/89/ateval-microchip-avr-evaluationsboard
"...eine 500mA Sicherung (selbstrückstellend) ..."
http://dokuwiki.ehajo.de/_media/bausaetze:evalboard-005.pdf

Da messe ich ca. 0,5 Ohm.
Ich kann mich aber nicht erinnern, dass die jemals ausgelöst hat.

[Edit] Widerstand nachgetragen.
#5510001
Lesenswert?

Alexander S. schrieb:
> Mit den Interna von USB habe ich mich noch nie näher beschäftigt.

Für USB 2.0 (EHCI) brauchte man immer einen Companion Controller (also 
einen USB 1.1-Controller (OHCI oder UHCI), der die langsamen 
Geschwindigkeiten konnte. Also hat ein "rmmod ehci" ausgereicht, um USB 
2.0 komplett abzuschalten - und Betriebssysteme ohne EHCI-Treiber 
konnten trotzdem USB sprechen.

Auf die gleiche Weise kriegt man auch den USB 3-Controller (xHCI) tot. 
Aber:

Jim M. schrieb:
> Der Trick dürfte für die internen USB Ports im Skylake (und folgenden)
> nicht mehr funktionieren. Ohne xHCI sind die Ports tot.

Das scheint zu stimmen. Ohne xHCI-Treiber gibt es garkein USB mehr.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren