I've frustratingly spent more time than I'd like to admit seeking out a right solution to program AVR 0-series devices in production. We want to use a Linux machine - Pi preferably, but any small Linux box is ok.
My starting point has been trying to use an Atmel-ICE debugger with official tools. Due to Linux, Atmel Studio's command line programming tool (Windows only) is ruled out. Microchip's IPE sounded promising as it interfaces with the ICE and claims compatibility with AVRs - but I cannot get it to program memory on the device beyond 0x6FFF for some reason (with either auto or manual memory selection). No matter what I do, it stops programming at 0x6FFF, writes some number of 0s after, and leaves the rest of the memory at 0xFF. I have a post in the Microchip forums about this as it seems like being able to use their tool in command line would be cleanest. I don't see claims of UPDI/AVR support in any of Microchip's PICKit programmers, so I have not pursued trying this yet - although I have been told by company reps that this should be supported.
Avrdude does not seem to support UPDI devices.
I see pyupdi recommended a lot for this. I spent a day getting this up and running on a Pi 3 and had to do quite a bit of wrestling with it. I ended up having to use Python 3 instead of 2. However, it is slow! Flashing a ~28kB image takes about 1:15. There is no way we can have the flashing step take this long in production.
Does anyone have advice on tools or approach? Am I mistaken on any of my information here? I'm pretty baffled there is not a great working manufacturer solution ~2 years into UPDI's existence, unless I'm sorely missing some information.