pico-usb-wifi — это проект прошивки с открытым исходным кодом, который превращает Raspberry Pi Pico W в USB-адаптер Wi-Fi без драйверов, работающий с Windows, Linux, macOS и другими операционными системами с поддержкой USB CDC-NCM.
Чип Infineon CYW43439, установленный в SBC, невозможно напрямую использовать в качестве моста USB-WiFi; вместо этого прошивка реализует прозрачный мост второго уровня (Layer-2) между беспроводным модулем Pico W и интерфейсами USB. По сути, он работает как шлюз/мост Ethernet-WiFi, предоставляя Ethernet-соединение через USB (так называемый режим USB-гаджета), используемое для маршрутизации пакетов Wi-Fi из сети.

Особенности pico-usb-wifi:
- Прозрачный мост второго уровня (Layer-2) между беспроводным и USB-интерфейсами Pico W
- Предоставляется как устройство USB CDC-NCM
- IPv4 и IPv6 без NAT, без частной подсети и без необходимости настройки перенаправления портов
- Внеполосное управление и консоли отладки через последовательный порт CDC-ACM
- Аутентификация WPA2-PSK и WPA3-SAE (а также открытые сети)
- Пропускная способность – в среднем 4,75 Мбит/с; в основном ограничена интерфейсом USB 1.1 на 12 Мбит/с

Рассматривая недорогой USB-адаптер Wi-Fi стоит $2-$3 и выше , а из-за ограниченной производительности решения оно в основном полезно в экстренных случаях, когда нужна связь WiFi, а под рукой есть запасной Raspberry Pi Pico W. Вряд ли возможно значительно улучшить производительность по сравнению с родным портом USB, но, как отметил разработчик (白一百, baiyibai), использование программируемых I/O на RP2040 может быть вариантом, и проект Pico-100BASE-TX может стать отправной точкой.
Учетные данные WiFi и другие параметры можно настроить через консоль управления:
picocom /dev/ttyACM0
-- pico-usb-wifi v1.1.0 --
profiles: 0 saved (active: none)
ssid: (unset)
pass: unset
country: (unset)
debug: off
status: associating
host IPv4: (not seen yet)
(set|scan|list|use|save) # scan
[*] scanning...
networks (3):
1 MyNetwork -47 dBm a4:b1:c2:d3:e4:f5
2 CoffeeShop -68 dBm 00:11:22:33:44:55
3 Neighbour -81 dBm 9c:65:ee:ef:27:c7
(back|join|scan|live) # join 1
[*] staged -- set pass <password> then save
...
profiles: 1 saved (active: 1)
ssid: MyNetwork
pass: unset
...
(set|scan|list|use|save) # set pass hunter2
[*] applying -- re-associating
...
(set|scan|list|use|save) # save
[*] saved to flash
Помимо управляющего порта /dev/ttyACM0, порт /tty/ttyACM1 используется для отладки. Хотя проект разработан для платы Pico W, он может работать и на Pico 2 W при компиляции для последней (TBC).
Проект разработан с помощью Claude Code (использовано около миллиона токенов), а исходный код (C, основанный на PicoSDK), объяснения принципов работы и инструкции по сборке прошивки из исходников можно найти на GitLab Кроме того, вы можете загрузить и установить бинарный файл pico-usb-wifi.uf2 непосредственно на плату.
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.

