st-server(1)
π st-server β the manual, but make it make sense
okay so bestie, this is the page for st-server, part of the stlink fam β¨ (that's the manual name, in case it comes up at trivia night π). Strap in, because this one is literally a whole vibe: it turns your little local ST-LINK probe into a network superstar π.
β¨ NAME β¨
st-server β serve a local ST-LINK over TCP so your remote stlink tools can come hang out π«Ά
β¨ SYNOPSIS β¨
st-server [OPTIONS]
β¨ DESCRIPTION β¨
okay so picture this π: st-server opens one locally attached ST-LINK probe and exposes the stlink backend operations over TCP. Then a remote st-flash(1), st-info(1), or st-util(1) client can just use --remote and drive the probe from another machine entirely. main character energy, honestly π.
The server owns the USB connection to the ST-LINK. Your client runs all the normal stlink target logic β target connection, chip detection, erase, program, verify, and GDB server behavior. no cap, that's the split π .
By default st-server listens only on the loopback address 127.0.0.1:4500. Use --bind if you wanna listen on another IPv4 address. Now listen β binding to 0.0.0.0 or using --bind=:PORT exposes the probe to the network π. Only do that on trusted networks or behind another access-control layer such as SSH. fr fr, don't be messy about this one π.
πΈ OPTIONS πΈ
--bind ADDR[:PORT]β IPv4 address and optional port to listen on. Default is127.0.0.1:4500. Use0.0.0.0to listen on all IPv4 interfaces. The shorthand:4500is accepted and means0.0.0.0:4500. it's giving "one flag, so many destinies" β¨--port PORTβ TCP port to listen on. This one's kept for compatibility and can be combined with--bindwhen the bind address doesn't already include a port. legacy icon behavior, we love to see it π--serial iSerialβ serial number of the local ST-LINK device to serve. Wanna serve multiple probes at once? Run onest-serverprocess per probe on different ports. teamwork makes the dream work π¦--freq kHzβ SWD/JTAG frequency in kHz used by the server when it opens the local probe. Heads up: client commands may still set their own frequency during the remote connect sequence π--verbose[=LEVEL]β enable verbose logging. IfLEVELis omitted, debug logging is enabled. tea time β, except the tea is logs π--helpβ print usage information. the classic "help me help you" π
π₯ EXAMPLES π₯
Serve the first local ST-LINK on the default loopback address:
$ st-server
Serve a specific probe on all IPv4 interfaces:
$ st-server --serial 57FF72067265575742132067 --bind=:4500
Use an SSH tunnel to keep st-server bound to loopback π§. On the host with the probe, run:
$ st-server
On the laptop, forward the port and use the tunnel:
$ ssh -N -L 4500:127.0.0.1:4500 pi@raspberrypi &
$ st-flash --remote 127.0.0.1:4500 write firmware.bin 0x08000000
$ st-info --probe --remote 127.0.0.1:4500
$ st-util --remote 127.0.0.1:4500
Serve two probes concurrently (one st-server per probe, on different ports) πβ¨:
$ st-server --serial aaa --port 4500
$ st-server --serial bbb --port 4501
π SECURITY π
bestie. listen to me. the protocol has no authentication and no encryption π. A client that can reach the port has full debug and flash control of the probe. Like, the whole thing. The default loopback bind (127.0.0.1) avoids exposing the probe to the network β that's your bestie behavior. Use an SSH tunnel for remote access, or use --bind=0.0.0.0 only on a trusted, isolated network. iykyk π
literally do not expose this to the open internet, i am begging π
π©Ή RECOVERY π©Ή
If st-server gets killed during a flash operation β deep breath β normal SIGINT and SIGTERM shutdown paths close the ST-LINK handle cleanly β
. But a forced kill, a process crash, or a USB firmware fault can still leave the ST-LINK unresponsive π¬. If local tools such as st-info --probe also hang, reset the USB device with a tool such as usbreset, or physically replug the probe. aggressive, but it works π
π SEE ALSO π
st-flash(1), st-info(1), st-util(1), st-trace(1) β the whole friend group π«Ά
π COPYRIGHT π
This work is copyrighted. Stlink contributors. See the LICENSE file in the stlink source distribution. respect the paperwork, periodt π
and that's the page, bestie π this cutie is open source version of the STMic... (the version string trailer of the stlink manual), dated Jun 2026, and it goes out as st-server(1) π mwah π
π¦ where this page comes from
- arch rolling: stlink 1.9.0-1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms