Skip to content

fix: Orange Pi RV2 (SpacemiT K1) を SpacemiT として検出 (#11) - #12

Merged
kako-jun merged 2 commits into
mainfrom
11-detect-orangepi-rv2-as-spacemit
Apr 27, 2026
Merged

kako-jun merged 2 commits into
mainfrom
11-detect-orangepi-rv2-as-spacemit

Conversation

@kako-jun

Copy link
Copy Markdown
Owner

関連 Issue

closes #11

変更内容

VENDOR_KEYWORDS("ky,x1", "spacemit") を追加し、Orange Pi RV2 などの Ky 派生カーネルが吐く device-tree 文字列を SpacemiT として検出できるようにした。

背景

Orange Pi RV2 のカーネル (Ky 派生) は /proc/device-tree/compatibleky,orangepi-rv2 ky,x1 を、/proc/device-tree/modelky x1 orangepi-rv2 board を吐く。spacemit,* 文字列がどこにも出ないため、既存の "spacemit" キーワードでヒットせず汎用 RISC-V ロゴへフォールバックしていた。

採用しなかった案

  • "ky," のような広いマッチ — Ky は SoC ベンダーではなく Orange Pi 向けディストロ/DTB 派生。将来 Ky が別社 SoC を採用した場合の silent miscategorization を避けたい
  • "orangepi-rv2" — board 文字列にしか出ない冗長キーワード
  • "Ky" を独立ベンダーとして登録 — distro 単位での増殖を避けるため、既存方針 (mango = Allwinner ロゴ) と一貫させた

影響範囲

Banana Pi BPI-F3 など、spacemit,k1 を吐く本流カーネルのボードは既存 "spacemit" キーワードでヒット済みのため影響なし。本 PR は Ky 派生 DTB を使うボードのみが対象。

テスト

  • test_detect_orangepi_rv2_as_spacemit を追加 (実機 /proc/device-tree/* 文字列を入力)
  • cargo test: 全 46 件パス
  • cargo clippy --all-targets -- -D warnings: 警告なし

実機検証

修正後 pi-rv2 にバイナリをコピーして riscfetch を実行すると、汎用 "RISC-V" ロゴから "SpacemiT" / "RISC-V by SpacemiT" に変わる想定。

Ky 派生カーネルは /proc/device-tree/compatible に `ky,x1` /
`ky,orangepi-rv2` を吐き、`spacemit,*` 文字列を含まないため、
既存の "spacemit" キーワードで検出できず汎用 RISC-V ロゴへ
フォールバックしていた。VENDOR_KEYWORDS に "ky,x1" を追加。

"ky," 単独マッチは将来 Ky が別 SoC を採用した場合の silent
miscategorization を招くため避け、"orangepi-rv2" は board 文字列
にしか出ない冗長キーワードのため採用しない。BPI-F3 等は既存の
"spacemit" でヒット済みで影響なし。
将来 "ky," プレフィックスでまとめて受け入れる方向に変更された場合、
このテストが落ちて意図 (Ky 派生 distro 全部を SpacemiT 扱いしない) を
気付かせる防衛テスト。
@kako-jun
kako-jun merged commit 74e54f5 into main Apr 27, 2026
4 checks passed
@kako-jun
kako-jun deleted the 11-detect-orangepi-rv2-as-spacemit branch April 27, 2026 12:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Orange Pi RV2 (SpacemiT K1) が SpacemiT として検出されない

1 participant