整体来说,这台机器刷 Windows 后可用性不错,但仍然有几个 Chromebook 特有问题需要额外处理。本文主要记录三部分:
1. Windows 安装与 CoolStar 驱动安装流程
2. 修复 Search / Globe 键映射异常
3. 自动旋转 / 平板模式失效的排查结论其中 Search / Globe 键映射问题已经修复;自动旋转和平板模式目前仍然卡在更底层的 ISH firmware / ISHTP client 链路上。
一、准备工作
刷机前建议先准备:
Windows 10 / 11 安装 U 盘
另一台可正常使用的电脑
USB 键盘或鼠标
稳定的网络
原系统和个人数据备份这类 Chromebook 刷 Full UEFI 之后,原厂 ChromeOS 启动环境会被替换。后续虽然可以恢复,但难度明显高于普通电脑重装系统。
这台机器涉及写保护,具体方式可能和批次、固件状态有关。有些机器需要断电池,有些需要处理 CR50 / CCD / SuzyQ。刷之前建议先确认自己的写保护状态,不要盲目硬刷。
二、刷入 MrChromebox UEFI
先进入 Chromebook 恢复模式:
Esc + Refresh + Power然后按提示开启 Developer Mode。
进入 ChromeOS 后,打开 crosh:
Ctrl + Alt + T输入:
shell然后执行 MrChromebox firmware utility:
cd
curl -LO mrchromebox.tech/firmware-util.sh
sudo bash firmware-util.sh在菜单中选择:
Full UEFI Firmware刷完 Full UEFI 后,机器就可以像普通 UEFI 电脑一样从 Windows 安装 U 盘启动。
三、安装 Windows 10 / 11
在另一台电脑上用 Rufus 制作 Windows 安装 U 盘,分区类型选择:
GPT for UEFI插入 U 盘后开机,从 UEFI Boot Manager 选择 Windows 安装盘启动。
如果安装 Windows 11 时遇到 TPM / Secure Boot 检查,可以在安装界面按:
Shift + F10打开命令提示符,输入:
regedit定位到:
HKEY_LOCAL_MACHINE\SYSTEM\Setup新建 Key:
LabConfig然后创建两个 DWORD:
BypassSecureBootCheck = 1
BypassTPMCheck = 1关闭注册表和命令提示符,继续安装即可。这个步骤 Windows 10 一般不需要。
四、安装 CoolStar 驱动
Windows 第一次进入桌面后,先安装 Visual C++ Redistributable。后续多个 Chromebook Windows 驱动会依赖它。
然后根据 Drallion / Wilco 平台安装对应驱动。对 Latitude 7410 Chromebook / Drallion 来说,常见需要处理的项目包括:
Chrome EC Driver
Wilco Keyboard
Chipset / I2C 相关驱动
Intel Graphics
Touchpad Driver
Touch Screen Driver
Audio Driver
Camera Driver
SD Card Reader其中 Wilco Keyboard 很关键,因为它负责 Chromebook 键盘 remapping。正常情况下,Wilco EC 驱动安装后,键盘应该是:
Globe -> Windows Key
Search -> Caps Lock也就是说,Search 应该是 Caps Lock,Globe 应该是 Windows 键。
但我这台机器在刷了新版 MrChromebox BIOS / coreboot 之后,这个映射出现了异常。
五、修复 Search / Globe 键映射异常
1. 问题现象
在 Dell Latitude 7410 / Drallion 上安装 Windows 10 / 11 和 Wilco EC 驱动后,键盘映射不符合预期。
预期:
Search -> Caps Lock
Globe -> Windows Key实际:
Search -> Left Win
Globe -> 无效,或映射异常这个问题是在我刷了最新的 MrChromebox BIOS / coreboot 之后才出现的。驱动本身还是 Wilco EC / croskeyboard4 这一套,但机器型号或 SMBIOS 识别结果可能发生了变化,导致驱动没有套上正确的 Drallion / Wilco preset。
2. 原因分析
根因在 croskeyboard4 的自动识别逻辑。
大致可以理解成:
Search = E0 5B,也就是 Left Win
Globe / Assistant = E0 58对于 Wilco / Drallion,驱动预设期望识别出:
HasAssistantKey = true
IsNonChromeEC = true
FlipSearchAndAssistantOnPixelbook = true这样驱动会先交换 Search 和 Assistant,然后再通过 preset 把 Assistant 映射成 Caps Lock:
Search -> Assistant -> Caps Lock
Globe / Assistant -> Left Win但升级新版 MrChromebox coreboot 后,机器的 SMBIOS / model 识别可能没有被 croskeyboard4 正确匹配,导致 HasAssistantKey / IsNonChromeEC 没有自动启用。
结果就是:
Search 仍然保持 Left Win
Globe / Assistant 没有正确变成 Windows Key参考源码方向:
croskeyboard4
VivaldiKeyboardTester3. 修复思路
既然自动识别没开,那就直接修改 croskbsettings.bin,手动强制启用:
Assistant / Globe key
Wilco / Non-ChromeEC 行为下面假设 Wilco EC 驱动目录在:
C:\wilcoec请使用管理员 PowerShell。
4. 确认 HID Helper 是否存在
先检查 remapper 有没有装好:
Get-PnpDevice | Where-Object {
$_.FriendlyName -match "Chromebook Keyboard HID Helper" -or
$_.InstanceId -match "CROSKB"
} | Format-List Status,Class,FriendlyName,InstanceId如果能看到类似:
FriendlyName : Chromebook Keyboard HID Helper
InstanceId : CROSKB\HID0000\...说明 HID remapper 已经存在。
5. 生成修复版 croskbsettings.bin
执行:
cd C:\wilcoec
Copy-Item "C:\Windows\System32\drivers\croskbsettings.bin" ".\croskbsettings.backup.bin" -Force
Copy-Item ".\drivers\croskbsettings-wilco.bin" ".\drivers\croskbsettings-wilco-fixed.bin" -Force
$b = [IO.File]::ReadAllBytes("C:\wilcoec\drivers\croskbsettings-wilco-fixed.bin")
# 确认原始 Wilco preset 中 Assistant -> Caps Lock 仍然存在
if ($b[0x08] -ne 0x01 -or $b[0x359] -ne 0x3A) {
throw "Unexpected croskbsettings-wilco.bin layout"
}
# 强制启用 Assistant / Globe key
[BitConverter]::GetBytes([uint32]1).CopyTo($b, 0x09)
# 强制启用 Wilco / Non-ChromeEC 行为
[BitConverter]::GetBytes([uint32]1).CopyTo($b, 0x0D)
[IO.File]::WriteAllBytes("C:\wilcoec\drivers\croskbsettings-wilco-fixed.bin", $b)
Copy-Item ".\drivers\croskbsettings-wilco-fixed.bin" "C:\Windows\System32\drivers\croskbsettings.bin" -Force
shutdown /r /t 0重启后测试:
Search -> Caps Lock
Globe -> Windows Key我这里修复后行为恢复正常。
6. 保留修复后的文件
建议保留:
C:\wilcoec\drivers\croskbsettings-wilco-fixed.bin以后如果重装 Wilco EC / keyboard 驱动,只需要重新复制:
Copy-Item "C:\wilcoec\drivers\croskbsettings-wilco-fixed.bin" "C:\Windows\System32\drivers\croskbsettings.bin" -Force
shutdown /r /t 07. 补充:INF hash / catalog 错误
如果安装:
croskbhidremapper.inf时遇到 hash / catalog 错误,可能是 .inf 文件换行符被改了。可以先修复为 CRLF:
cd C:\wilcoec
$inf = "C:\wilcoec\drivers\keyboard\croskbhidremapper.inf"
$text = Get-Content $inf -Raw
$text = $text -replace "`r?`n", "`r`n"
[System.IO.File]::WriteAllText($inf, $text, [System.Text.Encoding]::ASCII)
pnputil /add-driver ".\drivers\keyboard\croskbhidremapper.inf" /install另外,Fn 键单独按下没有反应一般是正常的。它通常不会作为普通按键事件发给 Windows,而是在 EC / 键盘控制器层处理,所以 PowerToys 看不到。
六、自动旋转 / 平板模式问题排查
1. 问题表现
装完 Windows 和基础驱动后,最大的问题是 2-in-1 形态没有被 Windows 正确识别。
具体表现为:
翻转屏幕后不会进入平板模式
自动旋转不工作检查 Windows 的 convertible slate 状态,发现它一直固定在 laptop mode:
GetSystemMetrics(SM_CONVERTIBLESLATEMODE) = 1
HKLM:\SYSTEM\CurrentControlSet\Control\PriorityControl\ConvertibleSlateMode = 1也就是说,不管屏幕怎么翻转,系统都没有收到 tablet mode 切换事件。
2. Windows 设备状态
我先看了 Windows 设备管理和 PnP 状态。几个关键设备其实都在:
Intel(R) Integrated Sensor Solution
PCI\VEN_8086&DEV_02FC...
Service: ISH
Status: OK
ISS Dynamic Bus Enumerator
{DEA5AE2A-D1FD-438A-A091-CBD484788435}\ISH_BUS...
Service: ISH_BusDriver
Status: OK
Intel(R) Virtual Buttons
ACPI\INT33D6\1
Service: VirtualButtons
Status: OK
GPIO laptop/tablet indicator
ACPI\INT33D3\1
Compatible ID: PNP0C60
Service: msgpiowin32
Status: OK表面看,Windows 这边的 slate / tablet-mode 相关驱动都装上了。
但另一个设备是坏的:
ACPI\GOOG000D\1
Wilco EC Event Interface
Status: failed install这时还不能直接判断是 Windows 没接到事件,还是底层根本没有产生事件。
3. ACPI 里的 tablet-mode 路径
后来我开始拆 ACPI,发现 Drallion 的 tablet-mode 逻辑大概是这条链:
ISH firmware
-> GPIO_NB_MODE_L
-> Wilco EC 更新 OTBL
-> ECQ2()
-> Notify(VBTN, VTBL / VLAP)
-> ACPI INT33D6 / INT33D3
-> Windows 更新 SM_CONVERTIBLESLATEMODE几个关键 ACPI 点:
OTBL = EC offset 0x39, mask 0x03
VBTN.VGBS() 返回当前 laptop / tablet 状态
0x40 = laptop mode
0x00 = tablet mode但我的机器上 VGBS() 一直等价于:
0x40也就是 ACPI 层一直认为它是 laptop mode。
更关键的是,Linux 下 /dev/wilco_event0 虽然存在,但翻转机器时读取也没有任何输出。这说明问题不只是 Windows 没响应,而是 EC 那边的 tablet 状态本身没有被更新。
4. drallion_ish.bin 的线索
Drallion 的 ACPI SSDT 里有:
firmware-name = drallion_ish.bin我从 ChromeOS recovery 里提取出了:
drallion_ish.bin文件大小是:
106,496 bytes这个文件看起来就是 ChromeOS 下 ISH 相关的应用固件。
一开始我的直觉是:
是不是把 drallion_ish.bin 放进 coreboot CBFS,Windows 就能用了?后来证明不是这么简单。
5. Windows ISH 栈的问题
我写了脚本去探测 Windows 下 ISH bus 和 CrOS EC ISHTP client。结果是:
Intel ISH bus device exists
ISH_BusDriver exists
CrOS EC ISHTP client UUID not found要找的 UUID 是:
7b7154d0-56f4-4bdc-b0d8-9e7cdae0d6a0这个 client 在 Windows 下没有枚举出来。
我又检查了 Windows DriverStore 里的 ISH INF:
ish.inf
ish_busdriver.inf
ISH.sys
ISH_BusDriver.sys没有看到:
drallion_ish.bin也没有明显的 firmware path、CopyFiles、registry entry。
所以目前可以判断:Windows stock Intel ISH 驱动不会像 Linux 那样,根据 ACPI 的 firmware-name 去加载 ChromeOS 的 drallion_ish.bin。
6. MrChromebox / coreboot 方向验证
我在 x86 VPS 上编译了 MrChromebox / coreboot 的 Drallion ROM。构建成功:
BOARD=drallion
Toolchain status: 0
Build status: 0
Output: coreboot.rom源码里确实有:
src/mainboard/google/drallion/Kconfig:
select DRIVERS_INTEL_ISH
src/mainboard/google/drallion/variants/drallion/devicetree.cb:
firmware_name = "drallion_ish.bin"但 src/drivers/intel/ish/ish.c 只是把这个名字写进 ACPI:
acpi_dp_add_string(dsd, "firmware-name", config->firmware_name);也就是说,coreboot 只是告诉操作系统:
这个设备的固件叫 drallion_ish.bin它并没有自己从 CBFS 加载这个固件,更没有在 Windows 启动前把它喂给 ISH。
后来我又用 ifdtool 拆了 ROM,发现:
flashregion_2_intel_me.bin里面有:
ISHC
ish_bup
ish_bup.met
ish_main
ish_main.met这说明 Intel ME / CSE 区域里已经有 Intel ISH 主固件。
但 ish_main / ish_bup 和 ChromeOS 的 drallion_ish.bin 不是一回事。我的理解是:
ish_main / ish_bup更像 Intel ISH 的主固件,而:
drallion_ish.bin更像是 ChromeOS / Linux 后续通过 ISHTP firmware loader 加载进去的 ChromeOS 应用固件。
7. 当前结论与后续路线
排查到这里,问题已经比较明确了。
Windows 里的 INT33D6 / PNP0C60 slate-mode 接口存在,Intel ISH PCI 设备也存在,Intel ISH 主固件也在 CSE / ME 区域里。
真正缺的是 ChromeOS 使用的 drallion_ish.bin 加载流程。它没有在 Windows 下被加载,所以 CrOS EC ISHTP client 没有出现。
结果就是:
GPIO_NB_MODE_L 没被驱动
Wilco EC 的 OTBL 一直是 laptop 状态
ACPI VBTN.VGBS() 一直返回 laptop mode
Windows 看不到 tablet-mode 切换所以这不是简单缺一个 INF,也不是把 drallion_ish.bin 塞进 CBFS 就能解决的问题。coreboot 目前只是把 firmware-name = drallion_ish.bin 写进 ACPI,并不会在 Windows 启动前主动加载这个 firmware。
后续大概有两条路线。
第一条是 Windows 驱动路线。也就是参考 Linux 的:
intel_ish_ipc
intel_ishtp_loader
cros_ec_ishtp写一个 Windows KMDF 驱动,至少实现:
ISH IPC 初始化
上传 drallion_ish.bin
枚举 ISHTP clients
找到 CrOS EC client UUID
读取 EC / tablet 事件
再通知 Windows slate mode这条路线最完整,但难度也最高。
第二条是 firmware / ACPI 绕路。比如在 coreboot 或 ACPI 里绕开 ISH,直接给 Windows 一个可用的 tablet-mode 状态。
但这最多只能解决:
Windows 是否进入平板模式不一定能恢复完整的:
传感器
自动旋转
EC 事件七、总结
这次折腾下来,Dell Latitude 7410 Chromebook / Drallion 刷 Windows 后的状态大概是:
Windows 10 / 11 可以正常安装和启动
CoolStar 基础驱动可用
Search / Globe 键映射异常可以修复
自动旋转 / 平板模式仍未完整恢复Search / Globe 键的问题,本质上是 Wilco / Drallion 的键盘 preset 没有被正确识别。修改 croskbsettings.bin 后,可以恢复成:
Search -> Caps Lock
Globe -> Windows Key自动旋转和平板模式的问题更底层,目前看不是普通驱动缺失,而是 Windows 下缺少 ChromeOS 那套 ISH firmware loader 和 ISHTP client 链路。
所以,这台机器可以作为 Windows 笔记本正常使用;但如果想完整恢复 2-in-1 的平板体验,还需要更底层的 Windows 驱动,或者 firmware / ACPI 方向的方案。