MPRemote

Install mpremote and you are able to send code direct to the Pico and run it

apt install mpremote mpremote fs cp main.py : mpremote run main.py

The initial install looks like this :

Plug the RP2030 into your laptop while holding down the BOOT button On your PC a folder will appear. RP2350

Copy the Micopython installer from here : https://micropython.org/download/RPI_PICO2_W/

The Pico will reboot and mpremote should now work

martin@macbook2020 ~ % mpremote
Connected to MicroPython at /dev/cu.usbmodem11201
Use Ctrl-] or Ctrl-x to exit this shell
MicroPython v1.26.1 on 2025-09-11; Raspberry Pi Pico 2 W with RP2350
Type "help()" for more information.
>>>

A Simple test would be to get a list dir command to work.

>>> import os
>>> os.listdir()
[]

To install al lib such as the micropython_ota run this

curl https://files.pythonhosted.org/packages/6d/5c/17f4b88f98dd0312e7f8ba8c6f25fbf4625da69b5eb50c12a9785b79bcca/micropython_ota-2.1.0.tar.gz
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.
martin@macbook2020 micropython-ota % curl https://files.pythonhosted.org/packages/6d/5c/17f4b88f98dd0312e7f8ba8c6f25fbf4625da69b5eb50c12a9785b79bcca/micropython_ota-2.1.0.tar.gz -o micropython_ota-2.1.0.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  4205  100  4205    0     0   149k      0 --:--:-- --:--:-- --:--:--  152k
martin@macbook2020 micropython-ota % ls a-l
ls: a-l: No such file or directory
martin@macbook2020 micropython-ota % ls -al
total 16
drwxr-xr-x@  3 martin  staff    96 14 Nov 12:04 .
drwx------@ 58 martin  staff  1856 14 Nov 12:04 ..
-rw-r--r--   1 martin  staff  4205 14 Nov 12:04 micropython_ota-2.1.0.tar.gz
martin@macbook2020 micropython-ota % tar xvzf micropython_ota-2.1.0.tar.gz
x micropython_ota-2.1.0/micropython_ota.egg-info/PKG-INFO
x micropython_ota-2.1.0/micropython_ota.py
martin@macbook2020 micropython-ota % ls -al
total 16
drwxr-xr-x@  4 martin  staff   128 14 Nov 12:05 .
drwx------@ 58 martin  staff  1856 14 Nov 12:04 ..
drwxr-xr-x   4 martin  staff   128 14 Nov 12:05 micropython_ota-2.1.0
-rw-r--r--   1 martin  staff  4205 14 Nov 12:04 micropython_ota-2.1.0.tar.gz
martin@macbook2020 micropython-ota % cd micropython_ota-2.1.0
martin@macbook2020 micropython_ota-2.1.0 % ls -al
total 16
drwxr-xr-x  4 martin  staff   128 14 Nov 12:05 .
drwxr-xr-x@ 4 martin  staff   128 14 Nov 12:05 ..
drwxr-xr-x  3 martin  staff    96 14 Nov 12:05 micropython_ota.egg-info
-rw-r--r--  1 martin  staff  4267  1 Feb  2023 micropython_ota.py
martin@macbook2020 micropython_ota-2.1.0 % mpremote cp micropython_ota.py :/lib
cp micropython_ota.py :/lib
martin@macbook2020 micropython_ota-2.1.0 % mpremote run main.py

Clone RP2040 - DO NOT BUY THESE - SO BAD TO USE

That board uses an ESP8285 module for Wi-Fi rather than the CYW43 chip found on the official Pico W. Functionally it's the same idea, but it connects through a different interface (UART + AT commands), so the standard Pico W MicroPython firmware won't recognise it and shows that CYW43 failed to start message. You've got two good options for getting Wi-Fi up and running:

Option 1 MicroPython Flash the standard Pico (non-W) MicroPython UF2 (this skips the CYW43 driver). Use one of the small helper libraries that communicate with the ESP8285 over UART They give you the same connect()-style commands for joining Wi-Fi and sending data.~ If you like, I can send through some sample code files from the supplier that show exactly how to initialise the Wi-Fi and connect they're easy to adapt.

Option 2 Arduino IDE (recommended if you prefer a quick start) Arduino has native support for the RP2040 + ESP8285 combination. Just select the correct board in the Arduino IDE, use the WiFiEspAT library (or similar), and you can connect to Wi-Fi with only a few lines of code. Many people find this path simpler for networking since the libraries handle the AT communication automatically.i Let me know which option you'd like to go with I'm happy to send the MicroPython examples or a quick Arduino setup guide (with code) to get you online straight away.

This guy is awesome to deal with from AusComm on Ebay

MicroPython Setup with ESP8285

git clone https://github.com/mocacinno/rp2040_with_esp8285.git

cd rp2040_with_esp8285

Boot the Pico with the button closest to the USB held down. Drag and Drop the Serial_port_transmission.uf2 onto the File System that had appeared in Windows / MAC

The Pico will reboot

Unplug the Pico and plug it back in while holding the button furthest from the USB COnnector

Run this on the ocmmand line

ls /dev

on the mac this is generally tty.usbmodem1234561 at this stage

esptool.py --chip auto --port /dev/tty.usbmodem1234561 write-flash -fm dout 0x00000 WIFI-ESP8285_upgrade.bin

This will upload the flash to esp8285

unplug and re-plug

Upload the Micropython code from here : RPI_PICO-20250911-v1.26.1.uf2

Hold the button close to the USB port again and copy and paste the uf2 file to the Pico

Edit the main.py from the rp2040_with_esp8285 repo.

Change the SSID and WPA2

Change the htfy location and channel. Login to the website and confirm the message appears

The example main.py should look like this when run

mpremote run main.py
AT

OK

AT+CWMODE=1

OK

AT+CWJAP="<ssid>","<passwd>"
WIFI DISCONNECT

WIFI CONNECTED

WIFI GOT IP


OK

AT+CIPMODE=0

OK

ESP8285 initialized and connected to WiFi
AT+CIPCLOSE

ERROR

AT+CIPSTART="TCP","ntfy.sh",80

CONNECT

OK

AT+CIPSEND=100

OK
>
HTTP POST request sent
HTTP POST request sent successfully