user26447: I'm attempting to program Atmega4809 (Uno Wifi Rev2) via the ICSP pins on the board by connecting in this manner:
The difference is that I have a Uno Wifi Rev2 on the right instead of a Uno R3. I've uploaded the ArduinoISP sketch onto the Uno R3 on the left. Here is the avrdude command that I am using:
$ avrdude -v -patmega4809 -cavrisp -P /dev/ttyACM1 -b19200 -U program.elf

...

avrdude: AVR device initialized and ready to accept instructions

Reading |                                                    | 0% 0.00savr_read(): error reading address 0x0000
    read operation not supported for memory "signature"
avrdude: error reading signature data for part "ATmega4809", rc=-2
avrdude: error reading signature data, rc=-2

Full log: https://pastebin.com/LUfhsYeD
I am wondering if I am missing some difference between the UnoR3 and Uno Wifi Rev2... there doesn't seem to be much documentation about external programming of the Uno Wifi Rev2's Atmega 4809.
If it helps, my usecase for trying to program my Uno Wifi Rev2 externally is a need to reprogram the 32u4 as a HID. Once I program the 32u4, I won't be able to program the 4809 via USB (afaik).
If anyone knows what I'm doing wrong or the proper way to program the Uno Wifi Rev2 externally, your help would be greatly appreciated.

user4143: The new generation of AVR chips created by Microchip no longer use the same ICSP protocol as the old ones. Instead they use a new protocol called updi.
You need to use a different sketch and wiring to turn your Arduino into a suitable programmer.  More information can be found here about how to do that.

26447: <p>I'm attempting to program Atmega4809 (Uno Wifi Rev2) via the ICSP pins on the board by connecting in this manner:<a href="https://i.stack.imgur.com/qad6g.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/qad6g.jpg" alt="enter image description here" /></a></p>
<p>The difference is that I have a Uno Wifi Rev2 on the right instead of a Uno R3. I've uploaded the ArduinoISP sketch onto the Uno R3 on the left. Here is the <code>avrdude</code> command that I am using:</p>
<pre><code>$ avrdude -v -patmega4809 -cavrisp -P /dev/ttyACM1 -b19200 -U program.elf

...

avrdude: AVR device initialized and ready to accept instructions

Reading |                                                    | 0% 0.00savr_read(): error reading address 0x0000
    read operation not supported for memory &quot;signature&quot;
avrdude: error reading signature data for part &quot;ATmega4809&quot;, rc=-2
avrdude: error reading signature data, rc=-2
</code></pre>
<p>Full log: <a href="https://pastebin.com/LUfhsYeD" rel="nofollow noreferrer">https://pastebin.com/LUfhsYeD</a></p>
<p>I am wondering if I am missing some difference between the UnoR3 and Uno Wifi Rev2... there doesn't seem to be much documentation about external programming of the Uno Wifi Rev2's Atmega 4809.</p>
<p>If it helps, my usecase for trying to program my Uno Wifi Rev2 externally is a need to reprogram the 32u4 as a HID. Once I program the 32u4, I won't be able to program the 4809 via USB (afaik).</p>
<p>If anyone knows what I'm doing wrong or the proper way to program the Uno Wifi Rev2 externally, your help would be greatly appreciated.</p>
 4143: <p>The new generation of AVR chips created by Microchip no longer use the same ICSP protocol as the old ones. Instead they use a new protocol called <code>updi</code>.</p>
<p>You need to use a different sketch and wiring to turn your Arduino into a suitable programmer.  More information can be found <a href="https://github.com/SpenceKonde/megaTinyCore/blob/master/MakeUPDIProgrammer.md" rel="nofollow noreferrer">here</a> about how to do that.</p>
