I'm was having this same problem, so I created this post to document what I did to work through it and get back to a functioning system.
I was previously running Arduino-0012 on this system with a USB serial adapter to an AVR Butterfly with no problems. I had not used it for several months and then I got a new iDuino board with on-board USB. I added Arduino-0016 and immediately got the 'can't find programmer id "null"' error from avrdude.
I took the board, cable and Arduino-0016 files to another computer where it all works exactly as it is supposed to. It's something about the environment on my system, but I wasn't sure what.
I looked at boards.txt, programmers.txt and avrdude.conf files, but they all look fine. They also work on the other system, so I can't see why they would be the problem.
I replaced avrdude.exe with a program that dumps the command line and got this:
-CC:\Program Files\arduino-0016\hardware/tools/avr/etc/avrdude.conf -q -q -pm168 -cnull -Uflash:w:C:\Program Files\arduino-0016\examples\Communication\ASCIITable\applet\ASCIITable.hex:i
This would explain why avrdude is complaining about not knowing what programmer id "null" is.
As a test I added a "null" device to the avrdude.conf file:
programmer
id = "null";
desc = "Atmel AVR ISP";
type = stk500;
;
This worked, sort of. Avrdude now complains:
avrdude: ser_open(): can't open device "com1": The system cannot find the file specified.
This is in spite of the correct COM5 setting that is selected in the IDE. So I updated the default port setting in avrdude.conf:
default_serial = "com5";
Resulting in:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
Ah ha! Now we're getting somewhere. That means it's probably trying to talk to the wrong kind of board. Since I have the correct kind selected in the IDE, something else is mucking it up.
I opened my application data preferences.txt file and scanned through it. Ah, "upload.using=butterfly". That isn't going to work. Renamed the file, restarted Arduino and it rewrites the file using upload.using=bootloader.
Now it works just like it is supposed to.
Ok, back out the other changes to the avrdude.conf file and check the avrdude.exe command line:
-CC:\Program Files\arduino-0016\hardware/tools/avr/etc/avrdude.conf -q -q -pm168 -cstk500v1 -P\.\COM5 -b19200 -D -Uflash:w:C:\Program Files\arduino-0016\examples\Communication\ASCIITable\applet\ASCIITable.hex:i
Much better!
So, the root of my problem with the "can't find programmer id "null"" error was that I had at some point adjusted settings such that the "upload.using=" setting in my user preferences file was updated to work with the AVR Butterfly. Selecting a new board in the Arduino IDE doesn't reset this. I don't remember changing it, but it's possible I did it by hand.
Moral of the story: If you get this error, try using a fresh Arduino install and don't forget to move or delete the preferences file in your user directory, the path for which you can find at the bottom the Preferences dialog.
Hope that helps someone.