Pi pico not recognized after updating micropython firmware

Short answer: a bug in the latest version of Micropython for Raspberry Pi pico. Recover by installing an older version.

Update. The latest version of Micropython does not cause this problem. Seems to be limited to this single version.

I bought a batch of Raspberry pi picos in Nov 2021. Been working with 2 of them ever since with no problem. Decided to update the micropython firmware. The units then lost connection to the computer with no COM port available. They will now mount in boot mode and Thonny will download the file to the pico but then fails with a message that a com port cannot be found. Tested with both Windows 11 Thonny, Raspberry Pi Thonny and manual drag/drop. Neither computer can find a pico com port. Tried 2 other unused picos in the same batch and had the same problem from the start. Tried using zadig to install a new USB driver on the units; no success but a new error message: “Device Descriptor Request Failed”

Decided it was probably a bug in the 1.24.0 version of micropython. Found the compiled archives of past versions and installed 1.23.0 by drag and drop. This version installed correctly and had communication with Thonny thru the USB connection. When doing an internet search for compiled past versions, Google will take you to github mostly where you can compile the version you want. The archive you actually want is on the micropython site here.

Raspberry pi pico: Saving data to local memory

The pico has 2MB of local memory that can be used for data and program storage. One online resource states the maximum file size is 128KB and going over that corrupts the file; however, I have recorded 481KB files successfully. The files are accessible in the Thonny editor and can be copied to the local computer. Developing this for hourly recording of a remote stream to know high it rises after storms. Sleep for an hour, wake up, record a measurement and go back to sleep for another hour. Come back a month later to collect data.

Commands
gage_data = open(“gage_height”,”w”) #create file for writing or “a” for appending. Append will create the file if is not already there
gage_data.write(“height”) #writes data to file buffer. Does not write to memory yet. If it’s not a clean shutdown, the buffer is lost.
gage_data.flush() #writes buffer to memory. Not needed if you close the file.
gage_data.close() #writes buffer to memory and closes file

Insert commas in the write string to create CSV file for spreadsheet import.