Interface for JRs Bingo programs and a real Cabinet

This manual describes the interface needed for communication between a real Bingo Cabinet and a computer running JRs Bingo simulation programs, available on

We suggest to use a microcontroller, like for example Raspberry PI or Arduino. Communication is conducted through a SerialUSB connection:


To cover all the Bingo model simulations created so far, the following buttons on your Cabinet are required:

On front of Cabinet:

• Ball lift button (all games)

• Red button, for playing credits (all games)

• Yellow button, for Extra Balls (all games)

• Green button, for playing Features (OK games like Silver Sails, Bounty, Lido)

• Blue button, for playing Scores (OK games)

• White button, for advancing Skill Shot Score or Yellow/Red Supersections (Bounty, Lido)

• Turning knob, to select Spotting Number (Miami Beach, Double Header)

On Button rail:

• 6 Feature buttons, labeled A, B, C, D, E and F

• R-button, to detect wins and start payouts (OK games and others)

• Golden button, for selecting Skill Shot number (Bounty) or Double Game (Magic Ring)

• A switch or button for inserting one coin (all games)

• A switch or button for 10 credits (all games)

With some creativity these buttons will cover a lot of other, future, models.

Other requirements:

• Ball Lift

• Ball Board (shutter board)

• Ballswitch (right above plunger, ball ready to launch)

• Through-gate switch (ball leaves shooting lane and enters playfield)

• Tilt-sensor

Ball lift

An errorfree operation of the ball lift is important. The interface is kept as simple as possible; all error checking has to be done by the controller. The Bingo program keeps track of balls in play and will send a single ‘l’ (lowercase L) to the controller if the next ball can be lifted. No further handshake or confirmation is required. So if a ball gets stucked in the ball lift, your controller should fix it. In other words: if your controller receives an ‘l’ the result has to be that the next ball becomes ready for launch.

Ball board

Not much to say about this. Your controller receives an ‘h’ when the board should open, an ‘i’ when it has to close.

Ball switch

Only your controller handles the ball switch, no further communication is required. Its main job is to prevent a new ball from lifting if a ball already rests on the switch.

• If a ‘lift next ball’ command (‘l’) is received and a ball is already on the ballswitch, your controller logic should ignore this command.

• If the ball lift button is pressed, your controller should send a ‘.’ (dot) to the Bingo program as a request for a new ball. It will answer with an ‘l’ in case it’s ok to lift a ball. One exeption: because the Bingo program is not aware of a ball on the ball switch, your controller should not send this ‘.’ if there is a ball already on the switch.

Through-gate sensor

It seems like a simple switch. But be careful: it is absolutely necessary that a ball really leaves the shooting lane and enters the playfield, and not for example fires the Through-gate notification ‘z’ (lowercase Z) and then accidentally rolls back into the shooting lane. Probably it‘s better to make this a double sensor. For example a normal switch at the Gate and an electronic eye, or a magnetic reed switch underneath the playfield, on a ball distance, just to be absolutely sure that the ball has left the shooting lane and is definitely moving in the playfield. Some controller logic needed here!

Tilt sensor

If Cabinet is nudged too much your controller should fire a Tilt notification ‘t’, which will put the Backglass into Tilt mode.

Examining and testing

Before all this works, some testing will have to be done. For this purpose there is this Cabinet Simulation program available. With this program it is possible to simulate all necessary Events and watch how the Bingo program and your Cabinet should communicate.

It is designed to operate in three Configuration setups:


Configuration 1: Bingo program and Simulator running together on Windows PC or Mac. No further hardware or SerialUSB connection required.


Configuration 2: Bingo program running on Computer 1. Cabinet Simulator running on Computer 2.

Both communicating through SerialUSB.


Configuration 3: Cabinet Simulator running together with Bingo program on same Computer.

Controller on Cabinet, controlling the Bingo program; can receive Backglass-related commands directly from Cabinet Simulator.

Configuration 1 – Start testing

For a start it is best to begin with Configuration 1: Bally-ShowTime and BingoCabinetSimulator both running on the same computer.

First launch Bally-ShowTime. To have a Bingo program controlled by a remote controller, goto preferences and check ‘Use remote Playfield Interface at startup’.


Essential for all Bingo programs: to connect with a remote control the red marked option must be checked.

Then start BingoCabinetSimulator. The two programs will connect automatically.

All communication is lead through a special eTCP socket. No USB connection needed in this setup.

When connection is interrupted between a Bingo game and BingoCabinetSimulator, it’s possible to re-establish it by menu >File >Connect local.

The Bally-ShowTime backglass window will be the only one visible after connecting BingoCabinetSimulator. Exactly how it should be: the Cabinet is there somewhere, but not visible and makes no sound; sound should come from your Cabinet! After startup the Backglass brings itself in a known state, namely ‘Tilted’.

Note: normally the Bingo program resumes in the state where it was when it was quitted the last time. When a real Cabinet exists it can’t resume the same way, because the previous game could have been a completely different Bingo model.

Check if the two programs are succesfully connected: the Backglass window should be the only one visible (no Cabinet) and in Tilt mode, and the Simulator window should show something like ‘Connected to {Bally-modelname} by eTCP’. From this point on the Bingo program can be controlled by the Cabinet Simulator program.


Messaging between Cabinet and Backglass is conducted by single-byte ASCII codes. There is no handshake or confirmation needed.

From the Backglass the following commands (in red) can be expected. With the Cabinet Simulator most of them can also be simulated by pressing the corresponding button:


q - Reset, which should bring the Cabinet into Tilt-mode.

l - (lowercase L) Command to lift the next ball (inore this command if there is already a ball on the ballswitch).

h - Open Ballboard. Occurs right after starting a new game.

i - Close Ballboard. Occurs when the first ball passes the Gate. Or right after a Tilt message.

7 - Yellow Rollover light on

6 - Yellow Rollover light off

5 - Red Rollover light on

4 - Red Rollover light off

\ - Disconnect. Occurs when the Bingo program quits.

? - Request to the remote connection to identify itself. The CabinetSimulator will answer with the message ‘{BingoPFsimulator}’. Your Cabinet should answer with ‘{BingoPlayfield}’.

Note: this is the only multi-byte message of the interface.

In addition the Backglass will send the Current Ball Number after each ‘Ball through Gate’ message. It consists of a single-byte code where Ball number 0 (means no balls in Play) is represented by Hex x80 until Ball number 8 which will be x88.

Play a game with the Simulator as Controller


Note: Codesheet can be made visible under menu >Help >Show codesheet

When the Red Button is pressed and the counter shows some credits a new game is started. Pressing the Red Button repeatedly will advance Scores and Features, just as the same buttons on a normal Cabinet window would do.

‘Current ball’ represents the number of balls that passed the Gate. At startup, with only one ball resting on the ballswitch, it shows zero.

If you want to simulate balls dropping in holes, first press ‘Ball through Gate’ (which increases ‘Current ball’) followed by a numbered button 1-25. If ‘Ball Return’ is pressed, ‘Current ball’ will decrease.

The Cabinet simulator program does not check the validity of button presses; you can press any Cabinet button at any time. The Backglass tries its best to keep track of things and only responds if a Buttonpress is valid. But it’s surely possible to mess things up by pressing buttons in wrong order, which will result in unpredictable Bingo behavior. So, try not to press buttons in an order that will never happen in a real Bingo game.

All traffic between Backglass and Playfield is displayed:


Also in Hex notation if you want:


The example above shows the communication that takes place to start a first game:

q - Backglass request to reset the Playfield to Tilt mode.

n - Red button pressed on Simulator; start a new game.

^ - All Buttons are depressed

h - Backglass request to open the ballboard (shutterboard).

6 - Backglass request to switch off Yellow Rollover light

4 - Backglass request to switch off Red Rollover light

l - Backglass request to lift a ball

Try to play a complete game. Be careful to use the right button sequence for dropping a ball: first hit ‘Ball through Gate’ then a numbered button. Try the Magic Feature Buttons, before ‘Press buttons now’ flashes. After the 5th ball, press the Yellow button for Extra Balls. Notice that Buttons do not respond if they’re not supposed to, because the Backglass keeps track of these things.

You’ve probably noticed that most buttons – after sending their ‘button pressed’ code – also send a ‘All buttons depressed’ code (‘^’). This code is identical for all buttons and is required to make a few things possible: you can keep the Red or Yellow button pressed during numerous spincycles; you can keep Magic Features buttons A till F pressed until it reaches the desired rotation; it is needed for the R-button to start an awarded OK-game (which requires the R-button pressed until balls drop).

After you become familiar with the behavior of Simulation and Bingo Program it is about time to make the next step: controlling the Bingo Program from a remote computer through SerialUSB.

Configuration 2 – Controlling the Bingo program from a remote computer through SerialUSB.

A step further in testing is to have two computers; one for running the Bingo game and the second one running the Cabinet Simulator program, connected by SerialUSB.

SerialUSB adapters are for sale all over the internet and cost only a few dollars, i.e. this one on

Above mentioned is a proper model to use. If delivers to your country order two of these. Else look at the specifications and obtain two similar ones.

Let’s assume you have the right adapters. Make a connection cable by tying both GND wires together, leave VCC’s open and cross the TxD and RxD lines, like this:


Put the cable-plugs in a free USB slot on both PC’s. As soon as you plug in the SerialUSB adapter for the very first time, appropriate drivers will be installed. Note: on a Mac you’ll have to do it manually.

Start the Cabinet Simulator program. In the Cabinet Simulator window the SerialUSB settings are always visible:


The USB port popup-menu will be blank at first start and the Playfield panel will be dimmed. Select the proper USB port, the one where your SerialUSB adapter is plugged-in. If the port is free and connects, the windowtitle will show ‘Connected to SerialUSB’, the Playfield panel will be enabled and the popupmenu will show the name of the port.

Now start the Bingo program. Under Preferences you will find a (tab)panel ‘Serial USB Settings’. Make sure Baudrate, Parity and Stopbits match exactly with Cabinet Simulator.


Select the right USB port. If the port is free and connects, the message after the ‘Test connection’ button will show ‘Connected to SerialUSB’. If this message doesn’t show, it means the port is not free or you selected the wrong port.

If the connection is OK you can hit ‘Test connection’ to check if you’re connected to the Playfield Simulator on the remote computer; the message ‘Connected to {BingoPFsimulator}‘ should show:


Note: USB portnames on Windows PC differ from Mac OSX.

Check ‘Use remote Playfield interface at startup’ to automatically connect to Cabinet Simulator or your Cabinet.

After making a succesful SerialUSB connection between the two programs, the rest is completely the same as described before.

Programming the Controller

Writing the Controller program will be a step-by-step process. To make testing a bit more easy take a closer look at the picture Configuration 3. With this configuration it’s possible to test the functions already available in your Controller, fill in the missing pieces with the Cabinet Simulator and fire commands directly from the Cabinet Simulator to your Controller, bypassing the Bingo Backglass.

Let’s assume you want to test your ball lift. It would be easy if you could fire ball lift commands repeatedly, without having to wait for this event to happen in a game. Using the configuration pictured in Configuration 3 you could hit the ‘Ball lift’ button which sends the ‘l’ (ball lift) command directly over SerialUSB to your Controller. The same counts for all 8 buttons in the Backglass section:


And if your Ballgate is already functioning you could launch a ball and simulate balls dropping in holes with the Cabinet Simulator.

To use a configuration like this, first start the Bingo program and your remote Controller, finally the Cabinet Simulator (on the same computer as the Bingo program).

Note about the Ball Lift

Playing on a real Bingo machine, when a game is tilted and there’s still a ball on the launchswitch, this ball will not close the Ballboard when a new game is started and the ball passes the Ballgate. The Ball Lift will wait until all 8 balls are present before lifting the first ball.

This behavior is something your controller logic should provide for. This is in fact what would happen otherwise:

Game is tilted. After hitting the red button you controller will immediately receive an ‘h’ (Open Ballboard) followed by an ‘l’ (Lift next ball). If you follow that command and lift and launch this ball, it will send a ‘z’ (Ballgate notification) to the Backglass as soon as it passes the Ballgate. The Backglass will respond with an ‘i’ (close Ballboard) and another ‘l’ (Lift next ball). Nothing will go wrong though, if your controller just follows these commands, but it’s not ‘real life behavior’.

Instead of just blindly following the commands, there has to be a switch in the Ball Lift Lane that closes when 8 balls are in queue, and your Controller should act as follows:

After hitting the red button for a new game it will receive an ‘h’, meaning the Ballboard can open. Immediately following it will receive a Lift-Next-Ball command. Here your controller should wait for the switch that closes with the arriving of the 8th ball. If there’s a ball moving somewhere in the playfield or still on the launchswitch, the 8th-ball-switch obviously can’t close. If a ball is launched your controller has to prevent sending a ‘ball-through-gate’ notification (‘z’) to the Backglass, and wait until the ball arrives in the Ball Lift Lane thus making the initial 8 balls complete. Only then it can lift the first real ball to the game.


The rest is something you have to do all by yourself. If you have questions, requests or suggestions just mail us:

Lots of success and keep us informed!