I-PAC Ultimate I/O

In stock

I-PAC ULTIMATE I/O Advanced PC interface for arcade buttons,joysticks and LEDs.

Full Speed USB 2.0. 48 Inputs, 96 outputs. Upgradeable Firmware.

NO EXTRA WIRING required for most standard installations. All switch wiring supplied. Trackball and spinner simply plug in. RGB LEDs simply plug in (Ultimarc Ultralux or ClassicRGB).

This board has a total of 176 connections. If you were to hand-wire every LED and switch this would be a total of up to 576 wire ends to strip and connect! Which is why we have done it for you.!

48 inputs each with it's own dedicated microprocessor pin. No interaction or delays, vital for multi-button games such as fighting games.

Emulates a USB keyboard and yet breaks through the USB simultaneously-pressed-switch limit of 6 switches (plus ctrl,alt,shift) which afflicts all USB keyboard devices. This is because it has inbuilt full native USB support, and does not rely on an add-on adaptor.

Multi-mode operation emulates either keyboard/mouse/LEDs, dual gamepad/mouse/LEDs or Dual Xinput controller.

All input pins can be assigned to any keyboard key, gamepad button (including hat switch), mouse button or power/volume control. Also sleep/wake.

Inputs can be assigned as trackball and spinner and our U-Trak and SpinTrak devices plug directly into the board.

Shift function which allows ANY input to be assigned to a shifted secondary keycode and the shift button can have it's own function too so no need for a dedicated extra control panel button.

Self-test LED which gives an instant visible check of your installation.

96 channel LED controller with constand-current drivers. Also 6 high-current 1 amp drivers.

INTERACTIVE configuration utility which applies and reads back any changes "on the fly".

MAME Defaults pre-loaded.

I-PAC Ultimate I/O retains it's programming after power off. Beware! Not all keyboard encoders do this!

Thanks to Daniel Spies, there is a video describing this board here

The I-PAC series (Interface for Pc to Arcade Controls) are boards which allow connection of arcade controls such as buttons and joysticks to a USB port on a host system. They are designed around the MAME emulator which supports over 1000 arcade games and can be used with other emulators.
It is designed to be used inside an Arcade Games cabinet with the host system also mounted inside, but could just as easily be used with simply a control panel without a cabinet.
Special shift function buttons mean that a normal keyboard is only be needed for game loading and configuration, not for gameplay. All key codes can be programmed but you dont have to as you can use the built-in default configuration which has all standard MAME codes for quick and easy installation. Programmed keys codes are stored even after power off.

Full Feature List


  • Fully programmable key code set. Stored even after power off unlike some other interfaces which lose all data when powered off.
  • Controls can be assigned to any keycode, gamepad button, plus mouse buttons, power, volume up/down, sleep or wake.
  • Multi-mode operation, can emulate keyboard/mouse/LEDs, dual gamepad/mouse/LEDs or Dual Xinput controllers.
  • Wiring harness supplied for 32 input connections. Additional harness options for the other 16 inputs. Connections marked on the board.
  • Trackball and spinner interface. When enabled these use a total of 6 of the available 48 inputs.
  • Example configurations include: 2 player with trackball/spinner. 4 player without trackball/spinner.
  • Self-Test LED gives an instant check of all your wiring. Can indicate which, if any, input has a problem.
  • All button inputs referenced to ground - no need to re-wire separate grounds to each button.
  • Supplied USB cable plugs into PC USB port.
  • Using host software, an unlimited number of keycode configurations can be stored and downloaded on-the-fly. Retained on power off.
  • No separate power needed for controls.
  • Does not use a matrix - no ghost keys.
  • Does not use a scanning method which causes a variable delay. Each input has it's own dedicated connection into the on-board CPU .
  • Fast running interrupt-driven software gives much better response than a standard keyboard controller. Key debounce uses a state method for each key. No delays between keys depressed at the same time. (essential for fighting games).
  • 2 operation modes. Either uses standard MAME keys or you can program your own character set.
  • Shift functions. Holding "Start1" and pressing other buttons sends a range of codes for MAME functions such as "escape", "Coin 1", "tab", "enter". This means no extra buttons are needed on the cabinet. In programmable mode any input can be the shift key and all keys can be programmed with a shifted code.
  • Special note for Windows MAME users! Shift key functions mean you can select and start games from the Windows interface without using the keyboard or mouse.
  • No special drivers needed. USB drivers are generic Windows.
  • Fully compatible with all Apple Mac (excl config utility).
  • Supports the Apple Mac "command" key and the Windows "GUI" keys.


  • 96 LED channels with 256 brightness levels for full RGB color mixing
  • Can be used with single-color or RGB LEDs (RGB use 3 channels)
  • Constant current negates the need for resistors for each LED
  • Can be used with LEDs with inbuilt resistors if required
  • 128-command flash storage for “attract-mode” or test sequences which run immediately on power-up with no PC present
  • Supplied configuration utility allows customisation and storage of attract-mode LED sequence.
  • Supports single-command fades with preset speed on-board. Multiple fades can overlap
  • Comes with power cable for plugging into a PC disk drive power connector.
  • Extensive software support including test application, Software Development kit for adding support to your own programs, and LedBlinky third-party software
  • Compact modular connectivity. Our Goldleaf RGB, Ultralux RGB and ClassicRGB pushbuttons simply plug in. Other harnesses and connectors available.
  • 6 X 1 amp MOSFET drivers which are suitable for LED strips and other high-power LED applications.

Configuration Software

USB LED Controller
USB keyboard interface
LED test and scripting utility WinIPAC for reconfiguring controls


In addition to our own test and script utility shown above, Ultimarc LED and output controllers have great software support, including PC and Linux software and our own SDK which enables easy addition of output control to your own programs.

Also a Linux library is available. See our Programming Page

LEDBlinky logo For Windows

RGB Commander logo For Linux

Thanks to Shaun Quick for his Linux Library of LED control commands here

There are more details and screenshots of third party software on our PacDrive page

LEDBlinky overview

This is a third-party application available in free or paid versions. It is actually a suite of programs enabling configurations to be stored, animations to be created, and has special MAME features.

Note that LEDBlinky supports direct control of the board via USB only. It does not support creation of scripts for storing on the board.

Version 5.0 required.

  • With RGB LEDs, you can specify colors for individual controls or using a pre-defined colors.ini file. Colors or intensities can also be customized on a game-by-game basis.
  • Use audio output (music or game sounds) to blink, fade, or animate LEDs – great for use with Jukebox software.
  • Blink and speak front-end UI controls by pressing a pre-defined “Help” button.
  • Blink and speak controls when pausing a game and/or play a LED animation (selected, random, random montage) or use audio output (music) to animate the LEDs. This is a MAME only feature.
  • Flash start buttons when credits are available - this is a MAME only game dependent feature.
  • Light start and coin buttons based on active player count for the current game.
  • Flash all or active buttons when any is pressed.
  • Full support for other MAME Outputs - light LEDs based on any output. Outputs can be linked to controls (P1_Button1, P2_Button2, etc.) or directly linked to a Device/Port.
  • Extensive audio animation options let you completely customize how the LEDs blink to music or game sounds.
  • When starting a game, LEDBlinky can play a LED animation (selected or random), speak the game name, speak each button “action” while blinking the button in its correct color, speak the primary controls, and speak a custom message. When speaking the game name or custom message, LEDs can blink in sync with the speech.
  • While playing a game, LEDBlinky can play a continuous LED animation (selected, random, or random montage) or use audio output (game sounds) to animate the LEDs. The LED animation will only effect unused controls.
  • See the LEDBlinky website for all details

Installation Information

The diagram below shows some examples of connected devices. For clarity only a few items shown.

Ultimate IO wiring

Click tabs above for default key codes, wiring and power information.

LED support works in an identical way to our PacLED64 except there are 96 LEDs instead of 64.
LEDs can be controlled using our SDK or the third-party LEDBlinky utility.
The board is supplied with a power cable which supplied 5 volts to the LED power black connector from a spare HDD connector.
Alternative power source can be used such as a wall-plug power supply. Voltage should be 5V for all LEDs supplied by Ultimarc. Current 0.02 amps per LED channel.
Ensure CENTER pin on the connector is 5V, BARREL is ground. Connector is 5.5mm diameter, 2.1mm pin.
The board is shipped with a pre-configured LED script which fades up all LEDs, then down, then enables each LED in turn, to one color, then cycles. You can change this script if you wish. The LED script runs from power-on even before the PC is running and stops running as soon as any control is activated.

USB keyboard encoder

What to Order
Example Configurations Items to Order
2 Players using Goldleaf RGB, Ultralux RGB or ClassicRGB buttons, U-Trak trackball, Spintrak Spinner Nothing extra required. Order Board with 2-player harness kit.
This includes:
USB cable
LED Power Cable
32-way harness
Ground daisy-chain harness
4 Players using Goldleaf RGB, Ultralux RGB or ClassicRGB buttons, No trackball or Spinner (these are not supported in a 4-P config) Order standard board/harness (see above)
Order 4-player expansion kit.
Either of the above but using single-color LEDs such as Ultralux. Order as above plus one "LED Connection Pack" per 9 LEDs, Also one "Daisy-Chain Harness" per panel for LED common connections.
Optional Extras Extension Harness Pack. This is used for unusually large panels for increasing reach of any longer wires.
PCB Mounting Feet

USB keyboard interface

The above picture shows the board fully wired for 2 players including::

  • Power Cable (included)
  • USB Cable (Included)
  • Switch harness (included)
  • Daisy-chain ground harness (included)
  • LEDs (not included). Note these are examples only, to show connection. Our Ultralux RGB, Goldleaf RGB and ClassicRGB LEDs have longer wires than those shown.
  • U-Trak Trackball (Not included)
  • Spintrak Spinner (Not included)

This board will also control our RGB illuminated joystick handle which simply plugs in.

Illuminated joystick handle

Wiring Harness Detailed Information
usb interface harness USB LED controller
Player 3-4 Connection Pack 9-LED Single Color Connection Pack

Wires Length
Main Harness Included 32 330mm / 13 inches
Daisy Chain Ground harness Included 32 Links 90mm / 3.5 inches per link
LED Power Cable Included n/a 1.5 M
USB Cable Included n/a 1.5 M
Extension Harness Pack (Wires replace existing) Not Included 10 560mm / 22 inches
Player 3,4 Connection Pack Not Included 20 Plus 20 Ground 560mm / 22 inches
9-LED Connection Pack. Required for each 9 single-color LEDs (Our RGB are pre-wired) Not Included 9 plus common 560mm / 22 inches

Latest Firmware

Click the IPAC Downloads tab above to download the latest firmware.

Harness Type:
4.8mm switch connectors (for all except Goldleaf buttons)
Default Keycode Table
(hold 1 player start)
COIN 1 5
COIN 2 6
1 RIGHT R arrow Tab
1 LEFT L arrow Enter
1 UP U arrow Key Below ESC (Volume, gamma, etc )
1 DOWN D arrow P (pause)
1 SW 1 L-ctrl 5 (Coin A)
1 SW 2 L-alt
1 SW 3 space
1 SW 4 L-shift
1 SW 5 Z
1 SW 6 X
1 SW 7 C
1 SW 8 V
1 A P
START 2 2 Esc
2 UP R
2 SW 1 A
2 SW 2 S
2 SW 3 Q
2 SW 4 W
2 SW 5 I
2 SW 6 K
2 SW 7 J
2 SW 8 L
COIN 3 7
COIN 4 8
3 UP I
3 SW 4 O
3 SW 5 F5
3 SW 6 F6
3 SW 7 F7
3 SW 8 F8
4 UP Y
4 SW 1 B
4 SW 2 E
4 SW 3 H
4 SW 4 M
4 SW 5 F9
4 SW 6 F10
4 SW 7 F11
4 SW 8 F12
Using the built-in code set

When the board is first powered on, it operates in keyboard mode and contains a pre-loaded code set. This matches the MAME default key codes as the table above indicates. For many users there is no need to do any re-assignment, just power up and play.

You may want to re-program the codes if any of the following apply:

  • · You use an emulator or other PC application without a key re-mapper.
  • · You don't want people to be able to access the MAME game config menus by using shift buttons (for example game contests etc)
  • · You want to limit coin insert to a real coin slot rather than using shift button feature.
Changing to Dual/Quad Game Controller Mode

The boards are shipped for operation in keyboard mode but can be changed to dual Xinput or Dinput game controller mode (Quad on I-PAC 4). Check the Multi-Mode page tab on the board information pages. You may need to upgrade firmware. For this see the I-PAC Downloads tab.

Using Two Boards

The I-PAC Ultimate I/O board has special firmware available which enables it to be seen by LED control applications as a second board. This is available on the IPAC Downloads tab page.
WinIPAC can also reconfigure each board separately, by means of a command-line switch "/2". For details see the WinIPAC tab page.


You do not need to install any drivers or software from the Ultimarc CD to get the board to operate.

Connect one side of each switch to the screw terminals as indicated on PCB. "Daisy chain" the other side of all switches together and connect to either of the "GND" terminals on PCB. Some micro-switches have 3 connections – only use the ones marked "NO" and "COM". Don't connect anything to the "NC" tag. Below is a diagram showing an example of 3 joystick micro-switches connected to inputs on the I-PAC board.

The gauge of wire used is not critical. Any insulated stranded wire will do providing it is thick enough to be gripped by the screw connectors. The wire we supply in our wiring kit is 16 X 0.2 mm.
You can connect more than one switch to one I-PAC input, to perform the same function. For example you might want to have side flipper buttons connected to the same inputs as fire buttons as these are used in different games. This applies to joysticks too. You can connect a 4 and an 8-way stick to the same inputs. (But check our 4-8 way switchable sticks though!)


The I-PAC 2 and I-PAC 4 use screw connectors for the controls:

I-PAC wiring

The Mini-PAC and I-PAC UIO use a supplied wiring harness. The harness comes in two sections. There is a "daisy-chain" ground harness and a 32-way switch harness.

The first step is to connect the male end of the black ground harness to the black wire on the main harness. Then connect to every switch. The example below shows 3 connected switches:

Keyboard encoder wiring

Plug one end of cable into the USB connector and other end to motherboard USB connector.

Start windows. Windows will detect the device and automatically load drivers. The drivers for this device are already within Windows. There are no Ultimarc drivers for the I-PAC.

Basic Testing

Boot PC and run a text program such as Notepad. Observe the LED on the I-PAC should be ON in normal use. If there is a failure detected during power-up, the LED will flash a number of times then stay OFF.
Press various player 2 buttons (some of the player 1 buttons are mapped to non-displayable codes such as ALT so best to use player 2). You should see characters displayed, just as if they were typed on the keyboard.

Reassigning keycodes

This is done using WinIPAC V2. For full instructions, click the Configuration Utility tab.

I-PAC boards support left/right mouse buttons plus game controller buttons, volume up/down, power, sleep and wake, in addition to keyboard keys. Extensive macro support is available.

Shift Mode

Pressing and holding 1player start enables shift mode with access to the following keys (when "MAME" setting is used):

2 player start =Esc – for jumping back to the menu

Joystick left =Enter – for running games in Windows and for MAME game config menu

Joystick right =Tab – for entering MAME config menu

Joystick up =~ - for entering MAME volume/gamma menu

Joystick down =P MAME pause key

1 fire (button 1)=5 – for simulating coin insert.
The above shift keys can be changed/turned off as required if the board is programmed.

MAME HINT: to get past "Type OK to continue" prompt, just move joystick left then right.

Additional Info

KEYBOARD: PC should pass BIOS keyboard self-test with or without a normal keyboard connected. The unit is capable of being used in a closed arcade cabinet with no additional keyboard or controls and motherboard booting into an emulation menu. If an auxiliary keyboard is connected it can be used fully and even used during gameplay alongside your control panel.

USB DOS SUPPORT : Most PCs support a USB keyboard in DOS mode so I-PAC in USB mode MAY work in DOS. (USB keyboard support may have to be enabled in the BIOS). HOWEVER: many BIOSes have poor USB support which prevent use for gaming, as the response is too slow. USB is intended for Windows use, either in a "DOS box" or a windows application.

USING TWO I-PACs TOGETHER : Two boards can be used for doubling the number of inputs. Each board can be individually programmed with the required code set, then the two boards can be connected together as above.

WIRING TWO JOYSTICKS TO THE SAME CONNECTION : This is fine, and is often done when using a dedicated 4-way joystick alongside an 8-way. Both joysticks could be wired to the Player 1 inputs. They will both perform the same function of course.

Using the Trackball and Spinner interfaces on I-PAC UIO 

The UIO board has 48 total input connections. 32 of these are on the main harness and 16 on the pins at top left and right.
Some of these pins can be used for trackball and spinner but these are deducted from the total 48. Spinner uses two and trackball uses 4. When these devices are connected and configured in WinIPAC, these pins cannot be used for switches.
Spinner shared with P4 L-R
Trackball shared with P3 L-R-U-D.

Using the Expansion/Trackball/Spinner interface on I-PAC 2

These pins form a dual-purpose interface. The function is configured in the "config" tab in WinIPAC.

There are 2 modes:

Expansion Interface Disabled: In this mode, an Ultimarc U-Trak trackball and SpinTrak spinner can be directly plugged into the header pins. The wire colors are marked.

Expansion Interface Enabled : In this mode, one or two Ultimarc Xbox360/PS3/Xinput converters can be plugged into the header pins. The wire colors are marked.


General Approach:

Remember that in its as-delivered mode the I-PAC emulates a keyboard. So if you bear this in mind, you can use any program that displays text to test the response with certain limitations. Notepad or the DOS prompt can be used for example. You can connect a short piece of wire to GND and use the other end to touch onto various input connections, and characters should be typed on the screen. Bear in mind, though, that the default MAME configuration includes many non-printing keys such as ALT, CTRL and the arrow keys, so trying the player 2 inputs is best as these are all printable characters.

But Notepad or DOS cannot tell you whether an input is "stuck" though so is not a complete test. For Windows, the best test is the Passmark keyboard Test which we can recommend downloading. It's a 30-day trial version but hopefully you will have it working by then!

Problem: Player 2 buttons 5 and 6 not working.

This is not an I-PAC problem! By default, MAME does not have these buttons assigned to any keycodes. Just go into the MAME controls menu (press tab in a game) and assign them. Button 5 is "I" and Button 6 is "K".

Problem: No shift functions work.

Part of the shift function design means that to avoid "stuck" keys, shift functions are disabled when any key is pressed. So loss of shift functions means you have a shorted or stuck switch.

Problem: Erratic behaviour of joystick directions. Shift functions not working. "Stuck" keys.

A very common cause is connection of the inputs to the "NC" contact on the switches instead of "NO". See the "no shift functions work" heading above for more info. This type of problem usually occurs when a large number of switches are incorrectly connected. The self-test LED will indicate this problem by flashing at power-up then staying off.

Problem: In USB mode, the I-PAC was not detected properly once before and now I can't get it out of this state.

You will need to remove it from Windows and let it re-detect. Go into Control Panel, System, Device Manager, Hardware. Open up the USB controller by clicking on the plus sign next to it. Under this heading will be displayed all the USB devices. Right click on all devices one by one except the controller itself and Root Hubs and select"uninstall". Now unplug and re-plug the I-PAC. It should be re-detected.

Problem: In USB mode, it is only detected as "Unknown Device" or "device has a problem".

Under certain conditions, shorted inputs can cause this, or inputs that are held at 5 volts. This may happen either because of a wiring error (see steps for checking this, above) or the I-PAC inputs being connected to something other than an open-circuit switch. If you need to connect non-switch devices please email for advice.

Problem: Keys intermittently sticking in one direction.

This is usually not an I-PAC problem. If you check the I-PAC installation using the PassmarkKeyboard Test you will probably find that this works fine and you may need to look elsewhere on your PC installation such as some errant software consuming PC resources.

Performing a USB Device Reset

Windows 7 and later cache information about all USB devices which is not refreshed when the device is unplugged/reconnected. This can cause issues with devices appearing not to work. This process is always required when firmware is changed from versions which support game controller device, to versions without game controller support or vice-versa.

To reset the device settings, open Device Manager. A quick way to do this is to click the Windows button and in the "search programs" enter:


usb device reset

  • Expand the "USB Controllers" entry
  • Find the "Composite Device". There may be more than one. There is no harm in applying this to all of them with the exception that a keyboard with integrated trackball might be one of them and this will prevent any further use of the trackball if uninstalled.
  • Right click on the Composite Device and "Uninstall" it.
  • At the the top select "Action", "Scan for New Hardware". Alternatively, if you have "lost" your USB mouse, just unplug/reconnect it.
How the I-PAC Shift Button Works

When a shift button has been assigned, pressing and holding this button causes the "SHIFTED" code page to be used. The way this works is not the same as defining "key multiple" in an emulator.

To explain this, consider the following example which is part of the standard I-PAC code set in non-programmable mode (and can of course also be set up in programmable mode)

For example say "Start 1" is the shift button and "Player 1 Button 1" is "Coin 1" in the shifted codes. Now if you set this as a key multiple in an emulator, you could generate a coin insert by pressing these two buttons together. BUT you would also send the code for the first button you pressed. Imagine you are starting a game and have one coin insert already done and you want to play a 2-player game which needs two coin inserts. You press the key combination again to send another coin. Unfortunately what may happen is that a one-player game will start as you have pressed "start1" as one half of the coin key combination!

How does the I-PAC get around this? When you press the "Start 1" (shift) button nothing happens immediately. The I-PAC waits to see if you are going to press another key at the same time. If you do press the "Player 1 Button 1" the shifted "Coin 1" code is sent. If you don’t press any other button the "Start 1" code is sent when you RELEASE the "Start 1" button. So you don’t get any unwanted key codes.

WinIPAC V2 Configuration Utility for I-PAC



  • Configures each pin of the board as the correct device type, ie keyboard, gamepad, analog, mouse, volume/power.
  • Displays a pictorial representation of the board
  • Fully real-time interactive. Reads and write board configuration "on the fly"
  • Can be run in command-line mode or GUI
  • Read/Save configuration to a file

Running from command line

This program can be run "invisibly" from a command line by simply appending the name of an already-saved IPC (config) file:
Winipac.exe <name of IPC file>

This will load the configuration specified. This will also cause a mode change if needed, if using multi-mode firmware. There is more on the "Multi Mode" product tab. Note the IPC file must be accessible by using its full path or saving it in the WinIPAC install folder.


PIN drop down

This displays the selected pin you are configuring. You can select pins from here or from the main graphic.


You can type text in here which will remind you of which device this pin is connected to. The test is saved with the configuration (on the PC only) and is not sent to the board.


Here you configure the selected pin as the required device type and assign values to it.
You can select one of the radio buttons to define the pin as the following:

  • Switch (which includes keyboard key, gamepad button and mouse buttons)
  • Trackball/Spinner (includes optical steering wheels etc). This is only relevant to certain pins on the Ultimate I/O board.

    NOTE: Trackball/Spinner uses 2 pins per axis. The partner pin will also automatically be assigned. You can select X, Y or Z (wheel) axis.Trackballs use two axes (4 pins).
    Only the appropriate pins on the top two smaller connectors on the I-PAC Ultimate I/O can be assigned as trackball and spinner. It is recommended that you assign trackball on the left connector and spinner on the right otherwise you cannot use the special connectors for the U-Trak or Spintrak devices. The connectors for these devices are not unique. They use two or 4 of the total 48 input pins available.
    The I-PAC 2 and Mini-PAC also support trackball and spinner but these use dedicated pins.

Detail Configuration Example (Switch)

The switch is connected with one terminal to the required pin and other terminal to GND.

Select the pin by clicking on require pin in the graphic area.

Select "switch" radio button in the function area.

You now can select the control type eg whether keyboard key,

mouse button or gamepad button.

In the primary drop-down all possible keys are available plus macros defined separately (see later). Note that the I-PAC sends key scan codes just like a keyboard. It does not send characters so has no concept of upper/lower case. An upper-case key is a macro consisting of the Shift key plus the required character.

If required, you can select a secondary keycode. This is sent instead of the standard code when the I-PAC shift button is held. (This is by default the Start1 button but can be changed).

There is no need a secondary code unless you wish to use shift feature.


To assign a macro proceed as follows:

  • Click on the MACRO tab
  • Click NEW In the drop-down box, select the first character of the macro
  • Click "Add Entry"
  • In the drop-down box, select the second character of the macro
  • Click "Add Entry"
  • Repeat above 2 steps to add further characters
  • Click "Add Macro".
  • Return to the main tab. Select the macro in the drop-down when configuring the required pin.

Variable De-Bounce Delay

In the "Config" tab, the setting can be changed to 4 values as required. The default is the "standard" setting.

This value affects the rate at which the SAME input can be re-activated. Setting a low value will allow faster repeat of presses of the same button, but may also cause unwanted key repeat caused by switch bounce.

This is a specialized setting and should only be changed following testing with the specific switches being used. It does not affect overall performance because it only affects repeated action of the same input.

Dual Board Usage

This applies to the Ultimate I/O when one board has the standard firmware and a second board is connected with the "ID#2" firmware.

There is a command-line switch /2 which when used causes the board to skip the first board when detecting boards on startup.

This can be used in various ways. One method would be to copy the entire application to a different folder so you have two versions. Then edit the shortcut to the program to add the /2 switch.
Another way would be to use only one version and either apply the switch or not. Care would be needed when saving and loading IPC files.

If both boards are required to be reconfigured on the fly, a batch file would have two lines, each specifying a different IPC file and one with the /2 switch.

Upgrading Firmware

The firmware upgrade is a two-stage process.

First, the board is placed in firmware upgrade mode. Also a driver is installed on-the-fly if this is the first time an upgrade has been done on the PC.

Then, a program called UUPLOAD performs the upload of the firmware to the board. This program will not detect the board unless it has been placed into upgrade mode from within WinIPAC.

The following steps need to be followed:

  • Run WinIPAC as administrator (right click and select "run as administrator")
  • Ensure the board is detected and click "File, Firmware Upgrade".
  • OK the prompts. The board should reset and change to "Firmware Upgrade Device" (If you have Device Manager open you will see the new device appear under the USB Controllers entry.
  • A program called UUPLOAD.EXE should automatically start. If the process fails you can manually run this program if you have a "Firmware Upgrade Device showing in Device Manager
  • Select the firmware file
  • Uploading to the board should take approx 2-3 minutes. After that, the board should reset again and re-appear as a keyboard, mouse and game controller and be ready for use.

    Note: If the process will not work, you can try manually pre-installing the firmware upgrade driver by downloading the installer from this page which also contains additional information on the process and how to recover from failures.

USB keyboard encoder

I-PAC keyboard encoder
What software can I use?

The units were designed around MAME and normally you would use a front-end menu for selecting games. But of course, as the I-PAC emulates a real keyboard (without all the drawbacks) you can use any PC application which uses keyboard input.

Can I use other emulators?

Yes. You can use the fully programmable code sets of I-PAC to customise for any emulator or other application. Several popular front-end menus even have integrated support for downloading I-PAC codesets on-the-fly.

Do I have a lot of setting up to do before playing?

NO. Using the key-code programming is entirely optional. When the board is shipped, all codes are automatically assigned to MAME standard keys. As many people have found, this makes installation very quick and easy.

What are the other alternatives?

One method is to hack a keyboard, i.e. connect all the controls to the keyswitches so each button appears as a key. This is pretty unsatisfactory for several reasons: It takes ages to wire up as 2 wires need to be run to each switch.

Most arcade cabs have one side of all switches commoned so you have to re-wire everything.

Key Ghosting: This happens because of the matrix nature of keyboard encoders.

Extra buttons: With this solution, with some emulators you have to have extra buttons on the cabinet for functions such as "escape", "insert coin" etc. Nobody likes drilling extra holes in their nice original arcade cab!

Speed: Keyboard encoders use a scanning method. So each key is checked in sequence for a press or release. I-PAC does not use a matrix or scanning.

What is the "shift button"?

Shifted function keys will do various functions ie press "1 player start" and "fire" and you will insert a coin. Press "1 player start" and "2 player start" and you will jump back to the menu. You can also use the MAME game config menus with shift buttons, ie tab and enter are shift joystick right and left. The 1 player start button is always the shift button if you are using the standard MAME codes. In programmable mode you can assign any input to be the shift button and you can program all of the buttons to have shifted codes. The unique feature of the shift function is that it requires no dedicated extra button.

How do programmable keycodes work?

When the board is shipped it contains all standard MAME codes including the shift codes mentioned above. If you only ever use MAME and want a quick and easy install this will probably do for you. But if you need to, you can re-program as required, including "on the fly", and the board will remember your new settings.

Why would I need to program the board?

You may find you need to change the assignment of keys for other emulators or maybe you don't want to have the shift functions of the MAME code set. The code set can be changed using the WinIPAC utility.

Normally you would install and test the board before getting into programming.

Do I need to use a normal keyboard as well? You can use a normal keyboard connected to the pass-thru connector or direct to the PC as usual. But if everything is set up properly with the PC booting into an emulation front-end menu, and each game is configured correctly, you can do everything with the standard controls on the cabinet.
What about key-repeat (Typematic)? In USB mode key repeat is supported as on a normal keyboard and is handled by the PC.

Are 32 Inputs enough or do I need the I-PAC4 56-input board?
The answer is almost certainly yes for a 2-player cabinet. Remember that an 8-way joystick uses only 4 inputs (the diagonals hit 2 switches at once). So with two sticks you can also have 20 buttons. A normal sized 2-player control panel would get very cluttered with this number. Most people go for 6 per player which gives plenty of spare inputs for 1 player start, 2 player start and coin. A 4-player cabinet would need the I-PAC4 board (and a large panel!).

Will it work on a MAC?

Yes the I-PAC will work on a MAC with USB. There is even a Mac version of the programming utility.

Will it work on a Linux host including Raspberry Pi?

Yes the I-PAC will work on a Linux host. There is third-party Linux programming utility support (see Downloads page).

What is the size of the board?

Dimensions shown below. Height is approx 17mm.

I-PAC 2 dimensionsI-PAC 4 dimensions

Click Here for older software versions for pre-2015 boards

WinIPAC Version 2

Compatible with I-PAC Ultimate I/O, I-PAC 2, I-PAC 4, Mini-PAC, J-PAC. (2015-onwards boards only).

Winipac V2

Click Here to Download Program

Firmware (MultiMode)

New boards are shipped with this version.

Latest firmware files (ver 1.55) for all 2015-onwards I-PAC, Mini-PAC and J-PAC boards plus all Ultimate I/O boards regardless of date.

I-PAC 4 has a later version 1.56 which enabled quad game controller support.

I-PAC Ultimate I/O new version 1.56 corrects an issue with mode changes not happening when trackball/spinner are connected.

NOTE: Attempting to upgrade a pre-2015 board which this firmware will render it inoperable.

All firmware now supports the Multi-Mode operation which enables switching to dual game controller mode or dual X-Input mode. Check the Multi-Mode tab on the product pages for more info.
Before upgrading ensure you have the I-PAC shift functionality enabled otherwise mode switching will not work. The default is Start1 being the shift control.
Also before upgrading to multi-mode firmware ensure the latest WinIPAC version is installed from the download page.
If the board comes up in Xinput mode after upgrading, this can be reset to standard keyboard by holding P1SW1 while connecting USB cable. See the Multi-Mode product tab on the I-PAC pages for full details.

Click here to download all Multi-Mode firmware versions, including ID#2 for the second board in dual-board UIO setups.

I-PAC 4 Quad Game Controller Support

Version 1.56 firmware supports 4 game controllers on I-PAC 4. There is an important issue to be aware of with regards to WinIPAC support in Xinput mode, which is covered on the Multi-Mode tab page.

Alternative Firmware (Mixed Mode)

This is an alternative firmware version which enables the board to appear as a keyboard and dual standard game controller AT THE SAME TIME (both also with mouse). Note Retropie does not work with this configuration. The standard multiMode version (above) enables one device type at a time on the host (plus mouse) and this is required for Retropie. IMPORTANT: This version also requires a different version of WinIPAC for configuration.
This version does not support Xinput.
Unlike the Multi-Mode, this version automatically allocates each of the 2 game controllers on the respective side of the board so WinIPAC does not refer to player numbers, these are defined by the board markings. I-PAC 4 only supports 2 game controllers.

Click here to download all mixed-mode firmware versions.
Click here to download the special WinIPAC version for configuring mixed-mode boards.

Programming Utility for Mac


Thanks to John K. Morris of Evolution Interactive for this software

Click here to download the new version for Intel Macs

Click here to download the older PowerPC version.

Linux Utilities

Linux software utilities are available. These cover several of our products and are being added-to. Please note we are not able to provide direct support for these utilities:

Linux Library and command line utilities developed by Katie Snow

I-PAC Firmware version 50 Enhanced Modes

  • Traditional I-PAC keyboard mode unaffected. This is still the default.
  • Device mode can also be switched to Dual Directinput Game Controller or Dual Xinput Game Controller. I-PAC 4 now supports 4 game controllers.
  • These modes appear as entirely different USB devices so there is no mixed-device confusion which causes issues in Retropie.
  • Selected mode is maintained after power off/on.
  • Standard Dinput and Xinput Game Controller modes are preset for ease of use without any configuration.
  • For advanced users who wish to create custom Game Controller configurations there are customisable game controller modes.
  • Modes can be switched by pressing Start1 (or user-set alternate I-PAC shift) and holding this, and Player 1 button 1 through 5, for 10 seconds.
  • Modes can also be switched by loading an appropriate config file using WinIPAC including “invisibly” via a command line.

These modes apply to Player 1 and 2 controls.

I-PAC Connection

Mode 2

Mode 3

Mode Switching
Hold Start1 and this
Button for 10 seconds with no other key activity:
Start1+P1SW1 > Mode 1
Start1+P1SW2 > Mode 2
Start1+P1SW3 > Mode 3
Start1+P1SW4 > Mode 4

Start1+P1SW5 > Mode 5


Dpad Left

Dpad Left


Dpad Right

Dpad Right


Dpad Up

Dpad Up


Dpad Down

Dpad Down

SW 1

Button 1


Mode 1 (Keyboard User Set)

SW 2

Button 2


Mode 2 (Dinput Preset)

SW 3

Button 3


Mode 3 (Xinput Preset)

SW 4

Button 4


Mode 4 (Dinput User Set)

SW 5

Button 5

Left Rear

Mode 5 (Xinput User Set)

SW 6

Button 6

Right Rear

SW 7

Z Left

Left Trig

SW 8

Z Right

Right Trig


Button 7



Button 8





Button 7






Customising the board

Using WinIPAC, any input can be configured to any control including keys, power/volume, gamepad (Xinput or Dinput) across both players.
When this is done, keys configured as keyboard keys will respond in Mode 1, Keys configured as gamepad keys respond in modes 4 and 5.
Note this feature allows the entire 2-player panel to be configured as a one-player game controller if required, implementing every possible control.

Using WinIPAC, any key can be configured as mouse left or right button, Sleep, Wake, Vol Up, Vol Down. These will function in modes 1 and 4. (not Xinput).

On Board LED

When powered on, the LED will stay lit once the board has passed self-test and detected by the host system.

When switching modes, the LED will flash off, the number of times according to the mode number selected, after the 10 second period.

Automatic Mode Switching

This is intended for use when WinIPAC is used for downloading configurations on the fly. This is the recommended method of mode switching if it is required to regularly switch modes.

Mode will switch automatically under the following conditions:

  • If a keyboard-only configuration is downloaded and the board is currently in gamepad custom mode 4 it will switch to keyboard mode 1.
  • If a gamepad-only configuration is downloaded and the board is currently in keyboard mode 1, it will switch to gamepad custom mode 4.
  • If a gamepad-only configuration which includes an Xbox Home key is downloaded and the board is currently in keyboard mode 1, it will switch to gamepad custom mode 5.
Xinput Mode Notes

Owing to the limitations imposed by the Xinput protocol, the following are NOT supported in Xinput modes but are supported in keyboard and Directinput modes:

Mouse buttons

Volume up and down buttons

Power, sleep, wake buttons

LED control (I-PAC Ultimate I/O only)

No trackball/spinner support

WinIPAC configuration changes take slightly longer in Xinput mode.

I-PAC 4 Quad Game Controller Support

I-PAC 4 now supports quad Dinput and Xinput game controllers using firmware version 1.56. This is available in the firmware ZIP on our download page. 

When using WinIPAC, all custom settings for player 1 are automatically mirrored to the player 3 controller and all settings for player 2 are mirrored to player 4.

Please note an important limitation which applies only to the I-PAC 4 when in Xinput mode:

WinIPAC cannot be used for reconfiguring controls or switching modes on the fly when in Xinput mode. 

To create a custom Xinput configuration proceed as follows:
If the board is in Xinput mode, reset it to Dinput mode by using the hotkey Start1+P1SW4 for 10 seconds. If this does not work use the "backdoor" by holding in P1SW1 while plugging in USB.
If necessary, load in the default Dinput IPC file which can be found in the defaults sub-folder of the WinIPAC install.
Change settings as required. For Xinput, one of the controls must be set to HOME.
Save the file as an Xinput configuration.
Click "File, Force Board Reconfiguration". The board should switch to Xinput mode using the custom configuration.

Additional Info

Note that a mode switch is essentially the same as unplugging a USB device and plugging in a different one, into the same port. It will take the host PC up to 30 seconds to notice this and initialize the new device.

The mode switching can be confirmed by observing the on-board LED or “Devices and Printers” , the USB connect sound or other indication on the host.

If hotkey mode switching fails to work, check that Start1 (or another connection) is configured as an I-PAC shift control. If this feature has been removed in WinIPAC, mode switching will not work. Any stuck/shorted controls will also inhibit mode switching.

“Backdoor” Reset

The board can be rest back into keyboard Mode 0 by pressing and holding the P1SW1 button on power up. This will work irrespective of the current board mode or input configuration. Note it must be a hard power-up or plug-in of the USB cable.

Related Products Related Products