Introduction: How to Upgrade the Firmware on a Universal PCB

The Universal PCB (UPCB for short) project was started to allow a single game controller, especially fighting sticks, on as many different consoles as possible. Information about the project can be found on the following thread in the Shoryuken.com forums: Shoryuken.com

One of the biggest features of the UPCB is the fact that it is upgradeable. Releases will continue to appear to address any compatibility issues, improve support for currently supported consoles, and include support for new and future consoles.

This Instructable will walk you through the process of flashing your UPCB with a new firmware .HEX file. This is broken up into two setups: installing the driver for the USB Bootloader, and the actual flashing process.

If you have already installed the driver once, you will not need to again on that system; go ahead and jump to Step 3 to begin flashing your UPCB.

This Instructable assumes:
1. You have a completely assembled, tested, and working UPCB.
2. You have a completely assembled, tested, and working 'Button Select USB' UPCB cable. See Step 2 for more information.
3. You have downloaded a recent UPCB software package, and extracted it somewhere on your system you can easily reach.

Note for users using Vista and experiencing the error 997:
Just a quick note to anyone trying to run the PDFSUSB program under Vista and getting 'error 997', try the following:

Right click pdfsusb, properties, compatibility, set to XP or 2000 or so. Also check 'run as administrator' if you haven't disabled UAC.
In device manager, select the PIC18F4550 Family Device, right click properties, power management, uncheck 'allow the computer to turn off this device'
Run the program as admin (right click, run as admin [if this is available])

Should solve the problem. As seen at http://forum.microchip.com/tm.aspx?m=241830

Step 1: A Word About the UPCB Cable

Upgrading the firmware is done via a USB 'Bootloader'. So, we need to connect the UPCB to your computer via USB. The best way to do this is to have a 'Button Select USB' UPCB cable. This Instructable will assume you have one. If you do not, look at the Instructable How to build a USB cable for the Universal PCB for complete directions for making one.

Connect your 'Button Select USB' UPCB cable to your controller. In order to access the bootloader mode, you plug in the USB cable to your computer with the Start and Select buttons held down. After the computer realizes you plugged it in, you may let go of Start and Select.

Step 2: Installing the Bootloader Driver

This step only needs to be done once per system. Once you have the driver properly installed, the driver will be automatically loaded up, and the UPCB will be recognized by the bootloader software.

So far, we've connected the Button Select USB cable to your controller, and plugged it into your PC with the Start and Select buttons held down to enter bootloader mode. You must also have a recent copy of the UPCB software extracted somewhere on your system, including the .HEX file you wish to upgrade to.

If the bootloader driver has not been installed before, you'll see the famous 'Found New Hardware' window below.

The steps are very straight-forward. After the 'Found New Hardware' window is up for a while, you'll be presented with the Found New Hardware Wizard. Go ahead and press 'Next'.

The wizard will ask whether you want to 'Search for a suitable driver...' or 'Display a list..' Place a checkmark next to 'Search for a suitable driver...', and press 'Next'.

The wizard will now ask for the locations to search for a driver. Uncheck every box EXCEPT for 'Specify a location'. Press 'Next'.

Next, you will have a window allowing you to select where you want the PC to look for a driver. Click 'Browse'.

In the 'Locate File' window that appears, navigate to where the UPCB files are. Once in the UPCB directory, navigate to the 'MCHPUSB Driver' subdirectory, and then into the 'Release' directory. You will see a single file there named 'mchpusb.inf'. Select that file, and click 'Open'.

The 'Copy manufacturer's files from' box will now show the full path to the 'UPCB\MCHPUSB Driver\Release' directory. Click 'Ok'.

The Found New Hardware Wizard will indicate that it found a driver in the exact place we told it to look. Click 'Next'.

The final page of the wizard indicates that 'Windows has finished installing the software for this device.' Click 'Finish'. The driver installation is now complete.

If you want to verify that all is well, go into your Device Manager. You will see a device in the 'Other devices' heading called 'PIC 18F4550 Family Device'. If you see this, then the driver is installed as working. We are ready to run the bootloader software.

Step 3: Using the Bootloader Software

By now, you're UPCB should be connected to the PC in bootloader mode, the bootloader driver is installed, and the UPCB software is extracted somewhere on your system, including the .HEX file you wish to upgrade to. Now we will use the bootloader software to do the actual flashing.

Navigate to where you extracted the UPCB files. You will find a subdirectory under UPCB called 'Pdfsusb'. Inside that directory is an executable called 'PDFSUSB.EXE'. Double-click to run it.

The 'PICDEM(TM) FS USB Demo Tool' window will appear. Click on the drop-down under 'Select PICDEM FS USB Board'; there should be an entry for 'PICDEM FS USB 0' or similar. This is the UPCB we want to upgrade, so select it. If this drop-down is empty, then there has been a problem. Either you are not in bootloader mode, the UPCB isn't plugged in, or the driver has not been properly installed. Please troubleshoot this until an entry appears in this drop-down.

Once we've selected the entry for our UPCB, all of the buttons that were previously grey will become active. We will now take a moment to make a backup of the firmware currently on the UPCB. In case there are any problems with the new firmware, you will always have the option of going back tot he current version you already have. Select the button marked 'Read Device'. This will read all of the programming currently on the UPCB into the bootloader software.

After the device has been read, the top-most message will be 'MESSAGE - Read Completed'. Select the button marked 'Save to Hex File'. You will be asked for a filename and location to save the current firmware as. It doesn't matter where you save it, or what you name. Just make sure you can find it if you ever need to downgrade. Once you've made your choice of name and location, click 'Save'. Your backup is now finished, so let's upgrade.

Select the button marked 'Load HEX File'.

A window will appear asking for you to select a .HEX file. Navigate to the '_output' directory of the UPCB; NOT the '_output' subdirectory of the Boot directory, just 'UPCB\_output'. Select the .HEX file you wish to upgrade to. If there are different configuration options, they will be shown with different .HEX files. Find the one that best matches your configuration, and click 'Open'.

When the .HEX file has been loaded, you will always get a warning about Configuration Data. This is normal. Just click 'Yes'.

The .HEX file is loaded and shown in the bottom section of the window. Click on the 'Program Device' button to write the firmware to the UPCB.

Please be patient while the programmer runs. The entire process should take less than 60 seconds, but do not be worried if it takes longer. If the main buttons are greyed out, then we know it is still working. If all goes well, you will see successfull message like the ones displayed in the last image. Just exit out of the PICDEM Demo Tool, unplug your USB cable, and you are done.

Note for users of Windows XP and later: It appears that the PFSUSB.EXE does not seem to properly run on some computers without setting up a compatibility mode for it. If the 'PIC 18F4550 Family Device' is showing up in the device manager, but is not showing up in the drop down box in PDFSUSB.EXE, then you should enable a compatibility mode. Exit out of PDFSUSB.EXE, right click the PDFSUSB.EXE file and select 'Properties'. Under the Compatibility tab, place a check in the 'Run this program in compatibility more' box, and select any of the operating systems listed. Click Ok, and then try these steps again. Once Compatibility mode has been set, you should not have to do it again on that system.

Step 4: Completed

Now your UPCB has been upgraded with the .HEX file you selected. Look through the release notes and source code to see what features and changes have been added, then get back to your gaming.