2025-08-05 11:50 PM
Hi everyone, I'm having an issue with a brand new ST-Link V3 and would appreciate a quick sanity check before I return it.
Here's the situation:
* The device is not detected by my PC at all (it does not appear in Device Manager).
* I have already confirmed my USB-C data cable is working correctly.
* The red power LED on the ST-Link is extremely faint and dim.
* I also tested it on a second computer, and the result was exactly the same.
Since the LED is so dim and it fails on multiple PCs, I'm confident this is a hardware fault (DOA). Has anyone seen this specific issue before? I've attached a photo of the dim LED.
Thanks for any input!
2025-08-05 11:55 PM
Hello @biopunk101 ,
Please check this article: FAQ: Possible communication failure between STLINK-V3 and some recent computers
2025-08-06 1:31 AM
Hello,
If the problem occurs from out of the box, I agree it is most probably either an hardware issue, or a wrong programming of the board; so I suggest to ask for an exchange. Before this, may you please have a look in the device manager (if you are on Windows), in "Universal Serial Bus Devices", if you see "STM32 ST-LINK/V3", or any failing device ? (in this last case, it could be helpful the check, in the device details, the USB vendorId (ST=0x0483), and USB productId)
May you please also precise the data on the sticker of the probe (something like LKV3SET$xxx and a serial number with 1 letter and 9 digits), so that I forward to the industrialization team for analysis.
Thank you and sorry for this trouble
2025-08-20 2:50 PM - edited 2025-08-21 5:43 AM
I have this problem too with STLINK-V3MODS (all 5 of them). Win10Pro 22H2 x64. Installed latest STSW-LINK009 but device does not show up in device manager. After detecting STLINK in STM32CubeProg SLINK-V3MODS starts blinkind RED. This is strange because I updated dozens of other STLINKs on the same machine and all worked fine on exactly the same port.
I am FreeBSD user, all works fine here, OpenOCD, etc, but I cannot firmware upgrade as STM32FirmwareUpgrade.jar refuses to work. I need to enable Bridge UART with control lines in addition to JTAG/SWD+VCP functionality.
FIX: STLINK worked fine when attached to a different port of the same computer (no 3.1 hubs on the road), it showed up in the device manager, I was able to upgrade firmware ;)
2025-08-20 11:46 PM
Hello,
this problem is different from the initial one. In your case, it looks like the V3MODS are well programmed as they work on different port (if I well understood). So your issue seems rather related to the USB renumeration required for firmware upgrade. Have you attempted the firmware upgrade on all your USB ports ? Does STM32cubeProg (or any other tool) work (in nominal case, without firmware upgrade) on the USB port where STLinkUpgrade fails ?
I also don't understand how STM32CubeProg could detect an STLINK if it does not show in the device manager, there is perhaps a delay between both observations ?
May you please provide more details about the STLinkUpgrade.jar failure (displayed message at the bottom if any, after which action, ...), and possibly also try STLinkUpgrade.exe as you are on Windows (just in case of (unlikely) issue with java context) ?
Thank you
2025-08-21 5:48 AM - edited 2025-08-21 5:49 AM
Thanks @S C I was finally able to enumerate STLINK when using different USB port and no USB HUB on the way (I updated my FIX description above sorry if it was unclear). Only then STLINK showed in the device manager, could be detected by upgrade tool, and I was able to upgrade firmware. Looks like there are enumeration problems when USB HUB is on the way (either internal or external).
Btw, CubeProg is -1 version behind the standalone UpgradeTool even after update to latest version.
Regarding the standalone upgrade utility for FreeBSD here is a dedicated thread [1] but it looks like ST may not be interested in porting to FreeBSD. I can help you with that. Whole FreeBSD community could then just use this tool on our main workstation :)
[1] https://community.st.com/t5/stm32-mcus-boards-and-hardware/stsw-link007-on-freebsd/m-p/832680
2025-08-21 8:02 AM
Ok so there is perhaps something to dig around the USB Hub: please ensure that they provide the data link (some ports provide type-C only for power, but without data). I tried with several ones I have: on ports without data link, the ST-Link led blinks (meaning that no enumeration occurred), while with data link, the ST-Link enumerates well (Led stays red) and STLinkUpgrade.jar works. It's the expected behavior. If you think you have an USB port with data link but the ST-Link does not enumerate, may you please try another USB device ?
Regarding FreeBSD support, I will add an answer on the dedicated thread.
2025-08-21 8:56 AM - edited 2025-08-21 9:23 AM
Well this is ICY BOX Industrial Hub USB 3.1 C Gen2 ComboHub (IB-HUB1777-C31), it has USB-A and USB-C ports, works fine with all other devices no problem, tried different cables too. It works with Panasonic Toughbook CF-F2 with Win10Pro this is my machine that controls LPKF (I use RDP to connect from my BSD workstation). Case is solved for now, I just need to use direct port, thanks, I know now red blink means enumeration issues :)
In a perfect world I would just use dedicated firmware upgrade utility dedicated for FreeBSD, or use firmware bin file with some open-source utility, but I guess that is not gonna happen :)
Thank you for your time @S C :)
2025-08-27 6:32 PM
Ugh, there is another problem, kinda serious, I have embedded STLINK-V3MODS in a prototype of industrial grade stuff, this works with high voltages so I need to use USB Isolator (EVC9003 / USB 2.0) on the way, and this isolator causes similar issues like the one mentioned before with USB HUB, interface does not enumerate correctly when attached over USB Isolator but works fine when attached directly to the USB port.
The problem is I need to have this device powered on to flash and so I need the USB Isolator and that blocks working with STLINK-V3. Is there a quick fix for this except I switch back to V2?
I am on FreeBSD so I can see in dmesg that "ugen0.7: <STMicroelectronics STLINK-V3> at usbus0" shows up but then I have no umodem enumeration and cannot use openocd to flash firmware / debug. This is not a "windows driver missing" issue.
This situation never happened with STLINK-V2 (USB 2.0). Looks like V3 needs some more work and/or fallback to USB 2.0 mode. It can be slow but it must work in the first place :)
This is what I get with USB Isolator (debug and UART does not work):
% usbconfig -d 0.7 dump_all_desc
ugen0.7: <STLINK-V3 STMicroelectronics> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (300mA)
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x00ef <Miscellaneous device>
bDeviceSubClass = 0x0002
bDeviceProtocol = 0x0001
bMaxPacketSize0 = 0x0040
idVendor = 0x0483
idProduct = 0x3753
bcdDevice = 0x0100
iManufacturer = 0x0001 <STMicroelectronics>
iProduct = 0x0002 <STLINK-V3>
iSerialNumber = 0x0003 <0029002B32345117XXX>
bNumConfigurations = 0x0001
Configuration index 0
bLength = 0x0009
bDescriptorType = 0x0002
wTotalLength = 0x0012
bNumInterfaces = 0x0001
bConfigurationValue = 0x0001
iConfiguration = 0x0004 <FS Config>
bmAttributes = 0x0080
bMaxPower = 0x0096
Interface 0
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0000
bAlternateSetting = 0x0000
bNumEndpoints = 0x0000
bInterfaceClass = 0x00ff <Vendor specific>
bInterfaceSubClass = 0x00ff
bInterfaceProtocol = 0x00ff
iInterface = 0x0005 <ST-Link FS>
This is what I get without USB Isolator (debug and UART works):
% usbconfig -d 0.7 dump_all_desc
ugen0.7: <STLINK-V3 STMicroelectronics> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x00ef <Miscellaneous device>
bDeviceSubClass = 0x0002
bDeviceProtocol = 0x0001
bMaxPacketSize0 = 0x0040
idVendor = 0x0483
idProduct = 0x3753
bcdDevice = 0x0100
iManufacturer = 0x0001 <STMicroelectronics>
iProduct = 0x0002 <STLINK-V3>
iSerialNumber = 0x0003 <0029002B32345117XXX>
bNumConfigurations = 0x0001
Configuration index 0
bLength = 0x0009
bDescriptorType = 0x0002
wTotalLength = 0x00c2
bNumInterfaces = 0x0006
bConfigurationValue = 0x0001
iConfiguration = 0x0004 <Default Config>
bmAttributes = 0x0080
bMaxPower = 0x00fa
Interface 0
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0000
bAlternateSetting = 0x0000
bNumEndpoints = 0x0003
bInterfaceClass = 0x00ff <Vendor specific>
bInterfaceSubClass = 0x00ff
bInterfaceProtocol = 0x00ff
iInterface = 0x0005 <ST-Link Debug>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0081 <IN>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0200
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0001 <OUT>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0200
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 2
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0082 <IN>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0200
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Additional Descriptor
bLength = 0x08
bDescriptorType = 0x0b
bDescriptorSubType = 0x01
RAW dump:
0x00 | 0x08, 0x0b, 0x01, 0x02, 0x02, 0x02, 0x01, 0x07
Interface 1
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0001
bAlternateSetting = 0x0000
bNumEndpoints = 0x0001
bInterfaceClass = 0x0002 <Communication device>
bInterfaceSubClass = 0x0002
bInterfaceProtocol = 0x0001
iInterface = 0x0007 <ST-Link VCP Ctrl>
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x00
RAW dump:
0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x01
RAW dump:
0x00 | 0x05, 0x24, 0x01, 0x00, 0x02
Additional Descriptor
bLength = 0x04
bDescriptorType = 0x24
bDescriptorSubType = 0x02
RAW dump:
0x00 | 0x04, 0x24, 0x02, 0x06
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x06
RAW dump:
0x00 | 0x05, 0x24, 0x06, 0x01, 0x02
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0084 <IN>
bmAttributes = 0x0003 <INTERRUPT>
wMaxPacketSize = 0x000a
bInterval = 0x0010
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 2
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0002
bAlternateSetting = 0x0000
bNumEndpoints = 0x0002
bInterfaceClass = 0x000a <CDC-data>
bInterfaceSubClass = 0x0000
bInterfaceProtocol = 0x0000
iInterface = 0x0008 <ST-Link VCP Data>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0005 <OUT>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0200
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0085 <IN>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0200
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 3
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0003
bAlternateSetting = 0x0000
bNumEndpoints = 0x0002
bInterfaceClass = 0x00ff <Vendor specific>
bInterfaceSubClass = 0x00ff
bInterfaceProtocol = 0x00ff
iInterface = 0x0009 <ST-Link Bridge>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0086 <IN>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0200
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0006 <OUT>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0200
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Additional Descriptor
bLength = 0x08
bDescriptorType = 0x0b
bDescriptorSubType = 0x04
RAW dump:
0x00 | 0x08, 0x0b, 0x04, 0x02, 0x02, 0x02, 0x01, 0x0a
Interface 4
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0004
bAlternateSetting = 0x0000
bNumEndpoints = 0x0001
bInterfaceClass = 0x0002 <Communication device>
bInterfaceSubClass = 0x0002
bInterfaceProtocol = 0x0001
iInterface = 0x000a <ST-Link VCP2 Ctrl>
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x00
RAW dump:
0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x01
RAW dump:
0x00 | 0x05, 0x24, 0x01, 0x00, 0x05
Additional Descriptor
bLength = 0x04
bDescriptorType = 0x24
bDescriptorSubType = 0x02
RAW dump:
0x00 | 0x04, 0x24, 0x02, 0x06
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x06
RAW dump:
0x00 | 0x05, 0x24, 0x06, 0x04, 0x05
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083 <IN>
bmAttributes = 0x0003 <INTERRUPT>
wMaxPacketSize = 0x000a
bInterval = 0x0010
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 5
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0005
bAlternateSetting = 0x0000
bNumEndpoints = 0x0002
bInterfaceClass = 0x000a <CDC-data>
bInterfaceSubClass = 0x0000
bInterfaceProtocol = 0x0000
iInterface = 0x000b <ST-Link VCP2 Data>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0007 <OUT>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0200
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0087 <IN>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0200
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
2025-08-27 11:57 PM
Hello,
I confirm the STLINK-V3 does not support the full speed mode. It defines the descriptors to be compliant for the enumeration but no command is mapped behind the endpoints in full speed mode. It's not only a matter of slowness but rather how the segmentation of big commands is managed; so it requires specific code which has not been implemented.