Tlera corp gnat board - No DFU capable USB device available

Hi all, first post here.

I have a tlera corp gnat board, this one: https://www.tindie.com/products/tleracorp/gnat-loragnss-asset-tracker/

I can successfully upload firmware when using ArduinoIDE but I don’t have luck with my beloved platformIO and vscode (windows 10).
For ArduinoIDE to work I had to use zadiq to install generic USB driver for the deviece.

I configured project using NewProject wizard and selecting proper framework (Arduino) and board (Gnat-L082CZ).

After compiling code I cannot upload. Below is my platformio.ini and commands output.

Please help me debug this situation - I am too unexperienced to move forward from here. Where to look ?

[env:gnat_l082cz]
platform = ststm32
board = gnat_l082cz
framework = arduino
upload_protocol = dfu
upload_port = COM6
monitor_speed = 9600
; monitor_flags =
; 	--parity
; 	N
Building in release mode
Checking size .pio\build\gnat_l082cz\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [====      ]  41.1% (used 8416 bytes from 20480 bytes)
Flash: [=====     ]  55.0% (used 108040 bytes from 196608 bytes)
Configuring upload protocol...
AVAILABLE: blackmagic, dfu, jlink, stlink
CURRENT: upload_protocol = dfu
Uploading .pio\build\gnat_l082cz\firmware.bin
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2020 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

No DFU capable USB device available
*** [upload] Error 74

Ok, I think I half-solved this.
What I did was to follow (once again) the steps described here:

and use Zadig to reinstall winUSB drivers.

What is weird that after uploading the firmware, the board stops to be visible to dfu-utils --list.
I have to toggle RESET button wihle holding BOOT button. This was not required in ArduinoIDE, but I a not even sure now if the problem is related to platformio or elsewhere ?

I also have this platformio.ini file:

[env:gnat_l082cz]
platform = ststm32
board = gnat_l082cz
framework = arduino
upload_protocol = dfu
upload_port = Serial
monitor_speed = 9600

:slight_smile:

This is likely because the Arduino core instructs a “1200bps touch”, aka opening the serial port of the device at 1200 baud, which will be interpreted by the other side as an instruction to go into bootloader mode. However, in PlatformIO’s board definition, that is not defined in the `upload section (ArduinoCore-stm32l0/boards.txt at master · GrumpyOldPizza/ArduinoCore-stm32l0 · GitHub). It would need these attributes set to true.

Can you open an issue about this in Issues · platformio/platform-ststm32 · GitHub?

Thanks for taking time to look into this.

I changed those 2 attributes in my local installation of platformio - it didn’t change behaviour.
Should I anyway open an issue, or there problem is elsewhere ?

The other half of solving the problem in platform-ststm32 is adding the BeforeUpload method to the upload actions so that it actually acts upon the 1200bpstouch setting you added. Basically that has to be executed in your board’s case too.

The platform-ststm32 people will know how to do deal with this, you should open an issue there.

Thank you