Dell Latitude 7410 Chromebook / Drallion 刷 Windows:CoolStar 安装、Search / Globe 键修复与自动旋转排查

Dell Latitude 7410 Chromebook / Drallion 刷 Windows:CoolStar 安装、Search / Globe 键修复与自动旋转排查

这篇记录的是我在 Dell Latitude 7410 Chromebook Enterprise 2-in-1 上刷 Windows 的过程。这台机器对应 Google Drallion / Drallion360 家族,刷入 MrChromebox UEFI 后,可以安装 Windows 10 / 11,并配合 CoolStar 的 Chromebook Windows 驱动使用。

整体来说,这台机器刷 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
VivaldiKeyboardTester

3. 修复思路

既然自动识别没开,那就直接修改 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 0

7. 补充: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 方向的方案。

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇