Skip to content

v2.3.1 リリース宣伝素材(RV2 SpacemiT 検出修正の話) #13

Description

@kako-jun

概要

riscfetch v2.3.1 リリース時の宣伝記事用の素材集と、各プラットフォーム向けの下書きフック。
公開作業を別 PC からも続けられるように Issue 内に全部書き出す。

ネタの軸

  1. 「自作ツールが新しいハードを見逃していた話」: 自分で持ってる Orange Pi RV2 で riscfetch を実行したら汎用 RISC-V ロゴへフォールバック。Ky 派生 distro が device-tree に SoC vendor 名 spacemit を出さない(ky,x1 ky,orangepi-rv2 のみ吐く)のが原因。auto-detection 系ツールあるあるの落とし穴。
  2. 「RISC-V SBC 2機(D1 vs K1)対比」: MangoPi MQ-Pro (Allwinner D1) と Orange Pi RV2 (SpacemiT K1) を riscfetch で並べると、RISC-V 拡張・コア数・メモリの世代差が一目瞭然。教材級ミニマル D1 vs Vector + 暗号 + bit manipulation 載せた現代的 K1。
  3. 「副産物: rv2 は SD レス起動できる」: U-Boot が SoC SPI flash (mtd0-5) に焼き込まれてる構成。物理的に SD を抜いて電源 ON で起動成功を実証。kernel update のたびに SD /boot 同期する必要もなし。

検証環境

デバイス SoC ボード OS Kernel Memory
pi-mango Allwinner D1 MangoPi MQ-Pro Ubuntu 22.04 5.19.0-rc1-d1 0.96 GB
pi-rv2 SpacemiT K1 Orange Pi RV2 Ubuntu 24.04 6.6.63-ky 3.72 GB

比較ハイライト

mango (Allwinner D1) rv2 (SpacemiT K1)
Harts 1 8
Ext I M A F D C I M A F D C V + 多数の Z*/S* 拡張
Vector × 有効
Cache L1D/I 32K L1D/I 32K + L2 512K
Memory 0.96 GB 3.72 GB
Kernel 5.19.0-rc1-d1 6.6.63-ky
ビルド時間 (release, clean) 約 20-25 分 3:25
修正前ロゴ Allwinner (汎用 RISC-V)
修正後ロゴ Allwinner SpacemiT

実出力 — mango (Allwinner D1)

$ ssh pi-mango "riscfetch"


     _      _   _              _
    / \    | | | | __      __ (_)  _ __    _ __     ___   _ __
   / _ \   | | | | \ \ /\ / / | | | '_ \  | '_ \   / _ \ | '__|
  / ___ \  | | | |  \ V  V /  | | | | | | | | | | |  __/ | |
 /_/   \_\ |_| |_|   \_/\_/   |_| |_| |_| |_| |_|  \___| |_|

                      RISC-V by Allwinner


ISA: rv64imafdc
Ext: I M A F D C
Harts: 1 hart
Cache: L1D:32K L1I:32K

--------------------------------

Board: Allwinner D1 Nezha
OS: Ubuntu 22.04.5 LTS
Kernel: 5.19.0-rc1-d1
Memory: 0.12 GiB / 0.96 GiB
Uptime: 12h 11m
User: pi@pi-mango

実出力 — rv2 修正前 (v2.3.0)

$ ssh pi-rv2 "riscfetch"


        ██████╗ ██╗███████╗ ██████╗      ██╗   ██╗
        ██╔══██╗██║██╔════╝██╔════╝      ██║   ██║
        ██████╔╝██║███████╗██║     █████╗██║   ██║
        ██╔══██╗██║╚════██║██║     ╚════╝╚██╗ ██╔╝
        ██║  ██║██║███████║╚██████╗       ╚████╔╝
        ╚═╝  ╚═╝╚═╝╚══════╝ ╚═════╝        ╚═══╝
                    Architecture Info

ISA: rv64imafdcv_zicbom_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zfhmin_zca_zcd_zba_zbb_zbc_zbs_zkt_zve32f_zve32x_zve64d_zve64f_zve64x_zvfh_zvfhmin_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt
Ext: I M A F D C V
Z-Base: Zicsr Zifencei Zicntr Zihpm
Z-Bit Manipulation: Zba Zbb Zbc Zbs
Z-Cache: Zicbom Zicboz
Z-Compressed: Zca Zcd
Z-Conditional: Zicond
Z-Cryptography: Zkt
Z-Floating Point: Zfh Zfhmin
Z-Hints: Zihintpause
Z-Vector Crypto: Zvkt
Z-Vector: Zve32f Zve32x Zve64d Zve64f Zve64x Zvfh Zvfhmin
S-Supervisor: Sscofpmf Sstc
S-Virtual Memory: Svinval Svnapot Svpbmt
Vector: Enabled
Harts: 8 harts
HW IDs: vendor:0x710 arch:0x8000000058000001 impl:0x1000000049772200
Cache: L1D:32K L1I:32K L2:512K

--------------------------------

Board: ky x1 orangepi-rv2 board
OS: Ubuntu 24.04.4 LTS
Kernel: 6.6.63-ky
Memory: 0.58 GiB / 3.72 GiB
Uptime: 2m
User: pi@pi-rv2

汎用「RISC-V」ロゴ + "Architecture Info" サブタイトル。Ky 派生カーネルが ky,x1 / ky,orangepi-rv2 を吐き、spacemit,* 文字列を含まないため VENDOR_KEYWORDS"spacemit" でヒットせず検出失敗していた。

実出力 — rv2 修正後 (v2.3.1)

$ ssh pi-rv2 "riscfetch"


  ____                                              _   _____
 / ___|   _ __     __ _    ___    ___   _ __ ___   (_) |_   _|
 \___ \  | '_ \   / _` |  / __|  / _ \ | '_ ` _ \  | |   | |
  ___) | | |_) | | (_| | | (__  |  __/ | | | | | | | |   | |
 |____/  | .__/   \__,_|  \___|  \___| |_| |_| |_| |_|   |_|
         |_|
                      RISC-V by SpacemiT


ISA: rv64imafdcv_zicbom_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zfhmin_zca_zcd_zba_zbb_zbc_zbs_zkt_zve32f_zve32x_zve64d_zve64f_zve64x_zvfh_zvfhmin_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt
Ext: I M A F D C V
... (以下同じ)

Board: ky x1 orangepi-rv2 board

"SpacemiT" ロゴ + "RISC-V by SpacemiT" サブタイトル。VENDOR_KEYWORDS("ky,x1", "spacemit") を1行追加して検出成功。

修正のミソ(記事に書ける部分)

// crates/riscfetch-cli/src/vendors.rs
const VENDOR_KEYWORDS: &[(&str, &str)] = &[
    // ... existing entries ...
    ("ch32v", "wch"),
    ("ky,x1", "spacemit"),  // ← 追加した1行
    // Vendor names (generic, checked after specific keywords)
    // ...
];

採用しなかった案:

  • "ky," 単独マッチ — 将来 Ky が別 SoC を採用したら silent miscategorization になる
  • "orangepi-rv2" — board 文字列にしか出ない冗長キーワード
  • "Ky" を独立ベンダーとして登録 — distro 単位で増殖し始める。既存方針(チップベンダー単位)と矛盾

プラットフォーム別下書きフック

Reddit r/RISCV

タイトル候補:

  • "riscfetch v2.3.1 — fixed Orange Pi RV2 detection (Ky-derived DTBs hide the SpacemiT vendor)"
  • "TIL: Orange Pi RV2's kernel doesn't put 'spacemit' in /proc/device-tree/compatible"

切り出し: rv2 を買って自作ツール riscfetch を試したら汎用ロゴが出た → 原因は Ky DTB → 修正 → before/after 画像。RISC-V SBC 比較表も入れる。

Zenn

タイトル候補: 「自作 riscfetch が Orange Pi RV2 を見逃していた話 — Ky 派生 DTB の罠」
ターゲット: 日本の RISC-V 触ってる層。before/after を画像で並べると映える。
セクション案:

  1. riscfetch とは(neofetch の RISC-V 版)
  2. Orange Pi RV2 を買ったが riscfetch がベンダー検出できない
  3. /proc/device-tree/compatible を読みに行く
  4. なぜ ky,* なのか — Orange Pi の distro 派生 DTB 事情
  5. 修正方針(広いマッチを避ける理由)
  6. 副産物: rv2 は SD レス起動できる
  7. v2.3.1 リリース

Dev.to (Part 2 or 3)

  • 既存 Part 1 (v2.2.0) の続編として「自作ツールが現実のハードに当たって学んだこと」
  • 英語ベース、コードスニペットメイン、対比表入り

X (Twitter)

  • 短文 + 画像 (before/after の screenshots を撮る)
  • 「riscfetch v2.3.1 出した。Orange Pi RV2 がベンダー検出できない問題を修正。Ky distro のせいで spacemit 文字列が出ないんだよね」
  • リンク: GitHub Release + crates.io

関連リンク

チェックリスト

  • Reddit r/RISCV 投稿
  • Zenn 記事公開
  • Dev.to Part 2 公開
  • X 投稿(before/after スクショ付き)
  • kako-jun の公式ポータル llll-ll.com に追記(必要なら)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions