让 L-Connect 3 的“快速/同步照明”控制真实的 MSI RTX 5090 灯效,同时保留联力界面中的内存、主板、风扇等原有硬件。
项目针对 L-Connect 内置 OpenRGB 能显示一个 MSI GPU 占位设备、却无法直接驱动 MSI GeForce RTX 5090 SUPRIM SOC 的情况。程序被动读取联力已经生成的颜色数据,再通过独立的 GPU-only OpenRGB 实例写入显卡。它不会替换、修改或劫持 L-Connect 自带的 OpenRGB.exe。
最新正式版为 v1.1.0。请从 Releases 下载完整安装包,不要直接下载仓库源码当作安装包。
- 默认改用 Npcap immediate mode,消除 tshark 管道缓冲造成的主要延迟。
- Direct 输出改成 latest-frame-wins,显卡短时阻塞时直接追上最新颜色,不补播过期帧。
- 重新适配跑道、爆破、涟漪、心跳、堆叠、颜色轮询、覆盖轮询和回声。
- 增加捕获、写入和端到端分段延迟指标,方便继续针对具体灯效调优。
- 限制状态文件刷新与日志体积,降低长期后台运行开销。
详细变化和实测数据见 v1.1.0 发布说明。
- 保留 L-Connect 原有 OpenRGB 服务及全部硬件列表。
- 默认直接调用 Npcap 即时捕获接口;只有直接捕获不可用时才回退到 tshark。
- 连续且能表达整机相位的同步效果使用实时
Direct帧镜像。 - 自动识别 L-Connect 配置中的效果、颜色、速度和亮度。
- 对爆破、涟漪读取主板的完整多 LED 帧,再投影到显卡单区,避免只取一颗占位灯造成错误相位。
RunwayWireless使用随联力效果切换重置的单区经过脉冲,避免 MSI 独立硬件时钟长期漂移。- 对其余会在单 LED 占位设备上退化成全黑或大量空帧的效果,自动选择 MSI 可配色硬件动画。
HeartBeatWireless使用低开销双脉冲本地合成,恢复被单 LED 占位设备丢失的心跳节奏。- L-Connect 未保存自定义颜色时,使用红、绿、蓝全彩轮询;保存了颜色时按设置顺序取最多 3 色。
- Direct 输出只保留一个最新待写帧,显卡短时阻塞时不会排队播放已经过时的颜色。
- 切换效果后会在
Direct、硬件动画和本地合成之间自动切换。 - 当前用户登录 60 秒后以最高权限自动启动;失败时由计划任务自动重试。
- GPU-only OpenRGB 使用独立进程名,避免重启时被 L-Connect 误认为自己的服务。
- 即使延迟启动错过首次设备枚举,也会通过只读 SDK 查询自动找到
MSI GPU并持续等待源端恢复。 - 支持从旧版原地升级;旧安装会保存为可恢复备份。
- 状态、错误和帧计数写入 JSON,便于排查。
- 状态文件每 5 秒刷新;两个日志均按单文件 5 MiB、保留 2 个备份自动轮转。
flowchart LR
A["L-Connect 3 界面"] --> B["联力内置 OpenRGB<br/>127.0.0.1:6742"]
B --> C["Npcap 即时捕获<br/>tshark 仅作故障回退"]
C --> D["LianliToMSIGPU<br/>识别单灯帧、多 LED 参考帧与当前效果"]
D --> E["GPU-only OpenRGB 1.0rc3<br/>127.0.0.1:16743"]
E --> F["MSI GeForce RTX 5090<br/>SUPRIM SOC"]
输入端口只被监听,不会被本程序占用;输出端只绑定 127.0.0.1。更完整的设计与安全边界见 技术说明。
| 项目 | 已验证值 |
|---|---|
| 操作系统 | Windows 11 x64 |
| L-Connect 3 | 2.1.21、2.1.26 |
| L-Connect 内置 OpenRGB | 0.2.5.2 |
| 内置 OpenRGB SHA-256 | 0C2AA7BED2A52180ACB44BCCAE667D56054C9DE6B81AF957DC6B6FB55749CC87 |
| 目标显卡 | MSI GeForce RTX 5090 SUPRIM SOC |
| 独立输出服务 | OpenRGB 1.0rc3 |
| 独立 OpenRGB SHA-256 | 0E1EB6E9042B7B1CC85163D4B2A8354068C67966283BF696DA0576AEB1917104 |
| 捕获工具 | Npcap Loopback Adapter(即时接口);tshark 故障回退 |
目前只把上表中的显卡型号作为受支持目标。其他 MSI 显卡可能采用相似协议,但没有经过硬件验证。
- 安装 L-Connect 3,并在“设置 → 设备 → OpenRGB Beta”中启用同步功能。
- 安装 Wireshark,安装过程中保留 Npcap,并启用 loopback 支持。
- 正常启动 L-Connect 3,确认其 OpenRGB 服务正在本机端口
6742监听。 - 退出 MSI Center/Mystic Light 的灯效控制,避免两个程序同时写显卡。
- 从 最新 Release 下载 ZIP。
- 校验 ZIP 的
.sha256文件后完整解压。 - 以管理员身份打开 PowerShell,在解压目录运行:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\安装.ps1安装器会自动在各磁盘的标准 Program Files\Lian-Li\L-Connect 3 目录中查找联力 OpenRGB。如果使用了非标准路径,可显式传入:
.\安装.ps1 -LConnectOpenRgbPath "X:\你的路径\L-Connect 3\OpenRGB\OpenRGB.exe"为避免对未知版本做破坏性尝试,安装器会核对已验证联力 OpenRGB 的 SHA-256;版本不一致时会停止并报告当前哈希。
如果已经安装旧版,直接用管理员 PowerShell 运行新版 安装.ps1 即可升级。安装器会停止旧进程、移除旧的 HKCU Run 自启动、恢复联力 OpenRGB(如有需要),再注册延迟 60 秒且失败自动重试的高权限计划任务。
安装后照常在 L-Connect 3 的“快速/同步照明”中选择灯效、颜色、速度和亮度。后台桥接程序无需单独打开窗口。
关键文件:
| 用途 | 路径 |
|---|---|
| 安装目录 | C:\ProgramData\LConnectMSI5090Mirror |
| 实时状态 | C:\ProgramData\LConnectMSI5090Mirror\logs\status.json |
| 运行日志 | C:\ProgramData\LConnectMSI5090Mirror\logs\runtime.log |
| OpenRGB 日志 | C:\ProgramData\LConnectMSI5090Mirror\logs\openrgb-console.log |
| 自启动项 | 任务计划程序 \LianliToMSIGPU |
灯效捕获与显卡输出始终实时运行。5 秒间隔只用于刷新诊断状态文件,不会让灯效产生 5 秒延迟。runtime.log 和 openrgb-console.log 最多各保留当前文件及 2 个备份。
正常状态至少应满足:
{
"state": "running",
"source_device": "MSI GPU",
"target_device": "MSI GeForce RTX 5090 SUPRIM SOC",
"target_connected": true,
"last_error": null
}active_output_mode 会显示显卡当前实际使用的 Direct、Wave、Color Cycle、Fade In 或 Off。
effect_policy 会说明当前采用的策略和映射原因;Direct 模式还会报告
last_write_latency_ms、average_write_latency_ms 与
maximum_write_latency_ms。capture_backend_active 应正常显示为
npcap;average_capture_delivery_ms 与
average_capture_to_write_latency_ms 分别表示抓包交付和抓包到写入完成的延迟。
以下策略来自这台机器上 L-Connect 3 2.1.26 的实际回环帧采样。选择原则是:优先使用联力自己的帧时钟;单灯信息不足时先使用整机多 LED 参考帧,最后才使用没有跨设备时钟的 MSI 硬件动画。
| L-Connect 灯效 | 显卡输出 | 目的 |
|---|---|---|
| 彩虹、幻彩、单色、呼吸、流星、波浪、流星雨、迪斯科、警示、海流 | 占位帧 Direct |
保留联力设备顺序、颜色变化和整体相位 |
| 爆破 | 多 LED 覆盖率投影 + Direct |
把 62 LED 的扩张范围折算成平滑亮度包络,保持联力帧时钟 |
| 涟漪 | 多 LED 波纹投影 + Direct |
从整帧计算背景色、波纹色和覆盖率,避免单颗占位灯的跳变相位 |
| 跑道 | 切换时重置的单区经过脉冲 + Direct |
一颗灯无法显示空间跑道;以背景色和短促主色脉冲表示跑道经过,并避免 MSI 硬件时钟漂移 |
| 堆叠、覆盖轮询 | MSI Wave |
避免一颗占位 LED 退化为常亮或全黑,并保留自定义色表 |
| 闪烁/轮询、颜色轮询 | MSI Color Cycle |
按联力色表连续轮询,消除大量空间空帧 |
| 回声 | MSI Fade In |
使用两色渐入淡出恢复回声观感 |
| 心跳 | 本地双脉冲 + Direct |
保留两种自定义颜色并恢复“强、弱”两次心跳 |
MSI 硬件只提供 3 档速度和 5 档亮度,程序会把联力档位映射到最近值。方向无法由显卡固件直接设置;对 Wave 映射会反转色表顺序来近似相反方向。
重启后,进程列表中应同时存在两个不同名称的输出:
- 联力原始服务:
OpenRGB.exe,监听127.0.0.1:6742。 - 本项目显卡服务:
LianliToMSIGPU-OpenRGB.exe,监听127.0.0.1:16743。
如果状态暂时显示 waiting_for_lconnect,表示程序已经启动,但仍在等待联力的 MSI GPU 数据;它会每 2 秒重试只读发现,并每 5 秒刷新状态文件,不需要重新打开桥接程序。
先在 L-Connect 3 中关闭快速/同步照明,再使用 MSI Center/Mystic Light 单独控制显卡。重新启用联力同步后,显卡会再次跟随整体动画。
在 Release 解压目录中运行:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\卸载并回滚.ps1请使用管理员 PowerShell。卸载脚本会停止本项目进程,移除计划任务及旧版自启动项,但不会改动联力文件。安装目录会被移动到:
C:\ProgramData\LConnectMSI5090Mirror-removed\yyyyMMdd-HHmmss
因此日志和安装记录仍可恢复。
需要 Python 3.11、PowerShell 5.1+,以及官方 OpenRGB 1.0rc3 Windows x64 解压目录。
git clone https://github.com/zhr2038/LianlitoMSIGPU.git
cd LianlitoMSIGPU
.\scripts\build_release.ps1 -OpenRgbDirectory "C:\path\to\OpenRGB-1.0rc3" -Version "dev"脚本会创建隔离虚拟环境、锁定依赖版本、构建无控制台 EXE、组装完整安装包,并生成 ZIP 与 SHA-256 文件。构建产物位于 dist,不会提交到 Git。
- 目标设备名目前固定为
MSI GeForce RTX 5090 SUPRIM SOC。 - MSI 的
Color Cycle/Wave硬件模式最多接收 3 种颜色,Fade In最多 2 种;更多颜色会按联力顺序截取。 - 显卡只有一个可写 RGB 区域,不能重现风扇或灯带上的空间移动;跑道、爆破和涟漪只能做单区投影近似。
- 跑道的联力外部 OpenRGB 帧实测为常量,因此无法从颜色帧恢复精确空间位置;程序会在效果切换时重置本地脉冲以尽量减小相位偏差。
- 显卡硬件动画能在 GPU 内部形成更完整的运动,但没有跨设备相位锁;因此仅用于实测无法从联力帧恢复的少数效果。
- MSI 固件不开放硬件动画方向设置,目前只能通过色表顺序近似。
- Release 中的 EXE 未做商业代码签名,Windows SmartScreen 或部分安全软件可能要求手动确认。
- 不建议让 Mystic Light、独立 OpenRGB GUI 与本程序同时控制显卡。
本项目源码使用 GPL-3.0-or-later。Release 同时分发未修改的 OpenRGB 1.0rc3 Windows 二进制,并使用 openrgb-python;各组件版权和许可证见 THIRD_PARTY_NOTICES.md 及安装包内许可证文件。
L-Connect、LIAN LI、MSI、Mystic Light 与 OpenRGB 均为其各自所有者的名称或商标。本项目为独立兼容性工具,与这些厂商或项目没有隶属关系。