Here's the trace right before it quit. Most of this doesn't make much sense to me:
7/27/20 1:20:47 PM UDPTransport.pushBuffer() exit.
7/27/20 1:20:47 PM CommsThread.sendPacketWide() calculated CRC: 12975
7/27/20 1:20:47 PM CommsThread.pullEnvelopeWide() entry.
7/27/20 1:20:48 PM UDPTransport.pullBuffer() received a packet.
7/27/20 1:20:48 PM UDPTransport.pullBuffer() pulled data:
C1 03 00 CB 09 15 B7 16 B4
7/27/20 1:20:48 PM Waiting for byteslo...
7/27/20 1:20:48 PM received byteslo: 03
7/27/20 1:20:48 PM Waiting for byteshi...
7/27/20 1:20:48 PM received byteshi: 00
7/27/20 1:20:48 PM Waiting for command...
7/27/20 1:20:48 PM received envelope command: CB
7/27/20 1:20:48 PM Waiting for check byte...
7/27/20 1:20:48 PM received checkbyte: 09
7/27/20 1:20:48 PM calculated checkbyte: 09
7/27/20 1:20:48 PM CommsThread.pullEnvelopeWide() exit.
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() entry.
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() payload byte [0]: 15
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() payload byte [1]: B7
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() payload byte [2]: 16
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() received checkbyte: B4
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() calculated checkbyte: B4
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() checkbyte on payload matched.
7/27/20 1:20:48 PM CommsThread.sendPacketWide() Ack received; next block should be 5815.
7/27/20 1:20:48 PM CommsThread.sendPacketWide() ACK from client: 15
7/27/20 1:20:48 PM CommsThread.sendPacketWide() didn't work; will retry #1.
7/27/20 1:20:48 PM CommsThread.sendPacketWide() block: 5814.
7/27/20 1:20:48 PM CommsThread.sendPacketWide() backoff sleeping for 0 seconds (or 1 second, whichever is shorter).
7/27/20 1:20:48 PM CommsThread.sendPacketWide() looping until successful to send block: 16B6
7/27/20 1:20:48 PM UDPTransport.pushBuffer() entry.
7/27/20 1:20:48 PM UDPTransport.pushBuffer() pushing 265 bytes of data:
D8 C1 00 02 D3 10 B6 16 80 10 52 FB AE F5 22 3B A6 0E 5D 92 00 18 3A DD 57 EF AE 06 4F FD BE F6
EF 00 24 80 00 56 1B 18 D9 2A E5 18 D9 2A D6 2A E5 E5 33 00 64 D3 06 33 F4 E8 1B CA 0C 27 03 CA
00 80 80 11 5D D7 F5 DD 57 D7 F6 DC 57 D7 F6 D6 5D D7 F6 C6 67 F5 DE D6 5D EF DB DF 57 D6 F7 DC
57 D7 F5 DD EB FE 80 00 00 80 11 5D 92 00 05 11 5D D6 F4 DF 57 EF DE D6 5D EF DE C6 6B D9 F3 DF
57 EF DE DC 57 D6 F4 DF 57 D6 F4 DF EB FE 80 00 2D 33 00 31 D3 2D 03 D6 27 E8 1B 00 39 CA 33 00
3C 03 00 3E E5 E5 36 D6 2A 00 44 FD 00 46 03 CA 00 76 80 00 78 80 00 80 80 11 5D D7 F3 DF 57 D7
F3 DF 57 D6 F6 D7 5D D6 F6 C7 6B F1 DE DC 57 E7 E6 DC 57 D6 F6 DD 57 D7 F3 DF EB FE 80 00 D0 A0
E0 08 FC 1C F0 F8 08 F8 08 F0 00 DC 08 FC FC 00 E4 08 FC 04 08 F0 01 07 08 F0 01 FF 01 1F F0 F8
FC FC 00 F8 80 00 00 AF 32
7/27/20 1:20:48 PM UDPTransport.pushBuffer() exit.
7/27/20 1:20:48 PM CommsThread.sendPacketWide() calculated CRC: 12975
7/27/20 1:20:48 PM CommsThread.pullEnvelopeWide() entry.
7/27/20 1:20:48 PM UDPTransport.readByte() needs to pull a buffer; buffer is null.
7/27/20 1:20:48 PM UDPTransport.pullBuffer() received a packet.
7/27/20 1:20:48 PM UDPTransport.pullBuffer() pulled data:
C1 03 00 CB 09 06 B8 16 A8
7/27/20 1:20:48 PM Waiting for byteslo...
7/27/20 1:20:48 PM received byteslo: 03
7/27/20 1:20:48 PM Waiting for byteshi...
7/27/20 1:20:48 PM received byteshi: 00
7/27/20 1:20:48 PM Waiting for command...
7/27/20 1:20:48 PM received envelope command: CB
7/27/20 1:20:48 PM Waiting for check byte...
7/27/20 1:20:48 PM received checkbyte: 09
7/27/20 1:20:48 PM calculated checkbyte: 09
7/27/20 1:20:48 PM CommsThread.pullEnvelopeWide() exit.
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() entry.
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() payload byte [0]: 06
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() payload byte [1]: B8
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() payload byte [2]: 16
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() received checkbyte: A8
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() calculated checkbyte: A8
7/27/20 1:20:48 PM CommsThread.pullPayloadWide() checkbyte on payload matched.
7/27/20 1:20:48 PM CommsThread.sendPacketWide() Ack received for block 5816, but we were expecting an ack for block 5815.
7/27/20 1:20:48 PM CommsThread.sendPacketWide() ACK from client: 15
7/27/20 1:20:48 PM CommsThread.sendPacketWide() didn't work; will retry #2.
7/27/20 1:20:48 PM CommsThread.sendPacketWide() block: 5814.
7/27/20 1:20:48 PM CommsThread.sendPacketWide() backoff sleeping for 0 seconds (or 1 second, whichever is shorter).
7/27/20 1:20:49 PM CommsThread.sendPacketWide() looping until successful to send block: 16B6
7/27/20 1:20:49 PM UDPTransport.pushBuffer() entry.
7/27/20 1:20:49 PM UDPTransport.pushBuffer() pushing 265 bytes of data:
D9 C1 00 02 D3 10 B6 16 80 10 52 FB AE F5 22 3B A6 0E 5D 92 00 18 3A DD 57 EF AE 06 4F FD BE F6
EF 00 24 80 00 56 1B 18 D9 2A E5 18 D9 2A D6 2A E5 E5 33 00 64 D3 06 33 F4 E8 1B CA 0C 27 03 CA
00 80 80 11 5D D7 F5 DD 57 D7 F6 DC 57 D7 F6 D6 5D D7 F6 C6 67 F5 DE D6 5D EF DB DF 57 D6 F7 DC
57 D7 F5 DD EB FE 80 00 00 80 11 5D 92 00 05 11 5D D6 F4 DF 57 EF DE D6 5D EF DE C6 6B D9 F3 DF
57 EF DE DC 57 D6 F4 DF 57 D6 F4 DF EB FE 80 00 2D 33 00 31 D3 2D 03 D6 27 E8 1B 00 39 CA 33 00
3C 03 00 3E E5 E5 36 D6 2A 00 44 FD 00 46 03 CA 00 76 80 00 78 80 00 80 80 11 5D D7 F3 DF 57 D7
F3 DF 57 D6 F6 D7 5D D6 F6 C7 6B F1 DE DC 57 E7 E6 DC 57 D6 F6 DD 57 D7 F3 DF EB FE 80 00 D0 A0
E0 08 FC 1C F0 F8 08 F8 08 F0 00 DC 08 FC FC 00 E4 08 FC 04 08 F0 01 07 08 F0 01 FF 01 1F F0 F8
FC FC 00 F8 80 00 00 AF 32
7/27/20 1:20:49 PM UDPTransport.pushBuffer() exit.
7/27/20 1:20:49 PM CommsThread.sendPacketWide() calculated CRC: 12975
7/27/20 1:20:49 PM CommsThread.pullEnvelopeWide() entry.
7/27/20 1:20:49 PM UDPTransport.readByte() needs to pull a buffer; buffer is null.
7/27/20 1:20:49 PM UDPTransport.pullBuffer() received a packet.
7/27/20 1:20:49 PM UDPTransport.pullBuffer() pulled data:
C1 03 00 CB 09 06 B9 16 A9
7/27/20 1:20:49 PM Waiting for byteslo...
7/27/20 1:20:49 PM received byteslo: 03
7/27/20 1:20:49 PM Waiting for byteshi...
7/27/20 1:20:49 PM received byteshi: 00
7/27/20 1:20:49 PM Waiting for command...
7/27/20 1:20:49 PM received envelope command: CB
7/27/20 1:20:49 PM Waiting for check byte...
7/27/20 1:20:49 PM received checkbyte: 09
7/27/20 1:20:49 PM calculated checkbyte: 09
7/27/20 1:20:49 PM CommsThread.pullEnvelopeWide() exit.
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() entry.
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() payload byte [0]: 06
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() payload byte [1]: B9
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() payload byte [2]: 16
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() received checkbyte: A9
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() calculated checkbyte: A9
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() checkbyte on payload matched.
7/27/20 1:20:49 PM CommsThread.sendPacketWide() Ack received for block 5817, but we were expecting an ack for block 5815.
7/27/20 1:20:49 PM CommsThread.sendPacketWide() ACK from client: 15
7/27/20 1:20:49 PM CommsThread.sendPacketWide() didn't work; will retry #3.
7/27/20 1:20:49 PM CommsThread.sendPacketWide() block: 5814.
7/27/20 1:20:49 PM CommsThread.sendPacketWide() backoff sleeping for 0 seconds (or 1 second, whichever is shorter).
7/27/20 1:20:49 PM CommsThread.sendPacketWide() exit, rc = false
7/27/20 1:20:49 PM Image transfer aborted.
7/27/20 1:20:49 PM CommsThread.sendDiskWide() exit.
7/27/20 1:20:49 PM CommsThread.dispatchCommand() exit.
7/27/20 1:20:49 PM CommsThread.commandLoop() Waiting for command from Apple.
7/27/20 1:20:49 PM UDPTransport.readByte() needs to pull a buffer; buffer is null.
7/27/20 1:20:49 PM UDPTransport.pullBuffer() received a packet.
7/27/20 1:20:49 PM UDPTransport.pullBuffer() pulled data:
C1 03 00 CB 09 15 B9 16 BA
7/27/20 1:20:49 PM CommsThread.commandLoop() Received data.
7/27/20 1:20:49 PM CommsThread.commandLoop() Received a byte: C1
7/27/20 1:20:49 PM CommsThread.commandLoop() Received wide protocol request.
7/27/20 1:20:49 PM CommsThread.pullEnvelopeWide() entry.
7/27/20 1:20:49 PM Waiting for byteslo...
7/27/20 1:20:49 PM received byteslo: 03
7/27/20 1:20:49 PM Waiting for byteshi...
7/27/20 1:20:49 PM received byteshi: 00
7/27/20 1:20:49 PM Waiting for command...
7/27/20 1:20:49 PM received envelope command: CB
7/27/20 1:20:49 PM Waiting for check byte...
7/27/20 1:20:49 PM received checkbyte: 09
7/27/20 1:20:49 PM calculated checkbyte: 09
7/27/20 1:20:49 PM CommsThread.pullEnvelopeWide() exit.
7/27/20 1:20:49 PM CommsThread.dispatchCommand() entry.
7/27/20 1:20:49 PM CommsThread.dispatchCommand() Received stray acknowledgement packet. Sending Home in response.
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() entry.
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() payload byte [0]: 15
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() payload byte [1]: B9
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() payload byte [2]: 16
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() received checkbyte: BA
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() calculated checkbyte: BA
7/27/20 1:20:49 PM CommsThread.pullPayloadWide() checkbyte on payload matched.
7/27/20 1:20:49 PM CommsThread.sendHome() entry.
7/27/20 1:20:49 PM UDPTransport.pushBuffer() entry.
7/27/20 1:20:49 PM UDPTransport.pushBuffer() pushing 6 bytes of data:
DA C1 00 00 D8 13
7/27/20 1:20:49 PM UDPTransport.pushBuffer() exit.
7/27/20 1:20:49 PM CommsThread.sendHome() exit.
7/27/20 1:20:49 PM CommsThread.dispatchCommand() exit.
7/27/20 1:20:49 PM CommsThread.commandLoop() Waiting for command from Apple.
7/27/20 1:20:50 PM UDPTransport.pullBuffer() received a packet.
7/27/20 1:20:50 PM UDPTransport.pullBuffer() pulled data:
C1 00 00 D8 19
7/27/20 1:20:50 PM CommsThread.commandLoop() Received data.
7/27/20 1:20:50 PM CommsThread.commandLoop() Received a byte: C1
7/27/20 1:20:50 PM CommsThread.commandLoop() Received wide protocol request.
7/27/20 1:20:50 PM CommsThread.pullEnvelopeWide() entry.
7/27/20 1:20:50 PM Waiting for byteslo...
7/27/20 1:20:50 PM received byteslo: 00
7/27/20 1:20:50 PM Waiting for byteshi...
7/27/20 1:20:50 PM received byteshi: 00
7/27/20 1:20:50 PM Waiting for command...
7/27/20 1:20:50 PM received envelope command: D8
7/27/20 1:20:50 PM Waiting for check byte...
7/27/20 1:20:50 PM received checkbyte: 19
7/27/20 1:20:50 PM calculated checkbyte: 19
7/27/20 1:20:50 PM CommsThread.pullEnvelopeWide() exit.
7/27/20 1:20:50 PM CommsThread.dispatchCommand() entry.
7/27/20 1:20:50 PM CommsThread.dispatchCommand() Received Home command. How charming.
7/27/20 1:20:50 PM CommsThread.dispatchCommand() exit.
7/27/20 1:20:50 PM CommsThread.commandLoop() Waiting for command from Apple.