Tell HN: macOS Ventura broke the Raspberry Pi Pico ecosystem
Grrr. MacOS Ventura broke the Raspberry Pi Pico ecosystem and they haven't fixed it.
That means micropython and circuitpython don't work on Macos Ventura.
Apparently the Raspberry Pi Foundation have not even succeeded in contacting whoever it is inside Apple who works on Finder - which is what has done the breaking.
Six weeks down the track and Apple has just left it all as busted. Thanks Apple.
https://www.raspberrypi.com/news/the-ventura-problem/
https://www.zdnet.com/article/raspberry-pi-pico-has-a-problem-with-macs-using-macos-ventura/
https://www.tomshardware.com/news/mac-ventura-raspberry-pi-pico-problem
https://mjtsai.com/blog/2022/11/02/the-raspberry-pi-ventura-problem/
https://blog.adafruit.com/2022/10/31/uploading-uf2-files-with-macos-13-0-ventura-apple-microbit_edu-raspberry_pi-circuitpython/
27 comments
[ 4.7 ms ] story [ 69.5 ms ] threadI still had constant problems including junk displaying as the list of files on the device.
https://www.raspberrypi.com/news/the-ventura-problem/
https://www.zdnet.com/article/raspberry-pi-pico-has-a-proble...
https://www.tomshardware.com/news/mac-ventura-raspberry-pi-p...
https://mjtsai.com/blog/2022/11/02/the-raspberry-pi-ventura-...
https://blog.adafruit.com/2022/10/31/uploading-uf2-files-wit...
While a sleek looking use case on the surface, mounting the PI as a fake, non-standards compliant, mass storage device is just a hack.
Drag and drop to program isn't the same thing as flashing an EPROM on a chip burner like we're still back in the 80's, but that's because time's moved on since then.
The part where you're not supposed return a successful Command Status claiming a write succeeded, when actually, you're dropping writes — to anything but a few specific blocks, and only if you see those writes in the order you expect — on the floor.
https://news.ycombinator.com/item?id=32471624
The only way this ever worked was pure luck, relying on the OS:
- Writing file blocks in the desired order — which is not guaranteed.
- Writing filesystem metadata in the desired order — also not guaranteed.
- Not caching any important pages, so that the VM page cache isn't out-of-sync with the block device after it silently discards writes.
- Not caching any important filesystem metadata, so that the filesystem implementation isn't out-of-sync.
I'm surprised (1) anyone thought this was anything other than a risky hack, and (2) not only did RPi actually ship this broken design, but did so in ROM, and thus cannot patch it.
[edit]
Surprised at the downvotes for posting a technical rebuttal to an inflammatory comment.
As someone with a few decades in OS/kernel development, this doesn't seem like a controversial or even difficult question. The implementation is broken and cannot work reliably.
If you disagree, then please explain why you believe the USB mass storage emulation is not broken.
https://github.com/microsoft/uf2
UF2 is just the file format, though. The mechanism for reading/writing UF2 files is via the emulated USB mass storage, which is fundamentally broken.
The USB storage device responds to SCSI write commands with a success status, but actually throws away data, such that a successive read does not return the previously written blocks.
To an OS or filesystem, that's just a failing drive. You might get lucky and things might work.
That's ... not a correct implementation of a USB mass storage device. I'm not surprised it broke; I'm surprised it ever worked at all.
Looking into this a bit more, the RPi bootloader emulates block-level access to a FAT filesystem, but throws away writes to anything other than the contents of a few emulated files.
Filesystem implementations and OS page caches are not written to treat the physical block storage as authoritative and capable of modifying their writes out from under them. To a filesystem or the OS, that just looks like a failing drive.
Reading TFA, I couldn’t help but be bewildered that anyone at the Raspberry Pi foundation ever thought this was a sane move. It’s truly one of the worst design decisions they could have made. It’s hard to express my surprise at how sophomoric this is. Blaming _any_ OS vendor for such a basic architectural deformity seems lame.
It’s a wonder it hasn’t broken before now.
There are also other just stupid things, such as if you use a rotating photo album for desktop backgrounds, you need to select a single image to set ‘fit to screen’ then deselect the album. There seems to be little to know QA on this release.
I'm on a dual monitor, dual resolution setup with the monitors not perfectly aligning, I guess one or more of these things could have something to do with my experience. But I'm pretty sure that's a setup they support and should've tested and more than 0 people should have run into these issues during the beta phase. So what's the excuse? If stage manager is a preview of the quality of new features the future looks bad.
> If you pass the -X flag to the cp command you can successfully copy a UF2 onto your board
> Alternatively, if the errors bother you, you can use the rsync command rsync blink.uf2 /Volumes/RPI-RP2/ which will also copy your UF2 to the board.
> we offer something called picotool (...) it can be used to load binaries onto your Raspberry Pi Pico
I was expecting some integral part of the Raspberry Pi software ecosystem to be dependent on the current version of macOS because that's what the title implies. We regularly read stories about crazy dependencies here. "macOS Ventura is incompatible with the Raspberry Pi Pico" would not imply the crazy dependency I expected.
But then after reading the submission I think "Oh no, the Raspberry Pi Pico can't currently be used with macOS - will they have to patch the bootloader? Do mac users need to use special programmers now? Will they sell a new version that's compatible again?"
Nope, wrong again. It looks like the Finder on macOS can't be used for flashing firmware anymore. The workaround is almost trivial. Sure, it's a bit annoying and should somehow be fixed, but it's not the end of the world at all. The ecosystem hasn't been broken.