🚀 Xray-knife v11.1.0 (JOIN THE TELEGRAM CHANNEL)
Two annoying bugs squashed and two new things. If your speed tests have been showing 0 since v11, or if go install suddenly stopped compiling, this release is for you. 🛠️
✅ Nothing breaks. No flags moved, no names changed — upgrade and carry on.
📉 Speed test always showed 0
Ran --speedtest on v11 and got this in your CSV? 😤
link,status,delay,download,upload
vless://...,passed,134,0,0
The config passed. The delay was measured. The speed was just… zero. 🙃
Here's what was happening. The test tries to move 10 MB in each direction (--amount) and gives each direction 30 seconds (--speedtest-timeout). v11 treated that clock as a pass/fail deadline — if the transfer didn't finish in time, the whole measurement was thrown away and written as 0.
Do the math: anything slower than ~2.7 Mbps scored a flat zero. Which is exactly the kind of link you most wanted a real number for. 😩
The clock is now a measuring window, not a deadline. Whatever moved inside it gets measured, so slow links report their actual speed:
| Link | Before | Now |
|---|---|---|
| 1.2 Mbps proxy | 0 ❌ |
1.19 ✅ |
Only a transfer that moved nothing at all still counts as a failure — and when that happens, single-config mode now prints the reason instead of leaving you staring at a silent 0. 🔍
Thanks @Jaymz665 for the report (#69). 🙏
🔨 Building from source broke on Go 1.27
If you tried to install from source recently, you got a wall of linker noise ending in this: 💥
# github.com/lilendian0x00/xray-knife/v11
github.com/sagernet/sing-box/transport/v2rayhttp.ResetTransport:
relocation target golang.org/x/net/http2.(*Transport).connPool not defined
Nothing to do with your setup. 🤷 Go 1.27 rebuilt its HTTP/2 library as a thin shim over the standard library, and an internal piece that sing-box borrowed through a linker trick disappeared along with it — so the binary simply refused to link.
Fixed by moving up to sing-box 1.14, which dropped that trick entirely. Compiles cleanly on Go 1.26 and 1.27 again. ✅
go install github.com/lilendian0x00/xray-knife/v11@latestThanks @clin1234 for the report (#64). 🙏
🔐 New: certificate pinning (pcs) in share links
Configs that pin their server certificate were silently losing the pin. 🫠 The pcs parameter (pinnedPeerCertSha256 in xray-core) was dropped on parse, so it never reached the TLS handshake — and it vanished from the link if you re-exported it.
Now it's parsed, applied, and kept. Works on vless, trojan and vmess:
xray-knife http -c "vless://uuid@example.com:443?security=tls&sni=example.com&pcs=0123456789abcdef...cdef"- 🔗 Multiple pins, comma-separated
- 🔤 Hex with or without OpenSSL colons (
01:23:45:...) - ♻️ Preserved when a link is regenerated, and shown in
parseoutput
Thanks @mdjvd for the request (#65). 🙏
🍓 New: 32-bit ARM builds
Running xray-knife on an older router or a Raspberry Pi with a 32-bit OS? There's a build for you now — grab linux-arm32-v7a from the assets below. 📦
Building it yourself works the same way:
./build.sh linux armv7📦 Install
Grab a prebuilt binary from the assets below, or install with Go:
go install github.com/lilendian0x00/xray-knife/v11@latestFull Changelog: v11.0.0...v11.1.0