AI-translated from English; not yet reviewed by a fluent editor.

# 用成對 USB 擷取紀錄調查 Linux 尚未支援的裝置

> 這份以文件為基礎的指南，說明如何分別使用 Windows 廠商驅動程式和 Linux 驅動程式記錄同一項硬體操作，再到實體硬體上測試差異。

By BIG CHANGE Editorial

Published: 2026-10-17T02:51:13.544Z
Updated: 2026-10-17T02:51:13.544Z
Canonical: https://bigchange.ai/blog/compare-usb-traces-linux-device-driver

![Two sheets with abstract trace rows, one orange highlighted, beside a closed generic USB device connected to a small computer.](https://bigchange.ai/api/media/file/usb-trace-comparison-concept-v1.png)
AI-generated conceptual illustration by BIG CHANGE; no actual captures, identifiable vendor device or tested repair is depicted.

Christian Schaller 記錄了 Windows 驅動程式透過 USB 傳送的內容，讓一台尚未受支援的底片掃描器在 Linux 下產生可辨識的掃描影像。他在[10月15日的經驗文章](https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/)中，描述如何用 Claude 協助分析擷取資料並開發 SANE 後端。首次掃描仍有品質問題；後來他回報，驅動程式已有大幅改善。這是一名開發者與一台掃描器的成果，不是經獨立重現、用來衡量 AI 寫驅動程式成功率的數據。

Schaller 隨後發布了[hw-harness](https://github.com/cschalle/hw-harness)，這是一套採 MIT 授權的指令碼與文件，將他的方法通用化。他明確表示，掃描器和相機專案使用的是專門撰寫的程式碼，而不是目前形式的公開 harness。對能實際接觸未受支援 USB 裝置的 Linux 驅動程式開發者而言，實用任務比「讓 AI 反向工程」更具體：用正常運作的廠商驅動程式擷取一項操作，用 Linux 驅動程式擷取同一項操作，再調查第一個有意義的差異。

## 重大變化

- **有何改變：** Schaller 整理出可重複的方法，讓正常運作的 Windows 裝置工作階段與 Linux 驅動程式的嘗試，都由同一個主機端 USB 記錄器觀察。他的掃描器成果說明比較為何可能有用，但仍只是單一回報案例。
- **為何重要：** 驅動程式開發者可以把標記清楚的擷取紀錄交給 AI 程式助理，要求提出通訊協定解釋或小型探測程式。接受任何產生的程式碼前，開發者仍需要實體硬體、正常運作的參考操作，以及直接測試。
- **值得留意：** 這個方法取決於能否觀察到相關裝置流量。對內建 MIPI 相機，公開的 harness 改用 Windows 裝置設定與 ACPI 檢查；套用 USB 擷取流程，會漏掉開發者需要的資訊。

## 擷取之前需要什麼

這份[hw-harness README](https://github.com/cschalle/hw-harness)表示，專案是在 Fedora 上開發與測試的。文件要求 libvirt/KVM、執行廠商驅動程式的 Windows 客體、真正的 USB 直通、Linux 主機端的 `usbmon` 擷取，以及可供比較的 Linux 驅動程式或探測程式。Windows 11 Pro 可啟用 harness 以 RDP 為基礎的圖形介面控制。[虛擬機器指南](https://github.com/cschalle/hw-harness/blob/main/doc/vm-setup.md)表示，Home 版客體仍可使用 SSH，但不能使用那些 RDP 控制。儲存庫列出了 Fedora 套件與群組權限；連接裝置前，應針對已簽出的版本執行 `harness doctor`，找出缺少的項目。

準備有使用許可的 Windows 安裝與廠商軟體、確切的裝置、可重複操作，以及封包擷取所需空間。預算應考慮虛擬機器、硬體存取、Windows 和自行選用的 AI 服務；儲存庫沒有提供固定的端到端成本。其指令碼採 MIT 授權，不代表授予 Windows 或廠商軟體授權。使用或散布蒐集內容前，請檢視自己的授權條款與適用的反向工程規則。

每個裝置使用獨立專案目錄。README 表示，`harness init`會建立設定檔，以及被版本控制忽略的 `etc/` 和 `captures/` 目錄。VM 名稱和 USB 廠商／產品 ID 應取自自己的裝置，不要照抄 README 範例。`winctl auth`、`harness iso` 和文件中的客體初始設定流程，可建立 Windows VM 的控制能力；擷取前，`winctl status` 應回報 `ssh: ok`。這是專案文件記載的設定，不是 BIG CHANGE 實際執行過的步驟。

## 在兩個系統上對照同一項操作

1. **記錄基線與 Windows 參考。** 請依照儲存庫的[方法文件](https://github.com/cschalle/hw-harness/blob/main/doc/method.md)：先了解閒置時的流量樣貌。如果需要裝置的初始列舉過程，應在把 USB 裝置交給客體前啟動主機端擷取。在直通裝置上執行廠商 Windows 驅動程式，並標記一項短而明確的動作，例如指定解析度的掃描。`usbcap` 會擷取匯流排資料，並寫入一份 `.meta` 附帶檔案，記錄裝置、匯流排位址、持續時間和標籤。主機端擷取點位於 USB 直通之下，因此可以觀察客體的操作。
2. **記錄 Linux 的對應操作。** 把裝置交回主機，在相同設定與相同實體素材下，擷取 Linux 驅動程式執行同一項操作的資料。缺少對應 Linux 執行的參考擷取，無法確定哪個驅動動作出現差異。儲存庫的掃描器指令是作者環境的範例，不是所有裝置通用的指令。
3. **比較並測試一項假設。** 用 Wireshark 或方法文件中的 `tshark` 篩選器閱讀兩份紀錄。檢查初始化傳輸、操作前後的寫入、狀態輪詢，以及大量傳輸的時間關係。每次只改一個設定，例如解析度，觀察哪項傳輸改變。要求 AI 助理指出可能的差異，並引用對應擷取檔與影格。接著進行有限的驅動程式修改或探測，再於實體硬體上重複同一項操作。模型回答中看似合理的解釋，不是成功的訊號。

直接產出是一對有標籤的擷取檔，以及第一個有意義差異的說明。成功修復，需要 Linux 裝置在開發者自己的檢查下，穩定執行預定操作並產生預期輸出。匹配幾個位元組或產生一張不完整影像，不能證明驅動程式的整體品質。Schaller 的文章指出，第一張可辨識影像仍需後續改善；他工作期間，上游 SANE 對該掃描器的支援也另行出現。

若紀錄難以比較，縮短操作，並確認裝置、設定和擷取層一致。方法文件建議以小型擷取回答單一問題，並擷取一次裝置連接過程。若直通或客體控制失敗，先使用 `harness doctor`、`hostdev status` 和[VM 設定指南](https://github.com/cschalle/hw-harness/blob/main/doc/vm-setup.md)，再判斷空白紀錄是否代表驅動程式故障。保留原始擷取與筆記，讓提出的暫存器常數能追溯到觀察到的影格。

## USB 擷取的邊界

內建 MIPI 相機不會向主機 USB 記錄器顯露同樣有用的流量。方法文件改以 `winctl probe` 檢查 Windows PnP 屬性、INF 檔案、登錄項目與 ACPI 表格，並透過 `hwdbg` 在 Linux 端檢查。Schaller 表示，曾對筆電相機採用這條不同路徑，修改核心與 libcamera；這些成果同樣來自他的自述。不能把相機成果當成 USB 流程在另一台裝置上成功的證據。

調查應聚焦於觀察到的裝置行為與宣告式設定。儲存庫的[淨室開發指南](https://github.com/cschalle/hw-harness/blob/main/doc/cleanroom.md)排除反組譯廠商二進位檔，或把其程式碼複製到 Linux 驅動程式。指南也提醒，擷取內容可能包含裝置序號，而專案目錄內有 SSH 私密金鑰。交給 AI 服務或公開分享前，應檢查紀錄、裝置識別資訊與客體檔案；金鑰與原始擷取不要納入版本控制。公開指示建立的是一套可以嘗試的方法。BIG CHANGE 檢查了部落格與固定版本的儲存庫，但沒有執行 VM、擷取裝置資料，或驗證產生的驅動程式。

### 來源與延伸閱讀

- [Christian Schaller 10月15日的經驗文章](https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/)解釋他的掃描器與筆電工作、他認為 Claude 所扮演的角色，以及共用 harness 為何晚於專用指令碼才出現。掃描器成果是他的回報，本文沒有獨立重現。
- [hw-harness 儲存庫](https://github.com/cschalle/hw-harness)介紹工具、Fedora 與 Windows 前置條件、設定範例，以及專案隱私警告。BIG CHANGE 查閱的是2026年10月14日的提交 `093afc5c576c200f29b771d01624a327d0ff1806`；儲存庫採 MIT 授權，該版本之後可能已有變動。
- [方法文件](https://github.com/cschalle/hw-harness/blob/main/doc/method.md)詳述基線、參考操作、Linux 比較與重複測試流程、擷取資料的妥善處理、USB 紀錄閱讀，以及匯流排對主機不可見時的替代路徑。
- [Windows 參考 VM 設定](https://github.com/cschalle/hw-harness/blob/main/doc/vm-setup.md)涵蓋客體存取、USB 直通，以及 Windows Pro 與 Home 在 RDP 控制上的差異。應檢視自身安裝的授權條款。
- [淨室開發界線](https://github.com/cschalle/hw-harness/blob/main/doc/cleanroom.md)說明專案以觀察為基礎的做法、廠商二進位檔的界線，以及記錄常數來源的必要性。這是專案的工程指引，不是法律意見。

## Sources

- [Christian Schaller：運用人工智慧反向工程硬體](https://blogs.gnome.org/uraeus/2026/10/15/aiandreverseengineerhardware/) — 作者對掃描器與相機工作的第一人稱說明；明確指出通用 harness 晚於專案專用指令碼。單一裝置成果屬個案，BIG CHANGE 沒有獨立重現。
- [hw-harness 儲存庫，提交版本093afc5](https://github.com/cschalle/hw-harness) — README、工具、Fedora／Windows 前置條件、工作流程範例與隱私說明；已從 LICENSE 確認 MIT 授權。來源查核固定了提交版本。
- [hw-harness：方法](https://github.com/cschalle/hw-harness/blob/main/doc/method.md) — 基線、成對擷取、紀錄閱讀，以及相關匯流排不可用時的獨立設定檢查路徑。查閱版本為093afc5。
- [hw-harness：Windows 參考 VM](https://github.com/cschalle/hw-harness/blob/main/doc/vm-setup.md) — 客體、直通與 RDP／SSH 前置條件，包括 Windows Home 限制；安裝與授權決策仍須依使用者自身情況處理。查閱版本為093afc5。
- [hw-harness：維持淨室開發](https://github.com/cschalle/hw-harness/blob/main/doc/cleanroom.md) — 專案對觀察與廠商二進位檔的界線、來源追溯指引，以及不可信套件提醒；這是工程做法，而非法律建議。查閱版本為093afc5。
