[Solved] Nano RP2040 Connect does not accept *.uf2

Yesterday I received a Nano RP2040 Connect. Following the procedure described in Overview | CircuitPython on the Arduino Nano RP2040 Connect | Adafruit Learning System I tried to install circuitpython version 6.3.0. The Nano RP2040 is connected to (the USB port of) a Linux Mint 20.1 system. A USB disk drive named RPI-RP2 was available. Using file manager Nemo, file adafruit-circuitpython-arduino_nano_rp2040_connect-en_GB-6.3.0.uf2 was copied to the Nano RP2040. As described, the file system disappeared, but the expected file system named CIRCUITPY did not appear. In fact, the Nano was not longer recognized as an USB device.

Following the steps described in article Nano RP2040 Connect not showing as a device under ports the RPI-RP2 file system becomes available after connecting pin REC to ground. However, once the *.uf2 file is copied, the USB drive disappears and the Nano is no longer recognized as an USB device. This is also true if I try to copy file Blink.ino.elf.uf2 to the Nano RP2040.

Command dmesg shows the following after yet another attempt to copy file Blink.ino.elf.uf2 to the Nano RP2040:

[ 4938.751528] usb 2-3: new full-speed USB device number 11 using xhci_hcd
[ 4938.901170] usb 2-3: New USB device found, idVendor=2e8a, idProduct=0003, bcdDevice= 1.00
[ 4938.901176] usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4938.901179] usb 2-3: Product: RP2 Boot
[ 4938.901183] usb 2-3: Manufacturer: Raspberry Pi
[ 4938.901185] usb 2-3: SerialNumber: E0C912952D54
[ 4938.903031] usb-storage 2-3:1.0: USB Mass Storage device detected
[ 4938.905081] scsi host4: usb-storage 2-3:1.0
[ 4939.908723] scsi 4:0:0:0: Direct-Access RPI RP2 2 PQ: 0 ANSI: 2
[ 4939.909250] sd 4:0:0:0: Attached scsi generic sg1 type 0
[ 4939.909524] sd 4:0:0:0: [sdb] 262144 512-byte logical blocks: (134 MB/128 MiB)
[ 4939.909857] sd 4:0:0:0: [sdb] Write Protect is off
[ 4939.909861] sd 4:0:0:0: [sdb] Mode Sense: 03 00 00 00
[ 4939.910192] sd 4:0:0:0: [sdb] No Caching mode page found
[ 4939.910198] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 4939.932254] sdb: sdb1
[ 4939.933782] sd 4:0:0:0: [sdb] Attached SCSI removable disk
[ 5015.282939] usb 2-3: USB disconnect, device number 11
[ 5015.283854] blk_update_request: I/O error, dev sdb, sector 260 op 0x1:(WRITE) flags 0x0 phys_seg 1 prio class 0
[ 5015.283867] Buffer I/O error on dev sdb1, logical block 259, lost async page write
[ 5015.306041] FAT-fs (sdb1): unable to read boot sector to mark fs as dirty

It looks like as if the Nano RP2040 is restarted before writing of the file is completed.

How can I install circuitpython on a Nano RP2040 using a Linux Mint system?

I also tried to use the blink uf2 file and circuitpython, both do not work on mine (tried linux and windows). Someone elses board was able to run circuitpython. No clue what is going on.

However what I did find was that the official micropython uf2 file does work.
https://micropython.org/download/rp2-pico/rp2-pico-latest.uf2

You may need to flash the flash_nuke.uf2 first for the micropython uf2 file to work.
(https://cdn-learn.adafruit.com/assets/assets/000/099/419/original/flash_nuke.uf2?1613329170)

Installing flash_nuke.uf2 did help. After copying the file filesystem RPI-RP2 of Nano RP2040, the Nano rebooted and the file system re-appeared. If the USB cable is disconnected and connected again, the filesystem is remounted on Linux.

However, the following messages were logged after copying file flash_nuke.uf2:

[ 1155.154814] usb 2-1: USB disconnect, device number 7
[ 1155.155198] blk_update_request: I/O error, dev sdb, sector 260 op 0x1:(WRITE) flags 0x0 phys_seg 1 prio class 0
[ 1155.155205] Buffer I/O error on dev sdb1, logical block 259, lost async page write
[ 1155.160926] FAT-fs (sdb1): Directory bread(block 259) failed
[ 1155.160932] FAT-fs (sdb1): Directory bread(block 260) failed
[ 1155.160934] FAT-fs (sdb1): Directory bread(block 261) failed
[ 1155.160936] FAT-fs (sdb1): Directory bread(block 262) failed
[ 1155.160939] FAT-fs (sdb1): Directory bread(block 263) failed
[ 1155.160943] FAT-fs (sdb1): Directory bread(block 264) failed
[ 1155.160946] FAT-fs (sdb1): Directory bread(block 265) failed
[ 1155.160948] FAT-fs (sdb1): Directory bread(block 266) failed
[ 1155.160951] FAT-fs (sdb1): Directory bread(block 267) failed
[ 1155.160953] FAT-fs (sdb1): Directory bread(block 268) failed
[ 1155.181079] FAT-fs (sdb1): unable to read boot sector to mark fs as dirty
[ 1159.599977] usb 2-1: new full-speed USB device number 8 using xhci_hcd
[ 1159.749261] usb 2-1: New USB device found, idVendor=2e8a, idProduct=0003, bcdDevice= 1.00
[ 1159.749265] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1159.749267] usb 2-1: Product: RP2 Boot
[ 1159.749269] usb 2-1: Manufacturer: Raspberry Pi
[ 1159.749271] usb 2-1: SerialNumber: E0C912952D54
[ 1159.750750] usb-storage 2-1:1.0: USB Mass Storage device detected
[ 1159.751191] scsi host4: usb-storage 2-1:1.0
[ 1160.776803] scsi 4:0:0:0: Direct-Access RPI RP2 2 PQ: 0 ANSI: 2
[ 1160.777411] sd 4:0:0:0: Attached scsi generic sg1 type 0
[ 1160.777772] sd 4:0:0:0: [sdb] 262144 512-byte logical blocks: (134 MB/128 MiB)
[ 1160.778089] sd 4:0:0:0: [sdb] Write Protect is off
[ 1160.778093] sd 4:0:0:0: [sdb] Mode Sense: 03 00 00 00
[ 1160.778392] sd 4:0:0:0: [sdb] No Caching mode page found
[ 1160.778399] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 1160.808583] sdb: sdb1
[ 1160.809921] sd 4:0:0:0: [sdb] Attached SCSI removable disk

Despite the failed write at 1155.155198 the flash seems to be cleared. However, copying file Blink.ino.elf.uf2 to the Nano RP2040 still fails. A reset (connect REC to GND) and copying file flash_nuke.uf2 is needed (again) to get a mounted file system upon attaching the Nano via USB.

Did u solve the issue. I am having similar issue with nano rp2040 connect.

Have you tried to see if the micropython UF2 file does work? It did work for me

Micropython uf2 does not work for me either.

As suggested by Bonnom, I tried to install (copy) micropython to the Nano RP2040. It succeeded. dmesg shows:

[ 171.026555] usb 2-1: New USB device found, idVendor=2e8a, idProduct=0003, bcdDevice= 1.00
[ 171.026561] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 171.026564] usb 2-1: Product: RP2 Boot
[ 171.026567] usb 2-1: Manufacturer: Raspberry Pi
[ 171.026570] usb 2-1: SerialNumber: E0C912952D54
[ 171.079416] usb-storage 2-1:1.0: USB Mass Storage device detected
[ 171.079533] scsi host4: usb-storage 2-1:1.0
[ 171.079653] usbcore: registered new interface driver usb-storage
[ 171.082071] usbcore: registered new interface driver uas
[ 172.082148] scsi 4:0:0:0: Direct-Access RPI RP2 2 PQ: 0 ANSI: 2
[ 172.082563] sd 4:0:0:0: Attached scsi generic sg1 type 0
[ 172.082863] sd 4:0:0:0: [sdb] 262144 512-byte logical blocks: (134 MB/128 MiB)
[ 172.083153] sd 4:0:0:0: [sdb] Write Protect is off
[ 172.083158] sd 4:0:0:0: [sdb] Mode Sense: 03 00 00 00
[ 172.083441] sd 4:0:0:0: [sdb] No Caching mode page found
[ 172.083450] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 172.114299] sdb: sdb1
[ 172.115966] sd 4:0:0:0: [sdb] Attached SCSI removable disk

[ 414.639799] usb 2-1: USB disconnect, device number 6
[ 414.640687] blk_update_request: I/O error, dev sdb, sector 260 op 0x1:(WRITE) flags 0x0 phys_seg 1 prio class 0
[ 414.640701] Buffer I/O error on dev sdb1, logical block 259, lost async page write
[ 414.661625] FAT-fs (sdb1): unable to read boot sector to mark fs as dirty
[ 415.057513] usb 2-1: new full-speed USB device number 7 using xhci_hcd
[ 415.206700] usb 2-1: New USB device found, idVendor=2e8a, idProduct=0005, bcdDevice= 1.00
[ 415.206702] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 415.206703] usb 2-1: Product: Board in FS mode
[ 415.206704] usb 2-1: Manufacturer: MicroPython
[ 415.206705] usb 2-1: SerialNumber: 5031503337360001
[ 415.251101] cdc_acm 2-1:1.0: ttyACM0: USB ACM device
[ 415.251347] usbcore: registered new interface driver cdc_acm
[ 415.251348] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

Thus again there is a write error, at 414.640687, but after a reboot the serial (USB) device /dev/ttyACM0 is registered. Using Thonny 3.3.6 it was possible to write a (trivial) Python program and run it.

The current situation is thus rather strange: the arduino version of micropython, called circuitpython, cannot be installed on the nano RP2040, but the micropython version for the Raspberry Pi pico can be installed and works to a yet unknown extend. I guess that there will be no support for the peripherals on board of the nano RP2040.

So I am still interested in installing circuitpython on the nano RP2040, but it is unclear to me how to do that.
@ps_nithin: as far as I am concerned, the issue is currently not solved.

I talked in the Adafruit discord, the problem might be that a different flash IC because of the worldwide IC shortage.

What flash IC does your nano connect have?

Circuitpython expects a AT25QL128A-UUE-T, my board has ISSI IS25LP128F JKLE flash chip instead. This change in IC could also explain all the other problems people have with uploading their sketches to the Arduino Nano Connect.

1 Like

I just tested a new build that does expect the IS25LP128F as memory and now circuitpython works!
You might need to wait a bit before they apply it to the main build though but it should be soon!

Indeed, there is another type of flash IC. According to the datasheet it should be AT25SF128A-MHB-T, and in my case it is ISSI IS25LP128F-JKLE. Thanks for discovering this detail.

However, I wonder if besides circuitpython also other programs might need an update, At every instance of writing a file to the Nano RP2040, LinuxMint reports a write error. I assume that this error is also caused by the different behavior of the flash IC. If this assumption is correct, other programs residing on the Nano RP2040 need to be updated as well.

1 Like

I just installed the currently latest beta version of circuitpython, version 7.0.0-alpha.6. Before installing:

user@ticiv ~ $ lsusb
....
Bus 002 Device 008: ID 2e8a:0003 Raspberry Pi RP2 Boot
user@ticiv ~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
....
sdb 8:16 1 128M 0 disk
└─sdb1 8:17 1 128M 0 part /media/user/RPI-RP2
user@ticiv ~ $

After installing adafruit-circuitpython-arduino_nano_rp2040_connect-en_GB-7.0.0-alpha.6.uf2, the mounted disk RPI-RP2 disappears and some seconds later, another filesystem is mounted, named CIRCUITPY.

user@ticiv ~ $ lsusb
....

Bus 002 Device 009: ID 239a:00cf Arduino Arduino Nano RP2040 Connect
user@ticiv ~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
....
sdb 8:16 1 15M 0 disk
└─sdb1 8:17 1 15M 0 part /media/user/CIRCUITPY
user@ticiv ~ $ ls -l /dev/tty[AU]*
crw-rw----+ 1 root dialout 166, 0 2021-08-12 11:48 /dev/ttyACM0
user@ticiv ~ $

Looking in /var/log/syslog, there is still an I/O error reported when removing file system RPI-RP2:

kernel: [ 1469.293271] usb 2-3: USB disconnect, device number 8
kernel: [ 1469.294225] blk_update_request: I/O error, dev sdb, sector 260 op 0x1:(WRITE) flags 0x0 phys_seg 1 prio class 0
kernel: [ 1469.294240] Buffer I/O error on dev sdb1, logical block 259, lost async page write

The next step is to check some of the functions of this nano RP2040.

Great that means it is now working, if you have problems with circuitpython or need help I can recommend the Adafruit discord. That is usually the best to get help and talk to people if there is a bug.

I think the official micropython uf2 file is corrupted; I had to hard reset my board after flashing it.