cancel
Showing results for 
Search instead for 
Did you mean: 

ST-Link V3 Not Detected, Only a Faint Red LED - Is it Dead?

biopunk101
Associate II

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!

 

IMG_5514 大.jpeg

10 REPLIES 10
Imen.D
ST Employee

Hello @biopunk101 ,

Please check this article: FAQ: Possible communication failure between STLINK-V3 and some recent computers

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen
S C
ST Employee

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

CeDeROM
Associate III

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 ;)

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

CeDeROM
Associate III

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

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.

CeDeROM
Associate III

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 :)

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

 

 

 

 

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.