把 Raspberry Pi Pico W 變成 USB Wi-Fi 轉接器 (★ 102 分)
pico-usb-wifi 是一個給 Raspberry Pi Pico W 使用的韌體,能把 Pico W 變成免安裝專用驅動程式的 USB Wi-Fi 轉接器。它會在主機端列舉成 USB CDC-NCM(USB 通訊裝置類別的網路控制模型,外觀類似有線網路介面)裝置,並用透明的第 2 層橋接(Layer 2 bridge)在 Pico W 的 Wi-Fi 與 USB 介面之間轉送封包。主機的 USB 網路介面會採用 Pico W Wi-Fi station 的 MAC 位址(網路卡硬體位址),因此從 Wi-Fi 存取點看起來只有一個裝置身分,主機則直接取得同一網段上的 IPv4 與 IPv6 位址,不需要 NAT(網路位址轉換)、私人子網或連接埠轉發。
這個設計的重點是讓主機完全不需要 Wi-Fi 堆疊:不必安裝 wpa_supplicant、cfg80211/mac80211、法規資料庫、晶片韌體或廠商驅動程式,只要作業系統內建 cdc_ncm 與 cdc_acm 驅動即可;作者指出現代 Linux、macOS、Windows 10 以上、Android 與 iOS 都具備這些類別驅動。Wi-Fi 憑證則透過第一個 CDC-ACM(USB 通訊裝置類別的抽象控制模型,常見於 USB 序列埠)管理主控台設定,支援 WPA2-PSK(使用預先共享金鑰的 WPA2 驗證),可設定 SSID、密碼、國家碼與除錯開關;第二個 CDC-ACM 介面則作為除錯輸出,回報連線狀態、封包轉送計數、掉包、watchdog(看門狗)復原與可用記憶體等指標。
技術上,韌體使用 pico-sdk 2.2.0、TinyUSB 與 lwIP(輕量 TCP/IP 協定堆疊),Pico W 本身不持有 IP 位址,只負責 Wi-Fi 關聯、WPA2 驗證與封包轉送。由於一般 Wi-Fi station 不能透明橋接多個 MAC 位址,這個專案改採「MAC 採用」策略,讓主機與 Wi-Fi station 共用同一個 MAC;為了讓 IPv6 的 SLAAC(IPv6 無狀態位址自動設定)、路由器公告與鄰居探索可正常運作,韌體會讓 CYW43 Wi-Fi 晶片接收所有多播封包,並過濾由存取點反射回來的主機自身廣播或多播。效能方面,受限於 RP2040 原生 Full-Speed USB(12 Mbit/s),實測平均約 4.75 Mbit/s,作者認為足以供儀表板、控制介面或受限嵌入式主機使用;未來可能透過第二核心、PIO 實驗或外接 High-Speed USB PHY 提升吞吐量。
討論中不少人把焦點放在作者「花兩天假期與約一百萬個 Claude Code token 做出來」的背景,以及文件中提到 Google Gemini 曾判定此事不可行。有人將 Gemini、Claude、ChatGPT 的程式能力做趣味比較,也有人補充這其實有先例,例如 BlueSCSI、PicoMEM 與 PicoGUS 都曾把 Pico W 用於透明乙太網路橋接或模擬網卡。也有留言提醒,Raspberry Pi Pico 是微控制器而不是可直接安裝 OpenWRT 的 Raspberry Pi 單板電腦;若需求是把 USB 印表機分享成網路印表機,Pi Zero 可能更適合。
成本與用途也引發討論:有人認為一百萬 Claude token 的費用加上 Pico W 成本,未必比買 5 美元 USB Wi-Fi 網卡划算;作者回應他的目標裝置是 Spotify Car Thing/SuperBird 這類缺少 Wi-Fi 元件的設備,且 Claude Code Pro 訂閱已閒置,對他而言額外成本很低。其他人則看好它對無頭主機、受限 Linux 裝置或手邊已有多片 Pico W 的使用者很實用,因為目標系統不必處理 Wi-Fi 設定;同時也有人提醒 Pico W 同時具備 USB 與無線能力,若被濫用可能帶來安全風險,甚至有人聯想到把多片 Pico W 接到 USB 集線器做無線掃描用途。
👥 25 則討論、評論 💬
https://news.ycombinator.com/item?id=48654676