76 lines
4.0 KiB
Markdown
76 lines
4.0 KiB
Markdown
# Chromebox 风扇温控(Windows)
|
||
|
||
在刷了 coreboot 的 Chromebox 上,用 **LibreHardwareMonitor** 读取 **CPU 核心温度**,通过 Coolstar **crosec** 自带的 **`ectool`** 设置 **`fanduty`**,并从 **ectool** 读取 **风扇转速(RPM)**。主界面提供三条实时曲线:温度、目标占空比、转速。
|
||
|
||
## 依赖
|
||
|
||
1. 安装 [Coolstar CROS-EC 驱动](https://github.com/coolstar/crwindows)(或您当前使用的 crosec 安装包),确保存在默认可执行文件:
|
||
`C:\Program Files\crosec\ectool.exe`
|
||
若路径不同,在程序「高级」选项卡中修改。
|
||
2. **以管理员身份运行**本程序(清单已要求提升权限;LHM 与 EC 通信通常需要管理员)。
|
||
3. **客户机**:`.\build.ps1 -publish`(及带 `-msi` 时)默认**自包含单文件**发布,**已内含 .NET 8 运行时**,`dist\` 仅含数个 exe,无需再装运行时。若需多 DLL 或依赖系统 .NET 8 以减小体积,可加 `-multiFile` 或 `-frameworkDependent`。
|
||
|
||
## 编译
|
||
|
||
```powershell
|
||
.\build.ps1
|
||
```
|
||
|
||
### 发布 MSI 安装包(推荐)
|
||
|
||
```powershell
|
||
.\build.ps1 -publish -msi
|
||
```
|
||
|
||
`-publish` 只生成 `dist\`;加上 **`-msi`** 才用 WiX 生成安装包(需已安装 WiX)。输出两个 MSI:
|
||
|
||
| 文件 | 说明 |
|
||
|------|------|
|
||
| `dist-installer\ChromeboxFanControl-Setup.msi` | **桌面版**:GUI + 可选 Windows 服务(功能树中可勾选) |
|
||
| `dist-installer\ChromeboxFanControlService-Setup.msi` | **服务版**:仅后台服务,适合无头部署 |
|
||
|
||
**构建机**需 [.NET 8 SDK](https://dotnet.microsoft.com/download) 与 [WiX Toolset 3](https://wixtoolset.org/docs/wix3/)。**构建前请关闭正在运行的 ChromeboxFanControl.exe**。
|
||
|
||
以**管理员身份**运行 MSI。若尚未安装 ectool,可访问 [Chrultrabook 的 ectool 安装说明](https://docs.chrultrabook.com/docs/installing/ectool.html)。服务模式下配置从 `%ProgramData%\ChromeboxFanControl\config.json` 读取。
|
||
|
||
### 仅发布到 dist\(用于调试或手动打包)
|
||
|
||
| 命令 | 说明 |
|
||
|------|------|
|
||
| `.\build.ps1 -publish` | 同时发布桌面版与服务版到 `dist\`(默认单文件) |
|
||
| `.\build.ps1 -publishGui` | 仅发布 GUI |
|
||
| `.\build.ps1 -publishService` | 仅发布服务并合并进 `dist\` |
|
||
| `.\build.ps1 -publish -multiFile` | 保留多 DLL 输出(默认单 exe) |
|
||
| `.\build.ps1 -publish -frameworkDependent` | 依赖系统 .NET 8(无 bundled 运行时) |
|
||
|
||
## 配置
|
||
|
||
- 安装目录旁的 **`appsettings.json`**:默认选项。
|
||
- **`%AppData%\ChromeboxFanControl\config.json`**:GUI 模式下保存后覆盖(用户配置)。
|
||
- **`%ProgramData%\ChromeboxFanControl\config.json`**:Windows 服务模式下读取的配置;可与 GUI 共用同一份配置逻辑。
|
||
|
||
重要字段:
|
||
|
||
| 项 | 说明 |
|
||
|----|------|
|
||
| `Language` | 界面语言:`auto`(跟随系统)、`en`、`zh-Hans`、`zh-Hant`。修改后需重启生效。 |
|
||
| `FanRpmArgs` | 读取转速时传给 ectool 的参数(默认 `pwmgetfanrpm` `0`),请用本机 `ectool help` 核对。 |
|
||
| `FanDutyArgs` | 读取占空比时传给 ectool 的参数(如 `pwmget` `0`);空则跳过,显示目标占空比。 |
|
||
| `AutoFanCtrlArgs` | 退出程序时恢复 EC 自动风扇(默认 `autofanctrl`),若命令名不同请修改。 |
|
||
| `TempSource` | `AverageCore` 或 `MaxCore`。 |
|
||
| `CurvePoints` | 14 个 0–100 的占空比控制点(对应温度断点 0,40,45,…,100°C,线性插值)。 |
|
||
|
||
## 使用说明
|
||
|
||
- 启动后任务栏托盘有图标;可「暂停控制」(不再下发 `fanduty`,EC 保持上次状态)。
|
||
- **退出**或关闭前会尝试执行 **自动风扇恢复**命令(见配置)。
|
||
- 若连续多次读不到 CPU 温度,将进入**安全模式**(固定占空比或 `autofanctrl`,见界面选项)。
|
||
|
||
## 免责声明
|
||
|
||
软件按「原样」提供。错误的风扇策略可能导致过热或硬件损坏;请自行承担使用风险。
|
||
|
||
## 许可
|
||
|
||
本项目为实现计划而编写的原创代码;风扇曲线算法行为参考 Chrultrabook-Tools 的公开逻辑描述,未复制其 GPL 源码。
|