Repository navigation
Releases: kxn/nsteamlink
Release list
NSteamLink v0.7.3
NSteamLink v0.7.3
简体中文
[0.7.3] - 2026-10-24
上一正式版:v0.7.2。目标分支:main;源码:v0.7.3。
主要变化
- Switch 客户端向 Steam 上报的手柄身份改为 Nintendo Switch Pro Controller:HID VID/PID 为
057e:2009,产品名为Nintendo Switch Pro Controller,feature caps 的 controller type 为 38。Steam 因此可按 NS Pro 识别手柄,而不再显示为0000:0000的通用手柄。 - 报告格式保持不变:仍使用 Generic RAW V3 与
is_generic_gamepad=true,不切换到 Switch 原生 HID 报告,也不改变按键、摇杆、陀螺仪的线上布局。 - 流式请求中预留的手柄槽位仍不填
controller_type,由 host 根据 HID vid:pid 判型。
验证与范围
在 10.10.10.66 真机部署验证:日志显示 HID: Device found: sdl://0, id=057e:2009, name=Nintendo Switch Pro Controller,随后 StartInputReports(id=1, length=73),串流启动且 HID 报告持续提交;用户确认测试可用。本次只验证身份与串流启动,不声称 Steam 侧 ABXY、震动、陀螺仪已逐项回归,也不声称实现了真实 Pro Controller HID 协议。
提交分组
- 手柄身份:
d8ee4a7(ihslib)Switch 上报057e:2009、产品名与 feature caps 38。 - 发布:更新版本号、中英双语说明与 Release Notes。
English
[0.7.3] - 2026-10-24
Previous stable release: v0.7.2. Target: main; source: v0.7.3.
Highlights
- Report the Nintendo Switch Pro Controller identity to Steam: HID VID/PID
057e:2009, product stringNintendo Switch Pro Controller, and feature caps controller type 38. Steam can now type the pad as a Switch Pro instead of an unnamed0000:0000generic controller. - Keep the report format unchanged: Generic RAW V3 with
is_generic_gamepad=true; do not switch to a native Switch HID report or change the button, stick or gyro wire layout. - Leave
ReservedGamepad.controller_typeunset so the host types the slot from HID vid:pid.
Validation and scope
Verified on the Switch at 10.10.10.66: HID: Device found: sdl://0, id=057e:2009, name=Nintendo Switch Pro Controller, followed by StartInputReports(id=1, length=73). Streaming started and HID reports continued; the user judged the build usable. This verifies identity and stream start only. It does not claim item-by-item host-side ABXY, rumble or gyro regression, nor a native Pro Controller HID implementation.
Commits by type
- Controller identity:
d8ee4a7(ihslib) report057e:2009, product name and feature caps 38 on Switch. - Release: version, bilingual notes and Release Notes.
NSteamLink v0.7.2
NSteamLink v0.7.2
简体中文
[0.7.2] - 2026-10-24
上一正式版:v0.7.1。目标分支:main;源码:v0.7.2。
主要变化
- 修复设置项右侧文字重复绘制造成的重影,例如“均衡”“自动”“中文”。
- “配对码”入口改为“显示配对码”。云端会话未就绪时置灰并显示“云端服务不可用”,隐藏箭头、压暗背景和文字;连接成功后自动恢复。手动输入地址仍可使用。
- 更新提示增加“此版本不再提示”复选项。触屏勾选后主按钮改为“不再提示”;按 A 确认后保存,按 B 取消不保存。后续启动跳过该版本,遇到更高版本仍会提示。
验证与范围
已核对中英文实际渲染;回归覆盖云端状态切换、禁用入口、忽略版本的重启回读、后续版本提示,以及文件替换失败恢复。本版没有新增真机测试,也不声称修复 #93 中尚未定位的公网连接问题。
提交分组
- 界面修复:
1a94f48消除设置文字重影;e36771f按云端会话状态禁用配对码入口;054cf01隐藏禁用箭头并强化灰态。 - 更新体验:
ad40898支持忽略指定版本的更新提示。 - 发布:更新版本号和中英双语发布说明。
感谢 @jiaruisme 在 #93 提交问题反馈。
English
[0.7.2] - 2026-10-24
Previous stable release: v0.7.1. Target: main; source: v0.7.2.
Highlights
- Fix doubled settings values such as quality, resolution and language selections.
- Rename the pairing entry to “Show pairing code”. Disable it with “Cloud unavailable” until the cloud session is ready; hide its arrow and dim its surface and text. Restore it on connection. Manual address entry stays available.
- Add “Skip this version” to the update dialog. Select it using the touchscreen, then confirm with A; B cancels without saving. The selected version stays hidden across restarts, while later versions can still prompt.
Validation and scope
Checked actual Chinese and English renders. Regression coverage includes cloud availability, disabled activation, ignored-version persistence across restart, later-version prompts and failed file-replacement recovery. No new hardware testing was performed for this release. The unresolved Internet connectivity report in #93 is not claimed fixed.
Commits by type
- UI fixes:
1a94f48remove doubled settings text;e36771fgate pairing-code entry on cloud availability;054cf01hide disabled arrows and strengthen disabled styling. - Updater:
ad40898allow opting out of a specific release notification. - Release: version and bilingual release notes.
Thanks to @jiaruisme for reporting #93.
NSteamLink v0.7.1
NSteamLink v0.7.1
简体中文
[0.7.1] - 2026-10-23
上一正式版:v0.7.0。目标分支:main;源码:v0.7.1。
主要变化
- 串流中可短按截图键发送 Steam Guide。默认开启;在 设置 → 应用 → Steam Guide 键 中选择“截图键”或“关闭”。关闭后保留系统截图功能,首页和非串流状态也保留截图。
- 设置保存兼容旧版开关;输入尚未就绪、失焦或会话结束时不会发送 Guide。按下和释放沿用现有手柄输入通路,普通按键与陀螺仪输入保持原有映射。
- 正式包排除 Capture 自测、HOME 能力探针、虚拟手柄注入与相关诊断入口。HOME 键继续由 Switch 系统处理。
验证与已知限制
自动回归覆盖设置保存、输入就绪门控、Guide 按下/释放和清理。Switch 离线实测确认 Capture 通知接管、两次虚拟 Capture 通知与资源清理;这不等于实体按键或 Steam 浮层的端到端验证。用户曾观察到实体截图键首次按下仍截图、之后生效,原因尚未确认,本版不声称已修复该首次按键现象。
提交分组
- 输入与设置:
5c0d283截图键映射和关闭设置;27a4b3b移至“应用 → Steam Guide 键”,补充有界诊断。 - 测试与文档:
11f00d6系统按键及 Guide 协议依据;23cf2c3避免清除共享 HOME 事件;a29a7ac记录真机证据与未验证范围。 - 发布:更新版本、双语说明与按键诊断排除检查。画质自适应研究保留在研究分支。
从 Release 下载正式 NRO,或使用应用内更新。现有配对资料保留。
English
[0.7.1] - 2026-10-23
Previous stable release: v0.7.0. Target: main; source: v0.7.1.
Highlights
- Short-press Capture during streaming to send Steam Guide. Enabled by default; choose Capture or Off under Settings → Application → Steam Guide key. Off preserves system screenshots; screenshots also remain available outside streaming.
- Preserve the previous toggle when loading settings. Gate Guide on input readiness, focus and session lifetime, and send its press/release through the existing controller path without changing ordinary button or gyro mappings.
- Exclude Capture self-tests, HOME capability probes, virtual-controller injection and their diagnostic entry points from the ordinary package. HOME remains a Switch system button.
Validation and known limits
Regression coverage includes settings persistence, input-readiness gates, Guide press/release and cleanup. Offline Switch tests verified Capture notification ownership, two virtual Capture notifications and resource cleanup; these do not establish physical-button or host-overlay behavior. A user previously observed a physical first press taking a screenshot before subsequent presses worked. Its cause remains unconfirmed; this release does not claim to fix that first-press behavior.
Commits by type
- Input/settings:
5c0d283Capture mapping and opt-out;27a4b3bApplication settings placement and bounded diagnostics. - Tests/documentation:
11f00d6system-button and Guide protocol references;23cf2c3observe HOME without clearing the shared event;a29a7acrecord hardware evidence and validation limits. - Release: version, bilingual notes and button-diagnostic exclusion checks. Adaptive-quality research remains on the research branch.
Download the ordinary NRO from this release, or use the in-app updater. Existing pairing data is retained.
Full changelog: v0.7.0 → v0.7.1
发布验证 / Build validation
本地桌面诊断 ON 330/330、OFF 321/321 通过,版本/产物校验和 15 项诊断排除反例检查通过。附件取自主线同一提交 2701c328d00b7a398b96beb0cd035889bc2f74f7 的 CI 运行:Switch 全部构建和排除检查、桌面 ON 回归通过;桌面 OFF 任务仍停留在系统依赖安装阶段。已核对发布附件身份与全部 SHA256SUMS,本次使用这些已验证产物手动发布,不宣称所有 CI 任务已完成。
Local desktop tests passed with diagnostics ON (330/330) and OFF (321/321), along with artifact validation and 15 diagnostic-exclusion counterexamples. Assets come from the main-branch CI run for the same commit 2701c328d00b7a398b96beb0cd035889bc2f74f7: all Switch build/exclusion checks and desktop ON tests passed; the desktop OFF job remains in dependency installation. Artifact identity and every SHA256SUMS entry were verified before manual publication. This does not claim that every CI job completed.
NSteamLink v0.7.0
NSteamLink v0.7.0
简体中文
[0.7.0] - 2026-10-23
上一正式版:v0.6.0。目标分支:main;源码:v0.7.0。
主要变化
- 支持免登录云端配对、云端发现与公网串流,自动尝试直连和 Valve SDR 中继。主机列表右侧增加“增加”入口,提供手动地址和配对码两种添加方式;主机状态区分局域网、互联网、离线与待配对。
- 改进受限网络下的 DNS 与 TLS 建连:并发查询多家公共 DNS,按网段分散尝试候选地址,首答即可开始连接;目录和 CM TLS 最多并行三个候选,保持证书校验。该兼容策略用于缓解部分出口能 ping 通但 HTTPS 不通的情况,不保证所有网络均可达。
- 将独立信令准备与媒体连接期限分开,明确准备、IHS 与 SDK 启动顺序;修复本地发现被云端查询拖慢、回包转发、Switch 辅助 UDP 缓冲及结束游戏确认问题。准备阶段可等待至多 90 秒;开始媒体连接后仍使用各自连接期限。
- 统一 HTTP/DNS 资源所有权、取消与线程回收,修复 Switch 已存在配置缓存的替换和恢复。保留 v0.6.0 的陀螺仪支持。
- 正式包排除调试日志 HTTP/UDP 服务、nxlink/持久日志、故障注入和独立探针;发布门禁检查实际编译对象和最终 ELF/NRO。
验证与范围
用户在热点上确认发现、串流、手柄和正常时间内结束均可用。d6dcce4 保存日志确认实际使用 Valve SDR 中继:信令准备约 2.9 秒后才创建 IHS,手柄报告获得 ACK,“结束游戏并断开”约 2.9 秒完成。该记录验证这次热点的 SDR 路径,不代表所有 NAT 类型、出口或延迟表现;日志仍有重传和画面恢复,网络质量仍会影响体验。最终标签工作流重新运行桌面诊断 ON/OFF 回归、Switch 构建及诊断排除反例检查。
提交分组
- 公网功能与 UI:见 PR #54 的配对、发现、SNS/SDR、状态呈现及集成提交。
- 连接与恢复:
d294b91回包转发;6e427e9、7a30734多 DNS 和并发约束;5d28638、16cd183、4eb9804发现及辅助 socket;ebe0cde初始化重构;d6dcce4保留 HTTPS 失败时的局域网启动。 - 主线整合:
8bddbd0保留陀螺仪与公网两套功能。
从 Release 下载正式 NRO,或使用应用内更新。配对资料保留。附件不包含诊断包。
English
[0.7.0] - 2026-10-23
Previous stable release: v0.6.0. Target: main; source: v0.7.0.
Highlights
- Add account-free cloud pairing, host discovery and Internet streaming, with automatic direct/Valve SDR routing. The Add host page offers manual address and pairing-code flows; host status distinguishes LAN, Internet, offline and unpaired devices.
- Query multiple public DNS providers and rotate HTTPS candidates across subnets. Start on the first answer and allow at most three concurrent directory/CM TLS candidates while retaining certificate verification. This compatibility policy addresses observed reachable-IP/unreachable-HTTPS paths; it cannot guarantee reachability on every network.
- Separate signaling preparation from the media connection deadline, explicitly hand off IHS/SDK ownership, and fix discovery responsiveness, reply forwarding, auxiliary Switch UDP buffers and end-game completion. Preparation has a bounded 90-second budget; media retains its own connection deadlines.
- Share in-flight DNS work with independent cancellation, manage HTTP lifetime and joined workers, and recover Switch cache replacement. Retain v0.6.0 gyro support.
- Exclude diagnostic HTTP/UDP endpoints, nxlink/persistent logging, fault injection and probes from ordinary packages, with object and ELF/NRO publication gates.
Validation and limits
The user confirmed hotspot discovery, streaming, controller input and timely shutdown. Saved d6dcce4 logs identify Valve SDR relay routing, about 2.9 seconds of signaling preparation before IHS admission, acknowledged controller reports and about 2.9 seconds to complete end-game/disconnect. This validates that hotspot SDR session, not every NAT type or network. Retransmission and video recovery remain visible; experience still depends on network quality. Tag CI reruns diagnostic ON/OFF desktop tests, Switch builds and diagnostic-exclusion counterexamples.
Commits by type
- Internet functionality and UI: pairing, discovery, SNS/SDR, status and integration commits in PR #54.
- Connection/recovery:
d294b91reply forwarding;6e427e9/7a30734DNS fanout;5d28638/16cd183/4eb9804discovery and auxiliary sockets;ebe0cdeinitialization ownership;d6dcce4LAN startup when HTTPS initialization fails. - Mainline integration:
8bddbd0retains both gyro and Internet support.
Download the ordinary NRO from this release, or use the in-app updater. Pairing data is retained. Diagnostic packages are not published.
Full changelog: v0.6.0 → v0.7.0
发布构建记录 / Publication provenance
正式 NRO 来自 v0.7.0 标签的 Switch CI,其构建、诊断排除、反例和媒体探针全部通过。完整桌面 ON/OFF 与 Switch CI 在 f74712a 全部成功;该提交和最终合并提交 86929a8 的 Git tree 完全相同(6e16da97be866ea4ce21e82199f94ec86d9f10b1)。标签的重复桌面任务长时间停在依赖安装,因此取消了重复任务,并用已经核验的标签正式产物发布。本机合并树另通过 327 项诊断及 317 项普通桌面回归。
The ordinary NRO was built by the tag's successful Switch job, including all exclusion/counterexample/media-probe gates. Full desktop ON/OFF and Switch CI succeeded on f74712a, whose source tree is identical to merge commit 86929a8. Duplicate tag desktop jobs remained in dependency installation and were canceled; publication used the verified tag artifact and successful identical-tree CI, plus 327 diagnostic and 317 ordinary local tests.
NSteamLink v0.6.0
NSteamLink v0.6.0
简体中文
[0.6.0] - 2026-10-23
上一正式版:v0.5.1。本版:v0.6.0。目标分支:main;对应源码:v0.6.0。
主要变化
- Switch 陀螺仪输入:将 libnx 六轴采样传给 Steam Input。在 Steam 的手柄桌面布局中将陀螺仪配置为鼠标,即可通过转动 Switch 控制指针;此用法已由用户实机确认。
- 补齐 Host 传感器协议:声明 motion capability,按 Generic RAW V3 发送普通传感器的新样本标志及时间戳。相同角速度在不同采样时刻仍会上报;仅按键、摇杆或加速度变化时不会重放已提交的 gyro,尚未发送的样本则保留。
- 减少试错:加入固定 Steam Host DLL 的原始机器码离线审计,以及使用生产打包器的 full/delta 对照;删除混淆普通/左传感器的实验开关,修正逆向文档中的错误推论。
按类型分组的提交
- 功能:
d13ff0c,Switch 六轴采样、单位转换及 HID 注入。 - 修复:
b6421a2,完整 RAW V3 传感器契约、事件合并、能力声明和 Host 验证;IHSlib 固定至0bc7087。 - 测试:
0dd07e5,独立六轴探针与方向查看工具;b6421a2,生产 C 报告与 Host 原始指令交叉验证。测试工具不进入正式 NRO。 - 文档:记录用户实机桌面鼠标输出,更新中英文使用说明,明确撤回“remote Generic 拒绝 0x400”的早期结论。
验证与证据范围
相关桌面回归 8 项通过,Switch 修复构建成功;原始 DLL 离线审计覆盖 full/delta、CRC 错误拒绝、普通传感器 slot、开关/能力门控,以及分段的四元数积分和 gyro source 取值。
用户已确认:修改 Steam 手柄桌面布局后,陀螺仪可以操控鼠标。游戏内效果和兼容性尚未验证,需要按各游戏的 Steam Input 布局配置;此次结果也不代表所有手柄形态或校准精度均已验证。旧实验按键失效的根因仍未确定。
标签工作流对正式提交重新执行桌面诊断 ON/OFF 测试、Switch 正式和诊断构建、诊断排除反例及产物身份检查;所有检查通过后才公开正式包。
下载与更新
从本版 Release 下载正式 .nro,或使用应用内更新。已有 HOME 入口继续使用 sdmc:/switch/nsteamlink/nsteamlink.nro,无需重复添加。
附件包含正式 NRO、源码身份、诊断排除报告、SDK 包清单、许可证及 SHA256SUMS;不发布诊断/六轴探针包。
感谢提供试玩与陀螺仪实机反馈的用户、提供初代 Switch 的 Sven,以及 Simone Caronni(@scaronni)、IHSlib、FFmpeg、Opus、SDL、libnx、devkitPro、deko3d 和 nx-hbloader 的作者与维护者。
English
[0.6.0] - 2026-10-23
Previous stable release: v0.5.1. This release: v0.6.0. Target branch: main; tagged source: v0.6.0.
Highlights
- Switch gyro input: forward libnx motion samples to Steam Input. Configure gyro as a mouse in Steam's desktop controller layout to move the pointer by rotating the Switch. A user has verified this on hardware.
- Complete the host sensor protocol: advertise motion capability and include normal-sensor freshness and timestamps in Generic RAW V3 reports. Identical angular velocities at different sample times are still reported. Button, stick, or acceleration-only changes do not replay an already submitted gyro sample, while pending samples are preserved.
- Reduce device trial and error: add offline execution of a pinned Steam Host DLL and full/delta fixtures from the production C packer. Remove experimental switches that confused normal and left sensor slots, and correct the earlier reverse-engineering conclusions.
Commits by type
- Feature:
d13ff0c, Switch motion sampling, unit conversion, and HID injection. - Fix:
b6421a2, the complete RAW V3 sensor contract, event merging, capability declaration, and host verification; IHSlib pinned to0bc7087. - Tests:
0dd07e5, isolated motion probes and an axis viewer;b6421a2, production C reports checked against original host instructions. Test tools are excluded from the ordinary NRO. - Documentation: record the user's desktop mouse result, update Chinese and English usage instructions, and explicitly retract the earlier claim that remote Generic rejects 0x400.
Validation and evidence scope
Eight related desktop regression tests passed, and the fixed Switch build succeeded. Offline original-DLL checks cover full/delta decoding, invalid CRC rejection, normal sensor slot selection, enable/capability gates, and isolated quaternion integration and gyro-source consumption.
The user confirmed that gyro controls the mouse after changing Steam's desktop controller layout. In-game behavior and compatibility have not yet been verified and depend on each game's Steam Input layout. This result does not establish support for every controller configuration or calibration accuracy. The cause of input loss in earlier experimental builds remains undetermined.
The tag workflow rebuilds the release commit, runs desktop diagnostics ON/OFF tests, builds ordinary and diagnostic Switch configurations, and checks diagnostic exclusion counterexamples and artifact identity. Publication follows successful checks.
Download and update
Download the ordinary .nro from this release, or use the in-app updater. Existing HOME shortcuts continue to use sdmc:/switch/nsteamlink/nsteamlink.nro and do not need reinstalling.
Attachments contain the ordinary NRO, source identity, diagnostic exclusion report, SDK package list, license text, and SHA256SUMS; diagnostic builds and motion probes are not published.
Thanks to users providing playtesting and gyro feedback, Sven for the original-model Switch, Simone Caronni (@scaronni), and the authors and maintainers of IHSlib, FFmpeg, Opus, SDL, libnx, devkitPro, deko3d, and nx-hbloader.
NSteamLink v0.5.1
NSteamLink v0.5.1
简体中文
[0.5.1] - 2026-10-20
上一正式版:v0.5.0。本版:v0.5.1。目标分支:main;对应源码:v0.5.1。
主要变化
- 串流恢复与退出:改进视频丢失反馈、关键帧恢复、解码队列和帧所有权处理;停止串流时保留应处理的最后一批数据,正常关闭不再误报为提交失败。
- 发现与重试:发现广播全部发送失败时执行有界 socket 重建;修正接收批次、发现发送和开流重试的先后顺序,保留当前主机身份和请求。发现完整轮与快速重试沿用已核验的官方期限和序号规则。
- 授权续接与凭据:改进同一开流请求的自动授权续接、确认前的凭据保存,以及按所选 Steam 身份保存密钥;连接安全码与配对授权码仍分别处理。
- 正式包精简:明确关闭应用与 SDK 诊断。正式 NRO 排除调试 UDP 入口、nxlink/文件日志、HID 历史采样、高级诊断浮屏、故障注入和测试探针。发布流程校验实际对象、ELF/NRO 对应关系和附件允许列表;标签流程保留诊断排除测试,但不上传诊断包。
按类型分组的提交
- 恢复与生命周期修复:
3be848b,UDP 接收边界;07ed493,正常停止时取消提交;a94d163、c5a7cfb,解码停止批次与最后一帧组装。 - 发现修复:
8fad3ca、9f193c8,接收恢复和启动失败清理;6c7a02d、e1274b5,广播重建及发现轮次;fe5bc32、e46cf75、9de506c,操作、回调和联合重试顺序(PR #87)。 - 授权与发布检查:
a3000a4、eeeb684、b51680d、03bf16e,授权和凭据生命周期;55fcf98,SDK 诊断排除与产物门禁。 - 验证与参考:补充官方原指令对照、音频断序/停止、跨组和跨通道 FEC、容量边界及独立 Switch 探针。研究和测试素材不进入正式 NRO。
验证与证据范围
已验证的 9de506c / IHSlib bfb7100 通过桌面普通构建 239 项、诊断构建 245 项、相关 ASan/UBSan/leak 9 项,以及两轮完整 CI。Switch 正式构建的 45 个产品翻译单元、SDK 对象和最终 NRO 已检查诊断排除,15 类污染及 9 类探针产物/调用错误均被门禁拒绝。标签工作流会对正式发版提交重新构建并运行这些检查。
真实 Steam→Switch 会话已验证单个丢失分片的 FEC 重建,以及超过修复能力的整组丢失恢复:客户端实际发送恢复请求,随后接受并提交关键帧,继续播放 30 秒。本次受控局域网测试从丢失到关键帧提交约 40 毫秒,提交错误为 0(实机记录)。这不是所有网络环境的延迟保证,也不代表原有偶发卡顿或 Steam 大屏闪烁的根因已经确定。网络切换、会话完全断开和公网连接保留为独立课题。
下载与更新
从本版 Release 下载正式 .nro,或使用应用内更新。已有 HOME 入口继续使用 sdmc:/switch/nsteamlink/nsteamlink.nro。附件仅包含正式 NRO、源码身份、诊断排除报告、SDK 包清单、许可证及 SHA256SUMS。
感谢提供试玩与实机测试反馈的用户、提供初代 Switch 的 Sven,以及 Simone Caronni(@scaronni)、IHSlib、FFmpeg、Opus、SDL、libnx、devkitPro、deko3d 和 nx-hbloader 的作者与维护者。
English
[0.5.1] - 2026-10-20
Previous stable release: v0.5.0. This release: v0.5.1. Target branch: main; tagged source: v0.5.1.
Highlights
- Streaming recovery and shutdown: improve video-loss feedback, keyframe recovery, decoder queues, and frame ownership. Preserve the final eligible receive batch during shutdown and treat normal close-time cancellation separately from submission failures.
- Discovery and retries: use bounded socket recreation when every discovery broadcast destination fails. Correct the order of receive batches, discovery sends, and launch retries while preserving host identity and the current request. Full discovery rounds and fast retries follow the verified official deadlines and sequence rules.
- Authorization and credentials: improve automatic authorization within the original launch request, credential-save attempts before confirmation, and key storage under the selected Steam identity. Pairing authorization codes and connection security codes remain separate.
- Ordinary release build: explicitly disable application and SDK diagnostics. The published NRO excludes the debug UDP endpoint, nxlink/file logging, HID history capture, advanced diagnostic overlays, fault injection, and test probes. Publication gates inspect actual objects, ELF/NRO consistency, and the attachment allowlist. Tag workflows retain diagnostic exclusion tests without uploading diagnostic packages.
Commits by type
- Recovery and lifecycle fixes:
3be848b, UDP receive boundaries;07ed493, close-time submission cancellation;a94d163andc5a7cfb, decoder stop batches and final frame assembly. - Discovery fixes:
8fad3caand9f193c8, receive recovery and failed-startup cleanup;6c7a02dande1274b5, broadcast recreation and discovery rounds;fe5bc32,e46cf75, and9de506c, operation, callback, and joint retry ordering (PR #87). - Authorization and release checks:
a3000a4,eeeb684,b51680d, and03bf16e, authorization and credential lifetimes;55fcf98, SDK diagnostic exclusion and artifact gates. - Validation and references: original-instruction comparisons, audio gap/stop cases, cross-group and cross-channel FEC, capacity boundaries, and isolated Switch probes. Research and test fixtures are excluded from the ordinary NRO.
Validation and evidence scope
The verified 9de506c / IHSlib bfb7100 passed 239 ordinary desktop tests, 245 diagnostic tests, nine related ASan/UBSan/leak checks, and two full CI runs. Switch checks covered diagnostic exclusion in 45 product translation units, SDK objects, and the final NRO, with 15 contamination cases and nine probe artifact/call-path faults rejected. The tag workflow rebuilds the final release commit and repeats these checks.
Real Steam→Switch sessions verified FEC reconstruction after one missing data shard and recovery after an entire group was erased beyond its repair capacity: an actual recovery request was sent, a later keyframe was received and submitted, and playback continued for 30 seconds. Loss-to-keyframe-submission was about 40 milliseconds in this controlled LAN run, with zero submission errors (device evidence). This is not a latency guarantee for other networks or proof of the original intermittent-stall/Steam Big Picture flicker cause. Network switching, complete session disconnection, and Internet connectivity remain separate work.
Download and update
Download the ordinary .nro from this release, or use the in-app updater. Existing HOME shortcuts continue to target sdmc:/switch/nsteamlink/nsteamlink.nro. Attachments contain only the ordinary NRO, source identity, diagnostic exclusion report, SDK package list, license text, and SHA256SUMS.
Thanks to users providing playtesting and device-test feedback, Sven for the original-model Switch, Simone Caronni (@scaronni), and the authors and maintainers of IHSlib, FFmpeg, Opus, SDL, libnx, devkitPro, deko3d, and nx-hbloader.
NSteamLink v0.5.0
NSteamLink v0.5.0
简体中文
[0.5.0] - 2026-10-19
上一正式版:v0.4.0。本版:v0.5.0。目标分支:main;对应源码:v0.5.0。
主要变化
- 1080p 串流:新增自动、720p、1080p 三种分辨率选择。自动在连接时按掌机选择 720p、底座选择 1080p;掌机也可手动选择 1080p,解码后缩放至内屏。底座呈现保留原生 1080p 细节。
- 设置分类:首页 X 直接打开设置,分为画面与声音、网络、主机管理、应用。画面偏好、分辨率、带宽和语言入口显示当前值;声音、网络纠错和自动检查更新统一使用图形开关。只有进入子页的项目显示箭头。
- 精简串流菜单:标题改为“串流”,只保留继续游玩、结束游戏并断开、断开连接。串流期间不再提供设置入口;确认框明确区分关闭主机游戏与保留游戏运行。
- 界面整理:统一“主机”称呼,移除菜单内重复的生效时机说明,调整中英文排版、返回焦点及禁用项的手柄和触摸交互。
按类型分组的提交
- 功能:
3560194,可选分辨率、自动底座协商和原生 1080p 呈现(PR #60,Issue #12);719deef,设置分类与串流菜单重组。 - 修复:
be19b8a,分辨率入口和侧栏布局;1e74f71,真机探针的 nxlink 参数顺序。 - 开发测试:
1e4e13c,独立的强制 1080p 测试构建;正式发布包使用自动分辨率默认值。
验证与证据范围
本地 173 项回归最终通过,Switch 正式构建及诊断排除检查通过,中英文菜单经过实际渲染检查。Switch 的 12 组硬件解码与原生 1080p 像素检查通过,测试资源清理无堆增长;维护者对掌机强制 1080p 串流进行了试玩并反馈正常。
目前没有底座,HDMI 输出与真实底座插拔尚未实测;上述结果也不代表持续 1080p60 性能或完整延迟基准已验证。标签工作流会重新执行桌面诊断 ON/OFF 测试、Switch 正式及诊断构建,并校验版本、NRO 结构、源码身份和附件校验和后发布。
下载与更新
从本版 Release 下载正式 .nro,或通过现有应用内更新升级。已添加 HOME 入口时,固定目标为 sdmc:/switch/nsteamlink/nsteamlink.nro。分辨率位于 设置 → 画面与声音 → 分辨率,自动检查更新位于 设置 → 应用。netloader 启动不检查更新。
附件包含正式 NRO、SHA256SUMS、build_identity.json、SDK 包清单及许可证;不发布强制 1080p 测试包或独立 NSP。
感谢用户提出 1080p 需求和菜单反馈、Sven 提供初代 Switch,以及 IHSlib、FFmpeg、Opus、SDL、libnx、devkitPro、deko3d 与 nx-hbloader 的作者和维护者。
English
[0.5.0] - 2026-10-19
Previous stable release: v0.4.0. This release: v0.5.0. Target branch: main; tagged source: v0.5.0.
Highlights
- 1080p streaming: choose Auto, 720p, or 1080p. Auto requests 720p in handheld mode and 1080p when docked at connection time. Handheld mode also supports manually selected 1080p, decoded at full resolution and scaled to the internal screen. Docked presentation preserves native 1080p detail.
- Settings categories: X on the home screen opens Settings directly, with Video & audio, Network, Host management, and Application. Quality, resolution, bitrate, and language entries show the saved value. Sound, error correction, and update checks use consistent graphical switches. Only entries that navigate to another page show arrows.
- Simpler streaming menu: Streaming offers only Resume game, End game and disconnect, and Disconnect. Settings are available from the home screen. Confirmations distinguish closing the host game from disconnecting while leaving it running.
- Interface cleanup: consolidate host terminology, remove repeated timing explanations, and revise Chinese/English layouts, return focus, and controller/touch behavior for disabled actions.
Commits by type
- Features:
3560194, selectable resolution, automatic docked negotiation, and native 1080p presentation (PR #60, Issue #12);719deef, settings categories and streaming menu reorganization. - Fixes:
be19b8a, resolution navigation and drawer layout;1e74f71, nxlink argument ordering for device probes. - Development tests:
1e4e13c, an isolated forced-1080p test build. The published application defaults to automatic resolution.
Validation and evidence scope
All 173 local regression tests ultimately passed, along with the ordinary Switch build and release diagnostic exclusion check. Chinese and English menus were inspected using actual rendering. All 12 Switch hardware-decode/native-1080p pixel cases passed, with clean test resources and no heap growth; the maintainer reported successful handheld playtesting of forced-1080p streaming.
A physical dock was unavailable, so HDMI output and physical dock hotplug remain untested. These results do not establish sustained 1080p60 performance or a complete latency baseline. The tag workflow repeats desktop diagnostics ON/OFF tests, ordinary and diagnostic Switch builds, and checks the version, NRO structure, source identity, and attachment checksums before publishing.
Download and update
Download the ordinary .nro from this release, or use the existing in-app updater. An installed HOME shortcut targets sdmc:/switch/nsteamlink/nsteamlink.nro. Resolution is under Settings → Video & audio → Resolution; automatic update checks are under Settings → Application. Netloader launches skip update checks.
Attachments contain the ordinary NRO, SHA256SUMS, build_identity.json, the SDK package list, and license text. Forced-1080p test packages and standalone NSPs are not published.
Thanks to users for the 1080p request and menu feedback, Sven for the original-model Switch, and the authors and maintainers of IHSlib, FFmpeg, Opus, SDL, libnx, devkitPro, deko3d, and nx-hbloader.
NSteamLink v0.4.0
NSteamLink v0.4.0
简体中文
[0.4.0] - 2026-10-19
上一正式版:v0.3.0。本版:v0.4.0。目标分支:main;对应源码:v0.4.0。运行代码沿用已试玩的 d05abab,IHSlib 固定为 afed70e;发版提交仅更新版本和中英说明。
主要变化
- 媒体恢复与传输:按已核实的官方客户端路径调整视频丢包反馈、关键帧恢复、解码重置与帧呈现时序,以及可靠传输的确认、重发和接收窗口处理;接入 FEC 接收与保存的 FEC 设置。
- 音频播放:调整 Opus 丢包恢复、抖动缓冲、原始音频播放及播放器启停,改善音视频数据与设备的生命周期管理。
- 连接测网与设置:接入首次及手动测网、结果保存和推荐预设,保留完整客户端配置;连接等待区分传输、认证和媒体阶段,移除固定视频停顿自动断开。
- Switch 能力:按实际后端声明 720p60 / H.264,省略未经确认的最大解码码率。相册 applet 模式可通过确认界面安装 HOME 入口,并显示安装活动与用时;串流仍需全内存模式。
- 协议参考:补充 Steam Link Anywhere / SDR 客户端策略、协议 schema 及可复现离线审计;这部分研究本身不提供可直接使用的完整公网串流后端。
按类型分组的提交
- 功能:
1a49cca,applet 模式安装 HOME 入口(Issue #44);c4de796、2512fb1、d6fab25,FEC 接收、连接生命周期与完整配置持久化。 - 修复与集成:
7c3b220、a3fe641、d095563,关键帧、内容模式与加密分片;1e8e542、87e6c4f,音频恢复及缓冲;59eebda、697f9b9、40dd5b3,测网、连接等待与已退休会话处理。完整集成见 PR #53。 - 研究与文档:PR #50,Anywhere / SDR 策略与 schema;PR #53,官方媒体、传输、设置和测网路径对照。
验证与证据范围
维护者已对 d05abab 主线试玩包进行真机试玩并反馈使用良好;主线 CI 的桌面诊断 ON/OFF 各 170 项测试、Switch 普通及诊断构建通过。标签工作流会再次执行这些检查,并核验版本、正式包诊断排除、NRO 结构、构建来源和附件校验和后发布。
离线原指令回放与受控 peer 测试仅证明对应输入和边界。真实 Steam 的 FEC 启用、不同网络和主机的长期表现、硬件错误及 hbmenu 返回生命周期仍需进一步验证,不能据此断言此前偶发卡顿或 Steam 大屏闪烁已根治。后续逆向开发分支的未合并改动不包含在本版中;其余协议差异由 Issue #52 跟踪。
致谢
感谢提供试玩反馈和问题线索的用户、提供初代 Nintendo Switch 的 Sven,以及 Simone Caronni(@scaronni)、IHSlib、FFmpeg、Opus、SDL、libnx、devkitPro、deko3d 与 nx-hbloader 的作者和维护者。
下载与更新
从本版 Release 下载 .nro;v0.3.0 起从 SD 卡启动时可使用应用内更新,netloader 启动不检查更新。已添加 HOME 入口时,其固定目标为 sdmc:/switch/nsteamlink/nsteamlink.nro。正式包关闭高级诊断,附件包含 SHA256SUMS、build_identity.json 和 SDK 包清单;仅发布 NRO,不发布独立 NSP 或测试工具。
English
[0.4.0] - 2026-10-19
Previous stable release: v0.3.0. This release: v0.4.0. Target branch: main; tagged source: v0.4.0. Runtime code is unchanged from the tested d05abab candidate, with IHSlib pinned to afed70e; the release commit only updates the version and bilingual notes.
Highlights
- Media recovery and transport: adjust video loss feedback, keyframe recovery, decoder resets, frame presentation timing, and reliable transport acknowledgements, retransmission, and receive windows against verified official-client paths. Integrate FEC reception and the saved FEC setting.
- Audio playback: adjust Opus loss recovery, jitter buffering, raw audio playback, and player startup/shutdown, with revised ownership of media data and playback devices.
- Connection tests and settings: integrate first-time and manual network tests, saved results, recommended presets, and complete client configuration persistence. Distinguish transport, authentication, and media connection waits; remove automatic disconnects based on a fixed video-stall timeout.
- Switch capabilities: report the actual backend's 720p60 / H.264 support and omit unverified maximum decode bitrates. Album applet mode can install the HOME shortcut through a confirmation screen with activity and elapsed-time feedback; streaming still requires full application mode.
- Protocol references: add Steam Link Anywhere / SDR client policies, protocol schemas, and reproducible offline audits. This research does not itself provide a complete, usable Internet streaming backend.
Commits by type
- Features:
1a49cca, HOME shortcut installation in applet mode (Issue #44);c4de796,2512fb1,d6fab25, FEC reception, connection lifecycle, and complete configuration persistence. - Fixes and integration:
7c3b220,a3fe641,d095563, keyframes, content modes, and encrypted fragments;1e8e542,87e6c4f, audio recovery and buffering;59eebda,697f9b9,40dd5b3, network tests, connection waits, and retired sessions. See PR #53 for the full integration. - Research and documentation: PR #50, Anywhere / SDR policies and schemas; PR #53, official media, transport, settings, and network-test comparisons.
Validation and evidence scope
The maintainer tested the d05abab main-branch candidate on a real Switch and reported that it worked well. Main-branch CI passed 170 desktop tests each with diagnostics ON/OFF, plus ordinary and diagnostic Switch builds. The tag workflow repeats these checks and verifies the version, release diagnostic exclusion, NRO structure, build provenance, and attachment checksums before publishing.
Offline original-instruction replays and controlled-peer tests prove only the corresponding inputs and boundaries. FEC activation with real Steam, long-term behavior across networks and hosts, hardware errors, and the hbmenu return lifecycle need further validation. This does not establish that the previously reported intermittent stalls or Steam Big Picture flickering are fully resolved. Unmerged changes on the continuing reverse-engineering branch are excluded; remaining protocol differences are tracked in Issue #52.
Thanks
Thank you to users who provided playtest feedback and issue reports, Sven for the original-model Nintendo Switch, Simone Caronni (@scaronni), and the authors and maintainers of IHSlib, FFmpeg, Opus, SDL, libnx, devkitPro, deko3d, and nx-hbloader.
Download and update
Download the .nro from this release. Starting with v0.3.0, SD-card launches support in-app updates; netloader launches skip update checks. An installed HOME shortcut targets sdmc:/switch/nsteamlink/nsteamlink.nro. Release builds exclude advanced diagnostics and include SHA256SUMS, build_identity.json, and the SDK package list. Only the NRO is published, with no standalone NSP or test tools.
NSteamLink v0.3.0
NSteamLink v0.3.0
简体中文
[0.3.0] - 2026-10-15
上一正式版:v0.2.1。本版:v0.3.0。目标分支:main;对应源码:v0.3.0。
主要变化
- 应用内更新:Switch 启动后在后台检查最新正式版,有更新时在首页询问是否安装;每次启动最多提示一次。X 选项中的“检查更新”默认开启,关闭后下次启动生效。网络查询失败时静默跳过。
- 下载与校验:仅通过校验证书的 HTTPS 获取本仓库正式 Release,下载大小及 SHA-256 校验通过后才替换 NRO;文件替换失败时尝试恢复该文件的旧副本。同步更新启动文件与已存在的 HOME 入口目标,完成后提示退出并重新启动。
- 简化发布:移除从未实际发布过的独立 NSP 构建与密钥配置,只发布 NRO。NRO 内的“添加到 HOME 菜单”功能继续保留,无需用户提供打包密钥。
按类型分组的提交
- 功能:
0a93607,启动检查、更新设置、下载校验及更新界面(PR #41)。 - 构建与清理:
6df4b21、8b45610,移除独立 NSP 打包及仅服务于该路径的代码(PR #42)。 - 文档:
4c0e8c0、68fd88d,记录 NRO 发布与应用内更新的设计及证据边界。
致谢
感谢 Simone Caronni(@scaronni) 贡献 PR #41 / #42,实现应用内更新、简化打包流程,并补充自动测试和验证记录。感谢 Sven 提供初代 Nintendo Switch,支持开发与实机测试;感谢 IHSlib、FFmpeg、SDL、libnx、devkitPro、deko3d 与 nx-hbloader 等开源项目的作者和维护者。
验证与证据范围
已审阅上述两个 PR 的更新器、UI、线程清理和打包改动。诊断 ON/OFF 两套桌面测试各 56 项及发布工具测试通过;合并后上游 CI 的桌面与 Switch 构建通过。标签工作流还会核对版本、正式包诊断排除、NRO 结构、构建来源及附件校验和,全部通过后才公开发布。
贡献者记录了主机端连接 GitHub、下载并校验 v0.2.1 的测试。Switch 上完整的查询、下载、替换、重新启动,以及断网、SD 卡空间不足和 hbmenu 返回生命周期仍待真机验证;桌面测试与交叉构建不证明这些设备行为。
下载与更新
v0.2.1 及更早版本没有应用内更新,请从本版 Release 下载 .nro 完成本次升级。已添加 HOME 入口时,替换其固定目标 sdmc:/switch/nsteamlink/nsteamlink.nro。从 v0.3.0 起,从 SD 卡启动时可使用应用内更新;netloader 启动不检查更新。正式包关闭高级诊断,附带 SHA256SUMS、build_identity.json 和 SDK 包清单。
English
[0.3.0] - 2026-10-15
Previous stable release: v0.2.1. This release: v0.3.0. Target branch: main; tagged source: v0.3.0.
Highlights
- In-app updates: Switch checks for the latest stable release in the background at startup and offers installation on the home page, at most once per launch. “Update check” in X Options defaults to On; disabling it takes effect on the next launch. Failed checks are silently skipped.
- Download verification: only use certificate-verified HTTPS for this repository's stable releases. Check the download size and SHA-256 before replacing an NRO; if replacing a file fails, attempt to restore its old copy. Update the launched file and any existing HOME shortcut target, then ask the user to exit and relaunch.
- Simpler releases: remove the standalone NSP build and its key configuration, which never produced a published release asset. Releases contain the NRO; its “Add to HOME Menu” feature remains available without user-supplied packaging keys.
Commits by type
- Feature:
0a93607, startup checks, update settings, verified downloads, and update UI (PR #41). - Build and cleanup:
6df4b21,8b45610, remove standalone NSP packaging and code used only by that path (PR #42). - Documentation:
4c0e8c0,68fd88d, record NRO release and in-app update decisions and evidence limits.
Thanks
Thank you to Simone Caronni (@scaronni) for PRs #41 / #42: implementing in-app updates, simplifying packaging, and adding automated tests and validation records. Thank you to Sven for providing an original-model Nintendo Switch for development and device testing, and to the authors and maintainers of IHSlib, FFmpeg, SDL, libnx, devkitPro, deko3d, and nx-hbloader.
Validation and evidence scope
Reviewed both PRs' updater, UI, thread cleanup, and packaging changes. Desktop suites with diagnostics ON/OFF passed all 56 tests each, along with release tooling tests; upstream desktop and Switch CI passed after the merges. The tag workflow also verifies the version, release diagnostic exclusion, NRO structure, build provenance, and attachment checksums before publication.
The contributor recorded a host-side test that connected to GitHub, downloaded v0.2.1, and verified its checksum. The full check/download/replace/relaunch flow on Switch, network interruption, insufficient SD space, and the hbmenu return lifecycle still require device validation. Desktop tests and cross builds do not prove those device behaviors.
Download and update
v0.2.1 and earlier have no in-app updater: download the .nro from this release for this upgrade. If a HOME shortcut is installed, replace its fixed target at sdmc:/switch/nsteamlink/nsteamlink.nro. Starting with v0.3.0, in-app updates are available when launched from the SD card; netloader launches skip update checks. Release builds exclude advanced diagnostics and include SHA256SUMS, build_identity.json, and the SDK package list.
NSteamLink v0.2.1
NSteamLink v0.2.1
简体中文
[0.2.1] - 2026-10-11
上一正式版:v0.2.0。本版:v0.2.1。目标分支:main;对应源码:v0.2.1。
主要变化
- 修复现代 Steam 的首次配对:支持配对码掩码的 X25519 密钥交换,按电脑保存协商密钥,重新启动应用后可复用配对。旧 v2/v3 配置迁移时保留原有身份与配对信息。首次配对码与连接安全 PIN 仍是两个独立概念。
- 改善局域网主机发现:发现请求同时发送到本地 IPv4 子网广播地址,修复已记录的 Switch 与 Linux Steam 主机之间仅全局广播无应答的问题。
- 修复 Switch 打开“手动添加电脑”时退出:将 deko 每帧 quad 上限从 4096 提高到 8192,并在诊断构建中记录超限原因。
- 同步 IHSlib 官方更新:解码器报告丢帧后清理待处理数据并等待关键帧;串流能力由应用提供实际平台与解码器信息,省略未经确认的 Switch 系统类型与设备形态。
按类型分组的提交
修复
4a7973d:按主机保存配对协商密钥,并保留 UI 快照缺失的密钥(PR #36)。63075fc:提高 deko quad 上限,修复手动添加电脑页面退出(PR #37,Issue #35)。1f55e51:同步官方解码恢复,并由应用提供平台串流能力(Issue #38)。
构建与依赖
689ecd8、d09e63f:更新 IHSlib,接入配对密钥交换和子网广播发现。552c839:统一 IHSlib fork 的维护分支并固定依赖提交。
文档
2c85f49、7861d68:记录官方客户端密钥交换、Switch 配对与主机发现的源码和真机证据。
致谢
- 感谢 Simone Caronni(@scaronni) 完成 PR #36 / #37 及相关 IHSlib 工作,修复配对密钥交换、按主机保存密钥、子网发现与手动添加电脑页面退出,并提供 Switch / Linux Steam 主机验证证据。
- 感谢 @akiriroll 在 Issue #35 中报告发现失败及手动添加电脑退出的问题,提供设备环境与复现信息。
- 感谢 Mariotaku(@mariotaku) 与 @skwizzy222 提供本版吸收的上游解码丢帧恢复工作与原始思路(IHSlib 提交 6721ecc)。
- 感谢 Sven 提供初代 Nintendo Switch,支持开发与实机测试;感谢 IHSlib、FFmpeg、SDL、libnx、devkitPro、deko3d 与 nx-hbloader 等开源项目的作者和维护者。
验证与证据范围
PR #36 记录了 Switch 发现 Linux Steam 主机、成功配对,以及应用重启后无需重新配对即可再次串流的真机结果。后续集成提交 1f55e51 通过诊断 ON/OFF 桌面测试(各 55 项)、Switch 正式/诊断构建及发布工具检查。标签工作流会再次运行桌面测试、Switch 构建、正式包诊断排除与附件结构/来源校验,全部通过后才公开发布。
新平台能力字段与解码恢复在不同 Steam 主机、真实网络丢帧和 NVDEC 错误中的效果仍待验证;上述构建和测试不代表这些场景或 hbmenu 返回生命周期已获真机证明。
下载与更新
从本版 Release 下载 .nro 附件。若已添加 HOME 入口,更新其固定目标 sdmc:/switch/nsteamlink/nsteamlink.nro 即可。正式 NRO 关闭高级诊断,包含本机 HOME 入口安装功能;独立 .nsp 仅在发布构建配置了打包密钥时提供。SHA256SUMS、build_identity.json 与 SDK 包清单用于核验附件和构建来源。
English
[0.2.1] - 2026-10-11
Previous stable release: v0.2.0. This release: v0.2.1. Target branch: main; tagged source: v0.2.1.
Highlights
- Fix pairing with modern Steam: support the PIN-masked X25519 key exchange and persist the negotiated key for each computer, so pairing can be reused after restarting the app. Migration from v2/v3 profiles retains existing identity and pairing data. The initial pairing code and the connection security PIN remain separate concepts.
- Improve LAN discovery: also send discovery requests to local IPv4 subnet broadcast addresses, addressing the recorded Switch/Linux Steam host case where global broadcast alone received no response.
- Fix the app exiting when opening “Add PC manually” on Switch: raise the deko per-frame quad limit from 4096 to 8192 and report limit exhaustion in diagnostic builds.
- Integrate upstream IHSlib updates: flush pending data and wait for a keyframe after decoder-reported frame loss; report actual platform and decoder capabilities supplied by the app, omitting unverified Switch OS type and form factor.
Commits by type
Fixes
4a7973d: persist each host's negotiated pairing key and retain keys missing from UI snapshots (PR #36).63075fc: increase deko quad capacity to prevent the manual PC page from exiting (PR #37, Issue #35).1f55e51: integrate upstream decoder recovery and supply platform streaming capabilities from the app (Issue #38).
Build and dependencies
689ecd8,d09e63f: update IHSlib for pairing key exchange and subnet broadcast discovery.552c839: consolidate IHSlib fork maintenance on one branch and pin the dependency commit.
Documentation
2c85f49,7861d68: document official-client key exchange and source/device evidence for Switch pairing and host discovery.
Thanks
- Thank you to Simone Caronni (@scaronni) for PRs #36 / #37 and the related IHSlib work: pairing key exchange, per-host key persistence, subnet discovery, and the manual PC page fix, with Switch/Linux Steam host validation evidence.
- Thank you to @akiriroll for reporting discovery failure and the manual PC page exit in Issue #35, including the device environment and reproduction details.
- Thank you to Mariotaku (@mariotaku) and @skwizzy222 for the upstream decoder-loss recovery work and original idea integrated in this release (IHSlib commit 6721ecc).
- Thank you to Sven for providing an original-model Nintendo Switch for development and device testing, and to the authors and maintainers of IHSlib, FFmpeg, SDL, libnx, devkitPro, deko3d, and nx-hbloader.
Validation and evidence scope
PR #36 records device results for discovering a Linux Steam host from Switch, pairing successfully, and streaming again after restarting the app without re-pairing. Integration commit 1f55e51 passed desktop tests with diagnostics ON/OFF (55 each), Switch release/diagnostic builds, and release tooling checks. The tag workflow repeats desktop tests, Switch builds, release diagnostic-exclusion checks, and artifact structure/provenance validation before publication.
The effects of the new capability fields and decoder recovery across different Steam hosts, real network loss, and NVDEC errors still require device validation. These builds and tests do not establish device proof for those cases or the hbmenu return lifecycle.
Download and update
Download the .nro attachment from this release. If you already installed a HOME shortcut, update its fixed target at sdmc:/switch/nsteamlink/nsteamlink.nro. The release NRO excludes advanced diagnostics and includes on-device HOME shortcut installation; a standalone .nsp is provided only when packaging keys are configured for the release build. Use SHA256SUMS, build_identity.json, and the SDK package list to verify artifacts and build provenance.