SAM-BA operation failed error

I'm trying to get anything at all running on two new MKR WiFi 1010 units. Both are behaving identically. I'm using Arduino 1.8.12 on OSX 10.14.6. I have Arduino SAMD Boards (32-bits ARM Cortex-M0+) version 1.8.6 installed in Boards Manager.

I'm trying to upload the example app "Blink". Every attempt to upload fails with the below errors. I've tried it with and without double-tapping reset before uploading.

I should mention that before getting to this point, I debugged my USB connection. I had to follow the standard step of removing an old driver because I'm now on a new OSX with an os-signed driver. This made the cu.usbmodem connection appear.

Please let me know if you have any ideas on how to make these boards accept a program.

Thanks, Sean

Arduino: 1.8.12 (Mac OS X), Board: "Arduino MKR WiFi 1010"

Sketch uses 12260 bytes (4%) of program storage space. Maximum is 262144 bytes.
Global variables use 2952 bytes of dynamic memory.
Forcing reset using 1200bps open/close on port /dev/cu.usbmodem5D101
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.usbmodem5D101, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.usbmodem5D101, } => {}
Uploading using selected port: /dev/cu.usbmodem5D101
/Users/ssuchter/Library/Arduino15/packages/arduino/tools/bossac/1.7.0-arduino3/bossac -i -d --port=cu.usbmodem5D101 -U true -i -e -w -v /var/folders/_g/4kgjcg251m5fmtvcxsbfh_700000gn/T/arduino_build_184883/Blink.ino.bin -R
Set binary mode
readWord(addr=0)=0x20007ffc
readWord(addr=0xe000ed00)=0x410cc601
readWord(addr=0x41002018)=0x10010305
version()=v2.0 [Arduino:XYZ] Mar 19 2018 09:45:14
chipId=0x10010005
Connected at 921600 baud
readWord(addr=0)=0x20007ffc
readWord(addr=0xe000ed00)=0x410cc601
readWord(addr=0x41002018)=0x10010305
Atmel SMART device 0x10010005 found
write(addr=0x20004000,size=0x34)
writeWord(addr=0x20004030,value=0x10)
writeWord(addr=0x20004020,value=0x20008000)
Device       : ATSAMD21G18A
readWord(addr=0)=0x20007ffc
readWord(addr=0xe000ed00)=0x410cc601
readWord(addr=0x41002018)=0x10010305
Chip ID      : 10010005
version()=v2.0 [Arduino:XYZ] Mar 19 2018 09:45:14
Version      : v2.0 [Arduino:XYZ] Mar 19 2018 09:45:14
Address      : 8192
Pages        : 3968
Page Size    : 64 bytes
Total Size   : 248KB
Planes       : 1
Lock Regions : 16
Locked       : readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
none
readWord(addr=0x41004018)=0
Security     : false
Boot Flash   : true
readWord(addr=0x40000834)=0
BOD          : false
readWord(addr=0x40000834)=0
BOR          : false
Arduino      : FAST_CHIP_ERASE
Arduino      : FAST_MULTI_PAGE_WRITE
Arduino      : CAN_CHECKSUM_MEMORY_BUFFER
Erase flash
chipErase(addr=0x2000)
done in 0.822 seconds

Write 12260 bytes to flash (192 pages)
write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x2000, size=0x1000)

SAM-BA operation failed
An error occurred while uploading the sketch

[==========                    ] 33% (64/192 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x3000, size=0x1000)

[====================          ] 66% (128/192 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x4000, size=0x1000)

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Update: I am able to load the devices on my Linux box (instead of OSX). That box is headless, so I'm using ardunio-cli to load them. So it must not be a hardware error, but instead something about how OSX is communicating with the devices. It's not entirely broken (because OSX can see the device and start an upload) but it's at least partially broken.

(deleted)