Add Google kano (Mr Chromebox) support - First full Chromebook port!#2133
Add Google kano (Mr Chromebox) support - First full Chromebook port!#2133cwiggs wants to merge 35 commits into
Conversation
tlaurion
left a comment
There was a problem hiding this comment.
first review as I was there and saw work on this PR :)
|
I suggest you tart a thread under Matrix Heads channel. You must rebase the old PR on linuxboot/heads master, an dthen adapt coreboot config to your board. Following https://osresearch.net/Porting/ @cwiggs otherwise your experience might be really frustrating. |
Started a thread here: https://matrix.to/#/!eMLMv62wAMCW1V-ufL_bJ_JDngDhrpSOSEQBLzX8aTg/$eepAush4kVo93Zxqtw59P6NX9g6AG7FZFplc2Fu6tyo?via=matrix.org&via=tchncs.de&via=unredacted.org |
|
@cwiggs I saw you left the room? |
Looks like the Matrix homeserver decided to delete my account for some reason, I'll look into getting it reactivated. |
|
@cwiggs check https://github.com/tlaurion/heads/tree/cwiggs-google_kano which now builds locally with blobs paths corrected and blobs submodules synced per mrchromebox gitsubmodules sync override in modules/coreboot |
Okay, great, should I rebase this branch off that one then? |
Absolutely. It builds from CI. I pushed progress forward since the last base (coreboot 4.22) was old and not trivial to adapt. Let me know how the testing goes. Feel free to cherry pick all commits or if you agree i can push the changes here but that would make us both co-authors of the port. CircleCI builds at https://app.circleci.com/pipelines/github/tlaurion/heads/4040/workflows/d7699b2f-feca-423f-b0f5-187ebf94e886 |
|
Thanks! I got it downloaded. The suzyq cable should arrive this weekend or Monday and I'll give it a try. I also rebased off your branch here. |
@cwiggs : This branch doesn't include all the needed changes, nor CircleCI config. I can push here too, if needed. Let me know. |
I just rebased off your branch, let me know if it looks good from that point of view. Looks like I also will need to rebase off main. As far as flashing goes: I got the Suzy-Q "cable" (It's really just a small board with a male and female usb-c, you then use your own usb-c cable). And I have some good news and some bad news (I think?). I was able to get the suzy-q cable to read the rom, but verifying the backup seems to fail. I've been using this mrchromebox guide to get the suzy-q device working with flashrom and then this heads wiki as well. Below are some notes I put together while I was attempting the flash: Use Suzy-Q cable for flashing
Questions:
Anyway I think next steps are to disconnect the battery and try these flashrom commands again. I don't want to proceed until the verify step works without error. |
|
Well I disconnected the battery and am getting the same response from flashrom. Should I just continue with flashing heads? Here are my notes:
* Use a smudger to take the back cover off.
* Disconnect battery cable.
|
Signed-off-by: Matthew Drobnak <matthew@drobnak.com> Signed-off-by: Thierry Laurion <insurgo@riseup.net>
Signed-off-by: Matthew Drobnak <matthew@drobnak.com> Signed-off-by: Thierry Laurion <insurgo@riseup.net>
Signed-off-by: Chris Wiggins <chris@cwiggs.com> Signed-off-by: Thierry Laurion <insurgo@riseup.net>
Signed-off-by: Thierry Laurion <insurgo@riseup.net>
…t/linux helpers to modify and save in oldconfig Signed-off-by: Thierry Laurion <insurgo@riseup.net>
…-musl-compat.patch: fix build error against musl Signed-off-by: Thierry Laurion <insurgo@riseup.net>
…place to put in defconfig to remove irrelevant omnigul things Signed-off-by: Thierry Laurion <insurgo@riseup.net>
@cwiggs Now will be time to checklist things, i will update OP with checklist (to improve docs as well. Curious since you are a daily NixOS user, and that installation docs under https://osresearch.net are.... hmm. less then optimal to guide users into what is different requirements then UEFI, even though latest #2130 helped a lot fb+iso support, unless bugs found, most if not all linux distributions. You didn't need #2155 ? |
There was a problem hiding this comment.
Pull request overview
This PR adds first-class support for the Acer Chromebook Spin 714 (“kano”) by introducing a new board configuration, pinning/building against the MrChromebox coreboot fork (coreboot 26.03–based), and extending CI + documentation to support the new Chromebook workflow.
Changes:
- Added new
kanoboard configs (Heads board config, coreboot configs/defconfig backup, Linux 6.6.30 config) and registered Linux 6.6.30 in the build system. - Added MrChromebox coreboot fork as a buildable coreboot module, including a musl build fix for
cbmemand optional post-build ME HAP bit application. - Updated CircleCI workflow and documentation to cover the new seed/job and Chromebook-specific configuration guidance; improved TPM reset behavior for CR50 limitations.
Reviewed changes
Copilot reviewed 15 out of 18 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Documents cloning with full history to support tag-based artifact naming. |
| .circleci/config.yml | Adds a kano seed job for the coreboot-mrchromebox fork and updates seed documentation comments. |
| boards/kano/kano.config | Introduces Heads board configuration for the Kano Chromebook target. |
| config/coreboot-kano.config | Adds generated coreboot configuration for Kano (MrChromebox fork). |
| config/coreboot-kano.config_defconfig | Adds defconfig-format backup to make Kano’s non-default coreboot options easy to review. |
| config/linux-kano.config | Adds generated Linux 6.6.30 kernel configuration for Kano. |
| modules/coreboot | Adds coreboot-mrchromebox fork support and optional post-build ifdtool HAP application; clarifies blob fetching behavior. |
| modules/linux | Registers Linux kernel 6.6.30 (version + hash) as a supported build option. |
| patches/coreboot-mrchromebox/0001-util-cbmem-Add-endian.h-include-for-musl-compat.patch | Fixes musl build issues in MrChromebox fork’s cbmem by adding <endian.h>. |
| patches/coreboot-mrchromebox/0002-soc-intel-lockdown-Allow-locking-down-SPI-and-LPC-in.patch | Adds Intel lockdown-in-SMM support patch adapted to MrChromebox fork. |
| patches/linux-6.6.30/0001-fake-acpi.patch | Adds Linux patch used by Heads’ kernel packaging for this version. |
| patches/linux-6.6.30/0002-nmi-squelch.patch | Adds Linux patch used by Heads’ kernel packaging for this version. |
| patches/linux-6.6.30/0010-winterfell-ahci.patch | Adds Linux patch used by Heads’ kernel packaging for this version. |
| initrd/bin/tpmr.sh | Makes TPM2 reset tolerate CR50’s lack of ClearControl by attempting TPM2_Clear anyway. |
| bin/validate_cbfs_ifd_fit.sh | Fixes integer comparison by converting a hex constant into decimal before -gt tests. |
| doc/circleci.md | Documents the new kano seed/job and its MrChromebox fork basis. |
| doc/variation-to-defconfig.md | Adds Chromebook defconfig backup guidance and Kano-specific notes; expands examples. |
| doc/tpm.md | Documents CR50 command limitations and Heads’ TPM2 command usage compatibility. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…pace Copilot review: fix 'a Acer' -> 'an Acer', 'Wi-FI' -> 'Wi-Fi', and remove trailing comma/spaces on line 3. Signed-off-by: Thierry Laurion <insurgo@riseup.net>
|
Will push here |
|
For posterity of this port, i'm porting patches to 26.06 so buildstack will be shareable and patches upstreameable , more commits coming |
3ecfc2b to
7770fe8
Compare
|
@cwiggs check todo list of OP :) test rom from CircleCI on latest commit since coreboot's mrchromebox 26.06 based. @MrChromebox any comment before merge? |
|
Asked Matrix's coreboot channel; for review of this pr |
mrchromebox said if not uefi: no use of using his fork. More commit upcoming |
Once CircleCI builds the Kano zip I'll flash the image and fill out the checklist. I also have a working branch for the wiki for heads. I'll get it up as a draft/WIP and then add to it.
I was able to get my NixOS install working in Heads with a very simple change you can see here: https://gitlab.com/cwiggs/nix/-/commit/a7419c5511b45e0fa04590788bcb8309e12825e9 I didn't need #2155 and DUK still works without issues. I can also post a tree or files in /boot if that helps. |
2e4d179 to
9a8de0b
Compare
Update from MrChromebox-2603.2 (f8244f2) to MrChromebox-2606.0 (ddfe385). Config regenerated via: make BOARD=kano coreboot.save_in_oldconfig_format_in_place && make BOARD=kano coreboot.save_in_defconfig_format_backup Address Copilot review: fix 'feautre' typo, deduplicate Adapted for MrChromebox fork bullet list, rebase smihandler.c hunk for opal_s3_smm.h include added in 26.06. Signed-off-by: Thierry Laurion <insurgo@riseup.net>


This pull request adds support for the Acer Chromebook Spin 714 ("kano") board based on the MrChromebox coreboot fork (26.03), including CI integration, configuration files, and documentation updates. It also introduces a patch for musl compatibility in the MrChromebox fork, adds a new Linux kernel version (6.6.30), and documents TPM2 CR50 command support. The most important changes are grouped below:
Kano (Acer Chromebook Spin 714) board support:
boards/kano/kano.configfor Heads and Linux build configuration for the kano board.config/coreboot-kano.config_defconfigas a defconfig backup for kano, documenting non-default coreboot options.coreboot-mrchromeboxas a seed, defines the kano build job, and documents its workflow. [1] [2] [3]USE_PC_CMOS_ALTCENTURYmust be unset for this board. [1] [2] [3]MrChromebox coreboot fork integration:
modules/coreboot, with commit hash pinning and submodule handling notes. [1] [2]ifdtool. [1] [2]Build system and kernel updates:
cbmemutility.Documentation improvements:
Minor adjustments:
These changes collectively enable official Heads support for the Acer Chromebook Spin 714 (kano), ensure compatibility with the MrChromebox fork, and improve build reproducibility and documentation for new contributors.
(copilot generalized pr summary, asked by @tlaurion)
TODO before merge
X.Y.Z.using external programmer modelX.Y.Z.onX.Y.Z.Voltage modeX.Y.Z.install and rebootX.Y.Z.hardwarekey e.g. nk3X.Y.Z.patches/coreboot-X.Y.Z.and coreboot config contain proper preparation of the platform)Additional questions: