Proffie wont show up in arduino with WinUSB?

I’ve been attempting to add some new fonts to my proffieboard v2 that I purchased from Crimson Dawn. However, after connecting the board into my computer with a data USB cable, and using Zadig to change the drivers to WinUSB (v6. 1.7600.16385), Arduino will not display the port as an option. The only time Arduino recognizes the port is when the proffie is using the usbser drivers, but the COM port won’t say “(proffieboard)” next to it. I’ve tried using the STM32 BOOTLOADER reset with the two buttons, but that doesn’t seem to solve any issues no matter how I try and do it. Arduino just can’t recognize my proffie board with the WinUSB drivers. Please help, thank you in advance.

Sounds like you ran zadig on the wrong device.

Try watching this video and see if helps:

I’ve used that video, and nothing seems to work there either. Unistalling the serial driver in device manager brings the COM port back into proffie, but the “(proffieboard)” bit is not there.

Do you have the arduino-proffieboard plugin installed in Arduino?

Yes I do. I have the plugin, the board manager set to Proffie V2, and the preferences set with the .json link.

Understand how Proffieboards appear to the PC:

Proffieboard use 2 different drivers on the computer, depending on how it’s booted.

Just like a PC would boot into normal Windows OS or into the BIOS to set core settings, or an Android phone can boot into normal Android or bootloader,

Proffieboards either boot into normal mode running ProffieOS, or bootloader mode.

Each of those states looks like a different device to the PC. Different devices require different drivers to talk to your computer properly.

If you install the wrong driver for a device, it’s not going to work, simply put.

When booted normally and running ProffieOS, the board show up as a “Proffieboard”, a composite serial device (CDC data etc…).

Windows typically sees this device when first connected, installs the driver on its own, and will use usbser.sys driver.

When booted in ProffieOS, the board should be seen in on a COM port in Arduino under menu Tools>Port.

It will not show up here if in bootloader mode.

When it’s in bootloader mode and showing as STM32BOOTLOADER, it needs WinUSB v6.1.7600.16385 driver installed with Zadig.

It’s a one-time setup installation when the PC sees the board for the first time in bootloader mode.

It needs this because Arduino is going to put the board in this bootloader mode when you hit Upload so that the board can receive programming.

Then when the upload is complete, the board reboots back into normal ProffieOS.

*** If you do not put the Proffieboard into bootloader mode before running Zadig, you are doing it wrong, and installing the wrong driver for the board because it’s still connected as a “Proffieboard” composite device at that point.

Putting the board into bootloader mode so you can run Zadig and install the correct driver for STM32BOOTLOADER device can be done 2 ways, either with the onboard buttons, or via Serial Monitor in Arduino.

Button sequence is HOLD BOOT, PRESS and RELEASE RESET, then RELEASE BOOT.

Serial Monitor command is simply choosing the COM port with the “Proffieboard” under Arduino menu Tools>Port, and sending the command RebootDFU.

If the computer has forgotten the driver, or the driver was overwritten, or SOME stupid Windows thing happened… you might just need to re-run Zadig.

If things still don’t continue working once this is done, you may have another device using a conflicting driver, see this thread for info:

Sounds like you are IN bootloader already and just need to hit upload in Arduino, regardless if port shows the board on a COM port or not. Once programmed, the board will reboot into ProffieOS, and show up under Tools>Port as expected.

1 Like

This seems like it would be the right thing but perhaps I’m still doing something wrong. So I have it in STM32 BOOTLOADER mode, I go to Zadig, install the WinUSB drivers, and then I’m done with Zadig. From there, I went to arduino, and while there is no port selected ( the only port option would be a completely irrelevant port / different device ) and hit upload. However nothing seems to have changed. No new port has showed up and it is still labeled as STM32 BOOTLOADER in Zadig. There are no error messages, except for a long line of directories on my PC that end with “warning: memory region ‘SRAM2’ not declared”, and then the usual
1
2
.
.
10
Am I messing up one of the steps?

You need to select Tools>Board>Proffieboard>Proffieboard v2 as well.
and have the 3.6.0 plugin installed in Tools>Board>Boards Manager.

I have done that, preference link set, plugin installed, Proffieboard V2 selected.

Try different cable?
Maybe make a video clearly showing what’ you’ve got going on there?

After you use Zadig to set the “STM32 BOOTLOADER” driver to WinUSB, does it stay that way? Or does it change to something else? (There are conflicting software that can do this…)

I tried making a video but I’m not allowed to upload it to here, sorry. After I use Zadig, the STM32 BOOTLOADER stays that way until I unplug the proffie from the PC. If I plug it back in it goes back to normal Proffieboard, “usbser drive” mode. Perhaps this is normal. However, unless I do that, it will stay the exact same, even after using the Arduino upload.

In the other forum listed, he suggests uninstalling the STM32 from the computer. Perhaps I should try that? I’m just a little worried if I did that something might mess up that can’t be undone and I don’t want to do something caustic without knowing it.

Yes, it is normal for the board to present as a proffieboard device when you plug it in.
That wasn’t really what I meant though.

What I meant was; if you unplug the board, then plug it back in again, then do BOOT+RESET to put it into bootloader mode, then check which driver it’s using, is it still WinUSB?

Generally speaking, uninstalling the devices doesn’t do much. If you don’t check the “uninstall driver” button, then almost nothing happens, so when you plug the board back in again it works the same. If you do check the “uninstall driver” button, it doesn’t in fact uninstall the driver. It just uninstalls the association between that USB device and the driver, so when you plug it in again, it may select a different driver. (Or it might not.) Zadig lets you install new driver <-> usb device associations, which is useful, but can also be bad if you do it wrong.

Your case is weird though. It sounds like even when your board is in STM32 BOOTLOADER mode, Arduino still can’t find and upload code to it. If that is what’s happening, then it’s a problem I haven’t seen before… Maybe some sort of permission problem?

It does stay as WinUSB if I unplug it and redo the bootloader process. The uninstalling idea did not work either sadly. Thank you for trying to help me with this weird issue. Could you elaborate on the permissions idea?

So the 1-10 countdown is generated by a bat script, and it runs a command that checks it can see the bootloader device or not. Most of the time, when this fails, it’s because the wrong port was selected, so the board is happily chugging along in ProffieOS mode. When the right port is selected, Arduino uses that port to tell the board to boot into bootloader mode.

Once the bat file sees the bootloader, it runs a different command to actually do the upload. The upload command requires WinUSB to work properly, but the command that just looks for the bootloader doesn’t. It just lists all devices, and if it finds the right one it signals success. In your case, it seems like the command that is looking for the bootloader is failing for some reason. Maybe it’s not allowed to see the USB devices? Maybe some anti-virus program is preventing it? Maybe it’s been corrupted somehow? Or deleted?

I think you might want to try re-installing the arduino-proffieboard plugin and see if that helps, but if not, we’re going to have to go find the bat file, lookup what command it’s running, then run that command in a cmd window and see if maybe it tells us why it is failing.

Please remove the screenshot, it’s not helpful, not indexable, hard to read AND takes up a space on my server.

You can find the bat file by first going to Arduino → File → Preferences, then click on the preferences file. This will take you to the “arduino15” folder.

Once in that folder, navigate to packages/proffieboard/hardware/stm32l4/3.0.0/tools/windows/

In this directory, you’ll find the bat file that does the countdown, called stm32l4-upload.bat, and also the program that is used to list the available devices, called dfu-util.exe.

It looks like it uses the command dfu-util.exe -l -d 0483:df11 to search for the STM32 BOOTLOADER, so you can try that command and see what happens.

If I run that command in command prompt, I get the error “‘dfu-util.exe’ is not recognized as an internal or external command, operable program or batch file.” So it seems that dfu-util.exe isn’t being recognized as whole?

That just sounds like it can’t find it.
Are you in the right directory when running it?