"No ST-LINK detected" error message, when trying to connect with ST-LINK Utility

Kbonde picture Kbonde · Jun 22, 2017 · Viewed 32.5k times · Source

I have a NUCLEO-F401RE board (with STM32F401RE) and it has been working fine for the most part. Here recently, I followed a tutorial in the book "Mastering STM32" where it says to install OpenOCD. I had been following along before this as well, and I had been able to connect to my board and flashing it with no problem.

After attempting to get OpenOCD to work though, this is no longer possible. Every time I try to connect to my board, I simply get the following error message:

No ST-LINK detected

I have tried updating the drivers multiple times, rebooting the board, reinstalling the ST-LINK Utility, switching the USB-Cable, resetting the board and reinstalling everything and I have also tried the trick where you hold down the reset button and try to erase the chip. So far, none of this has worked for me unfortunately.

Here you find a picture of my board.

On my desktop, I am using Windows 10. On my board, and I am using FreeRTOS. Here you find an image of my Windows Device Manager.

I have also tried to update the firmware on my board using the ST-Link upgrade, but without luck. When attempting this, I either do not have the option to select my device (when using the .jar app) or when using the .exe app, I just get the following error messages:

No ST-Link device detected
Please connect it and then retry

I have not been able to find a solution for this anywhere, so I hope you guys can help! If you need any further relevant information, just let me know. Thank you very much.

Answer

KT. picture KT. · May 24, 2020

As mentioned in other answers, the problem is almost certainly due to a competing driver (something like libusb) taking control of the device.

However, you do not need to "uninstall and reinstall everything" to select the correct driver, assuming that you have already installed it once before. Moreover, the reinstallation procedure most probably won't help, because the uninstallers usually do not uninstall the drivers anywa, and Windows will keep prefering the same wrong driver.

Instead, open Device Manager, find your STM32 STLink device, double-click to open the Properties dialog. Then click "Update Driver", then "Browse my computer for driver software", then "Let me pick from a list of available drivers on my computer", and you should see something like that:

Driver list

You see that in this example at least four different drivers available on the system are happy to service the device. The first two are generic libusb drivers, not specific to the dongle (OpenOCD is happy to use either of those, if I remember correctly). The ST-Link utility, however, wants a dedicated driver, developed by STM - those are the two entries below on my picture. If you do not see those, try installing the ST-Link utility again (no need to uninstall anything) or download just the driver from the STM website.

You can now click on the preferred driver in this list and have it replace whatever driver was assigned to the device before.