# v2.7 — Kneron Dongle FW 管理(升級 + 版本切換) > 本章對應 R5-Q9 翻案(FW 管理面向一般使用者)+ Architect research 30-integration-plan §M9-2/3/4 + 42-manual-downgrade-for-end-users §5。 > 上層索引:`../design-spec-v2.md` > 版本:**v2.2 新增** · 建立日期:2026-05-24 > 相關: > - 架構參考:`.autoflow/04-architecture/research-kl520-fw-management/30-integration-plan.md`、`42-manual-downgrade-for-end-users.md` > - UI 銜接:`v2/settings-update.md`(新增分頁進這個檔的結構)、`spec/03-wireframes.md §3.3 Devices`(FW badge) --- ## 1. 定位與職責 「韌體管理」是 Settings 內**新增的第 5 個分頁**,使用者在此: 1. 看到每張 Kneron dongle 當前 FW 版本 + bundled 最新版的對照 2. 升級到最新 FW(一鍵動作、KL520 KDP1→KDP2 為主要場景) 3. **切換 FW 版本(含降版)**——進階使用者操作,多層 safety guard 保護 4. 看升級 / 切換進度、失敗復原指引 **這個分頁不做的事**: - 不做 device-level inference / model 操作(那是 Workspace 的事) - 不顯示非 Kneron 裝置 - 不做 OTA / 線上版本更新(所有 FW 從安裝包內 bundle,R5-Q9 決策) **為什麼是 Settings 分頁、不是 Devices 頁主流程**: - 降版屬於高風險操作(理論上可能 brick)、不應放在使用者點擊頻率最高的 Devices 頁 - 升級雖然低風險,但「升級」與「切換」介面共用同一套版本選單較自然 - 對應 architect 42 §1.2 的 trade-off 分析 --- ## 2. IA 整合:Settings 分頁順序 依 `v2/settings-update.md §1` 的 4 分頁結構(一般 / 硬體 / 模型 / 進階)擴充為 **5 分頁**: | Tab | 順序 | 變更 | |-----|------|------| | 一般 | 1 | 不變 | | 硬體 | 2 | 不變 | | **韌體** | **3** | **本檔新增** | | 模型 | 4 | 順序後移 | | 進階 | 5 | 順序後移 | **為什麼放在「硬體」與「模型」之間**: - 概念分組:硬體(裝置本身)→ 韌體(裝置韌體)→ 模型(裝置上跑的軟體資產),由低階到高階 - 「硬體」分頁列出裝置掃描策略,使用者看完掃描設定後,自然會問「裝置韌體呢」 - 進階分頁仍放最後(不變) ### 2.1 分頁標籤文案 | Key | zh-TW | en | |-----|-------|----| | `settings.tabs.firmware` | 韌體 | Firmware | > **用詞警告**:分頁名稱**不能叫「降版」**——對一般使用者過於負面。一律稱「韌體」或「韌體管理」。「版本切換」是進階操作的中性說法。 --- ## 3. 頁面結構(Wireframe) ### 3.1 整體佈局(韌體分頁主畫面) 預設狀態(有偵測到 2 張 dongle、其中 KL520 有可升級的版本): ``` ┌─ Settings > 韌體 ───────────────────────────────────────────────────┐ │ │ │ 韌體管理 │ │ 管理已連接 Kneron 裝置的韌體版本。 │ │ │ │ ───────────────────────────────────────────────────────────── │ │ │ │ ┌─ KL520 #1 ─────────────────────────────────────────────────┐ │ │ │ kn_number: │ │ │ │ ● KDP1 (legacy) 0x1A2B3C4D │ │ │ │ 建議升級到 KDP2 v2.2.0 │ │ │ │ │ │ │ │ 當前版本:KDP1 │ │ │ │ 最新版本:KDP2 v2.2.0 (建議) │ │ │ │ │ │ │ │ [ 升級到 KDP2 v2.2.0 ] [ 版本切換 ▾ ] │ │ │ └────────────────────────────────────────────────────────────┘ │ │ │ │ ┌─ KL720 #1 ─────────────────────────────────────────────────┐ │ │ │ kn_number: │ │ │ │ ● KDP2 v2.2.0 (current) 0x5E6F7890 │ │ │ │ 裝置使用最新韌體 │ │ │ │ │ │ │ │ 當前版本:KDP2 v2.2.0 │ │ │ │ 最新版本:KDP2 v2.2.0 │ │ │ │ │ │ │ │ [ 版本切換 ▾ ] │ │ │ └────────────────────────────────────────────────────────────┘ │ │ │ │ ⓘ 沒看到裝置?檢查 USB 連接後到「硬體」分頁重新掃描。 │ │ │ └───────────────────────────────────────────────────────────────────────┘ ``` **配色解讀(裝置卡片左側圓點)**: | 圓點顏色 | 條件 | 文字標籤 | |---------|------|---------| | 🔴 `color.destructive` | KDP1 / legacy FW | `KDP1 (legacy)` | | 🟡 `color.warning` | 有可用較新版本 | `KDP2 v2.1.0 (older)` | | 🟢 `color.success` | 已是最新 bundled 版本 | `KDP2 v2.2.0 (current)` | ### 3.2 空狀態(無 dongle 連接) ``` ┌─ Settings > 韌體 ───────────────────────────────────────────────────┐ │ │ │ 韌體管理 │ │ │ │ ┌──────────────────────────────────────────────┐ │ │ │ │ │ │ │ 🔌 │ │ │ │ │ │ │ │ 尚未偵測到 Kneron 裝置 │ │ │ │ │ │ │ │ 插上 USB 裝置後,到「硬體」分頁點擊 │ │ │ │ 「重新掃描」便會出現在這裡。 │ │ │ │ │ │ │ │ [ 前往硬體分頁 ] │ │ │ │ │ │ │ └──────────────────────────────────────────────┘ │ │ │ └───────────────────────────────────────────────────────────────────────┘ ``` ### 3.3 「版本切換」展開後(accordion 樣式、不是 dropdown) 點 `版本切換 ▾` 後、卡片下半部展開: ``` ┌─ KL520 #1 ─────────────────────────────────────────────────────────┐ │ ● KDP2 v2.2.0 (current) kn_number: 0x... │ │ 裝置使用最新韌體 │ │ │ │ 當前版本:KDP2 v2.2.0 │ │ 最新版本:KDP2 v2.2.0 │ │ │ │ [ 版本切換 ▴ ] │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ ⚠ 切換到舊版可能導致: │ │ │ │ • 部分新版 .nef 模型無法載入 │ │ │ │ • 推論效能與穩定性下降 │ │ │ │ • KDP1 無法執行多模型載入 │ │ │ │ 切換過程約需 30 秒(KL520)/ 3 分鐘(KL720),切勿拔除裝置。│ │ │ │ │ │ │ │ 可用版本: │ │ │ │ ○ KDP2 v2.2.0 (current) 當前版本 │ │ │ │ ○ KDP2 v2.1.0 發布於 2024-08(與舊模型相容) │ │ │ │ ○ KDP1 (legacy) 僅供 third-party 工具相容測試 │ │ │ │ │ │ │ │ [ 取消 ] [ 切換到此版本 ] │ │ │ └─────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘ ``` **展開區的元件規格**: | 元素 | 類型 | 細節 | |------|------|------| | Inline warning | `
` | `color.warning/10` 背景、`color.warning` 邊框(1px)、padding 16、圓角 `radius.md` | | ⚠ icon | inline SVG | 20×20、`color.warning` | | 版本 radio list | `` + `