Skip to content

Repository files navigation

LianliToMSIGPU

Platform Release License

让 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 下载完整安装包,不要直接下载仓库源码当作安装包。

v1.1.0 更新

  • 默认改用 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"]
Loading

输入端口只被监听,不会被本程序占用;输出端只绑定 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 显卡可能采用相似协议,但没有经过硬件验证。

安装

1. 准备环境

  1. 安装 L-Connect 3,并在“设置 → 设备 → OpenRGB Beta”中启用同步功能。
  2. 安装 Wireshark,安装过程中保留 Npcap,并启用 loopback 支持。
  3. 正常启动 L-Connect 3,确认其 OpenRGB 服务正在本机端口 6742 监听。
  4. 退出 MSI Center/Mystic Light 的灯效控制,避免两个程序同时写显卡。

2. 安装程序

  1. 最新 Release 下载 ZIP。
  2. 校验 ZIP 的 .sha256 文件后完整解压。
  3. 以管理员身份打开 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.logopenrgb-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 会显示显卡当前实际使用的 DirectWaveColor CycleFade InOffeffect_policy 会说明当前采用的策略和映射原因;Direct 模式还会报告 last_write_latency_msaverage_write_latency_msmaximum_write_latency_mscapture_backend_active 应正常显示为 npcapaverage_capture_delivery_msaverage_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 秒刷新状态文件,不需要重新打开桥接程序。

临时改用 Mystic Light

先在 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 均为其各自所有者的名称或商标。本项目为独立兼容性工具,与这些厂商或项目没有隶属关系。

About

让 L-Connect 3 同步控制 MSI RTX 5090 SUPRIM SOC 灯效,同时保留联力全部硬件。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages