Raspberry Pi Pico W 作為 USB Wi‑Fi 轉接器
Raspberry Pi Pico W 作為 USB Wi‑Fi 轉接器
概覽
這個 Pico W USB Wi‑Fi 轉接器專案展示了如何將 Raspberry Pi Pico W 重新利用為通用的 USB 乙太網路裝置,透過其內建的 802.11 Wi‑Fi 無線電進行流量隧道傳輸。這使得任何支援 USB 網路功能的裝置(Windows、macOS、Linux、Android 等)都能在無需額外硬體的情況下立即實現無線連接。
為何重要
- 通用無線橋接器 – 單一且廉價的微控制器即可取代專用的 USB‑Wi‑Fi 接收器,降低成本並簡化庫存管理。
- 開源韌體 – 韌體託管於 GitLab (https://gitlab.com/baiyibai/pico-usb-wifi) 並可使用官方的 Pico SDK 進行編譯,允許進行自定義調整或整合至其他專案中。
- 低功耗與小尺寸 – Pico W 的 2 × 20 mm 板卡可以放入狹窄空間,且在運作時僅消耗數十毫安培的電流,非常適合嵌入式或可攜式使用場景。
運作原理
- USB CDC‑ECM (Ethernet Control Model) – 韌體實作了 CDC‑ECM 類別,將 Pico W 向主機呈現為虛擬乙太網路轉接器。
- Wi‑Fi 站點模式 – Pico 透過其內建的 CYW43439 無線電連接至配置好的 Wi‑Fi 網路。
- 封包轉發 – 透過 USB 接收到的乙太網路訊框(frames)會被封裝並透過 Wi‑Fi 介面傳送;傳入的 Wi‑Fi 封包則會被解封裝並透過 USB 交付給主機。
- 配置 – 網路憑證(SSID、密碼)與選用的靜態 IP 設定會儲存在 Pico 的快閃記憶體(flash)中,並可透過簡單的序列埠控制台或小型 Web UI(若有編譯進去)進行更新。
入門指南
前置需求
- Raspberry Pi Pico W 板卡。
- 最近版本的 Raspberry Pi Pico SDK (≥ 1.5.0)。
- CMake 與適合的編譯器工具鏈(例如 GNU Arm Embedded Toolchain)。
- 可用於測試的 Wi‑Fi 網路。
編譯步驟
# Clone the repository
git clone https://gitlab.com/baiyibai/pico-usb-wifi.git
cd pico-usb-wifi
# Initialize submodules (if any)
git submodule update --init --recursive
# Create a build directory
mkdir build && cd build
# Configure with CMake, pointing to your Pico SDK path
cmake -DPICO_SDK_PATH=/path/to/pico-sdk ..
# Build the firmware
make -j$(nproc)
產生的 pico_usb_wifi.uf2 可以透過按住 BOOTSEL 按鈕並將檔案複製到掛載的 USB 大容量儲存裝置中來燒錄。
執行時配置
燒錄完成後,透過 USB 將 Pico W 連接至主機。開啟一個序列埠終端機(115200 baud)連接至 Pico 的 UART(或使用已啟用的 CDC‑ACM 控制台)。使用提供的指令來設定 Wi‑Fi 憑證,例如:
> wifi_set ssid MyNetwork
> wifi_set pass MyPassword
> wifi_connect
裝置會嘗試加入網路,成功後,主機將透過 DHCP 從 Wi‑Fi 路由器獲取 IP 地址。
限制與已知問題
- 吞吐量 – CDC‑ECM 實作受限於 USB 2.0 Full‑Speed 端點(12 Mbps)以及 Pico W 的 Wi‑Fi 無線電,實際吞吐量通常落在 5–10 Mbps 之間。
- Driver 支援 – 某些舊版作業系統缺乏原生 CDC‑ECM 驅動程式;在這種情況下,需要自定義驅動程式或不同的 USB 類別(例如 RNDIS)。
- 安全性 – 韌體目前不支援 WPA3 或企業級驗證方式;僅實作了 WPA2‑PSK。
- 電源管理 – Pico W 在作為 USB 轉接器運作時不會進入深度睡眠模式,因此功耗維持在運作狀態的電平。
潛在擴展功能
RNDIS 或 CDC‑NCM – 增加對其他 USB 網路類別的支援,將能擴大與缺乏 CDC‑ECM 支援的 Windows 版本之相容性。
Static IP 配置 UI – 可以透過輕量級 Web 伺服器提供配置入口網站,進行無人值守(headless)設定。
Packet 檢測 – 接入轉發路徑中可以實現簡單的防火牆或流量整形(traffic-shaping)功能。
Multi‑interface 支援 – 結合 USB 乙太網路功能與其他 USB 類別(例如 HID)可以建立複合裝置,用於特殊用途場景。
結論
使用實作了 CDC‑ECM 類別並透過板載內建 Wi‑Fi 無線電轉發流量的開源韌體,Raspberry Pi Pico W 可以被轉化為一個功能齊全的 USB Wi‑Fi 轉接器。此解決方案為任何具備 USB 網路功能的裝置提供了一個低成本且可程式化的橋接器,同時也為進一步的網路實驗與自定義擴展提供了靈活性。