BMOW title
Floppy Emu banner

ADB-USB Wombat Firmware 0.3.7

Firmware version 0.3.7 is now available for the Wombat ADB-to-USB input converter. This version fixes a compatibility problem with some ADB mice that use non-standard communication timing. You can download the new firmware here.

This was an interesting discovery. Apple only ever produced a few different ADB mice, with model numbers A9M0331, M2706, and G5431. You might think that mice with the same model number would be the same, but in fact there are several different versions of each model and they have very different internal parts. It may be possible to tell them apart by checking the country of manufacture printed on the mouse, which could be USA, China, Malaysia, Taiwan, or others.

Some of the “Made in Taiwan” ADB mice have a controller chip inside that’s made by Logitech rather than Apple. These mice communicate over ADB at 75 microseconds per bit, instead of at the normal rate of 100 microseconds per bit. A small change to the Wombat firmware was required to make it more flexible about the bit timing.

 
PICkit 3 R.I.P.

The Wombat is designed around a Microchip PIC32 microcontroller, and I use a Microchip PICkit 3 to program and debug. Somewhere within the last year or so, the PICkit 3 has basically stopped working. It gives every indication of being some kind of Windows 10 problem or USB driver issue, rather than a hardware problem with the PICkit 3. Searching the web turns up many similar complaints, but no solution.

Using Microchip’s MPLAB X IDE for development and debugging, the PICkit 3 doesn’t work at all. The IDE will detect that it’s there, but any attempt to actually use it just gets a “connection failed” error. This means that I can’t use the debugger, and I’m reduced to debugging using print statements over the serial port.

The PICkit 3 sort-of works with the MPLAB IPE, a stand-alone programming tool with no debugging capabilities. But it only works for a short window of time after rebooting my computer. After a few programming cycles, it falls back to the same “connection failed” behavior as the IDE. The only way I’ve found to fix it is to reboot… again. Unplugging and replugging the PICkit3 doesn’t help, nor does updating the PICkit 3’s firmware, restarting MPLAB, or anything else I can think of. The word from Microchip’s own support is basically “Oh, you bought one of THOSE? Ha ha ha. Yeah, those PICkit 3s don’t work very well and we’ve dropped support for them.”

After spending quite a long time trying to resolve this, I eventually gave up, and decided I won’t be using any PIC parts for any future projects. The tools are just too clunky and buggy, and there doesn’t seem to be nearly as large of a community using PIC32 parts as other options like STM32. That means that when something’s not working, there aren’t many people who can offer help, and you’re basically out of luck. Too bad.

Read 3 comments and join the conversation 

3 Comments so far

  1. Steve - September 12th, 2021 3:52 pm

    Here’s a discussion on the Microchip forums about the PICkit 3 “connection failed” problem, a discussion that’s been going for TEN YEARS without a resolution. https://www.microchip.com/forums/m614572.aspx The fixes that people say worked for them include basically everything under the sun:

    – upgrade or downgrade the firmware on the PICkit 3 with “Revert to MPLAB Mode”
    – disconnect and reconnect the PICkit 3
    – run the IDE as administrator
    – choose PICKit 3 “main tree” in the IDE, instead of a specific PICKit 3 device
    – reset the project properties in the IDE
    – restart the IDE
    – uninstall and reinstall the IDE
    – reinstall the USB driver
    – run Windows in safe mode
    – disable anti-virus and firewall software
    – use a USB 2.0 port
    – use a powered USB hub
    – don’t use a USB hub
    – use a different USB cable
    – power the target board from a separate power supply
    – disable the HP Launchpad application
    – disable the Accu-weather application
    – disconnect the Fierce 3500 wireless gaming mouse
    – disconnect the keyboard
    – reboot the computer

    I think there must be several different causes of this problem, but they all have the symptom of a “connection failed” error with absolutely no other information or details.

    Reading between the lines, I think the PICkit 3 needs to be configured with different firmware depending on what specific model of PIC is being programmed and debugged. And the IDE is supposed to do this automatically, but the process is very flakey and unreliable. The PICkit 3 and/or the USB driver frequently get stuck in a broken state that can only be fixed by disconnecting or rebooting. Other processes or USB devices may also be causing compatibility problems.

  2. GaryFDes - October 10th, 2021 1:16 pm

    I know it doesn’t help you much but mine works great on my laptop but sucks on my desktop. Same everything I can see. It is definitely really buggy.

  3. Steve - August 7th, 2023 12:06 pm

    This is mostly a note to myself that I managed to get the PICKit 3 working and debugging under MPLAB X IDE again, but PICKit communication with Windows is definitely very flakey. Here’s what worked for me:

    – Use the PICKit 3 v3.10 app to reset the debugger’s firmware, using the “Revert to MPLAB Mode” menu option (this should only be necessary once)
    – Reboot the computer
    – Immediately launch MPLAB X IDE
    – Open project properties -> (configuration name) -> PICkit 3
    – In the upper-right corner, click the Reset button, then click Apply
    – Using the drop-down menu, change the PICkit 3 option category to “Firmware”
    – Uncheck “use latest firmware”
    – Click the Firmware File button. Select the .jam file in the default directory.
    – Click Apply
    – Close the project properties
    – Click the toolbar icon for Read Device Memory

    It’s important to move through all these steps fairly quickly after rebooting. It works for a while, then stops working, and you have to reboot again.

Leave a reply. For customer support issues, please use the Customer Support link instead of writing comments.