Edit: Solved! Turns out the standard installation of avrdude doesn't include support for ArduinoISP out of the box. You need to add the lines listed below to your avrdude.conf file.
programmer
id = "arduinoisp";
desc = "Arduino ISP Programmer";
type = "usbtiny";
connection_type = usb;
usbvid = 0x2341;
usbpid = 0x0049;
;
programmer
id = "arduinoisporg";
desc = "Arduino ISP Programmer";
type = "usbtiny";
connection_type = usb;
usbvid = 0x2A03;
usbpid = 0x0049;
;
This is my first time starting a topic, so apologies for any mistakes I makeAlright, might want to grab yourself a drink. This will be a long post. I want to make sure that type down all of the info I've gathered.
So as the title states, I'm looking to do some ISP programming on a board of mine for the first time. It's a UK78 (AT90USB1286 chip) that I accidentally soft bricked by flashing a bad .hex. When I flashed said .hex I immediately got an "unknown device" notification on Windows and the board hasn't worked right since. The computer (usually) recognizes the board but the keys output nothing. The board will go into DFU mode but won't exit DFU mode. When I try to flash a new .hex I get the following:
Checking memory from 0x0 to 0x587F... Not blank at 0x1
(here is the full terminal window/steps I get in QMK Toolbox)From what I've seen people have luck resolving this issue with ISP programming, so that's what I'm going for. I picked up
this arduino ISP programmer, some wires, an IDC cable, and some pogo pins. I suck terribly at desoldering, so I'm trying to go for a solderless connection to my board. If I were to solder wires to the AVR connectors I would almost certainly destroy the PCB trying to get the wires out.
Here
is an album picturing my connection points. Some of the wires going into the ISP programmer don't look right but they feel secure.
And here
is a crude visualization of how I have things set up.
I'm a total n00b at this stuff, so I could have that wired wrong. Anyway, this is about the extent of what I've gotten. I'm trying to use AVRdude in Linux to program the board, but I'm constantly getting errors. I think my command arguments are all wrong. When I try to run the following, or any similar variants:
avrdude -c arduino -p usb1286 -v
I get this error:
avrdude: usbdev_open(): did not find any USB device "usb" (0x03eb:0x2104)
So I've ran some checks but I'm not sure how to make sense of them. I've ran:
tail -f /var/log/syslog
and received the following (Violet is my computer's name) :
Mar 13 20:07:20 Voilet kernel: [ 204.834066] usb 5-1: New USB device found, idVendor=2a03, idProduct=0049
Mar 13 20:07:20 Voilet kernel: [ 204.834069] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Mar 13 20:07:20 Voilet kernel: [ 204.834071] usb 5-1: Product: ArduinoISP
Mar 13 20:07:20 Voilet kernel: [ 204.834072] usb 5-1: Manufacturer: Arduino srl
Mar 13 20:07:20 Voilet mtp-probe: checking bus 5, device 2: "/sys/devices/pci0000:00/0000:00:1d.0/usb5/5-1"
When I run
lsusb my ISP programmer shows up as so:
Bus 005 Device 003: ID 2a03:0049 dog hunter AG
I tried some stuff in Windows. The Arduino IDE showed my ISP programmer as an AVR ISP mkII. So with AVRdude I've tried "-c arduino", "-c avrisp2", and "-c avrispmkII" with no luck. Atmel Studio won't let me add my ISP programmer as a target.
In Device Manager in Windows my ISP programmer doesn't have proper drivers, but I believe it's showing up as COM 1 so I'm guessing it's working right there. I want to use AVRdude on Linux anyway, so I'm not too concerned at the moment.
So yeah, any help would be appreciated. I'm assuming my arguments are all wrong? Does using POGO pins not work and do I need to solder wires to the board? I'm pressing firmly on the pins and they seem to be making good contact.