Flashing ATmega16u2 on Arduino Uno R3: Unable to reset ATmega16u2

I’m having issues (re)flashing the firmware of the ATmega16u2, on the Arduino Uno R3. I have tried methods involving both the dfu-programmer and a usbasp programmer via the ICSP header for the ATmega16u2.

In terms of the dfu-programmer, I followed this method (replacing appropriate commands for the 16U2. However, at the point where it says “reset the 16U2”, by shoring the RESET and GND pins on the ICSP header, nothing happens. Appropriately, the dfu-programmer then does not see the device:

>$ sudo dfu-programmer atmega16u2 erase
dfu-programmer: no device present.

In terms of using a usbasp programmer, the device always identifies itself with a different signature, and does not respond to programming requests (usbasp programmer works with ATmega328P, I have checked continuity of all pins when programming the ATmega16u2 as well, in case it could have been a loose connection).

>$ avrdude -p atmega16u2 -P usb -c usbasp -U flash:w:Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m
avrdude: Device signature = 0x50f609 #<-- this changes all the time
avrdude: Expected signature for ATmega16U2 is 1E 94 89

When forcing flash via -F. the device does not respond:

avrdude: error: program enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1

However, the ATmega16u2 seems to identify itself correctly when plugged in to a Linux machine, so it is not dead:

>$ lsusb
Bus 002 Device 034: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)

I, therefore, have the following questions:

  1. Why is it that I am unable to reset the ATmega16u2 by shorting the RESET and GND pins? According to the documentation here, “This pin alternatively serves as debugWire channel or as generic I/O. The configuration depends on the fuses RSTDISBL and DWEN”. Is it possible that the pin has been reprogrammed to not respond to a reset? And if so, how would I go about undoing that? (To the best of my knowledge, the ATmega16u2 has not been reflashed previously)

  2. Why would the device respond with a random signature when identifying itself via the usbasp programmer?

Thank you all for your help.