Skip to main content
Associate
January 12, 2024
Solved

macOS USB hub st-link serial addresses not showing up

I am running macOS Sonoma and using PlatformIO within Visual Studio Code.

I have multiple STM32 microcontrollers connected via ST-LINKs to a USB hub¹. My ST-LINK USB devices are correctly listed in 1) the USB Device Tree within the macOS System Information, and 2) via Terminal when using `st-info --probe`.

I am also able to utilise these ST-LINKs to upload code to a single microcontroller individually. Even when all are connected I am able to upload code to one of these microcontrollers.

However, this happens semi-randomly. I cannot specify to which of these connected microcontrollers my code is being uploaded.

I am aware that I need a serial device address to define `upload_port` in my platformio.ini file. To find this address I am using `ls -l /dev/cu.*` in the Terminal. But the only port being returned is `/dev/cu.Bluetooth-Incoming-Port`.

Why isn’t `ls -l /dev/cu.*` showing the serial addresses of my connected ST-LINK devices? After several days of troubleshooting without any success, I would be very grateful for any insights or suggestions that could help resolve this issue!

1= Anker 4-Port Ultra-Slim USB 3.0 Hub

This topic has been closed for replies.
oihqw3beiBest answer
Associate
January 14, 2024

Now without using port serials, and also thanks to the gethla tool on GitHub by a-v-s and rewriting that script to have it fully functional on macOS, I realised a different and way more simpler method:

1. Use the shell command st-info --probe to list all connected stlink programmers. When having 3 devices connected you'll see an output like the following:

Found 3 STLINK programmers
1.
version: V2J37S7
serial: 420062000E0000543233574E
flash: 524288 (pagesize: 16384)
sram: 131072
chipid: 0x0431
descr: stm32f411re
2.
version: V2J43S7
serial: 39005700180000344159544E
flash: 524288 (pagesize: 16384)
sram: 131072
chipid: 0x0431
descr: stm32f411re
3.
version: V2J43S7
serial: 18002300020000304131574E
flash: 524288 (pagesize: 16384)
sram: 131072
chipid: 0x0431
descr: stm32f411re

 

2. Then, integrate the device's serial number into your `platformio.ini` file using the following line:

upload_flags = -c adapter serial <serial>

 

3. And this made it work for me! 🥳

2 replies

Pavel A.
January 12, 2024

ST-LINKs are not serial ports (though some of them contain an extra VCP function), so  "cu" devices are not what you specify for tools as ST-LINK devices.

 

oihqw3beiAuthorBest answer
Associate
January 14, 2024

Now without using port serials, and also thanks to the gethla tool on GitHub by a-v-s and rewriting that script to have it fully functional on macOS, I realised a different and way more simpler method:

1. Use the shell command st-info --probe to list all connected stlink programmers. When having 3 devices connected you'll see an output like the following:

Found 3 STLINK programmers
1.
version: V2J37S7
serial: 420062000E0000543233574E
flash: 524288 (pagesize: 16384)
sram: 131072
chipid: 0x0431
descr: stm32f411re
2.
version: V2J43S7
serial: 39005700180000344159544E
flash: 524288 (pagesize: 16384)
sram: 131072
chipid: 0x0431
descr: stm32f411re
3.
version: V2J43S7
serial: 18002300020000304131574E
flash: 524288 (pagesize: 16384)
sram: 131072
chipid: 0x0431
descr: stm32f411re

 

2. Then, integrate the device's serial number into your `platformio.ini` file using the following line:

upload_flags = -c adapter serial <serial>

 

3. And this made it work for me! 🥳