raspberry pi pico w and micropython 1.19.1 nightly — initial status report

When the Raspberry Pi Foundation released the Pico W with WiFi for US$6, I picked one up from Adafruit (they limited to one/customer). I have it and I’ve been working with MicroPython nightlies for the W ( https://micropython.org/download/rp2-pico-w/ ). Features seemed to be working until I tried to bring up my “generic” WiFi server on the board (see /2022/06/20/micropython-v-1-19/ ). Everything seemed to work at first, until I went looking for the board’s access point SSID, and couldn’t find it. Instead I see what is the WiFi chip’s SSID, which with my example is PICO386B. I only see this if I enable the network as an access point, or wlan = WLAN(network.AP_IF). It doesn’t matter what SSID/ESSID I want to configure the access point as, I only see the chip’s default access point. Why would the WiFi chip have an access point?

The Raspberry Pi Pico W is equipped with the Infineon CYW43439 ( https://www.infineon.com/cms/en/product/wireless-connectivity/airoc-wi-fi-plus-bluetooth-combos/cyw43439/ ) single chip combination with 2.4 GHz WiFi and Bluetooth 5.2. Up to this point only the WiFi is enabled. Future Bluetooth support is unknown at this time.

CYW43439 block diagram

The block diagram of the CYW43439 calls out two ARM processors; a Cortex M3 for WiFi and a Cortex M4 for Bluetooth. I can only hypothesize at this point, but the M3 is powerful enough to act as an access point with its own self-generated SSID. I can only assume without better documentation that that is what is happening. Although I can’t access it as an access point, I can configure it to join my home WiFi network, and it’s accessable that way.

In the mean time I’m working with the RP2040’s Programmable I/O (PIO) support. That’s an interesting feature that helps the RP2040 punch well above its weight compared to other MCUs.