Controller FAQs Uncategorized

How do I determine if I have a BAC or BAC V controller?

While our latest software is compatible with all revisions of the Bad Ass Controller product line, there are some new features that are only available on the BAC V that affect wiring and accessory compatibility:

  • New output driver chip with expanded protections and high-side drive support
  • Opto-isolator for inputs 0-3
  • Expanded storage capacity
  • Expansion port for FX45 breakout board

There are several ways you can tell which revision of the controller you have:


The label on the top of your case will help you distinguish your revision easily. (There may be small differences from these pictures, but you are looking for the controller name in the center and whether a V is present.)

BAC V – Rev 6 (Serial Number 4000 or later)
BAC V – Rev 5 or Rev 6 (Serial Number 3999 or earlier; note V numeral in background)
Original Bad Ass Controller (Rev 1 through Rev 4)

Part Number on Main Circuit Board

You can determine your revision by the part number on the main circuit board. If you have an FX451 circuit board, you have a BAC V. If you have an FX450 circuit board, it is the original Bad Ass Controller.

You can tell the exact revision of your controller from this board as well – it will be molded into the circuit board in faint green text, typically in the upper right side.

Expansion Port

If you have a 26-socket expansion port on the right side of your controller, you have a BAC V. The original BAC did not contain this port.

Controller FAQs Uncategorized

How do I change my BAC V’s outputs between High Side or Low Side?

The BAC supports two different modes for its outputs.

In Low Side switching, the BAC will connect the output to GND (0V) when the output is on, and will disconnect the output entirely to interrupt the circuit when te output is off. This is similar to how many PLCs and industrial controllers work, and can sometimes have benefits for reducing interference when a device switches on or off or for some special scenarios. You connect your device’s positive wire to the BAC’s +12V pin, and you connect its negative wire to the output.

In High Side switching, the BAC will connect the output to +12V when the output is on and Ground (0V) when the output is off. This is how most intuitively expect the outputs to work and matches the behavior of other microcontrollers, like an Arduino output pin. You connect the output to the positive wire of your device, and connect its negative wire to the BAC’s GND.

Does my BAC support this feature? If so, what is selected by default?

Versions of the BAC prior to the BAC V shipped with Low Side switching as the only option. The newer BAC V allows you to switch between both modes.

By default, for BAC V controllers with serial number 4000 or higher, High Side switching will be enabled at the factory; earlier serial numbers may be set to either high or low side switching. Performing a full factory reset may switch your controller back to Low Side switching.

If you’re not sure which version you have, please refer to this article that doucments the differences between the two controllers.

How do I switch modes?

You can easily check how each input is configured and switch the mode using BAM. Each output can be configured independently, so you can even mix and match if necessary.

  1. Download and install Escape Room Techs BAM
  2. Locate your controller in the list and press the Configure button.

3. Select the Hardware tab.

4. Scroll to the bottom of the page and locate the Inputs/Outputs panel. Find and click the “Configure IO” button.

5. In the new page that opens, scroll down to the Outputs in the list. For each output, there is a drop-down selection on the right; use this box to select the desired mode.

The configuration shown above is the factory default. You can also select Low Side, along with two Half Bridge options that are specialized and only used for certain motor control scenarios:

6. When you’ve finished making changes, scroll to the bottom of the page and click Save.

7. Power your BAC off and back on for the new settings to take effect.

Controller FAQs

How do I connect a MedeaWiz Sprite to my BAC V controller?

The Sprite is a versatile audio and video player that makes a great companion for your BAC! There are two ways you can connect the Sprite:

Recommended Solution: Serial Control

With the help of an FX45 Expander and one of our I2C cables, slightly modified, you can gain full control over your Sprite through the BAC’s event system (and even via the network from a server package like M3)

Disconnect power to your BAC. Then, connect your FX45 expander to your BAC V. The FX45 plugs into the port on the right side of the BAC.

Make sure to install the expander with the connectors facing up, and pay careful attention to make sure all of the pins are aligned correctly in both rows of the connector as you plug it into the BAC. Some revisions of the BAC have a connector that is smaller than the one on the FX45, and you may need to double-check your alignment when installing it to ensure every pin is connected correctly.

Locate the special adapter cable we enclosed in your MedeaWiz Sprite box. If you did not receive a cable or purchased your Sprite separately, see below for instructions on creating your own cable – or contact us for information about obtaining a premade one. The technical name for this cable is “JST-PH to TRRS Minijack”, and it can be fashioned out of the adapter that comes with your Sprite and one of our I2C cables if needed.

Plug the completed adapter into the Sprite’s I/O port. (You may need to rotate the plug 90 degrees to avoid conflicting with the HDMI cable.)

Load your audio or video files on an SD card, then insert it into the Sprite. Name your files with a three digit number; 000 is the file that will always loop in the background when no other file is being played (and can be a black screen or silent sound file), while 001 and above are files to be triggered via the BAC. Keep the original file extension intact.

Power on your BAC and the Sprite.

Configuring the Sprite

Connect your Sprite to a monitor temporarily for this step if you are planning on using it for audio only.

Press the Setup button on the remote to enter the setup menu.

Change the settings as shown below:

Play Mode: Video Control Mode or Audio Control Mode (choose based on whether you are trying to control video or audio; this selection needs to correctly reflect the types of files you wish to play back.)

Control Mode: Serial Control

Baud Rate: 9600 bps

Address Mode: Do Not Use Addressing

Configuring your BAC

Ensure your BAC is running at least software version 1.10 before continuing. (Version 1.10 includes an important fix to looping file control for the Sprite.)

Click Configure in BAM to open the settings window.

Click the Hardware tab. Scroll down to the Sprite Player section. Check the enabled box, then click Save. Then return to the Sprite Player section, and ensure Hardware Serial is selected.

Now, you can control your Sprite from the BAC! Click the Events tab to add a new Sprite control command. Locate an event you would like to use to trigger a video. Select “Play Sprite Video” or “Set Sprite Loop”, depending on whether you want to play your file once or repeatedly. For settings, type the number of the file you’d like to play. Click Save, then click Trigger to test your newly modified event.

You can also perform these functions over the network by sending a message with the number of the file you’d like to play to BACNAME/set/playSprite or BACNAME/set/loopSprite .


Verify the FX45 is installed and aligned correctly with the BAC connector.

Make sure the Sprite is receiving power correctly.

Try playing your files using the provided remote and ensure they play correctly. If the Sprite can’t play the files via the remote, the BAC won’t be able to either.

Ensure your cable’s pin connections matches the section below.

Addendum: Creating a Sprite Cable

Obtain a JST-PH 2.0″ pitch, 4 conductor cable from our store or another vendor.

I2C Jumper Cable (JST Connector)

Plug one end of the connector into the Serial connector of the BAC. Then, cut the other end off of the cable and strip about 1/4″ of insulation from each of the four wires.

Find and identify the screw terminal connector that comes with your Sprite. (If you have misplaced it, you can purchase a replacement from Amazon.)

It contains four screw terminals- L, R, a third labeled blank or V, and Ground; these correspond to the tip (1), ring (2), ring (3), and base (4) pins of the connector.

Identify the wires coming out of the FX45 by the silkscreened indicator on the board. On newer revisions of the FX45, each pin is labeled. On older revisions, look for the numeral 1, identifying the side that is Pin 1, and then count the other pins in sequence going from left to right.

Make the connections as shown below:

BAC Serial Pin 1 (RX) <> Sprite IO Ring (“V”/blank, 3)
BAC Serial Pin 2 (TX) <> Sprite IO Ring (“R”, 2)
BAC Serial Pin 3 (V+) <> Do not connect
BAC Serial Pin 4 (GND) <> Sprite IO Base (Ground)

You will not connect any wires to the L (1) port of the Sprite connector.

Plug the completed adapter into the Sprite’s I/O port. (You may need to rotate the plug 90 degrees to avoid conflicting with the HDMI cable.)

Additional Resources

Sprite DV-S1 Manual 4.0

BAM FAQs Frequently Asked Questions

I tried to launch BAM, but I received a “listen EACCES: permission denied” error. What’s going on?

BAM is implemented as a local web server; the UI is then accessible over the local network through a web browser so people can interact with their devices while in their escape rooms from a tablet or other portable device.  This requires BAM to listen on a “port” for incoming connections, and the default is port 8080.

Occasionally, you may be running another application on your computer that uses the same port number. If you have another web server or engineering tool that runs on port 8080, please consider closing or reconfiguring it to a different port number before launching BAM.

Controller FAQs Frequently Asked Questions Uncategorized

What is a relay? How is it different from a digital output?

One of the most common goals of an event on the BAC is to cause an action to occur elsewhere. This typically is accomplished by completing a circuit to supply power to some other electrical component, like a magnetic lock or a light.

The BAC offers two ways to control external devices – a relay and a digital output. Since both can be used in similar scenarios, the differences can be pretty confusing at first glance!

Digital Outputs

Think of digital outputs as a computer-controlled power supply.

The digital outputs (on the top row of the BAC, numbered 0 through 5) directly supply power to external devices using the same source power supply as the controller itself.

Depending on the revision of the BAC you have and the configuration in BAM, these may be “high side” (each output replaces the + terminal, and the other wire connects to GND) or “low side” drivers (each output replaces the – terminal, and the other wire connects to +12V). Refer to the BAC manual for details on how to wire them up… but in both cases, the key takeaway is that they share the power supply with the BAC itself.

Unlike Arduino devices, where digital outputs can only safely supply a tiny amount of power at a low voltage, the BAC’s outputs are higher power. They operate at the supply voltage (typically 12V) and can be directly connected to many external devices! Just make sure your current draw needs to stay below the limit indicated in the BAC documentation (typically 500mA at 12V per channel), and your total current consumption has to stay within the maximum capacity of your power supply.

The advantage of these digital outputs is that they are easy to understand and use – just wire a device directly to the output and it gets power when the output is on, and has no power when it’s off. They are also completely silent during operation.

The disadvantage is that you are limited to the same output voltage your controller is operating at (typically 12V), and that you cannot draw more than 500mA (fine for small cabinet mag locks, but potentially an issue for larger door-sized locks or other high current props).

The key takeaway is that these digital outputs are electrically connected with the BAC’s control electronics. That means that electrical interference from devices connected to them could potentially affect the BAC (although we include lots of protections against this happening), and it also means it isn’t always appropriate to use these outputs to control other props that have their own power supply.


Think of relays as a computer-controlled switch.

What is a relay?

The term ‘relay’ dates back to the very beginning of electrical communication, where early engineers needed to solve the problem of how to send telegraph signals across the country. Wires have resistance and signals degrade over long distances (a problem we even have to contend with in escape rooms!), so there needed to be a way to connect different circuits together to resupply new power every so often into the telegraph network, “relaying” a signal from one circuit to another.

The solution that was developed is very similar to what we still use today! Relays are switches controlled by electricity; when they are turned off, the Common terminal is connected to Normally Closed, and when they are turned on, the Common terminal is connected to Normally Open.

The aspect that makes relays most useful today is that the circuit being controlled is completely electrically isolated from the circuit doing the controlling. The switching happens by turning on a small electromagnet: this attracts and pulls a piece of metal from one contact to another, physically changing the switch’s state. It’s exactly like a physical switch, except with a magnet operating it rather than your hands.

How do relays work?
You can think of a relay conceptually as a flappy piece of metal, switching between two contacts called “normally closed” and “normally open”. When the relay is unpowered, a spring causes this metal to rest against the normally closed terminal:

When you power the relay up, the coil acts as an electromagnet, pulling the flappy metal towards the Normally Open terminal and switching the circuit:

As you can see, there is electrical isolation between the controls and the terminals. A fault in the circuit the relay controls wouldn’t affect the control electronics, because they are separated by air and magnetism inside the relay module.

When would I need a relay instead of a digital output?

There are several situations where a digital output won’t be sufficient and you’ll need to use a relay:

  • You need more output current than the digital output can provide.
    This typically happens when controlling a large door magnetic lock, which often draw between 650 mA and 1A.
  • You need a separate power supply or you need a different voltage.
    The relay is entirely isolated from the main circuit, so you can use any power supply you prefer. The contacts are rated to handle a large amount of current (the relays themselves are rated to 10A and 125V, but we recommend you not exceed 2A and 24V in escape room applications).
  • You are controlling a pre-existing prop or signaling an external system.
    If you have a prop from another vendor, it’s safe to switch its power supply using the relay without causing any unintended effects caused by sharing power supplies between the prop and the BAC. The relay can also be used to simulate button presses or other switch closures for other controllers; this could be used to safely signal a 5V input pin on an Arduino, for example.
  • You are out of inputs.
    Even if a digital output would be sufficient, you can wire up a relay to achieve the same goals and get two extra outputs without resorting to an FX60 or other expander. In this situation, you would use the + and – terminals from the BAC’s connectors to access the same 12V power supply being used to power the BAC. You lose the electrical isolation benefits, but in many applications the convenience is worth that tradeoff.

What are the pros and cons of a relay?

Pros: The relay is isolated from the main circuit, so it’s safe to use the relay to control external devices with different power supplies or power requirements. The relay can also handle much more current than the normal digital outputs.

Cons: Relays make a soft telltale clicking noise when they switch, which can occasionally be problematic in some escape room applications by telegraphing to players that something has changed in the room. They also are mechanical devices, so they can eventually wear out if switched repeatedly (although we use high quality Panasonic relays in our products to minimize the chance of this occurring). They are also large, so only two relays fit in the BAC case.

How do I wire up a relay as a switch?

Simply insert the relay in series into your circuit as if it were a regular switch. Wherever you would normally connect a switch, connecting COM to one terminal and either NC or NO to the other.

If you want the relay to connect (close) the circuit when it’s on and disconnect (open) the circuit when it’s off, connect to normally open. (Usually used for activating special effects or solenoids.)

If you want the relay to disconnect (close) the circuit when it’s on and connect (close) the circuit when it’s off, connect to normally closed. (Usually used for magnetic locks which should be locked by default until the player solves a puzzle.)

It’s okay to switch either the high or low side for most escape room applications – we recommend whichever side your BAC is configured to switch for its digital outputs for consistency.

How do I wire up a relay as a spare digital output?

If you just want to use the relay as an extra digital output, you can source power from the + and – terminals as shown in this diagram:

Controller FAQs Frequently Asked Questions

How do I monitor messages sent over an MQTT connection (for example, to M3)?

One of the most powerful features of the BAC is the ability to send messages over a network connection to game control software. One of the most popular protocols for this connection is MQTT, which is a simple industry standard designed for sending short messages between two points. Because the BAC is built on MQTT, you have the option of using off the shelf packages like M3 or creating your own control solution using a tool like Node-RED.

Because MQTT is an open standard, you can also connect to the server and monitor the ongoing communications using desktop tools. This can be a great option if you’re having trouble getting a link established and are not sure where the problem is in the system.

We recommend the MQTT Explorer project for most users; it’s a convenient graphical browser for MQTT messages and is available for most major platforms. If you prefer the command line, we recommend the mosquitto_sub tool available as part of the Eclipse Mosquitto project.

While you can run MQTT Explorer from the same computer as your MQTT server (also known as a broker), the best test results will come if you can use a second computer on the network, as this will validate that your firewall and network are configured correctly.

To set up MQTT Explorer to monitor your BAC, install it from the link above, then open the application. You’ll see a server connection window:

In this window, set the “Host” field to the network address of your MQTT broker. (For most people with M3, this is the address of the computer running M3.). Then, click Save and Connect.

MQTT Explorer will connect to your server and display a tree view of topics and messages that updates live as messages are sent:

If MQTT Explorer gets stuck on the connection page and never connects, eventually showing a “Disconnected from server” bar in the bottom corner, it’s likely that your MQTT broker is misconfigured. One common possibility is that the server computer is running a firewall that’s blocking access from other computers (to disable Windows Firewall, follow these instructions). Another possibility is that you are using Eclipse Mosquitto 2.0 as your server; the new 2.0 version has default security settings that disable access from remote computers. The Eclipse project has instructions for enabling remote access here.

Controller FAQs

How do I set up a BAC if I can’t plug it into my router?

The best way to set up a BAC’s network connection is to plug it into your main router, or to a connected Ethernet switch. This allows the BAC to get an IP address from your router’s built in “DHCP Server”, which is a piece of software that controls your network and hands out IP addresses. It ensures that any other computer on your network will be able to access the BAC, making it easy to integrate with M3 and other software packages.

Sometimes, you might need to configure your BAC without access to your router, though. If you’re using a phone hotspot for connectivity and don’t have an office network, or if you’re setting up a BAC in a new location before a network is available, you might need an alternate approach.

In these situations, you can connect your BAC directly to your computer via an Ethernet cable. In some cases, this will just magically work – so we recommend you start by simply connecting the cable and opening Bad Ass Manager. If you see your controller there, you can skip the rest of this article.

Unfortunately, sometimes just making the connection isn’t enough – both your computer and the BAC will make up random ‘local’ IP addresses, and they won’t be able to find and talk to each other.

The solution is to “share” your Wi-Fi connection temporarily to your Ethernet port. This causes Windows to set up its own local server to hand out addresses, and enables BAM and your BAC to find each other and communicate. We don’t recommend this arrangement for more than temporary setup – you’ll want to invest in a router, perhaps a small travel router like this one that can connect an Ethernet device to a Wi-Fi network – but in a pinch this can get you up and running.

Before getting started, make sure to download BAM from our Downloads page; it’s possible that in some situations this process will cause your computer to not connect to the Internet properly until you’re done configuring your BAC and disable the sharing feature.

  1. Find the Ethernet port on your Windows 10 computer and plug in your BAC using a standard cable. If your computer is a laptop without an Ethernet port, you can buy an affordable USB adapter like this one from TP-Link.
  2. Open your Start Menu. Search for “Network Connections”, and when “View network connections” appears, select it.

3. In the window that appears, examine the network connections. You may have several, but you’re looking for two connections: your standard Wi-Fi connection that connects you to the Internet, and the second Ethernet adapter that is connected to the BAC.

The Wi-Fi adapter should be easy to find; the Ethernet adapter might be a little harder, but it probably will have “Ethernet” in the name, potentially followed by a number. If you see other items in the list with words like “Virtual” or “VPN”, you can ignore them.

4. Right-click your Wi-Fi network and choose Properties. (It’s very important for this step that you select your upstream Internet connection and not the wired connection linked to your BAC.)

5. Click the Sharing tab.

6. Check “Allow other users to connect through this computer’s connection”. Then, in the dropdown box, choose your Ethernet connection that is plugged into your BAC. Uncheck “Allow other users to control or disable the shared Internet connection.” When you’re done, the dialog should look like this:

7. Click OK.

8. Launch BAM. When it opens, you may be asked about firewall access; make sure to permit it to communicate on all network types:

9. BAM should open. If it does not open, follow the tips in How do I access Bad Ass Manager? When I open it, all I see is a black screen.

10. If all goes well, you should see your BAC in BAM. If not, try clicking Discover; if it still doesn’t appear, unplug and replug the power to your BAC and wait two minutes, then click Discover again.

Still no luck? Contact our support team and we’re happy to help.

11. Important: when you’re done configuring your BAC, reverse the process by right-clicking your Wi-Fi adapter and unchecking the options on the Sharing tab. If you forget this step, your Ethernet adapter will no longer work for other network connections, and you may even cause problems if you attempt to plug your computer into another network (because your computer will be competing with the network’s router to hand out IP addresses).


How do I access Bad Ass Manager? When I open it, all I see is a black screen.

Not to fear, this happens sometimes depending on the configuration of your computer. There’s an easy workaround that will get you up and running quickly.

This window is the core of Bad Ass Manager. As long as it is open, you can rest assured the background code that communicates with your controller is up and running.

In the window that appears, look for an IP address labeled BAM URL. This is the web site you will visit to access BAM:

Once you’ve found this highlighted address, simply enter it into the address bar to load Bad Ass Manager:

Now you’re ready to go! Don’t forget to keep the black command prompt window open while you’re using BAM; the web page will stop working if you close it.

Controller FAQs

How do I prepare an SD card for my Audio BAC?

The SD card that comes with your Audio BAC is prepared at the factory with the correct file system, but if you need to prepare another card, it should be formatted with the FAT16 or FAT32 file system only.

Do not use NTFS or exFAT, and do not store files on your card other than audio files intended for playback via the BAC. Many SD cards ship from the factory with an exFAT file syste


The act of formatting a storage card erases all data on it permanently. Before formatting your card, back up any files on it that you wish to save.

Exercise special caution when formatting your storage card to ensure you don’t accidentally format the wrong device – if you aren’t careful, you could accidentally format other external storage devices or even your computer’s secondary hard disk or recovery partition. When in doubt, stop and consult your operating system manual for assistance.

Files should be named with short filenames – 8 characters or less with a 3 character extension. We recommend simple numbers (for example, 001.wav).

The Audio BAC supports .WAV, .MP3, .OGG, .AAC and .WMA file formats. We recommend the industry-standard 44100Hz 16-bit stereo .WAV format for shorter sounds and 192Kbps CBR MP3 for longer sounds, but most sample rates and formats should work well.

Controller FAQs

What’s the difference between a Bad Ass Controller and an Arduino?

Great question! While both can be used to build your escape room technology, we designed the Bad Ass Controller to solve several key problems we frequently encountered when using Arduino-based controllers.

At the core, both are surprisingly similar devices – both the Arduino and the Bad Ass Controller are based on industry-standard Atmel microcontrollers.

Arduino microcontrollers are generic control devices designed to be used in a wide variety of DIY projects. They operate at a low voltage – typically 3.3V or 5V – and have pin connectors designed for temporary breadboard assembly of circuits. While they offer a great deal of flexibility, the responsibility is on you as the user to design circuits to integrate them with other devices you want to control and to write software implementing your game logic using C++ or a similar programming language.

The Bad Ass Controller builds on this foundation. We designed it to be a turnkey approach, and the BAC improves on the Arduino for escape room use in several ways:

  • The BAC can be configured to run most common escape room game scenarios right out of the box, no programming required. Our easy-to-use configuration tool, Bad Ass Manager, makes configuring game behavior an easy point-and-click operation.
  • The BAC comes with a built-in Ethernet port and integrated support for common escape room software platforms, allowing custom game logic and easy integration with other sound/lighting/gameplay elements. Adding network support to an Arduino requires extra costly hardware and time-consuming software development.
  • The BAC uses industrial screwdown connectors that ensure a safe, secure connection. Loose or poorly soldered wiring is one of the top causes of unreliable escape room props.
  • The BAC uses higher voltages (12V or 24V DC), which better withstand long wiring runs. 3.3V or 5V signals like those generated by an Arduino are not intended to travel more than a few inches from the circuit board and are unsuitable for long in-wall wires.
  • BAC inputs and outputs have extensive protection against electrical faults, protecting your controller in case of wiring mistakes or transient electrical noise. Most Arduino boards have no protection and the controller can be easily damaged by electrical noise.
  • The BAC includes high-current driver circuitry and multiple relay suitable for controlling magnetic locks, which are commonly used in escape rooms. Arduino boards require additional modules and custom wiring to control locks.

We love the Arduino platform, and in fact many elements of the BAC are inspired by its foundation. (In fact, the BAC can actually be used as a fancy Arduino for complex projects, so please reach out to us if you’re interested in that option!)

But our years of experience building escape rooms have taught us there are many challenges encountered when using Arduino devices as the core of an escape room, and we’re proud to have solved many of them with the BAC.

While the upfront investment may be a bit more expensive, we’re confident the time you save by using our products will pay for itself many times over by helping you get up and running faster and by keeping your games reliable over the lifetime of your experience.