Forum: Mikrocontroller und Digitale Elektronik STM32F407 aus Arduino-IDE als DFU-Device flashen


von Florian W. (florenzw)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich versuche auf einem Generic-STM32F407-Board mit der Arduino-IDE eine 
Leuchtdiode blinken zu lassen, schaffe es aber nicht das Ding zu 
flashen.

Ubuntu 16.04 + Arduino 1.8.3 +
https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation

Ich habe keinen extra Bootloader installiert, da ich die Sache so 
verstanden habe, dass man den nur braucht, wenn man keine Lust hat das 
Board vor und nach dem Programmieren zu jumpern (BOOT0, BOOT1).

Mit BOOT0 HIGH und BOOT1 LOW zeigt lsusb das Board als DFU-Device:
Bus 003 Device 008: ID 0483:df11 STMicroelectronics STM Device in DFU 
Mode
... Board + USB funktionieren

Einstellung Arduino IDE:
Generic STM32F407V series
USB configuration: USB inactive
Upload Method: STM32duino Bootloader

Ausgabe in der Arduino-IDE:
Der Sketch verwendet 15588 Bytes (3%) des Programmspeicherplatzes. Das 
Maximum sind 514288 Bytes.
Globale Variablen verwenden 7336 Bytes (5%) des dynamischen Speichers, 
123736 Bytes für lokale Variablen verbleiben. Das Maximum sind 131072 
Bytes.
Failed to open serial device.
dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util 
release!!!
dfu-util: Cannot open DFU device 0483:df11
dfu-util: No DFU capable USB device available

dfu-util 0.8

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2014 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Waiting for /dev/ttyACM0 serial...Done

... also finden tut die IDE das DFU-Device schon, aber diese DFU suffix 
signature passt nicht.
Hat jemand eine Idee?
FlorenzW

von Timmo H. (masterfx)


Lesenswert?

Baudrate richtig eingestellt?

von Sven B. (scummos)


Lesenswert?

Timmo H. schrieb:
> Baudrate richtig eingestellt?

Hm? DFU geht doch über USB?

von Florian W. (florenzw)


Lesenswert?

Timmo H. schrieb:
> Baudrate richtig eingestellt?

Gibt keine Möglichkeit, da was zu verstellen. Board erscheint auch nicht 
als serial device in Ports. Sollte "echtes" USB sein.

von Christopher J. (christopher_j23)


Lesenswert?

Florian W. schrieb:
> dfu-util: Cannot open DFU device 0483:df11

Klingt für mich nach einem Berechtigungsproblem. udev-Rules angepasst 
bzw. temporär mal als root probiert?

von florenzw (Gast)


Lesenswert?

Christopher J. schrieb:
> Florian W. schrieb:
>> dfu-util: Cannot open DFU device 0483:df11
>
> Klingt für mich nach einem Berechtigungsproblem. udev-Rules angepasst
> bzw. temporär mal als root probiert?

Das könnte in die richtige Richtung gehen.

Noch zur Info: Mit einem Maple mini funktioniert es einwandfrei, der hat 
aber einen speziellen Bootloader drauf.

florian@messpc:~$ groups $USER
florian : florian adm uucp dialout cdrom sudo dip plugdev lpadmin 
sambashare dfu-users

Mir ist jetzt keine Gruppe mehr eingefallen, die da noch abgehen könnte.

Der erste Versuch, die Arduino-IDE als root laufen zu lassen, ist 
gescheitert, weil dann alle zusätzlich installierten Boards futsch 
waren. Da muss ich noch frickeln.

Danke Christopher J.

von Markus (Gast)


Lesenswert?

Könnte sein, dass dieses das gleiche Board ist:
Beitrag "STM32F407 Black und Arduino"

Leider wurde der Thread von einem Dauernörgler begleitet, aber das ein 
oder andere Nützliche findet sich darin:
Beitrag "Re: STM32F407 Black und Arduino"

von Markus (Gast)


Lesenswert?

Am besten nimmt man einen ST-Link für die Programmierung:
Beitrag "Re: STM32F407 Black und Arduino"

von Florian W. (florenzw)


Lesenswert?

Markus schrieb:
> Könnte sein, dass dieses das gleiche Board ist:
> Beitrag "STM32F407 Black und Arduino"

Das ist ziemlich vergleichbar, habe ich auch gesehen, die programmieren 
aber seriell.

Das Ding über einen ST-Link oder ein FTDI zu programmieren ist mit 
Sicherheit möglich und werde ich auch machen, wenn ich es über USB nicht 
hinbekomme.
Ich habe mich nur gefreut, als das Board als DFU-Device unter meinen 
USB-Geräten aufgetaucht ist, weil ich dachte, dass das der elegantere 
Weg ist. Aber scheinbar ist der doch steiniger als ich dachte :-)

von Sven B. (scummos)


Lesenswert?

Das mit den Berechtigungen ist ja auch ohne udev leicht auszuprobieren. 
Einfach mal sudo chmod 777 /dev/blabla, und wenn es dann geht eine 
entsprechende udev-Regel einrichten.

von Florian W. (florenzw)


Lesenswert?

Sven B. schrieb:
> Einfach mal sudo chmod 777 /dev/blabla

Ich finde unter dev keine DFU-Schnittstelle. :-(

von Harry L. (mysth)


Lesenswert?

Eben mal getestet mit dem selben Board.
Ist definitiv ein Rechte-Problem.
Mit sudo geht das.
1
harry@hl-blue:~/Labor/workspace/ARM/F4Matrix/Debug$ sudo dfu-util -a 0 -D F4Matrix.bin -s 0x08000000
2
dfu-util 0.9
3
4
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
5
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
6
This program is Free Software and has ABSOLUTELY NO WARRANTY
7
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
8
9
dfu-util: Invalid DFU suffix signature
10
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
11
Opening DFU capable USB device...
12
ID 0483:df11
13
Run-time device DFU version 011a
14
Claiming USB DFU Interface...
15
Setting Alternate Setting #0 ...
16
Determining device status: state = dfuIDLE, status = 0
17
dfuIDLE, continuing
18
DFU mode device DFU version 011a
19
Device returned transfer size 2048
20
DfuSe interface name: "Internal Flash  "
21
Downloading to address = 0x08000000, size = 29980
22
Download        [=========================] 100%        29980 bytes
23
Download done.
24
File downloaded successfully
25
harry@hl-blue:~/Labor/workspace/ARM/F4Matrix/Debug$

von Harry L. (mysth)


Lesenswert?

Und hier die Anleitung für eine passende UDEV-Rule:
https://github.com/redbear/Duo/blob/master/docs/dfu-util_installation_guide.md

PID und VID muß man natürlich anpassen:
1
ATTRS{idProduct}=="df11", ATTRS{idVendor}=="483", MODE="664", GROUP="plugdev"

Um das auch ohne Neustart wirksam werden zu lassen:
1
sudo service udev restart

: Bearbeitet durch User
von FlorenzW (Gast)


Lesenswert?

Harry L. schrieb:
> Und hier die Anleitung für eine passende UDEV-Rule:
> https://github.com/redbear/Duo/blob/master/docs/dfu-util_installation_guide.md
>
> PID und VID muß man natürlich anpassen:
> ATTRS{idProduct}=="df11", ATTRS{idVendor}=="483", MODE="664",
> GROUP="plugdev"

habe ich nochmal gechecked, passt, funktioniert trotzdem nicht.
Funktioniert es bei dir auch ohne sudo?

Ich habe jetzt in der Arduino-IDE als root alles nachinstalliert.
Ergebnis:
No DFU capable USB device found

Hab's unter Windows probiert, geht auch nicht.

Habe versucht das Board über einen FTDI seriell zu flashen, musste aber 
feststellen, dass dieser Weg für STM32F407 in der Arduino-IDE mit dem 
Zusatz von Roger Clark nicht vorgesehen ist. Geht nur mit den kleineren 
STM32.

-> Ich bestell mir jetzt einen ST-Link-Dongle

von Harry L. (mysth)


Lesenswert?

FlorenzW schrieb:
> habe ich nochmal gechecked, passt, funktioniert trotzdem nicht.
> Funktioniert es bei dir auch ohne sudo?

Ja, funktioniert problemlos.

Wenn das bei dir nicht geht, hast du irgendetwas aus der Anleitung nicht 
korrekt ungesetzt.
Du must auf jeden Fall auch Mitglied der gruppe plugdev sein.

von FlorenzW (Gast)


Lesenswert?

Bin Mitglied in plugdev:
florian@messpc:~$ groups $USER
florian : florian adm uucp dialout cdrom sudo dip plugdev lpadmin 
sambashare dfu-users

Die UDEV rule it genau wie beschrieben in 
/etc/udev/rules.d/77-mm-usb-device-blacklist.rules, vendor-ID und 
product-ID passen auch.

Zwei Unterschiede sehe ich zu  deinem Versuch:

Die Arduino-IDE verwendet ein dfu-util, das aus:
https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation
stammt, ist also nicht installiert.
Zu finden in:
/home/florian/Arduino/hardware/Arduino_STM32/tools/linux/dfu-util

Du hast die Version 0.9, ich 0.8.

Ich werde jetzt mal versuchen mir eine Version 0.9 zu kompilieren und 
die Binaries austauschen.

von Johannes S. (Gast)


Lesenswert?

Auf der SourceForge Seite sind doch binaries für die V 0.9?

von FlorenzW (Gast)


Angehängte Dateien:

Lesenswert?

Johannes S. schrieb:
> Auf der SourceForge Seite sind doch binaries für die V 0.9?
Das werde ich mir gleich mal anschauen.

Kleines Erfolgserlebnis: Über einen USB-Seriell-Adapter hat das 
Programmieren jetzt funktioniert, die LED blink!

Vorgehen:
Arduino-core von danieleff in Arduino/hardware kopiert
https://github.com/danieleff/STM32GENERIC

Einen (vermutlich gefälschten) FTDI-USB-Seriell-Adapter (auf 3,3V 
umgestellt) an das Board angeschlossen:
FTDI             STM32f407
GND  ->          GND
VCC  ->          3.3V
TX   -> 1kOhm -> PA10
RX   -> 1kOhm -> PA9
(Die 1kOhm-Rs sind nur zur Sicherheit, man weiß ja nie :-)
An PC8 hängt über 1kOhm eine LED.

Board Black F407VE/ZE/ZG ausgewählt.
Specific Board F407VE (V2.0)
Upload Method: Serial UART1
BOOT0: HIGH, BOT1: LOW

Im Blink-Example aus den Beispielen LED_BUILTIN gegen PC8 ausgetauscht 
und auf den Hochladen-Pfeil geklickt.

von Florian W. (florenzw)


Lesenswert?

Johannes S. schrieb:
> Auf der SourceForge Seite sind doch binaries für die V 0.9?

Binaries gibt's nur bis 0.8. Warum auch immer.

von Harry L. (mysth)


Lesenswert?

FlorenzW schrieb:
> Ich werde jetzt mal versuchen mir eine Version 0.9 zu kompilieren und
> die Binaries austauschen.

Wenn du mit Ubuntu arbeitest, kannst du die aus dem Repository 
installieren.
1
sudo apt-get install dfu-util

: Bearbeitet durch User
von Florian W. (florenzw)


Lesenswert?

Harry L. schrieb:
> Wenn du mit Ubuntu arbeitest, kannst du die aus dem Repository
> installieren.

Ist auch Version 0.8.

Habe jetzt erfolgreich eine Version 0.9 kompiliert und das Binary 
ausgetauscht. Keine Änderung zu Version 0.8, alles exakt gleich (bis auf 
die Versionsangabe)

von FlorenzW (Gast)


Lesenswert?

Es geht voran:
Nachdem der Upload des kompilierten Programms direkt aus der Arduino-IDE 
abgebrochen ist, da No DFU capable USB device available, habe ich die 
Blink.ino.bin-Datei aus /tmp/arduino_build_xxxxxx gefischt und nach 
Methode Harry L. hochgeladen:
sudo dfu-util -a 0 -D Blink.ino.bin -s 0x08000000
Und es hat funktioniert!!!

Wenn ich es ohne sudo probiere habe ich wieder:
dfu-util: Cannot open DFU device 0483:df11
dfu-util: No DFU capable USB device available

Hiermit ist eindeutig bewiesen: Ein rechte-Problem.

Bloß welches Recht? Bin total ratlos.

von Sven B. (scummos)


Lesenswert?

strace -f dfu-util -a 0 -D Blink.ino.bin -s 0x08000000 2>&1 |grep EACCES

von FlorenzW (Gast)


Lesenswert?

strace -f dfu-util -a 0 -D Blink.ino.bin -s 0x08000000 2>&1 |grep EACCES
[pid 25384] open("/dev/bus/usb/003/019", O_RDWR) = -1 EACCES (Permission 
denied)

Was bedeutet das?

von Sven B. (scummos)


Lesenswert?

FlorenzW schrieb:
> strace -f dfu-util -a 0 -D Blink.ino.bin -s 0x08000000 2>&1 |grep EACCES
> [pid 25384] open("/dev/bus/usb/003/019", O_RDWR) = -1 EACCES (Permission
> denied)
>
> Was bedeutet das?

Das ist die Gerätedatei, die es nicht öffnen kann weil es dazu keine 
Rechte hat. Jetzt ist noch die Frage, warum deine udev-Regel die nicht 
matcht. Wie sieht die denn aus? Wo liegt sie? udev neu gestartet?

Du kannst auch mal lsusb -s 003:019 -v machen, dann kriegst du zum 
Beispiel die Vendor ID und die Device ID für das Gerät. Da dann auch mal 
vergleichen ob die mit der übereinstimmt die in der udev-Regel steht.

von Harry L. (mysth)


Lesenswert?

dann hast du bei der UDEV-Rule irgendwo Mist gebaut.
Anders ist das nicht erklärbar.

von FlorenzW (Gast)


Lesenswert?

Entsprechend:
https://github.com/redbear/Duo/blob/master/docs/dfu-util_installation_guide.md
habe ich in der Konsole:
sudo nano /etc/udev/rules.d/77-mm-usb-device-blacklist.rules
eingegeben.
Diese Datei gab es zu diesem Zeitpunkt nicht.
In diese Datei habe ich diese Zeile geschrieben und gespeichert:
ATTRS{idProduct}=="df11", ATTRS{idVendor}=="483", MODE="664", 
GROUP="plugdev"

Anschließend:
sudo service udev restart
Nachdem das nicht funktioniert hat, den PC neu gestartet.

lsusb -s 003:019 -v
Bus 003 Device 019: ID 0483:df11 STMicroelectronics STM Device in DFU 
Mode
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0483 STMicroelectronics
  idProduct          0xdf11 STM Device in DFU Mode
  bcdDevice           22.00
  iManufacturer           1
  iProduct                2
  iSerial                 3
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           54
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       254 Application Specific Interface
      bInterfaceSubClass      1 Device Firmware Update
      bInterfaceProtocol      2
      iInterface              4
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       1
      bNumEndpoints           0
      bInterfaceClass       254 Application Specific Interface
      bInterfaceSubClass      1 Device Firmware Update
      bInterfaceProtocol      2
      iInterface              5
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       2
      bNumEndpoints           0
      bInterfaceClass       254 Application Specific Interface
      bInterfaceSubClass      1 Device Firmware Update
      bInterfaceProtocol      2
      iInterface              6
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       3
      bNumEndpoints           0
      bInterfaceClass       254 Application Specific Interface
      bInterfaceSubClass      1 Device Firmware Update
      bInterfaceProtocol      2
      iInterface              7
      Device Firmware Upgrade Interface Descriptor:
        bLength                             9
        bDescriptorType                    33
        bmAttributes                       11
          Will Detach
          Manifestation Intolerant
          Upload Supported
          Download Supported
        wDetachTimeout                    255 milliseconds
        wTransferSize                    2048 bytes
        bcdDFUVersion                   1.1a

von Harry L. (mysth)


Lesenswert?

FlorenzW schrieb:
> In diese Datei habe ich diese Zeile geschrieben und gespeichert:
> ATTRS{idProduct}=="df11", ATTRS{idVendor}=="483", MODE="664",
> GROUP="plugdev"

Hoffentlich aber wirklich als Einzeiler!
Das GROUP="plugdev" gehört an das Ende dieser Zeile und keinesfalls! in 
die 2. Zeile.

von FlorenzW (Gast)


Angehängte Dateien:

Lesenswert?

Harry L. schrieb:
> Hoffentlich aber wirklich als Einzeiler!

Hab's nochmal kontrolliert, steht definitiv in einer einzigen Zeile.

von Harry L. (mysth)


Lesenswert?

Und das CR am Ende der zeile auch nicht vergessen?

von Florian W. (florenzw)


Lesenswert?

Habe den PC neu gestartet, keine Änderung.

Harry L. schrieb:
> Und das CR am Ende der zeile auch nicht vergessen?

Hab's kontrolliert, da ist ein Return am Ende der Zeile.
Zur Sicherheit habe ich noch ein zweites reingemacht und UDEV neu 
gestartet.
Keine Änderung.

von Harry L. (mysth)


Angehängte Dateien:

Lesenswert?

Florian W. schrieb:
> Hab's kontrolliert, da ist ein Return am Ende der Zeile.
> Zur Sicherheit habe ich noch ein zweites reingemacht und UDEV neu
> gestartet.
> Keine Änderung.

Kurios...

Welche Ubuntu-Version verwendest du?

Ich hab meine Datei mal angehängt.

von Florian W. (florenzw)


Lesenswert?

Hier läuft ein Ubuntu 16.04 LTS.
Ich werde in den nächsten Tagen einen anderen Computer mit einem 
frischen Ubuntu aufsetzen und die Sache auf dem ausprobieren.
Vielleicht ist die Installation partiell zerschossen.
Auf alle Fälle Danke an alle!

von Sven B. (scummos)


Lesenswert?

Mach mal

udevadm monitor

Dann steck das Gerät ein, und dann schau nach der Device-URI, und dann 
versuch

udevadm test /devices/pci0000:00/0000:00:14.0/usb1/1-1

oder so ähnlich. Das sollte dir sagen welche Rules es anwendet und 
woher.

von Harry L. (mysth)


Lesenswert?

Wenn UDEV kaputt wäre, hättest du noch ganz andere Probleme.

Das muß ein Layer8-Problem sein.

von FlorenzW (Gast)


Lesenswert?

florian@messpc:~$ udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[7300.093528] add 
/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2 (usb)
KERNEL[7300.094096] add 
/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2/3-4.2:1.0 (usb)
UDEV  [7300.096616] add 
/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2 (usb)
UDEV  [7300.098881] add 
/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2/3-4.2:1.0 (usb)
1
udevadm test /devices/pci0000:00/0000:00:14.0/usb3/3-4/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2/3-4.2:1.0
2
calling: test
3
version 229
4
This program is for debugging only, it does not run any program
5
specified by a RUN key. It may show incorrect results, because
6
some values may be different, or not available at a simulation run.
7
8
=== trie on-disk ===
9
tool version:          229
10
file size:         7064122 bytes
11
header size             80 bytes
12
strings            1764282 bytes
13
nodes              5299760 bytes
14
Load module index
15
timestamp of '/etc/systemd/network' changed
16
timestamp of '/lib/systemd/network' changed
17
Parsed configuration file /lib/systemd/network/99-default.link
18
Created link configuration context.
19
timestamp of '/etc/udev/rules.d' changed
20
Skipping overridden file: /lib/udev/rules.d/77-mm-usb-device-blacklist.rules.
21
Reading rules file: /lib/udev/rules.d/39-usbmuxd.rules
22
Reading rules file: /lib/udev/rules.d/40-crda.rules
23
Reading rules file: /lib/udev/rules.d/40-usb-media-players.rules
24
Reading rules file: /lib/udev/rules.d/40-usb_modeswitch.rules
25
Reading rules file: /lib/udev/rules.d/40-vm-hotadd.rules
26
Reading rules file: /etc/udev/rules.d/45-maple.rules
27
Reading rules file: /etc/udev/rules.d/49-stlinkv1.rules
28
Reading rules file: /etc/udev/rules.d/49-stlinkv2-1.rules
29
Reading rules file: /etc/udev/rules.d/49-stlinkv2.rules
30
Reading rules file: /lib/udev/rules.d/50-apport.rules
31
Reading rules file: /lib/udev/rules.d/50-bluetooth-hci-auto-poweron.rules
32
Reading rules file: /lib/udev/rules.d/50-firmware.rules
33
Reading rules file: /lib/udev/rules.d/50-udev-default.rules
34
Reading rules file: /lib/udev/rules.d/56-hpmud.rules
35
Reading rules file: /lib/udev/rules.d/59-hamlib.rules
36
Reading rules file: /lib/udev/rules.d/60-avrdude.rules
37
Reading rules file: /lib/udev/rules.d/60-block.rules
38
Reading rules file: /lib/udev/rules.d/60-cdrom_id.rules
39
Reading rules file: /lib/udev/rules.d/60-drm.rules
40
Reading rules file: /lib/udev/rules.d/60-evdev.rules
41
Reading rules file: /lib/udev/rules.d/60-gnupg.rules
42
Reading rules file: /lib/udev/rules.d/60-gnupg2.rules
43
Reading rules file: /lib/udev/rules.d/60-gr-fcdproplus.rules
44
Reading rules file: /lib/udev/rules.d/60-inputattach.rules
45
Reading rules file: /lib/udev/rules.d/60-libairspy0.rules
46
Reading rules file: /lib/udev/rules.d/60-libairspyhf0.rules
47
Reading rules file: /lib/udev/rules.d/60-libgnuradio-fcd3.7.10.rules
48
Reading rules file: /lib/udev/rules.d/60-libgphoto2-6.rules
49
Reading rules file: /lib/udev/rules.d/60-libhackrf0.rules
50
Reading rules file: /lib/udev/rules.d/60-libiio0.rules
51
Reading rules file: /lib/udev/rules.d/60-libmirisdr0.rules
52
Reading rules file: /lib/udev/rules.d/60-libosmosdr0.rules
53
Reading rules file: /lib/udev/rules.d/60-librtlsdr0.rules
54
Reading rules file: /lib/udev/rules.d/60-libsane.rules
55
Reading rules file: /lib/udev/rules.d/60-pcmcia.rules
56
Reading rules file: /lib/udev/rules.d/60-persistent-alsa.rules
57
Reading rules file: /lib/udev/rules.d/60-persistent-input.rules
58
Reading rules file: /lib/udev/rules.d/60-persistent-storage-tape.rules
59
Reading rules file: /lib/udev/rules.d/60-persistent-storage.rules
60
Reading rules file: /lib/udev/rules.d/60-persistent-v4l.rules
61
Reading rules file: /lib/udev/rules.d/60-serial.rules
62
Reading rules file: /lib/udev/rules.d/60-uhd-host.rules
63
Reading rules file: /lib/udev/rules.d/60-xdiagnose.rules
64
Reading rules file: /lib/udev/rules.d/61-gnome-bluetooth-rfkill.rules
65
Reading rules file: /lib/udev/rules.d/61-persistent-storage-android.rules
66
Reading rules file: /lib/udev/rules.d/64-btrfs.rules
67
Reading rules file: /lib/udev/rules.d/64-limesuite.rules
68
Reading rules file: /lib/udev/rules.d/64-xorg-xkb.rules
69
Reading rules file: /lib/udev/rules.d/65-libwacom.rules
70
Reading rules file: /lib/udev/rules.d/66-snapd-autoimport.rules
71
Reading rules file: /lib/udev/rules.d/66-xorg-synaptics-quirks.rules
72
Reading rules file: /lib/udev/rules.d/69-cd-sensors.rules
73
Reading rules file: /lib/udev/rules.d/69-libmtp.rules
74
Reading rules file: /lib/udev/rules.d/69-wacom.rules
75
Reading rules file: /lib/udev/rules.d/69-xorg-vmmouse.rules
76
Reading rules file: /lib/udev/rules.d/70-debian-uaccess.rules
77
Reading rules file: /lib/udev/rules.d/70-mouse.rules
78
Reading rules file: /lib/udev/rules.d/70-power-switch.rules
79
Reading rules file: /lib/udev/rules.d/70-printers.rules
80
Reading rules file: /lib/udev/rules.d/70-resolvconf-initramfs-copy.rules
81
Reading rules file: /etc/udev/rules.d/70-snap.core.rules
82
Reading rules file: /etc/udev/rules.d/70-snap.meshlab-mardy.rules
83
Reading rules file: /etc/udev/rules.d/70-snap.meshlab.rules
84
Reading rules file: /lib/udev/rules.d/70-uaccess.rules
85
Reading rules file: /lib/udev/rules.d/71-power-switch-proliant.rules
86
Reading rules file: /lib/udev/rules.d/71-seat.rules
87
Reading rules file: /lib/udev/rules.d/71-u-d-c-gpu-detection.rules
88
Reading rules file: /lib/udev/rules.d/73-seat-late.rules
89
Reading rules file: /lib/udev/rules.d/73-special-net-names.rules
90
Reading rules file: /lib/udev/rules.d/73-usb-net-by-mac.rules
91
Reading rules file: /lib/udev/rules.d/75-net-description.rules
92
Reading rules file: /lib/udev/rules.d/75-probe_mtd.rules
93
Reading rules file: /lib/udev/rules.d/77-mm-cinterion-port-types.rules
94
Reading rules file: /lib/udev/rules.d/77-mm-dell-port-types.rules
95
Reading rules file: /lib/udev/rules.d/77-mm-ericsson-mbm.rules
96
Reading rules file: /lib/udev/rules.d/77-mm-haier-port-types.rules
97
Reading rules file: /lib/udev/rules.d/77-mm-huawei-net-port-types.rules
98
Reading rules file: /lib/udev/rules.d/77-mm-longcheer-port-types.rules
99
Reading rules file: /lib/udev/rules.d/77-mm-mtk-port-types.rules
100
Reading rules file: /lib/udev/rules.d/77-mm-nokia-port-types.rules
101
Reading rules file: /lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules
102
Reading rules file: /lib/udev/rules.d/77-mm-platform-serial-whitelist.rules
103
Reading rules file: /lib/udev/rules.d/77-mm-qdl-device-blacklist.rules
104
Reading rules file: /lib/udev/rules.d/77-mm-simtech-port-types.rules
105
Reading rules file: /lib/udev/rules.d/77-mm-telit-port-types.rules
106
Reading rules file: /etc/udev/rules.d/77-mm-usb-device-blacklist.rules
107
Reading rules file: /lib/udev/rules.d/77-mm-usb-serial-adapters-greylist.rules
108
Reading rules file: /lib/udev/rules.d/77-mm-x22x-port-types.rules
109
Reading rules file: /lib/udev/rules.d/77-mm-zte-port-types.rules
110
Reading rules file: /lib/udev/rules.d/78-graphics-card.rules
111
Reading rules file: /lib/udev/rules.d/78-sound-card.rules
112
Reading rules file: /lib/udev/rules.d/80-debian-compat.rules
113
Reading rules file: /lib/udev/rules.d/80-drivers.rules
114
Reading rules file: /lib/udev/rules.d/80-ifupdown.rules
115
Reading rules file: /lib/udev/rules.d/80-libinput-device-groups.rules
116
Reading rules file: /lib/udev/rules.d/80-mm-candidate.rules
117
Reading rules file: /lib/udev/rules.d/80-net-setup-link.rules
118
Reading rules file: /lib/udev/rules.d/80-udisks2.rules
119
Reading rules file: /lib/udev/rules.d/84-nm-drivers.rules
120
Reading rules file: /lib/udev/rules.d/85-brltty.rules
121
Reading rules file: /lib/udev/rules.d/85-hdparm.rules
122
Reading rules file: /lib/udev/rules.d/85-hplj10xx.rules
123
Reading rules file: /lib/udev/rules.d/85-keyboard-configuration.rules
124
Reading rules file: /lib/udev/rules.d/85-nm-unmanaged.rules
125
Reading rules file: /lib/udev/rules.d/85-regulatory.rules
126
Reading rules file: /lib/udev/rules.d/88-nuand.rules
127
Reading rules file: /lib/udev/rules.d/90-alsa-restore.rules
128
Reading rules file: /lib/udev/rules.d/90-comedi.rules
129
Reading rules file: /lib/udev/rules.d/90-fwupd-devices.rules
130
Reading rules file: /lib/udev/rules.d/90-libgpod.rules
131
Reading rules file: /lib/udev/rules.d/90-libinput-model-quirks.rules
132
Reading rules file: /lib/udev/rules.d/90-pulseaudio.rules
133
Reading rules file: /lib/udev/rules.d/95-cd-devices.rules
134
Reading rules file: /lib/udev/rules.d/95-upower-csr.rules
135
Reading rules file: /lib/udev/rules.d/95-upower-hid.rules
136
Reading rules file: /lib/udev/rules.d/95-upower-wup.rules
137
Reading rules file: /lib/udev/rules.d/97-hid2hci.rules
138
Reading rules file: /etc/udev/rules.d/99-jlink.rules
139
Reading rules file: /lib/udev/rules.d/99-systemd.rules
140
rules contain 393216 bytes tokens (32768 * 12 bytes), 37934 bytes strings
141
30741 strings (256204 bytes), 26965 de-duplicated (222047 bytes), 3777 trie nodes used
142
unable to open device '/sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2/3-4.2:1.0'
143
Unload module index
144
Unloaded link configuration context.

von FlorenzW (Gast)


Lesenswert?

Da steht's:
Skipping overridden file: 
/lib/udev/rules.d/77-mm-usb-device-blacklist.rules.

von Harry L. (mysth)


Lesenswert?

FlorenzW schrieb:
> Da steht's:
> Skipping overridden file:
> /lib/udev/rules.d/77-mm-usb-device-blacklist.rules.

Deutet darauf hin, daß es eine weitere Rule gibt, die sich auf das selbe 
Device bezieht...

: Bearbeitet durch User
von Sven B. (scummos)


Lesenswert?

Das ist, weil es dieselbe Datei in /lib und in /etc gibt. Warum hast du 
den Namen so komisch gewählt, wieso nicht 99-mydevice.rules oder sowas?

von Sven B. (scummos)


Lesenswert?

Und ich glaube du hast die URI zweimal aneinander gehängt, deshalb gibts 
nicht mehr sinnvolle Infos ...

Ich denke außerdem, dass das Gerät noch eingesteckt sein sollte, wenn du 
udevadm test ausführst ...

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

Sven B. schrieb:
> Warum hast du
> den Namen so komisch gewählt, wieso nicht 99-mydevice.rules oder sowas?

Das ist einfach aus dem howto aus Github übernommen.
Ich muß gestehen, daß ich da auch nicht weiter drüber nachgedacht hab.
Bei mir gabs allerdings auch keine Konflikte.

von Florian W. (florenzw)


Lesenswert?

Super Sache! Ich kann leider heute nicht weitermachen. Melde mich!

von FlorenzW (Gast)


Angehängte Dateien:

Lesenswert?

...zu früh gefreut...
Jetzt habe ich die Datei 
/etc/udev/rules.d/77-mm-usb-device-blacklist.rules gelöscht, außer 
meiner eigenen Zeile ist da nichts drin gestanden.

Ich habe mit sudo nano /etc/udev/rules.d/99-stm407.rules mit diesem 
Inhalt angelegt:
ATTRS{idProduct}=="df11", ATTRS{idVendor}=="483", MODE="664", 
GROUP="plugdev"
(alles in einer Zeile, Return am Ende) und den Rechner neu gestartet.

Ergebnis:
dfu-util: Cannot open DFU device 0483:df11
dfu-util: No DFU capable USB device available

Mit sudo funktionierts.

florian@messpc:~$ lsusb
...
Bus 003 Device 009: ID 0483:df11 STMicroelectronics STM Device in DFU 
Mode

florian@messpc:~$ udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[1352.557548] add 
/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2 (usb)
KERNEL[1352.560624] add 
/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2/3-4.2:1.0 (usb)
UDEV  [1352.563824] add 
/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2 (usb)
UDEV  [1352.572891] add 
/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2/3-4.2:1.0 (usb)

florian@messpc:~$ udevadm test 
/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2
calling: test
version 229
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

=== trie on-disk ===
tool version:          229
file size:         7064122 bytes
header size             80 bytes
strings            1764282 bytes
nodes              5299760 bytes
Load module index
timestamp of '/etc/systemd/network' changed
timestamp of '/lib/systemd/network' changed
Parsed configuration file /lib/systemd/network/99-default.link
Created link configuration context.
timestamp of '/etc/udev/rules.d' changed
Reading rules file: /lib/udev/rules.d/39-usbmuxd.rules
Reading rules file: /lib/udev/rules.d/40-crda.rules
Reading rules file: /lib/udev/rules.d/40-usb-media-players.rules
Reading rules file: /lib/udev/rules.d/40-usb_modeswitch.rules
Reading rules file: /lib/udev/rules.d/40-vm-hotadd.rules
Reading rules file: /etc/udev/rules.d/45-maple.rules
Reading rules file: /etc/udev/rules.d/49-stlinkv1.rules
Reading rules file: /etc/udev/rules.d/49-stlinkv2-1.rules
Reading rules file: /etc/udev/rules.d/49-stlinkv2.rules
Reading rules file: /lib/udev/rules.d/50-apport.rules
Reading rules file: 
/lib/udev/rules.d/50-bluetooth-hci-auto-poweron.rules
Reading rules file: /lib/udev/rules.d/50-firmware.rules
Reading rules file: /lib/udev/rules.d/50-udev-default.rules
Reading rules file: /lib/udev/rules.d/56-hpmud.rules
Reading rules file: /lib/udev/rules.d/59-hamlib.rules
Reading rules file: /lib/udev/rules.d/60-avrdude.rules
Reading rules file: /lib/udev/rules.d/60-block.rules
Reading rules file: /lib/udev/rules.d/60-cdrom_id.rules
Reading rules file: /lib/udev/rules.d/60-drm.rules
Reading rules file: /lib/udev/rules.d/60-evdev.rules
Reading rules file: /lib/udev/rules.d/60-gnupg.rules
Reading rules file: /lib/udev/rules.d/60-gnupg2.rules
Reading rules file: /lib/udev/rules.d/60-gr-fcdproplus.rules
Reading rules file: /lib/udev/rules.d/60-inputattach.rules
Reading rules file: /lib/udev/rules.d/60-libairspy0.rules
Reading rules file: /lib/udev/rules.d/60-libairspyhf0.rules
Reading rules file: /lib/udev/rules.d/60-libgnuradio-fcd3.7.10.rules
Reading rules file: /lib/udev/rules.d/60-libgphoto2-6.rules
Reading rules file: /lib/udev/rules.d/60-libhackrf0.rules
Reading rules file: /lib/udev/rules.d/60-libiio0.rules
Reading rules file: /lib/udev/rules.d/60-libmirisdr0.rules
Reading rules file: /lib/udev/rules.d/60-libosmosdr0.rules
Reading rules file: /lib/udev/rules.d/60-librtlsdr0.rules
Reading rules file: /lib/udev/rules.d/60-libsane.rules
Reading rules file: /lib/udev/rules.d/60-pcmcia.rules
Reading rules file: /lib/udev/rules.d/60-persistent-alsa.rules
Reading rules file: /lib/udev/rules.d/60-persistent-input.rules
Reading rules file: /lib/udev/rules.d/60-persistent-storage-tape.rules
Reading rules file: /lib/udev/rules.d/60-persistent-storage.rules
Reading rules file: /lib/udev/rules.d/60-persistent-v4l.rules
Reading rules file: /lib/udev/rules.d/60-serial.rules
Reading rules file: /lib/udev/rules.d/60-uhd-host.rules
Reading rules file: /lib/udev/rules.d/60-xdiagnose.rules
Reading rules file: /lib/udev/rules.d/61-gnome-bluetooth-rfkill.rules
Reading rules file: 
/lib/udev/rules.d/61-persistent-storage-android.rules
Reading rules file: /lib/udev/rules.d/64-btrfs.rules
Reading rules file: /lib/udev/rules.d/64-limesuite.rules
Reading rules file: /lib/udev/rules.d/64-xorg-xkb.rules
Reading rules file: /lib/udev/rules.d/65-libwacom.rules
Reading rules file: /lib/udev/rules.d/66-snapd-autoimport.rules
Reading rules file: /lib/udev/rules.d/66-xorg-synaptics-quirks.rules
Reading rules file: /lib/udev/rules.d/69-cd-sensors.rules
Reading rules file: /lib/udev/rules.d/69-libmtp.rules
Reading rules file: /lib/udev/rules.d/69-wacom.rules
Reading rules file: /lib/udev/rules.d/69-xorg-vmmouse.rules
Reading rules file: /lib/udev/rules.d/70-debian-uaccess.rules
Reading rules file: /lib/udev/rules.d/70-mouse.rules
Reading rules file: /lib/udev/rules.d/70-power-switch.rules
Reading rules file: /lib/udev/rules.d/70-printers.rules
Reading rules file: /lib/udev/rules.d/70-resolvconf-initramfs-copy.rules
Reading rules file: /etc/udev/rules.d/70-snap.core.rules
Reading rules file: /etc/udev/rules.d/70-snap.meshlab-mardy.rules
Reading rules file: /etc/udev/rules.d/70-snap.meshlab.rules
Reading rules file: /lib/udev/rules.d/70-uaccess.rules
Reading rules file: /lib/udev/rules.d/71-power-switch-proliant.rules
Reading rules file: /lib/udev/rules.d/71-seat.rules
Reading rules file: /lib/udev/rules.d/71-u-d-c-gpu-detection.rules
Reading rules file: /lib/udev/rules.d/73-seat-late.rules
Reading rules file: /lib/udev/rules.d/73-special-net-names.rules
Reading rules file: /lib/udev/rules.d/73-usb-net-by-mac.rules
Reading rules file: /lib/udev/rules.d/75-net-description.rules
Reading rules file: /lib/udev/rules.d/75-probe_mtd.rules
Reading rules file: /lib/udev/rules.d/77-mm-cinterion-port-types.rules
Reading rules file: /lib/udev/rules.d/77-mm-dell-port-types.rules
Reading rules file: /lib/udev/rules.d/77-mm-ericsson-mbm.rules
Reading rules file: /lib/udev/rules.d/77-mm-haier-port-types.rules
Reading rules file: /lib/udev/rules.d/77-mm-huawei-net-port-types.rules
Reading rules file: /lib/udev/rules.d/77-mm-longcheer-port-types.rules
Reading rules file: /lib/udev/rules.d/77-mm-mtk-port-types.rules
Reading rules file: /lib/udev/rules.d/77-mm-nokia-port-types.rules
Reading rules file: 
/lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules
Reading rules file: 
/lib/udev/rules.d/77-mm-platform-serial-whitelist.rules
Reading rules file: /lib/udev/rules.d/77-mm-qdl-device-blacklist.rules
Reading rules file: /lib/udev/rules.d/77-mm-simtech-port-types.rules
Reading rules file: /lib/udev/rules.d/77-mm-telit-port-types.rules
Reading rules file: /lib/udev/rules.d/77-mm-usb-device-blacklist.rules
Reading rules file: 
/lib/udev/rules.d/77-mm-usb-serial-adapters-greylist.rules
Reading rules file: /lib/udev/rules.d/77-mm-x22x-port-types.rules
Reading rules file: /lib/udev/rules.d/77-mm-zte-port-types.rules
Reading rules file: /lib/udev/rules.d/78-graphics-card.rules
Reading rules file: /lib/udev/rules.d/78-sound-card.rules
Reading rules file: /lib/udev/rules.d/80-debian-compat.rules
Reading rules file: /lib/udev/rules.d/80-drivers.rules
Reading rules file: /lib/udev/rules.d/80-ifupdown.rules
Reading rules file: /lib/udev/rules.d/80-libinput-device-groups.rules
Reading rules file: /lib/udev/rules.d/80-mm-candidate.rules
Reading rules file: /lib/udev/rules.d/80-net-setup-link.rules
Reading rules file: /lib/udev/rules.d/80-udisks2.rules
Reading rules file: /lib/udev/rules.d/84-nm-drivers.rules
Reading rules file: /lib/udev/rules.d/85-brltty.rules
Reading rules file: /lib/udev/rules.d/85-hdparm.rules
Reading rules file: /lib/udev/rules.d/85-hplj10xx.rules
Reading rules file: /lib/udev/rules.d/85-keyboard-configuration.rules
Reading rules file: /lib/udev/rules.d/85-nm-unmanaged.rules
Reading rules file: /lib/udev/rules.d/85-regulatory.rules
Reading rules file: /lib/udev/rules.d/88-nuand.rules
Reading rules file: /lib/udev/rules.d/90-alsa-restore.rules
Reading rules file: /lib/udev/rules.d/90-comedi.rules
Reading rules file: /lib/udev/rules.d/90-fwupd-devices.rules
Reading rules file: /lib/udev/rules.d/90-libgpod.rules
Reading rules file: /lib/udev/rules.d/90-libinput-model-quirks.rules
Reading rules file: /lib/udev/rules.d/90-pulseaudio.rules
Reading rules file: /lib/udev/rules.d/95-cd-devices.rules
Reading rules file: /lib/udev/rules.d/95-upower-csr.rules
Reading rules file: /lib/udev/rules.d/95-upower-hid.rules
Reading rules file: /lib/udev/rules.d/95-upower-wup.rules
Reading rules file: /lib/udev/rules.d/97-hid2hci.rules
Reading rules file: /etc/udev/rules.d/99-jlink.rules
Reading rules file: /etc/udev/rules.d/99-stm407.rules
Reading rules file: /lib/udev/rules.d/99-systemd.rules
rules contain 393216 bytes tokens (32768 * 12 bytes), 38023 bytes 
strings
31116 strings (259210 bytes), 27330 de-duplicated (224974 bytes), 3787 
trie nodes used
value '[dmi/id]sys_vendor' is 'ASUS'
value '[dmi/id]sys_vendor' is 'ASUS'
IMPORT builtin 'usb_id' /lib/udev/rules.d/50-udev-default.rules:13
IMPORT builtin 'hwdb' /lib/udev/rules.d/50-udev-default.rules:13
MODE 0664 /lib/udev/rules.d/50-udev-default.rules:41
PROGRAM 'mtp-probe /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2 3 
17' /lib/udev/rules.d/69-libmtp.rules:1923
starting 'mtp-probe /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2 
3 17'
'mtp-probe /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2 3 
17'(out) '0'
Process 'mtp-probe /sys/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2 3 
17' succeeded.
handling device node '/dev/bus/usb/003/017', devnum=c189:272, mode=0664, 
uid=0, gid=0
preserve permissions /dev/bus/usb/003/017, 020664, uid=0, gid=0
preserve already existing symlink '/dev/char/189:272' to 
'../bus/usb/003/017'
ACTION=add
BUSNUM=003
DEVNAME=/dev/bus/usb/003/017
DEVNUM=017
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-4/3-4.2
DEVTYPE=usb_device
DRIVER=usb
ID_BUS=usb
ID_MODEL=STM32_BOOTLOADER
ID_MODEL_ENC=STM32\x20\x20BOOTLOADER
ID_MODEL_FROM_DATABASE=STM Device in DFU Mode
ID_MODEL_ID=df11
ID_REVISION=2200
ID_SERIAL=STMicroelectronics_STM32_BOOTLOADER_386535783037
ID_SERIAL_SHORT=386535783037
ID_USB_INTERFACES=:fe0102:
ID_VENDOR=STMicroelectronics
ID_VENDOR_ENC=STMicroelectronics
ID_VENDOR_FROM_DATABASE=STMicroelectronics
ID_VENDOR_ID=0483
MAJOR=189
MINOR=272
PRODUCT=483/df11/2200
SUBSYSTEM=usb
TYPE=0/0/0
USEC_INITIALIZED=1352563649
Unload module index
Unloaded link configuration context.
florian@messpc:~$

von Sven B. (scummos)


Lesenswert?

Ok, da steht aber dass es die Berechtigungen für die Datei die dfu-util 
auch verwendet auf 664 setzt. Das ist wirklich komisch. Du kannst dir ja 
die Attribute mit ls -la /dev/bus/usb/003/017  mal anschauen ...?

: Bearbeitet durch User
von FlorenzW (Gast)


Lesenswert?

florian@messpc:~$ lsusb
...
Bus 003 Device 012: ID 0483:df11 STMicroelectronics STM Device in DFU 
Mode
...

florian@messpc:~$ ls -la /dev/bus/usb/003/012
crw-rw-r-- 1 root root 189, 267 Jun  3 19:29 /dev/bus/usb/003/012
florian@messpc:~$

von Sven B. (scummos)


Lesenswert?

Hm, es wendet die Gruppe nicht an. Keine Ahnung. Evtl. fehlt die "0" vor 
der Device ID?

von FlorenzW (Gast)


Lesenswert?

Ja das war das Problem! Jetzt funktioniert's auch ohne sudo!
Vielen Dank Sven B.

Was aber nicht heißt, dass es jetzt mit der Aruino-IDE funktioniert.
... es ist zum heulen...

Opening DFU capable USB device...
ID 0483:df11
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #2 ...
Determining device status: state = dfuERROR, status = 10
dfuERROR, clearing status
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util 
release!!!
dfu-util: Invalid dfuse address: {upload.dfuse_addr}
Waiting for /dev/ttyUSB0 serial...Done

Ich vermute dass dfu-util von der Arduino-IDE mit falschen Parametern 
aufgerufen wird, weil aus der Kommandozeile funktioniert es einwandfrei.
Jetzt versuche ich rauszufinden, wo man das ändern kann...

von Sven B. (scummos)


Lesenswert?

Dabei kann ich glaube ich nicht helfen ;) Aber falls du die Parameter 
wissen willst, mit denen es aufgerufen wird, hilft dabei wieder strace 
-- diesmal nach dem "execve" syscall filtern.

von FlorenzW (Gast)


Lesenswert?

Warnung:
Beim Versuch dieses STM32F407VGT6-Board mit dem Arduino-core von Roger 
Clark mit der Methode STM32duino Bootloader zu flashen versetzt man das 
Board reproduzierbar in einen nicht mehr löschbaren und damit nicht mehr 
neu programmierbaren Zustand.

Fehlermeldung: dfuERROR, clearing status

Diese Fehlermeldung bekommt man von diesem Zeitpunkt an immer zu sehen, 
wenn man Versucht das Board über dfu-util zu programmieren, auch in der 
Kommandozeile egal ob root oder nicht.

Rettung:
Sobald man über einen USB-Seriell-Adapter (wie oben beschrieben) mit 
Hilfe des Arduino cores von danieleff das Board flasht ist es auch über 
USB/dfu wieder ansprechbar.

von Florian W. (florenzw)


Lesenswert?

Da es inzwischen etwas unübersichtlich geworden ist, eine 
Zusammenfassung:

Ein STM32F407VGT6-Board so wie es ist ohne speziellen Bootloader mit 
dfu-util über USB zu flashen funktioniert. (Jumper: BOOT0 HIGH, BOOT1 
LOW)
Aufruf (Quelle Harry L.):
1
sudo dfu-util -a 0 -D Blink.ino.bin -s 0x08000000
Um das Programm auszuführen müssen BOOT0 und BOOT1 auf LOW gejumpert und 
auf RESET gedrückt werden

Damit dfu-util auch ohne sudo funktioniert, muss es das Recht für den 
Zugriff auf das USB-Device haben. Zu diesem Zweck habe ich eine 
entsprechnde Regel eingerichtet:
1
sudo nano /etc/udev/rules.d/99-stm407.rules

In diese Datei kommt folgende Zeile:
1
ATTRS{idProduct}=="df11", ATTRS{idVendor}=="0483", MODE="664", GROUP="plugdev"

Die Product-ID und die Vendor-ID müssen evtl. angepasst werden und 
unbedingt vierstellig sein (Quelle Sven B.), man erfährt sie durch 
Aufruf von lsusb. Das Board muss dafür über USB eingesteckt sein und 
sich im Bootloader-Modus befinden.

Es gibt z.Zt. mindestens drei verschiedene "Arduino-cores", die 
STM32F4-Boards der Arduino-IDE zugänglich machen.
- Roger Clark / STM32duino
- danieleff
- direkt von ST

Das direkte Programmieren des Boards über USB aus der Arduino-IDE heraus 
ist mir bis jetzt noch nicht gelungen. Von den drei getesteten cores 
bietet z.Zt. für generische Boards nur der von Roger Clark einen 
dfu-upload, was aber dazu führt, dass nichts mehr geht, Rettung durch 
seriellen Upload.

Was funktioniert ist in der Arduino-IDE ein nicht existentes 
Programmier-target (z.B. ST-Link) einzustellen, nachdem der 
Programmiervorgang abgebrochen ist die XXX.ino.bin-Datei aus dem 
/tmp/arduino_build_xxxxxx-Ordner zu fischen und über einen manuellen 
dfu-util-Aufruf aus der Kommandozeile zu flashen.


Dieses Board über ein FTDI USB-Seriell-Adapterboard direkt aus der 
Arduino-IDE zu flashen funktioniert sehr gut, aber nur mit dem 
Arduino-core von danieleff.
Diese Methode hat einen großen Vorteil: Man muss nicht rumjumpern.
Das Board wird fest auf BOOT0 HIGH und BOOT1 LOW gejumpert und mit RESET 
in den Bootloader-Modus versetzt. Nach dem Programiervorgang wird das 
Programm automatisch gestartet. Möchte man wieder Programmieren, drückt 
man auf RESET.

Das FTDI-Board muss auf 3,3V eingestellt sein!
FTDI             STM32f407
GND  ->          GND
VCC  ->          3.3V
TX   -> 1kOhm -> PA10
RX   -> 1kOhm -> PA9
(Die 1kOhm-Rs sind nur zur Sicherheit, man weiß ja nie :-)

Board Black F407VE/ZE/ZG ausgewählt.
Specific Board F407VE (V2.0)
Upload Method: Serial UART1
BOOT0: HIGH, BOOT1: LOW


Vermutlich (noch nicht getestet) die sinnvollste Methode ist ein ST-LINK 
Dongle, da der von allen cores unterstützt wird und schon für <2€ zu 
haben ist.

: Bearbeitet durch User
von Random .. (thorstendb) Benutzerseite


Lesenswert?

DFU? Deeply Fucked Up?
:-p

von Florian W. (florenzw)


Lesenswert?

:-) Jetzt geht's :-)

Arduino core von Roger Clark
Board:"STM32F4Stamp F405"

Zum Programmieren:
BOOT0 HIGH, BOOT1 LOW, RESET und auf den Upload-Button der Arduino-IDE 
klicken.

Zum Ausführen:
BOOT0 LOW, BOOT1 LOW, RESET

Genaueres steht in /Arduino/hardware/Arduino_STM32/STM32F4/boards.txt

von Johannes S. (Gast)


Lesenswert?

trotzdem macht es mit dem STLink oder BMP mehr Spass weil man nicht die 
Jumper (oder Schalter) immer hin und her stecken muss. Dann noch die 
Arduino IDE durch Eclipse ersetzen zum Debuggen und Arduino durch mbed 
:-)

von Florian W. (florenzw)


Lesenswert?

Definitiv. Hab mir dfu irgendwie besser vorgestellt :-)
Für mich ist jetzt die Lösung Arduino-core von danieleff mit seriellem 
Upload. Gegen die Arduino-IDE spricht für mich erst mal nichts, weil ich 
kein Profiprogrammierer bin und mich darüber freue, dass es überhaupt 
funktioniert.

Der danieleff-core hat noch den Vorteil, dass er mehr libraries 
mitbringt.
Mit dem STM32duino-core für STM32F4 bin ich gerade an I2C gescheitert.

von Christopher J. (christopher_j23)


Lesenswert?

Florian W. schrieb:
> Von den drei getesteten cores bietet z.Zt. für generische Boards nur
> der von Roger Clark einen dfu-upload

Die Frage ist halt was mit "generischen Boards" gemeint ist. Vermutlich 
der Software-DFU-BL auf den BluePills.


Florian W. schrieb:
> Vermutlich (noch nicht getestet) die sinnvollste Methode ist ein ST-LINK
> Dongle, da der von allen cores unterstützt wird und schon für <2€ zu
> haben ist.

Definitiv. DFU sehe ich höchstens als Möglichkeit, dass ein Kunde seine 
Firmware updaten kann. Für Entwicklung ist das eher nix. Außerdem kann 
man damit nicht debuggen, was ebenfalls ein Nachteil ist. Angesichts der 
ST-Link Preise würde ich mir das wirklich nicht unbedingt antun wollen.

von Florian W. (florenzw)


Lesenswert?

Christopher J. schrieb:
> Florian W. schrieb:
>> Von den drei getesteten cores bietet z.Zt. für generische Boards nur
>> der von Roger Clark einen dfu-upload
>
> Die Frage ist halt was mit "generischen Boards" gemeint ist. Vermutlich
> der Software-DFU-BL auf den BluePills.

Das hat sich ausschließlich auf STM32F4-Boards bezogen.

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.