Driving Mega2560 from external 5V bricks USB port

Hi Folks, I need some crystal clear, can't fail instructions. I've got several mega's whose usb ports are not recognized anymore. So I decided to try reloading the firmware onto the 16u2 on the mega r3. The instructions available, from various sources conflict with each other, or don't specifically address EXACTLY what to do, in EXACTLY what sequence. What I have managed to do is to brick one of my remaining good mega's such that it's serial port no longer appears.

What I did (that bricked my mega) is to plug an avrispmkii into the icsp socket in the corner of the board, next to the 16u2 and then did the following from avrdude, according to the instruction in the firmware section of github, which didn't work and had to be modified to use the correct hex file name, and reference the avrdude config file:

/Applications/Dev/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avrdude -C /Applications/Dev/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf -p at90usb82 -F -P usb -c avrispmkii -U flash:w:Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

And here, is what avrdude told me, note that the device signature is not what it was expecting....


avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9489
avrdude: Expected signature for AT90USB82 is 1E 93 82
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex"
avrdude: input file Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex auto detected as raw binary
avrdude: writing flash (8192 bytes):

Writing | ################################################## | 100% 2.53s

avrdude: 8192 bytes of flash written
avrdude: verifying flash memory against Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex:
avrdude: load data flash data from input file Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex:
avrdude: input file Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex auto detected as raw binary
avrdude: input file Arduino-COMBINED-dfu-usbserial-atmega16u2-Mega2560-Rev3.hex contains 8192 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 2.34s

avrdude: verifying ...
avrdude: 8192 bytes of flash verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xD9"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xD9:
avrdude: load data hfuse data from input file 0xD9:
avrdude: input file 0xD9 contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xF4"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xF4:
avrdude: load data efuse data from input file 0xF4:
avrdude: input file 0xF4 contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified
avrdude: reading input file "0x0F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x0F:
avrdude: load data lock data from input file 0x0F:
avrdude: input file 0x0F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lock verified

avrdude: safemode: Fuses OK

avrdude done. Thank you.

Again, this bricked the mega.

My question is this, does anybody know EXACTLY what to do, in EXACTLY what sequence, omitting no steps (including where to plugin the programmer, as all the instructions I've seen assume you already know this, and yet to an experienced developer who's diving into this level of the arduino (reluctantly) - it's not so clear).

How do you do a total and complete factory level restore to an arduino mega rev3 ?

Frustrated, (but grateful for help I've received so far),
Kurt