aabdelghani/corsair-xeneon-edge-linux
GitHub: aabdelghani/corsair-xeneon-edge-linux
为 CORSAIR XENEON EDGE 触摸屏提供原生 Linux 控制的 Qt6 应用,无需 iCUE 或 Windows 即可实现图像调节、触摸映射和系统仪表盘功能。
Stars: 0 | Forks: 0
Xeneon Edge Control
**为 CORSAIR XENEON EDGE 14.5" LCD 触摸屏提供的原生 Linux 控制。无需 iCUE,无需 Windows,无需云。** CORSAIR 为 [XENEON EDGE](https://www.corsair.com/us/en/p/monitors/cc-9011337-ww/corsair-xeneon-edge-14-5-lcd-touchscreen-atomic-purple-cc-9011337-ww) 搭配的软件 仅能在 Windows 上运行。在 Linux 上,你只能得到一块屏幕和一个触摸面板,无法控制亮度,没有色彩预设,没有触摸映射,也完全没有办法与设备进行通信。iCUE 无法在 Wine 下运行(其安装程序需要 WinRT,并且依赖于 Windows 内核驱动程序),因此 Linux 用户对此束手无策。 我买了一台 Edge,将其插入我的 Linux 台式机后,什么反应也没有。所以我亲自开发了这款缺失的工具。`xeneon-ctl` 是一款干净、原生的 Qt6 应用程序,它赋予 Linux 用户对 Edge 的真正控制权:通过 DDC/CI 进行图像设置,对设备自身的 USB HID 协议进行逆向工程,并提供 Linux 面板前所未有的完善触摸屏体验(校准、独立指针以及触摸涟漪指示器)。 这是一款基于 GPL-3.0 协议的自由开源软件。如果你拥有一台 Xeneon Edge 并使用 Linux,这款工具就是为你准备的。  ## 开发动机 - **CORSAIR Xeneon Edge 官方完全不支持 Linux。** iCUE 仅限 Windows 使用。 - **Wine 帮不上忙。** 最新的 iCUE 安装程序会在 WinRT 上崩溃,而且即使强制安装也无法连接硬件,因为 iCUE 依赖于没有 Wine 替代品的 Windows 内核驱动程序。 - **一旦你能真正配置它,Edge 就是一块出色的 Linux 副屏**:这是一块 2560x720 的超宽条带屏幕,配备 5 点电容式触摸屏,非常适合用作系统仪表盘、赛车模拟游戏遥测、媒体控制或 Conky 面板。 `xeneon-ctl` 通过专门为 Linux 从零编写的代码填补了这一空白,它不是移植版,也不是套壳包装。 ## 功能 ### 通过 DDC/CI 进行图像控制 软件即可实现显示器 OSD 暴露出的所有功能: - 带有实时回读的亮度、对比度和锐度滑块 - 色彩预设(sRGB、原生、5000K、6500K、7500K、9300K、用户自定义) - 每个通道的红色、绿色和蓝色增益 - 屏幕电源关闭和打开(仅使 Edge 面板变黑,应用程序和触摸功能仍保持活动状态) 基于 `ddcutil` 构建,因此它使用的是显示器已经理解的、完全相同的 DDC/CI 通道。无需内核模块,无需 root daemon。 ### 完善的触摸屏体验 Edge 的触摸面板是一个标准的 USB HID 数字化仪,但在 X11 环境下开箱即用时,它会映射到你的整个桌面,并与你的主光标冲突。`xeneon-ctl` 为你提供了四种清晰的模式:  - **关闭**:触摸无效。 - **移动主光标**:经典行为,触摸驱动你的系统指针。 - **独立**:Edge 拥有自己的 X11 指针,因此触摸它绝不会抢占你的主鼠标。 - **指示器(推荐)**:触摸屏完全不会驱动任何指针。透明的覆盖层会在你触摸的确切位置绘制干净的涟漪,让你获得视觉反馈的同时不会产生任何光标杂乱。 此外还内置了 **触摸校准** 程序(点击五个目标,它会计算变换矩阵并应用)以及用于测试对齐的 **触摸指示器覆盖层**。 ### 直接访问设备 HID 协议 Edge 通过供应商 HID 接口(`0xFF1B` 使用页,64 字节报告)使用 CORSAIR 现代的 "Bragi" / Protocol V2。本项目通过安全、只读优先的逆向工程和开源交叉比对记录了该协议。详见 [PROTOCOL.md](PROTOCOL.md)。 - 每次 HID 写入都受到显式确认对话框的限制,在发送任何内容之前会显示确切的字节。 - 每次传输都会记录到 `~/.local/share/xeneon-ctl/hid.log` 中,以确保完全透明。 - 只读的 "Probe" 控制台会解码设备报告描述符,并通过 HID 直接读取设备信息。在我的设备上,它返回 `SM32,01,SC,SQ,Coruscant LCD,V1.00.20`(固件 V1.00.20,内部代号 "Coruscant LCD")。 ### Edge 上的系统仪表盘 将 Edge 变成一个一目了然的状态面板。只需点击一下,即可在触摸屏上渲染全屏仪表盘,包含大时钟以及每秒更新的 CPU、GPU 和内存磁贴。  - 时钟和日期,具有专为 2560x720 面板尺寸设计的大号易读表盘 - CPU 负载和温度(来自 `/proc/stat` 和 hwmon) - GPU 利用率、温度和显存(来自 `nvidia-smi`) - 已用内存和总内存 - 强调色使用条、深色主题、按 Esc 关闭 ### 深色原生界面 简洁的 Qt6 Widgets UI 采用深色主题,布局便于快速访问。没有 Electron,没有 Web 技术栈,没有后台遥测。 ## 支持的硬件 | 项目 | 值 | |------|-------| | 设备 | CORSAIR XENEON EDGE 14.5" LCD 触摸屏 | | USB ID | `1b1c:1d0d` | | 显示器 | DisplayPort,2560x720(用作标准显示器) | | 触摸屏 | USB HID 数字化仪,5 点电容式 | | 测试环境 | Ubuntu 24.04,X11,GNOME,Qt 6.4 | 该架构为更多 CORSAIR 设备留出了空间,但目前的重点是 Edge。 ## 安装 ### 选项 A:Debian 软件包(推荐,适用于 Ubuntu / Debian) 从 [Releases](https://github.com/aabdelghani/corsair-xeneon-edge-linux/releases) 下载最新的 `xeneon-ctl_*.deb`,并像安装 Chrome 或 VS Code 一样进行安装: ``` sudo apt install ./xeneon-ctl_0.2.0_amd64.deb ``` 这将安装 `xeneon-edge` GUI 和 `xeneonctl` CLI,将该应用程序(及其图标)添加到你的应用程序菜单中,并安装 udev 规则以便你的用户能够访问该设备。安装完成后,将你自己添加到 `i2c` 组一次,即可进行 DDC 亮度控制: ``` sudo usermod -aG i2c "$USER" # then log out and back in ``` 然后从你的应用网格中启动 **Xeneon Edge Control**,或者运行 `xeneon-edge`。 ### 选项 B:从源码构建 ``` sudo apt install build-essential cmake qt6-base-dev libhidapi-dev \ libx11-dev libxi-dev ddcutil git clone https://github.com/aabdelghani/corsair-xeneon-edge-linux.git cd corsair-xeneon-edge-linux cmake -B build && cmake --build build -j # 授予 device access sudo cp udev/60-corsair-xeneon.rules /etc/udev/rules.d/ sudo udevadm control --reload && sudo udevadm trigger sudo usermod -aG i2c "$USER" # then log out and back in ./build/xeneon-edge # the GUI ./build/xeneonctl list # quick CLI status ctest --test-dir build # unit tests ``` 要构建你自己的 `.deb` 文件,请运行:`cd build && cpack`。 ### 应用商店 `.deb` 安装完成后,该应用程序会出现在 GNOME Software / Ubuntu App Center 的已安装应用程序中,并带有其图标和描述(包含 AppStream 元数据)。将其作为可浏览的条目发布到 Flathub 或 Snap Store 已列入路线图;由于该应用程序直接与硬件通信(hidraw、i2c)并使用主机工具(`xinput`、`ddcutil`、`nvidia-smi`),它需要 classic Snap 或宽松的 Flatpak 权限,而不是标准的沙盒环境。 ## 工作原理 `xeneon-ctl` 采用了分层设计,使得底层组件保持小巧且易于测试: ``` src/proto/ Bragi HID report framing (no dependencies, unit tested) src/transport/ hidapi enumeration and IO, read only recon src/core/ DDC client, HID write gate, touch control, device facade src/x11/ XInput2 raw touch reader for the ripple indicator src/ui/ Qt6 dark interface: Display, Device, Probe pages and overlays src/cli/ xeneonctl command line tool ``` - **DDC/CI** 通过异步、去抖动、序列化的队列经由 `ddcutil` 处理,因此滑动滑块时能保持流畅且不会造成堵塞。 - **HID 写入** 全部经过单个 `WriteGate`,需要进行确认并记录每一个字节。 - **触摸模式** 基于 `xinput` 设备重新附加和 X11 multi pointer (XI2) 扩展构建。 - **涟漪指示器** 使触摸屏处于浮动状态(因此它不会驱动光标),通过其自身的 XInput2 连接读取原始触摸事件,并在固定于 Edge 的透明且始终置顶的覆盖层上绘制涟漪。 ## 安全与诚实 本项目尊重你的硬件: - 绝不进行固件刷写。绝不。 - 无盲目写入。第一次及随后的每一次 HID 写入都会向你显示确切的数据包并先进行询问。 - 协议事实基于公共源(OpenRGB、OpenLinkHub、liquidctl)和对设备的安全读取进行重新实现。未复制任何供应商代码。 - 记录每一次设备传输的完整日志。 ## 路线图 - 保存的配置文件及登录时恢复 - 托盘图标和自动启动,以便指示器触摸模式和 DDC 设置在重启后依然保留 - 随着协议映射的扩展,支持更多 HID 功能面 - 可定制的仪表盘磁贴和布局 ## 关键词 Corsair Xeneon Edge Linux, Xeneon Edge driver Linux, iCUE alternative Linux, Corsair Linux touchscreen, Xeneon Edge Ubuntu, Corsair LCD Linux control, ddcutil Xeneon, Xeneon Edge calibration, Corsair Bragi protocol Linux, 1b1c:1d0d Linux.标签:Bash脚本, DDC/CI, Qt6, USB HID, 云资产清单, 硬件控制, 触摸屏, 逆向工程