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 板卡可以放入狹窄空間,且在運作時僅消耗數十毫安培的電流,非常適合嵌入式或可攜式使用場景。

運作原理

  1. USB CDC‑ECM (Ethernet Control Model) – 韌體實作了 CDC‑ECM 類別,將 Pico W 向主機呈現為虛擬乙太網路轉接器。
  2. Wi‑Fi 站點模式 – Pico 透過其內建的 CYW43439 無線電連接至配置好的 Wi‑Fi 網路。
  3. 封包轉發 – 透過 USB 接收到的乙太網路訊框(frames)會被封裝並透過 Wi‑Fi 介面傳送;傳入的 Wi‑Fi 封包則會被解封裝並透過 USB 交付給主機。
  4. 配置 – 網路憑證(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 網路功能的裝置提供了一個低成本且可程式化的橋接器,同時也為進一步的網路實驗與自定義擴展提供了靈活性。

Sources