Integrating an Small EX-CommandStation with the ProMiniAir Receiver

Hundreds of Model Railroaders have used the ProMiniAir Receiver (PMA Rx), which is highly compatible with Airwire, Stanton Cab, Tam Valley Depot, and Gwire Transmitters. This is a rare “Island of Compatibility” for model railroad battery power and radio control and allows one “Compatible Transmitter” (ProMiniAir, Airwire, Stanton Cab, Tam Valley Depot, and Gwire) to control multiple locomotives and accessories with a “Compatible Receiver” (ProMiniAir, Airwire, Stanton Cab, Tam Valley Depot, and Gwire).

PMA Receivers are sold on eBay (search for “ProMiniAir”) with small (3.6A) and large (13A) amplifiers. The PMA Rx’s small size and selection of amplifiers allows installations in N-scale through G-scale. PMA Transmitters are also available on eBay. These Transmitters wirelessly transmit DCC to “Compatible Receivers” with DCC commands from a) “standard” DCC throttles and controllers or b) a “stand-alone Transmitter” solution that is a full-blown, inexpensive DCC command station that accepts throttle commands from smartphone throttle apps via WiFI or computer app via USB and converts them to DCC output.

However, a Model Railroader sometimes wants to obtain information from the onboard DCC decoder. A drawback of “Compatible Receivers,” such as the ProMiniAir Receiver, is that they are great “listeners” but cannot transmit information about the onboard DCC decoder back to the user. Some recent proprietary Dead Rail Transmitter/Receiver systems, such as Blunami, can send information from the decoder back to the user. However, these systems are NOT interoperable with any other Dead Rail system; they are NOT members of the Island of Compatibility. And they are not well-suited to central control of multiple locomotives.

This post will present a solution based on open-source code and common techniques and tools that thousands of “track-powered” Model Railroaders use that allow “Compatible Receivers” to send decoder information back to the user while maintaining “backward compatibility” with “Compatible Transmitters.” This solution brings techniques our “track-powered” brethren use to Dead Rail.

The Solution

Think about what we are doing in Dead Rail: we are replacing the DCC that is picked up by the locomotive’s DCC decoder through electrical contact with the rails with a “virtual track” (direct wiring to the decoder) that sends DCC from a wireless Receiver and Amplifier. When a “normal” DCC throttle wants to interrogate the decoder, the locomotive is situated on a special “Programming Track” that is electrically isolated from the rest of the track DCC wiring. Then, the DCC controller sends specialized “Service Mode” DCC commands that require the DCC decoder to send back simple “acknowledgment” (ACK) current pulses that the DCC controller senses. Hmm… How can we do this in Dead Rail?

The solution is to add a tiny EX-CommanStation (EX-CS for short) onboard the locomotive that will “weave” the logic-level DCC from the ProMiniAir Receiver with any DCC that the EX-CS might generate from other wireless sources and then send the combined logic-level DCC to the amplifier to produce “track-level” DCC! In other words, all we need to do is interpose a tiny DCC command station between the ProMiniAir Receiver and its Amplifier.

Since the EX-CS is a sophisticated, fully functional DCC command station, in addition to “normal” DCC commands it sends to regular tracks, it can also send Service Mode commands on a “Programming Track.” The EX-CS software has the crucial capability of “Joining” DCC from the Regular Track with the Programming Track so that you can “drive on/off” a locomotive to/from the Programming Track for specialized Service Mode queries that the decoder responds to with an “acknowledgment” (ACK) current pulse that is sensed by the DCC command station as a “yes” to its query. A “no” from the decoder in response to a query is the lack of an ACK pulse. The “JOIN” capability of the EX-CS means that once we are finished sending specialized Service Mode DCC over the wires to the decoder, we can then send “normal” DCC to the decoder over the same wires. No specialized circuitry or extra wiring from the amplfier to the decoder is required!

Comparison between a “standard” DCC throttle (top) and the EX-CommandStation (bottom), which can ‘join” standard and programming DCC

The EX-CS was originally designed to accept WiThrottle or DCC-EX commands over a WiFi or USB link and internally generates logic-level DCC that controls an external amplifier or “motor board” to produce high-power, “track level” DCC that the decoder can pick up off the track. We use that capability to control a compact “motor driver” amplifier to do the same thing, only the output from the amplifier is sent directly to the decoder over wires rather than to conducting track.

You might wonder how the EX-CS can “weave in” logic-level DCC from the ProMiniAir Receiver. I modified the EX-CS software some time ago to allow the additional input of an external, logic-level DCC source for the ProMiniAir Transmitter that combined the EX-CS’s internally generated DCC from interpreting high-level WiThrottle or DCC-EX commands with the DCC from an external source such as a standard DCC throttle (passed through a simple “DCC Converter” that converts “track-level” DCC to “logic level” DCC @ 5V and also provides 5V power). This PMA Tx/WCS (Wifi-equipped EX-CommandStation) has been available on eBay for some time. See the figure below for the original PMA Tx design and its modification to use the EX-CS, the PMA Tx/WCS.

Original and New Transmitter connections for PMA Tx/WCS. This technique was reused for the PMA Rx. Power connections are NOT shown.
The actual PMA Tx/WCS is available on eBay.

I reused this capability for the Receiver! In essence, I have moved the EX-CommandStation from a stationary position to a mobile location, traveling with the locomotive. Only the source of the external DCC has changed: from a traditional DCC command station to the output of the ProMiniAir Receiver. The only new Receiver-specific modification was to use the EX-CS’s original capability to sense a current pulse produced by the decoder during Service Mode queries rather than “fake” it as in the PMA Tx/WCS since the PMA Transmitter cannot generate output current pulses.

The original (top) and new (bottom) Dead Rail connections. Power connections are NOT shown.

If you study the Receiver and Transmitter figures above, you can see the modular design of the ProMiniAir Transmitter and Receiver allows easy interchange of components. If we had not separated the ProMiniAir Receiver from the Amplifier (technically, its not an amplifier, but rather an H-bridge driver that accepts logic-level PWM and converts them to higher-voltage and higher-current PWM), which enables us to insert the EX-CS between them, the “PMA Rx/WCS” solution would not have been possible!


So much for design; let’s see how the PMA Rx/WCS is realized in hardware for two different amplifiers: a DRV8874 (2.1A continuous) and a Cytron MD13S (13A continous).

Small Amplifier PMA Rx/WCS

The figures and videos below show one implementation of the ProMiniAir Rx with a mini ESP32 that hosts the modified EX-CS’s software and sends combined DCC from the ProMiniAir Receiver and DCC generated from WiFi-connected WiThrottle or DCC-EX clients to a Pololu DRV8874 amplifier that in turn sends track level DCC to a decoder.

The Pololu DRV8874 amplifier is easy to integrate because it provides a current sense voltage output of 1V/1A in response to the total current provided to the decoder, eliminating the need for an additional current sense device. The mini ESP32 requires +5V power supplied by a small voltage converter from here on Amazon. It’s mounted beside the DRV8874 amp on the bottom side of the mini ESP32 PCB.

A ProMiniAir Receiver integrated with a mini ESP32 hosting a modified version of the EX-CommandStation’s software. The EX-CS’s DCC is amplified by a Pololu DRV8874 amplifier, whose DCC is, in turn, sent to a DCC decoder. The current sense output of the DRV8874 generates DCC Service Mode ACK pulses from the DCC decoder that are used to “read” the decoder’s data.
The PMA Rx/WCS underside shows the Pololu DRV8874 amplifier and +5V power converter.
ProMiniAir Rx/WCS’s ESP32 mini backside shows external connections to the EX-CommandStation. “PWR” denotes +5 V power converter connections, “AMP” denotes connections to the Pololu DRV8874 amplifier, and “PMA” denotes connections to the PMA Receiver. “CS” denotes the current sense output from the Pololu DRV8884 amplifier that is used to sense the decoder’s ACK pulse.

The mini ESP32’s dimensions are 1.2″ x 1.6″, permitting installations in an HO-scale boxcar. See the figures below for an example installation.

The PMA Rx/WCS easily fits in an HO scale box car, including an 11.1V Li-Ion battery.
With the battery installed, we can now demonstrate that two wireless sources can provide the DCC output: either a standard ProMiniAir-compatible transmitter, such as the Airwire T5000 transmitter, or a smartphone app that connects to the EX-CommandStation.
Since I didn’t have an HO engine, I mounted all receiver components inside the HO boxcar and then connected the DCC output to a power-hungry MTH Diesel with a PS-3.0 operating in DCC mode. First, control is demonstrated with an Airwire T5000 throttle connecting to the onboard ProMiniAir Receiver and then using the onboard EX-CommandStation connected to an Android smartphone running the EngineDriver app to read the decoder’s DCC address.
Now, the T5000 is turned off, and then the locomotive is controlled by the EngineDriver app “talking” to the onboard EX-CommandStation.

Large Amplifier PMA Rx/WCS

The PMA Tx/WCS can also be integrated with a powerful Cytron MD13S (13A continuous) amplifier for O and G scale. Since the Cytron does not have a current sense output, we integrated an INA169 from Amazon to provide this missing input.

The bottom view of Cytron integration with the PMA Rx/WCS and the current sensor is as follows: Pin 23 is input from the PMA Rx. Pins 18 and 25 are outputs from the EX-CS that control the output of the Cytron amplifier.
Bottom view of the INA169 current sensor. Note that the current sense output (white wire) of the INA169 is input to Pin 34 of the EX-CS to detect decoder ACK pulses.
Bottom view of the INA169 current sensor with a 5V power converter used to power the INA169 and the ESP32 PCB
The Airwire T5000 transmitter communicates with the ProMiniAir Receiver, which sends its DCC to the EX-CS and is “woven” with the EX-CS’s own DCC. The Android running Engine Driver directly communicates with the EX-CS.
The video demonstrates control by the T5000 transmitter communicating with the ProMiniAir Receiver integrated with the EX-CS. Then, the Engine Driver app is used to query the decoder’s DCC address (and any Configuration Variable) in Service Mode. Finally, the T5000 transmitter is turned off, and the Engine Driver app now controls the decoder.

Demonstration of Reading Decoder Information

One of the main reasons for using a PMA Rx/WCS is to extract information from the decoder wirelessly. There are two main avenues for doing so: wireless throttle or smartphone apps or by using a wireless connection from JMRI to the onboard EX-CommandStation and the decoder. We first demonstrate how the Android EngineDriver app can read the decoder, and then we’ll see how to do it with JMRI.

Components used in the demo videos. The battery supplies power to the ProMiniAir Receiver, WiFi-equipped EX-CommandStation, and Pololu DRV8874 motor driver. The Zimo MS950 decoder uses the DCC output of the DRV8874 and then controls the motor and speaker. The PC running JMRI, the Android running EngineDriver, and the T5000 throttle are all wirelessly connected to the ProMiniAir/WiFi-equipped EX-CommandStation (PMA Rx/WCS) for short.
A video of using an Airwire throttle that transmits to the ProMiniAir Receiver that, in turn, sends DCC through the EX-CommandStation to the decoder, all with battery power in a small form factor. Then, the EngineDriver Android app, which is WiFi-connected to the EX-CommandStation, is used to read the decoder’s address and then directly control the decoder’s engine speed and sound.  The computer to the left is connected to the EX-CommandStation via Wifi, where we will demo reading CVs on the decoder wirelessly. 

It’s simple to use JMRI with the PMA Rx/WCS. First, set your computer’s wireless connection to the EX-CS’s wireless network, DCCEX_123456, where “123456” is a unique string. The password is PASS_123456. Now, you can activate JMRI’s Decoder Pro application. You must configure the server connection for the DCC-EX protocol, IP address, and port number.

Once connected, JMRI’s Decoder Pro allows you to read and write to the decoder in Service Mode as shown in the two examples below. It can even extract enough decoder information to identify the decoder’s type, which in this case is a Zimo MS950 that we used in the Cytron amplifier demonstrations above.

The WiFi-equipped EX-CommandStation reads the decoder CVs in Service Mode and then transmits them via Wifi to the JMRI application. You can also send CVs to the decoder via this same link. This example is a severe test by reading numerous CV without error.
Another example of reading the CVs wirelessly is, in this case, the Function Map.

It’s actually kind of amazing and addicting to see Decoder Pro extract so much information wirelessly! Of course, the purpose of extracting this information is to subsequently modify the decoder’s settings, which can also be done in Decoder Pro.

Final Thoughts

The primary advantage of the PMA Rx/WCS over the “garden variety” PMA Rx is that you can obtain decoder information using the same tools and techniques employed by thousands of our “track-powered” compatriots. No expensive proprietary receivers or apps are required: just the low-cost PMA Rx/WCS (about $59.99 with the DRV8874 or Cytron MD13S on eBay) and free or inexpensive smartphone apps or free JMRI.

The added advantage of the PMA Rx/WCS is that you can also directly use a smartphone throttle app that is either WiThrottle (all of them) or DCC-EX (some of them) compatible to connect with the onboard EX-CS. This control approach bypasses the PMA Receiver, so you will only have one-on-one control, losing the multiple locomotive control ability afforded by a PMA Tx/CNV (using a standard DCC’s throttle’s track DCC output) or a PMA Tx/WCS, which adds an EX-CommandStation to the PMA Transmitter for smartphone or computer control via WiFi.

The modified EX-CommandStation software is available on this GitHub site—our thanks to the team for developing the EX-CS software. I donate 10% of my sales of PMA Tx/WCS and PMA Rx/WCS to the project.

The ProMiniAir Rx/WCS will be available on eBay with the DRV8874 and Cytron MD13S amplifier. Customized versions are available by special request at this website or by contacting me on eBay. These devices are “ready-to-run,” and no further assembly is required.

Using the ESU Mobile Control II with the ProMiniAir Transmitter for Dead Rail

The ESU (the LokSound decoder manufacturer) Mobile Control II (shortened here to “ESU MC II” or “MC II”) is an Android device that is specialized for throttle control of model railroads. ESU designed the MC II as an “open” platform for developers to adapt their throttle apps to the throttle-specific features of the MC II. ESU provides an excellent summary of the device here, which is excerpted here:

Since smart phones with touch screens have almost completely replaced the conventional mobile phone, model train enthusiasts and manufacturers face the question how to employ more powerful devices for controlling model trains. As a result of this, many apps have been developed lately, which can be uploaded onto your mobile phone and used for running your trains.

This concept, however, has one disadvantage, namely that smart phones have not been primarily designed for running model trains. Due to the lack of suitable input elements the operator is forced to spend most of the time looking at the display. The limits become quickly obvious, once the battery of the phone has been discharged and nobody can reach you by phone anymore.

We at ESU had a look at the question on how to utilize the advantages of the smart phone technology and combine it with the needs of model train enthusiasts.

It is with great joy that we now present the results of our considerations. With the new Mobile Control II you have wireless control of your locomotives, accessories and routes simply by radio control!


In this post, I’ll show you how to use the ESU MC II with the ProMiniAir Transmitter integrated with a WiFi-equipped EX-CommandStation (PMA Tx/WCS for short), which can be found on eBay here.

The components and their connections are shown below.

The connections between the ESU MC II, the WiFi-equipped EX-CommandStation, the ProMiniAir Transmitter, the onboard ProMiniAir Receiver, and the onboard DCC Decoder.

I thank one of my customers, Jeffrey Fonda, for the idea of this post.

How to Set up and Use the ESU MC II with the ProMiniAir Transmitter/WiFi-Equipped EX-CommandStation

Before getting started, it’s useful to know the MC II is essentially a small Android tablet with specialized “haptic” inputs designed to control model railroads. This knowledge will help you navigate the MC II if you are familiar with Android devices.

The ESU MC II I received already had the well-known “Engine Driver” Android throttle app installed (see here for the Engine Driver homepage). If it’s not installed on your MC II, it’s easy to download the Engine Driver app from the Google Play Store.

Note: in some photos below, you might notice the wiring at the bottom of the MC II is NOT a USB connection. I inadvertently broke loose the internal USB socket, and I repaired it.

The sequence of photos below shows you how to connect the MC II to the PMA Tx/WCS’s WiFi network, start up the Engine Driver app, set its defaults and options, and finally use it as a throttle to control Dead Rail locomotives.

The ProMiniAir Transmitter is integrated with a WiFi-equipped EX-CommandStation. The EX-CommandStation receives WiFi commands from the Engine Driver app running on the ESU MC II and outputs DCC to the ProMiniAir Transmitter for transmission to compatible onboard Dead Rail receivers such as the ProMiniAir Rx, Airwire CONVRTR, Tam Valley Depot DRS-1, Stanton Cab, and Gwire. The PMA Tx/WCS+CNV is available on eBay using the “ProMiniAir” search string.
The opening screen on the ESU Mobile Control II. To get started, you find the EX-Command Station’s WiFi.
Now select Wi-Fi…
Now select the DCCEX WiFi.
The first time, enter the obvious password.
You are now good to go with the WiFi, and now exit back to the “home page.”
Now select the Engine Driver app.
Once Engine Driver is selected, now select the appropriate DCCEX WiFi.
You are now ready to select your locomotive. The DCC will be sent from the EX-CommandStaion to the ProMiniAir Transmitter and then out the onboard Dead Rail Receivers.
Enter the DCC address and select “Acquire” to initiate the DCC commands to the selected locomotive.
You now control the locomotive as you normally do with the Engine Driver app.

Changing Configuration Variables (CVs) with Engine Driver on the ESU MC II

On another webpage, I provided some “workaround” solutions for changing the Configuration Variables (CV) of a DC decoder onboard a Dead Rail locomotive using the PMA Tx/WCS. The specialized solutions arose because DCC-EX commands provide this capability, but most throttle apps still need to. Fortunately, the Engine Driver app has this capability but requires activation of DCC-EX features, as shown below.

First, start the Engine Driver app as shown below.

I recommend selecting and enabling the DCC-EX options, allowing you to change the Decoder Configuration variables (CV) easily.
Select to get started with DCC-EX options.
You select this option to turn on various DCC-EX options.
I enable both of these options to take full advantage of the EX-CommandStation.
After exiting from setting the DCC-EX options, you can select DCC-EX to change decoder CVs.
Now select Program on Main from the pulldown to send change of CV value commands ONLY to the locomotive address specified.
You select the DCC address, the CV number, and the CV value, and then select “Write” to send the CV change commands.

General Impressions

I like the heft and feel of the MC II. The throttle knob is very convenient (I dislike using screen-based slider bars for speed control) and is well-integrated with the Engine Driver app. The various buttons on the MC II can be configured for interaction with the Engine Driver app (see here for more details on how). The MC II has the “cool” feature that if you adjust the throttle from Engine Driver’s buttons or slider bars, the throttle knob will automatically rotate appropriately.

Sometimes, you might need to “fiddle” when connecting to the PMA Tx/WCS’s WiFi network. You might even be asked for the password again, but you can usually select “cancel,” and the MC II will connect with its stored password.

Please be very careful with the USB connection on the MC II. Any substantial bending while inserting or removing the USB plug will break loose the USB socket mounted to the circuit board with only two metal tabs – this is a sub-optimal design avoided by most board designers by using four metal tabs to distribute the insertion/removal force and torque.


The video below demonstrates using the ESU MC II to wirelessly control an O-scale SP Cab Forward with a ProMiniAir Receiver onboard.

Demonstration of using the ESU MC II with ProMiniAir Transmitter integrated with a WiFi-equipped EX-CommandStation.


There you have it: another throttle device that can be used with the ProMiniAir Transmitter for radio control of locomotives. The ESU MC II is optimized for model railroading control and provides the superb Engine Driver app for WiFi connection to WiThrottle or DCC-EX servers.

Other throttle devices compatible with the PMA Tx/WCS include any iOS or Android throttle app transmitting WiThrottle or DCC-EX commands via WiFi, the TCS UWT-50 and UWT-100, ProtoThrottle, and JMRI. You can search this website for simple instructions on using these devices for Dead Rail with the PMA Tx/WCS.

Using a ProtoThrottle for Dead Rail


The Iowa Scaled Engineering ProtoThrottle has many ardent users who typically use the throttle to control locomotives with track-powered DCC. This post shows you how to implement using this throttle for Dead Rail (battery power, radio control) with ProMiniAir, Airwire, Tam Valley Depot DRS-1, S-Cab, and Gwire Receivers that can receive commands from ProMiniAir Transmitter integrated with a WiFi-equipped CommandStation (available on eBay by using the “ProMiniAir” search string).

My thanks to Colin Camarillo for the idea.


Implementation is straightforward and smooth. You will need the following components:

  • ProtoThrottle: available here.
  • ProtoThrottle Receiver (ProtoThrottle Receiver for ESU CabControl, JMRI WiFi Throttle, and Digitrax LNWI): available here.
  • ProMiniAir Transmitter/WCS (ProMiniAir Receiver integrated with a WiFi-equipped EX-CommandStation): available here.
  • Compatible Receivers are:
    • ProMiniAir
    • Airwire CONVRTR, G-3, and G-4
    • Tam Valley Depot DRS-1
    • S-Cab
    • Gwire

First, power up the ProtoThrottle and set the locomotive’s address, e.g., 1648, along with the illustrated functions. See the ProtoThrottle’s User Manual for detailed operation and configuration details.

The ProtoThrottle has been set to the locomotive’s address with the illustrated functions.

The PrototThrottle Receiver has a config.txt file that is available on a file system once connected to a PC. You edit this file with your favorite text editor, modifying the following entries for operation with a DCCEX system:

ssid = DCCEX_123456
password = PASS_123456
mode = dccex
serverIP =
serverPort = 2560

The”123456“is replaced by the actual value shown on the CommandStation’s OLED display. Save the file. Disconnect the USB cable from the PC and plug it into the USB power block.

 Set up the configuration file for the Iowa Scale Engineering Receiver for WiFi Systems for a WiFi-equipped EX-CommandStation. Plug the Receiver’s USB cable into a computer and edit the Receiver’s config.txt file. Note that the settings are for the WiFi-equipped EX-CommandStation.

The photo below shows that the ProtoThrottle Receiver is connected to the EX-CommandStation after the USB power is connected.

The Iowa Scale Engineering Receiver shows connections to the WiFI-equipped EX-CommandStation.

The photo below shows that the EX-CommandStation is successfully sending DCC commands to the ProMiniAir Transmitter (note the “Msg Ad: 1648”) on the small OLED display connected to the ProMiniAir Transmitter).

The WiFi-equipped EX-CommandStation is integrated with a ProMiniAir Transmitter. Note that the PMA’s message address (“Msg Ad: 1648”) matches that sent by the ProtoThrottle.


The video below is a demonstration of the following arrangement: [ProtoThrottle] ===Xbee===> [ProtoThrottle Receiver] ===WiFi===> [WiFi-equipped EX-CommandStation] —wired—> [ProMiniAir Transmitter] ===Airwire Channels===> [ProMiniAir, Airwire, Tam Valley Depot, S-Cab, Gwire Receivers] —wired—> [DCC decoder].

Demonstration video: The O Scale H-8 Allegheny has a ProMiniAir Receiver with a 13A Cytron Amplifier connected to a Zimo MS990K decoder with a Heinz Daeppen Allegheny sound file. The sound from recordings of the actual locomotive is impressive.

Wrap Up

The setup of the ProtoThrottle and its Receiver was simple, and it took just a few seconds to edit the ProtoThrottle’s config.txt file so the ProtoThrottle Receiver could communicate with the WiFi-equipped EX-CommandStation. Communication among all of the components was immediately established when power was applied.

So, there you have it: the ProtoThrottle can be used for Dead Rail control with ProMiniAir, Airwire, Tam Valley Depot DRS-1, S-Cab, and Gwire Receivers by using the ProtoThrottle Receiver in conjunction with a ProMiniAir Transmitter integrated with a WiFi-equipped EX-CommandStation.

Dead-Rail Conversion of an MTH PREMIER NORFOLK SOUTHERN SD60E DIESEL (O Scale, 2-Rail, PS-3.0): A Follow-up

To change things up, I showed you a “simple” Dead-Rail conversion of a Diesel locomotive in my previous post. This post follows up with an even more straightforward conversion that is very similar to what I do with steam locomotives: leave the DCC decoder and electronics in the locomotive alone except to provide a plug connecting the locomotive’s DCC decoder to an external Dead-Rail DCC source instead of DCC from the rails, which in our case will come from a battery-powered radio receiver and amplifier mounted in a “battery car” (the tender for steam locomotives).

Let’s see how this is done. I will repeat some steps so you do NOT need to refer to the previous post.

The Locomotive Conversion

The first step is to remove the locomotive shell so that we can modify the “2-Rail/3-Rail switch” and convert it to a “2-Rail/Dead-Rail” switch that will maintain the ability to use track power in either DCC or DCS mode and add the ability to use DCC from an external source.

Removing the upper plastic shell was easy; remove eight screws and the rear coupler. That’s one of the beauties of MTH locomotives: they are well-designed for disassembly.

There are four screws to remove at the front and rear of the “speaker pocket” in the middle of the locomotive.
The rear coupler must be removed to access the screws at the locomotive’s rear.
There are four screws to remove at the front and rear of the locomotive. The Kadee couple must be removed to access these screws at the locomotive’s rear.

Separating the chassis from the upper shell, we see the “stand holding the switch we’ll modify.

Side view of the locomotive Interior

Repeating from my previous post: To allow track-based “2-Rail” or “Dead-Rail” Operation, we need to figure out how to get DCC from either the track (“2-Rail Operation”) or from the output of the ProMiniAir Receiver’s Amplifier (“Dead-Rail Operation”). The original 2-Rail/3-Rail switch that routes track power/signal to the PS-3.0 is shown below.

The original 2-Rail/3-Rail switch routes track power/data to the PS-3.0.

These connections were verified by using a multimeter’s resistance-measuring capability. Let’s see how this switch is designed:

When the switch is in the 2-Rail position:

  • The Right Wheels’ output is directed to the PS-3.0’s DCC Track Right by shorting the “Track Right” end post to the “Track Right” center post.
  • The Left Wheels’ output is directed to the PS-3.0’s DCC Track Left since it’s directly soldered to the “Track Left” center post.

When the switch is in the 3-Rail position:

  • The Center Rollers’ output is directed to the PS-3.0’s DCC Track Right by shorting the “Track Left” end post to the “Track Left” center post.
  • Both the Left and Right Wheels’ output is directed to the PS-3.0’s DCC Track Left by shorting the “Track Left” end post to the “Track Left” center post and the “Track Left” end post’s jumper to the “Track Right” end post on the opposite side of the switch. This connection shorts the Right Wheel’s output to the Left Wheel’s output on the center post that then goes to the PS-3.0’s Track Left!

The photo below shows how to rewire this 2-Rail/Dead-Rail Operation switch.

The original 2-Rail/3-Rail switch has been rewired for 2-Rail/Dead-Rail operation.

Repurposing this switch has the following features:

  • The output from the center rollers is disconnected and closed off. Its role was only for 3-Rail Operation.
  • The Right and Left Wheels’ outputs are located on separate posts at one end of the switch (for 2-Rail Operation in either DCC or DCS mode).
  • The Track Right/Track Left DCC outputs from the ProMiniAir Amplifier are located on separate posts at the other end of the switch (for DCC Dead-Rail Operation).
Before/After switch schematics

After remounting the newly-modified 2-Rail/Dead-Rail switch back into its stand, the Dead-Rail wires leading to the switch are connected to wires that have an external plug that will receive Dead-Rail DCC from the “battery car” we’ll describe below.

The Dead-Rail connector from the 2-Rail/Dead-Rail switch to the small external Dead-Rail DCC connector.

A plug is “snaked out” near the rear coupler to connect to the external source of Dead-Rail DCC from the “battery car.”

The Dead-Rail connections between the “battery car” and the locomotive. That’s it: two wires.

Once we screw the upper shell back in place, we are done with locomotive modifications!

All we did was modify one switch and route the new switch connections to a small plug snaked out near the coupler. It can’t be any simpler than that!

Let’s turn to the straightforward “battery car.”

Battery Car Conversion

The photo below shows the components we fit inside a “battery car:” a 14.7V battery that will just fit through the door and a ProMiniAir Receiver/Amplifier. A surface-mount Molex 21004 antenna was mounted to the external metal shell. Surprisingly, reception worked, despite the traditional practice of avoiding antenna mounts on metal surfaces.

A straightforward “battery car” contains the battery and the ProMiniAir Receiver/Amplifier, and a surface mount antenna. Surprisingly, the surface mount Molex 211140 antenna worked OK when mounted externally to the car’s metal shell.

A small hole was drilled in the bottom of the car to pass Dead-Rail DCC from the ProMiniAir Amplifier to a plug that connects to the locomotive.

The small connector exiting the “battery car” that carries Dead-Rail DCC from the ProMiniAir Recevier to the locomotive.


With these Dead-Rail modifications, the video below shows Dead-Rail Operation.

The demonstration of Dead-Rail control using a Standalone ProMiniAir Transmitter controlled by a WiThrottle app on a smartphone. The DCC is wirelessly transmitted to the “battery car’s” ProMiniAir Receiver, providing high-power DCC to the locomotive.

Final Thoughts

The Dead-Rail modifications described here maintain 2-Rail Operation in either DCC or DCS mode, which mode is selected by the DCS/DCC switch.

The 2-Rail/3-Rail switch is repurposed as 2-Rail/Dead-Rail. The DCS/DCC switch is unmodified.

If the 2-Rail/Dead-Rail switch is set to “Dead-Rail,” then the DCS/DCC switch MUST be set to “DCC” so that the PS-3.0 can interpret the DCC signal coming from the ProMiniAir Receiver/Amp in the “battery car.”

This conversion was straightforward:

  • Modify one switch in the locomotive to receive DCC from an external source.
  • Snake a connector from this switch out of the locomotive near the coupler
  • Insert a battery and ProMiniAir Receiver/Amp inside the “battery car.”
  • Snake a connector from the Amplifier out of the “battery car”
  • Connect the two plugs together and couple the car to the locomotive.

I hope this simple conversion will inspire you to try your own conversion! There are locomotives such as PS-3.0-equipped MTH that will make this process easier.

Dead-Rail Conversion of an MTH PREMIER NORFOLK SOUTHERN SD60E DIESEL (O Scale, 2-Rail, PS-3)


I thought I’d switch things up a bit. I’ve only shared dead-rail conversion posts for steam locomotives so far, but I figured showcasing the conversion of an O Scale diesel locomotive would be worthwhile. After all, not all readers share the same affinity for steam locomotives as I do! Converting a diesel presents a few unique challenges compared to steam locomotives, which makes it all the more interesting.

I was searching for a 2-Rail MTH diesel locomotive that didn’t require wheel and coupler conversion and provided a PS-3 for DCC dead-rail operation. Fortunately, I found what I was looking for on eBay – the MTH Premier Norfolk and Southern SD60E Diesel (MTH 22-20596-2) at a reasonable price, which ticked all the boxes. This choice allowed me to focus on a more straightforward dead-rail conversion, emphasizing incorporating battery power and a small but powerful (13A) ProMiniAir Receiver, with minimal modifications required. I opted for MTH because of its rich, DCC-accessible features, including lighting, sound, and smoke, and its maintenance-friendly design, making it relatively easy to open up.

First Impressions

I had to open up the locomotive and look inside to develop my dead-rail conversion plan. While MTH provides exploded drawings of some locomotives on their parts site, unfortunately, they are not yet available for the MTH 22-20596-2 model.

Notwithstanding the lack of good diagrams, removing the upper plastic shell was easy; remove eight screws and the rear coupler, and you’re in!

There are four screws to remove at the front and rear of the “speaker pocket” in the middle of the locomotive.
The rear coupler must be removed to access the screws at the locomotive’s rear.
There are four screws to remove at the front and rear of the locomotive. The Kadee couple must be removed to access these screws at the locomotive’s rear.

Separating the chassis from the upper shell, we’re confronted with a very crowded interior (see photos below)!

Side view of the locomotive Interior
Top view of the locomotive interior

The interior space is narrow and jam-packed with two motors, a PS-3 board, switches, lights, and wiring.

Two conveniently-located switches are shown below.

Two top-mounted switches offer good repurposing opportunities.

Based on this examination, I made the following observations:

  • I could not figure out how to place a battery in this space. Even flat batteries (0.2 to 0.3″ thick) would not fit!
  • The 2-Rail/3-Rail switch could be repurposed as a 2-Rail/Dead-Rail switch, making it feasible to maintain 2-Rail DCC operation and add DCC Dead-Rail.
  • The DCS/DCC switch could be repurposed as a Battery Power ON/CHARGE switch.
  • Later on, I will demonstrate that it is possible to fit the Receiver and Amplifier of the ProMiniAir inside the shell.

To combine power and control of the locomotive, I had the option to set up the ProMiniAir Receiver in the trailing car along with the battery and send track-level DCC from the ProMiniAir Receiver to the locomotive instead of DC power. But for this post, I placed the ProMiniAir Receiver inside the locomotive and connected it to battery power from a trailing “battery car,” creating a straightforward battery-powered setup.

I will show in a future post how to locate the ProMiniAir Receiver/Amplifier in the “battery car” and supply the locomotive with the DCC output of the ProMiniAir Receiver’s amplifier.

Based on these observations, let’s get into the dead-rail conversion details.

Dead-Rail Conversion

To allow track-based “2-Rail” or “Dead-Rail” Operation, we need to figure out how to get DCC from either the track (“2-Rail Operation”) or from the output of the ProMiniAir Receiver’s Amplifier (“Dead-Rail Operation”). The original 2-Rail/3-Rail switch that routes track power/signal to the PS-3 is shown below.

The original 2-Rail/3-Rail switch routes track power/data to the PS-3.

These connections were verified by using a multimeter’s resistance-measuring capability. Let’s see how this switch is designed:

When the switch is in the 2-Rail position:

  • The Right Wheels’ output is directed to the PS-3’s DCC Track Right by shorting the “Track Right” end post to the “Track Right” center post.
  • The Left Wheels’ output is directed to the PS-3’s DCC Track Left since it’s directly soldered to the “Track Left” center post.

When the switch is in the 3-Rail position:

  • The Center Rollers’ output is directed to the PS-3’s DCC Track Right by shorting the “Track Left” end post to the “Track Left” center post.
  • Both the Left and Right Wheels’ output is directed to the PS-3’s DCC Track Left by shorting the “Track Left” end post to the “Track Left” center post and the “Track Left” end post’s jumper to the “Track Right” end post on the opposite side of the switch. This connection shorts the Right Wheel’s output to the Left Wheel’s output on the center post that then goes to the PS-3’s Track Left!

The photo below shows how to rewire this 2-Rail/Dead-Rail Operation switch.

The original 2-Rail/3-Rail switch has been rewired for 2-Rail/Dead-Rail operation.

Repurposing this switch has the following features:

  • The output from the center rollers is disconnected and closed off. Its role was only for 3-Rail Operation.
  • The Right and Left Wheels’ outputs are located on separate posts at one end of the switch (for 2-Rail Operation).
  • The Track Right/Track Left DCC outputs from the ProMiniAir Amplifier are located on separate posts at the other end of the switch (for Dead-Rail Operation).
Before/After switch schematics

Look at the DCS/DCC switch (see the photo below).

The original DCS/DCC switch

The two black wires are NOT shorted together for the DCC switch setting, sending logic to the PS-3 that it should operate in DCC mode. Conversely, if the switch is set to DCS, the two wires ARE shorted together, sending logic to the PS-3 that it should operate in DCS mode. So, all we need to do to ensure permanent DCC operation for either 2-Rail or Dead-Rail operation is disconnect the switch’s two black wires and close them off so they can’t short to each other or anything else.

We can repurpose this switch to provide battery power to the ProMiniAir Receiver/Amp or enable the battery to charge through an onboard barrel plug. The CHARGE switch setting is reserved for future expansion and has not been implemented. The battery Ground is directly connected to the Power “-” of the ProMiniAir Receiver/Amplifier.

The DCS/DCC switch has been repurposed as a battery power ON/CHARGE switch.

After repurposing the switches, they were reinstalled, as shown below.

The repurposed switches are remounted as shown.

With the switches reinstalled, we focus on mounting the ProMiniAir Receiver and Amplifier in a location that avoids mechanical interference with installed components.

Since the locomotive shell is plastic, the antenna can be internally mounted. To reduce the mechanical interference from an 82 mm whip antenna, I replaced it with a Molex 211140 “surface-mount” antenna (found at Mouser or DigiKey) mounted in the cabin area.

After a bit of trial and error, the mounting locations of the ProMiniAir Receiver and its “tethered” Amplifier are shown in the photo below. The tethered design provides improved flexibility for mounting in crowded conditions.

Mounting locations for the ProMiniAir Transmitter and its “tethered” Amplifier.

Routing of battery power and Dead-Rail DCC signal wiring to prevent interference with closing up the shell is always challenging. My solution is shown below.

Routing of the added battery power “+” and “-” and the ProMiniAir Receiver’s DCC Track Right/Left output.

Note the battery power wires “snaked” out between the bottom of the chassis and the rear truck, which connect to the “battery car” shown in the next photo.

Battery power connection between the “battery car” and the locomotive.

The “battery car” I used had a metal shell that did NOT have a removable top or bottom, so I was forced to fit a battery through the small door opening in the side of the car. Fortunately, I had an oddly-shaped battery from MTO (see here) that often fits in tight quarters where other 14.7V battery packs will not. This is a very valuable, if expensive ($80), battery configuration to have on hand for dead-rail installations.

The TRAIN-10 LI-ION 14.8V/3.0Ah battery from MTO Batteries. Its unusual shape helps it fit in many situations where other 14.7V battery packs will not.

The photo below shows the battery installed in the “battery car.” The battery power wires were passed through a small hole I drilled in the bottom of the car near the coupler. Because the battery is asymmetrically-shaped, its uneven weight distribution is counterbalanced by a steel weight strategically placed at the other end of the car.

The unusual shape of the battery facilitated squeezing it through the car’s side door.


The first demo shows we retained the standard track-powered, 2-Rail DCC Operation. The 2-Rail/Dead-Rail switch is set to 2-Rail to route the track’s DCC to the PS-3. The Battery power switch is set to CHARGE (OFF) to prevent draining the battery by powering the onboard ProMiniAir Receiver that is not providing DCC to the PS-3.

Demonstration of track-based, 2-Rail DCC Operation.

The video below is a demonstration of the Dead-Rail Operation in action. Battery power is provided by setting the Battery Power switch ON, and Dead-Rail DCC is sent to the PS-3 board by setting the 2-Rail/Dead-Rail switch to Dead-Rail. A Standalone ProMiniAir Transmitter (see this page for a detailed description) integrated with a WiFi-equipped EX-CommandStation provides a WiFi connection to an iPhone’s WiThrottle app. The commands from the WiThrottle app are converted to DCC by the WiFi-equipped EX-CommandStation. Then the ProMiniAir Transmitter connected to the EX-CommandStation transmits this DCC to the ProMiniAir Receiver onboard the locomotive.

A demonstration of Dead-Rail Operation

Final Thoughts

The most challenging part of the installation was finding a location inside the locomotive for the ProMiniAir Transmitter and its Amplifier that did not mechanically interfere with the rich set of installed components. Also, routing the added battery power and Dead-Rail DCC signal wiring was challenging. Physical examination is essential for developing a dead-rail conversion strategy, but some trial and error was required in the end!

In a future post, I will show how to mount the battery and the ProMiniAir Transmitter/Amp inside the “battery car” and simply output full-power DCC from the ProMiniAir Receiver/Amp to the locomotive, eliminating the hassle of finding locations for the Receiver and its attendant battery power wiring inside the locomotive. This configuration is much like what I do with steam locomotives: install the battery and ProMiniAir Receiver/Amp in the tender and then provide high-power DCC to the decoder inside the locomotive.

One intriguing possibility is that this option can provide high-power DCC to two or more locomotives simultaneously. This is because DCC inherently sends commands to multiple locomotives, and the 13A Cytron amplifier has enough power to handle multiple locomotives.

An Inexpensive Servo Controller with Dead-Rail Control

OK, you converted your locomotives to dead-rail (battery power, radio control) in part to eliminate the hassle of wiring the tracks and its attendant complications (polarity reversal on loops, etc.). But what about controlling other elements of your layout, including servos that have many uses, such as track switches and semaphores?

This post shows you how to make a low-cost (about $30-$40) servo controller (for up to 10 servos) that can be controlled with the same throttles you use for dead-rail control of your locomotives. The servo controller is based on this excellent Instructable: DCC Accessory Decoder Using Arduino Nano. Please read through this link to familiarize yourself. The significant difference between this post and the Intructable is we will obtain our power through a power plug or USB cable and receive our DCC from a ProMiniAir Receiver. I’ll give you those details below.


What you need:
Arduino Nano… (<$7.00ea).
Arduino Nano Servo Breakout Board… (<$2.50ea). You can connect up to 10 servos, each with a different DCC address, if you want.
Servos… (<$2.00ea).
Power: A wall-wart 9V DC power supply (~$7.50). You can use a “Type C” USB cable for power (and data/programming connection), which costs about $5.00 for the cable and power converter.
Receiver: A bare ProMiniAir Receiver – no amp is needed. Please contact me for this low-cost item ($14). The PMA Receiver gets +5V/GND power from the breakout board and sends +3.3V Logic DCC received wirelessly to the Arduino Nano (via the breakout board’s Pin 2), which contains the DCC accessory decoder firmware.


Physical Configuration: Mate the Arduino Nano into the Arduino Nano Breakout Board. Power is provided by either a 9V power converter that uses wall power or a USB connector that also provides a data link for downloading the firmware and establishing a serial connection for configuration.

The detailed connections from the Breakout Board to the ProMiniAir Receiver and the servos are shown below. The ProMiniAir Receiver connections 1) provide power to the ProMiniAir Receiver and 2) receive +3.3V logic DCC produced by the ProMiniAir Receiver. Up to 10 servos may be connected to the breakout board.

Closeup of connections to the ProMniAir Receiver and the servos.

Firmware and Configuration: Obtain the open-source software from the instructable URL (free). After loading the firmware into the Arduino Nano via the USB connection with the IDE of your choice (I use the Arduino IDE), you use the USB serial connection to configure the servo’s DCC address and motion parameters. This step is described in the Instructable.

As described in the Instructable, configuration is performed using the USB serial link. For the demo, I used the Arduino IDE serial monitor to enter the following commands to configure servos 3 and 4 (the number refer to the pin groups labeled on the breakout board, so the 10th servo is on pin group 12):

s 3 37 40 0 0 \n
s 4 37 40 0 0 \n

These commands are broken down as follows:
s pin-assignment dcc-address swing-degrees invert(0=no) continuous(0=no)


The photo below shows the components of the demo. The WiThrottle smartphone app communicates with the WiFi-equipped EX-CommandStation (see the inset in the image below) that is integrated with a ProMiniAir Transmitter that wirelessly transmits DCC commands to the ProMiniAir Receiver connected to the Breakout Board. This Transmitter is available on eBay by searching for “ProMiniAir”. Power is provided by a 9VDC power converter using wall power. A USB cable connected to your computer or a USB power conversion plug can be used.

Overview of Servo Controller.

A ProMiniAir Transmitter connected to a standard DCC Throttle, also available on eBay, will, of course, also work. Because the ProMiniAir Receiver is compatible with Airwire throttles, they can also be used to wirelessly control the servos using the “ACCY” (ACCessorY) button.

All DCC throttles and throttle apps can control both locomotives and DCC accessory decoders. The details vary from throttle to throttle, but they ALL can control accessory decoders. Below is the demonstration. Note the “Turnout” has been selected with accessory DCC address 37.

Wrap Up

I hope this post shows you that dead-rail control extends to other components of your model railroad: dead-rail is not just for your locomotives!

Using the “Standalone” ProMiniAir Transmitter with JMRI

This post starts with some “pieces to a puzzle” before connecting them to Dead-Rail. Bear with me.

Puzzle Piece 1: The open-source and powerful JMRI software is widely used to, among other things, reprogram DCC decoders, manage locomotive rosters, and serve as a throttle and layout control agent. If you are unfamiliar with JMRI, I urge you to review the project’s web pages.

Puzzle Piece 2: The excellent open-source DCC throttle project EX-CommandStation interfaces nicely with the JMRI software via a USB cable connected to a PC running JMRI.

Puzzle Piece 3: As a low-cost dead-rail transmitter solution, I integrated the ProMiniAir Transmitter with a WiFi-equipped EX-CommandStation to provide an entirely “standalone” capability that allows the user to use Smartphone throttle apps or computer throttle apps for dead-rail control of locomotives and accessory decoders. For details, see this web page. This item is available on eBay.

The ProMiniAir Transmitter is integrated with a WiFi-equipped EX-CommandStation for a completely “standalone” transmitter solution compatible with ProMiniAir receivers, Airwire CONVRTR/G3/G4, Tam Valley Depot DRS1 receivers, and several other dead-rail receivers.

The coup de grace: When integrated with the ProMiniAir Transmitter, the EX-CommandStation allows JMRI to configure and control dead-rail locomotives or stationary decoders connected to a ProMiniAir Receiver or other compatible dead-rail receiver.

This post shows you how.


We will use an example to demonstrate the process of reconfiguring a decoder and then controlling it with the JMRI software.

The LokSound 5 XL was originally fully programmed with the LokProgrammer, including the long DCC address of 4199.

When using JMRI to configure a decoder, the “Programming On Main” option must be used. The “On Programming Track” option WILL NOT WORK.

The JMRI DecoderPro is used to select and edit the locomotive’s decoder, programmed initially with a DCC address of 2199.

Our example will be to program a change of the decoder’s Long Address from 2199 to 2196.

In this case, we are changing the DCC long address.

When a decoder’s configuration changes, it is probably best to only transmit the changes to the decoder (the “Write changes on sheet” option).

The decoder’s address has been changed to 2196. The changes are then sent to the decoder wirelessly using Programming On Main mode. No decoder response is required or feasible.

Once we exit the Programming Pane, the modified DCC address is evident.

The decoder’s address is now 2196 and should respond to throttle commands on DCC address 2196.

Let’s use the JMRI throttle or a WiFi throttle to wirelessly control the DCC decoder at the new DCC address 2196. The ProMiniAir Transmitter and a ProMiniAir Receiver handle dead-rail transmission to the decoder.

The components used in the two demonstration videos.

Now the videos. First, use the JMRI throttle.

Throttle control using the JMRI throttle.

Now use a WiFi throttle.

Throttle control using the WiFi-connected TCS UWT-50 throttle.

The following two photos provide detailed views of the Standalone ProMiniAir Transmitter integrated with a WiFi-equipped EX-CommandStation available on eBay.

Photo showing JMRI throttle connected by USB to the ProMiniAir Transmitter’s EX-CommandStation has turned power ON. Note that the PMA Transmitter’s DCC address is 9900.
The JMRI throttle sends commands to DCC address 2196, shown by the ProMiniAir Transmitter’s display. The EX-CommandStation displays WiFi information for connecting a smartphone app to the EX-CommandStation. The ProMiniAir Transmitter then re-transmits the EX-CommandStation’s DCC to the ProMiniAir Receiver connected to a LokSound 5XL decoder.


If you use JMRI to configure or control locomotive and accessory DCC decoders using the Standalone ProMiniAir integrated with a WiFi-equipped EX-CommandStation, the following aspects should be borne in mind:

  1. The PC running JMRI must be connected to the EX-CommandStation with a USB cable. JMRI provides a connection test agent to verify communication between JMRI and the EX-CommandStation is functioning.
  2. When using JMRI DecoderPro to configure or reconfigure a DCC decoder, it must be in Programming On Main mode. The EX-CommandStation is connected to the ProMiniAir Transmitter using the EX-CommandStation’s standard DCC Track Right/Track Left outputs, and using the Programming Track mode will not work.
  3. Because transmission from the ProMiniAir Transmitter to a compatible receiver, such as the ProMiniAir Receiver, etc. is one way, communication between JMRI and the dead-rail decoder is one way: from JMRI to the decoder. Decoder responses back to JMRI are not supported.
  4. Suppose you need to load sound projects or make extensive configuration changes to a DCC decoder. In that case, it’s probably best to use the manufacturer’s specialized programmer directly connected to the decoder’s DCC Track Right/Track Left inputs. For dead-rail locomotives, this is greatly facilitated by having an easily-accessible external plug directly connecting to the Track Right/Track Left decoder inputs. This plug is dual-purpose for my dead-rail installs: 1) it plugs into the DCC outputs from the ProMiniAir Receiver/Amp, or 2) it plugs into the DCC outputs of the specialized decoder programmer.

Final Thoughts

JMRI can also interface with numerous other DCC Command Stations or throttles, so if you connect the “standard” ProMiniAir Transmitter to the DCC Track Right/Left output of these devices (also available on eBay), then you will have the same capability of using JMRI to wirelessly control and configure your locomotive or stationary decoders that are connected to a ProMiniAir Receiver or other compatible receivers.

ProMiniAir Transmitter for standard DCC throttles.

Using the ProMiniAir with DCC Accessories

One of the advantages of standards, such as the NMRA’s DCC standard, is that multiple vendors’ products are interoperable. There are dozens of DCC vendors, and they all “play nice” with each other (mostly).

The purpose of this post is to show you that you can use the ProMiniAir Receiver and Transmitter for more than just controlling locomotives – you can use it for dead-rail (wireless) control of any DCC accessory (stationary) decoder for lights, turnouts, etc., simply by connecting a low-cost ProMiniAir Receiver/Amplifier to the DCC inputs of one or more DCC accessory decoders. Generally, DCC accessory decoders are inexpensive, e.g., the NCE Illuminator for lighting ($22.40 for a 3-pack) or the Digitrax DS52 for turnout control ($20.36 for control of 2 turnouts).

Then you can use one of several transmitter options (that you also use for dead-rail control of your locomotives), including 1) an Airwire transmitter, 2) a WiThrottle smartphone app connecting to a Stand-alone ProMiniAir Transmitter integrated with a WiFi-equipped EX-CommandStation, or 3) any DCC throttle connected to a ProMiniAir Transmitter. All three options are designed to easily set the accessory address and activate the device while simultaneously controlling the locomotive or locomotives.

For DCC accessory decoders, nothing extra is required since the DCC accessories get their power from the DCC output from the ProMiniAir Receiver. Battery power can be used in remote or inconvenient locations. You can also wirelessly configure the accessory decoders, such as the address. No proprietary accessory devices are necessary since dozens of vendors use DCC, a widely-adopted standard that fosters competition and innovation. There is no “vendor lock” wedded to one manufacturer’s “solution.” The videos show how to activate DCC accessory decoders using the ProMiniAir Receiver in conjunction with these Transmitter options. 

An Example

In this example, three NCE Illuminator lighting accessory decoders for connecting LEDs for lighting effects are “daisy-chained” with a DCC connection to the output of an unmodified ProMiniAir Receiver/Amplifier using 14.8V battery power. Their addresses were set to 10 (white light), 20 (red light), and 30 (green light). At the end of the DCC daisy chain is a Digitrax DS52 set to address 30 so that it will activate a Tortoise slow-motion switch machine. So, the throttle selection of an accessory at address 30 will activate both the green light and the switch machine. No additional hardware is required.

Demonstration setup connecting an unmodified ProMiniAir Receiver/Amp to various DCC accessory decoders. Note how multiple DCC accessory decoders can be “daisy-chained” together.

The videos below show wireless control of the locomotive and the DCC accessories with 1) an Airwire transmitter, 2) a standard DCC throttle connected to a ProMiniAir transmitter, or 3) a WiThrottle smartphone app connecting to a low-cost stand-alone ProMiniAir Transmitter integrated with a WiFi-equipped EX-CommandStation.

An Airwire throttle transmitting to a ProMiniAir Rx/Amp connected to accessory decoders while simultaneously transmitting to a dead-rail locomotive with an onboard ProMiniAir Receiver/Amp. Note the activation of the switch motor!
A standard DCC throttle connected to a ProMiniAir Transmitter that transmits to a ProMiniAir Rx/Amp connected to accessory decoders while simultaneously transmitting to a dead-rail locomotive with an onboard ProMiniAir Receiver/Amp. Note the activation of the switch motor!
A WiThrottle smartphone app transmitting to a stand-alone ProMiniAir Transmitter integrated with a WiFi-equipped EX-CommandStaion that transmits to a ProMiniAir Rx/Amp connected to accessory decoders while simultaneously transmitting to a dead-rail locomotive with an onboard ProMiniAir Receiver/Amp. Note the activation of the switch motor!

Additional Information

Each accessory decoder has its method for setting up its DCC address, but this is usually as simple as 1) set the “programming jumper” on the accessory decoder if it has one, 2) turn on DCC power to the ProMiniAir receiver, 3) push a “configuration button” on the accessory decoder (if it uses one), 4) use your throttle to select an accessory, 5) enter the accessory’s address you want the accessory to use, 5) use your throttle to push the button that “throws” (activates) the device, 5) turn off DCC power to the device and disconnect an “activation pin” (if it uses one), and 5) reapply DCC power.

At this point, the DCC accessory “remembers” its address so that you can now use your throttle to select the accessory’s address and push the appropriate button to activate or de-activate the accessory.

Final Thoughts

Well-thought-out standards, such as the NMRA’s DCC standard, are good. I hope you can see that connecting an unmodified ProMiniAir Receiver/Amp to any DCC accessory decoder(s) from numerous vendors is effortless rather than using a limited, proprietary wireless solution for controlling accessories such as turnouts and lights while at the same time controlling your locomotives.

I thank one of my customers, Jeffrey Jackson, for the question that led me to investigate this topic!

Using the Pololu TB9051FTGU and TB67H420FTG Motor Drivers as DCC Amplifiers for Dead-Rail

Based on a Dead Rail Society Facebook post by Rich Steenwyk, I investigated the suitability of using the Pololu TB9051FTG ($11.95, 2.6A continuous, 1″ x 1″) and the Pololu TB67H420FTG ($19.95, 3.4A continuous, 1″ x 1.2″) as a DCC amplifier in conjunction with the ProMiniAir Receiver for Dead-Rail operation. This post investigates their feasibility and shows connection details.

Feasibility and Connections

The Pololu TB9051FTG is 1″ x 1″

The TB9051FTG truth table below shows the proper bipolar operation on highlighted rows. Note the pin values for EN and ENB. Based on this truth table, this device should be capable of delivering bipolar DCC to the decoder.

The TB9051FTG truth table

Connections for the Pololu TB9051FTG are shown below. When connected to a “large” decoder such as the LokSound 5 XL shown here, a current-limiting resistor is required to prevent the TB9051FTG from shutting down. The Negative Temperature Coefficient (NTC) resistor is initially at 1 Ohm, but with increased current demand, it heats up, reducing its resistance and voltage drop to a low value. This solution is superior to a high-wattage constant 1 Ohm resistor CVP recommends for its smaller Airwire CONVRTR receivers.

The ProMiniAir Receiver/TB9051FTG connections

A close-up of the connections for the Pololu TB9051FTG is shown below. Bipolar 3.3V DCC outputs and +5V from the ProMiniAir Receiver are required for proper operation. Note the jumpers that set EN to VCC (High), ENB to GND (Low), and OCC to VCC (High, retry after shutdown).

Close-up of ProMiniAir Receiver/TB9051FTG connections

Example DCC output for the decoder provided by the ProMiniAir Rx/TB9051FTG combination is shown below.

DCC output from the ProMiniAir Rx/TB9051FTG combination

A demo of the Pololu TB9051FTG in dead-rail operation, which will NOT operate with the LokSound 5 XL (5A max) without a current-limiting resistor, is shown below.

Demo of the ProMiniAir Rx/TB9051FTG combination

Now let’s turn to the larger, more expensive TB67H420FTG.

The Pololu TB67H420FTG is 1″ x 1.2″

The TB67H420FTG truth table below shows the proper bipolar operation on highlighted rows. Note the value of PWMx must be High. Based on this truth table, this device should be capable of delivering DCC to a decoder.

The TB67H420FTG truth table

Connections for the Pololu TB67H420FTG are shown below. When connected to a “large” decoder such as a LokSound 5 XL, a current-limiting resistor is NOT required to prevent the TB67H420FTG from shutting down. However, the TB67H420FTG is more expensive and larger than the TB9051FTG.

The ProMiniAir Receiver/TB9051FTG connections

A close-up of the connections for the Pololu TB9051FTG is shown below. As with the TB9051FTG, bipolar 3.3V DCC inputs from the ProMiniAir Receiver are required for proper operation. Note the single jumper connecting VCC (High) to HBMODE that turns on the single-output function. Jumpers between A+/A- and B+/B- deliver the maximum single DCC output of 3.7A. 

Close-up of the ProMiniAir Receiver/TB9051FTG connections

Testing with the TB9051FTG when interfaced with a ProMiniAir Receiver was successful.


Both the Pololu TB9051FTG ($11.95, 2.6A, 1″ x 1″) and TB67H420FTG ($19.95, 3.4A, 1″ x 1.2″) can be configured to deliver full-power DCC to a decoder when used in conjunction with a Dead-Rail receiver such as the ProMiniAir Receiver. They require five connections to the ProMiniAir receiver, including 3.3V or 5 V bipolar DCC outputs. The lower power TB9051FTG does require a current-limiting resistor for some decoders that produce large “in-rush” currents during power on, and the TB9051FTG does not.

The Adafruit DRV8871 amplifier is perhaps a better choice because:

  • Cheaper: $7.50+s&h
  • Comparable output: 3.6A
  • Smaller: 1″ x 0.8″
  • Requires only four connections to the receiver: GND, VPOWER, DCC+, and DCC-

The disadvantage of the Adafruit DRV8871 and the Pololu TB9051FTG is they require a current-limiting resistor for some larger decoders. The Pololu TB67H420FTG does not need this current limiter, but it’s slightly larger and more expensive. You decide!

Integrating the ProMiniAir Receiver with QSI Decoders using Gwire Connections

Users of the QSI Revolution or Titan series of DCC decoders may want to take advantage of these decoders’ built-in Gwire connections for radio control but cannot find the discontinued Gwire receiver. This post describes how you can use the ProMiniAir Receiver as a “drop-in” replacement for the Gwire receiver so that you can control the locomotive with the following radio-control throttles:

  • CVP Airwire throttles such as T5000 and T6000
  • NCE’s discontinued Gwire throttle
  • Our ProMiniAir Transmitter
  • Stanton Cab
  • Tam Valley Depot DRS1 transmitter

Integrating the ProMiniAir Receiver with the QSI decoder’s Gwire capability is easy.


I strongly recommend you review Greg Elmassian’s excellent post, “QSI AirWire & GWire cab.” It deals with using the Gwire receiver with various QSI decoders, which have a built-in flat flex cable (FFC) plug initially designed to connect to the discontinued and now hard-to-find Gwire receiver.

The QSI Titan FX-DO decoder is an example of a QSI decoder equipped with a Gwire flat flex cable (FFC) plug.

The ProMiniAir Receiver is highly compatible with the Gwire receiver and is somewhat more flexible with more channels and DCC-based reconfigurability. The ProMiniAir Receiver also has a smaller footprint (1.1″ x 0.76″). The modular design approach of the ProMiniAir makes it feasible to take full advantage of the QSI’s Gwire capability to use the ProMiniAir without an additional amplifier.

Integration of the ProMiniAir Receiver using Gwire Connections

The only additional item required is a Parlex HF05U-03-ND 5-position flat flex cable (FFC, 5 Position, 1.00mm conductor spacing, 3″ length, one side connector on both ends), found at Digi-Key here, that plugs into the QSI Gwire plug. Other brands of 5-position flat flex cables are available, notably from Molex.

The Parlex Flat Flex Cable (FFC) 5Pos 1.00mm, 3″

The ProMiniAir Receiver is easily connected to one end of this cable by soldering 30 gauge wires that match up well with the dimensions of the flat flex cable, as shown below.

The soldered connections join 30 gauge wires to one end of the flat flex cable. Only three connections are required: GND, +5V, and DCC.

The other ends of the 30 gauge wires are soldered to the ProMiniAir Receiver, as shown below.

The three 30 gauge wire connections to the ProMiniAir Receiver. Optional connections to an LCD were soldered in place for diagnostic purposes, and these LCD connections are NOT required for final operation.

No DCC amplifier is required because the QSI decoder creates DC voltage from its onboard rectifier. The QSI Gwire connections provide the +5V/GND needed to power the ProMiniAir Receiver, which sends 3.3V Logic DCC back to the QSI decoder.

The QSI decoder must be configured to accept DCC from the Gwire connection by setting “indexed” CV56.1 to 1. This means first setting CV49 to 1 and then CV56 to 1. See Greg Elmassian’s excellent post for more details. Once the decoder accepts this setting, it will only respond to DCC from the ProMiniAir receiver until the decoder is reset, as Elmassian’s post described.

My only addition to Elmassian’s information is that a firmware update may be needed before the decoder will “accept” this setting. I could not successfully update CV56.1 on a QSI Tital FX-DO I used for the testing shown in this post until I updated the decoder’s sound file.


The photo below shows the demonstration setup.

Demonstration setup

The Digitrax DCS52 DCC throttle supplies Track Right/Left DCC, which only powers the QSI Titan FX-DO and the ProMiniAir receiver via the Gwire flat flex cable. The Airwire T5000 throttle will then transmit DCC commands received by the ProMiniAir Receiver, sending 3.3V Logic DCC back to the QSI Titan FX-DO that controls sound and the motor. DCC commands from the DCS52 DCC throttle are ignored.

Below is the video demonstration

Demonstration of the ProMiniAir Receiver using the QSI’s Gwire connections. No additional amplifier is required. Note that the decoder is responsive only to the Airwire throttle. The motor displays an observable “jerk” when changing directions.


I have just recently started using QSI Titan decoders. They are challenging to find but produce fantastic sounds and are very flexible. The modular design of the ProMiniAir Receiver makes it very simple to take full advantage of the QSI decoder’s Gwire capability. I provide the Gwire-compatible ProMiniAir Receiver (including the cable) for $19.99+S&H on eBay here. Plug the flat flex cable into the QSI decoder’s Gwire connector, program CV56.1=1, and you are ready to go with radio control!

My thanks to Greg Elmassian for his very useful posts.

A Magnetic Power Switch for Large Scale Locomotives

Recently, I was modifying an O-Scale Sunset 3rd Rail L-105 locomotive for combined 2-rail track power or battery-powered radio control (bprc or dead-rail), where the switches were inconspicuously located at the front of the tender but were challenging to reach once the tender and locomotive were coupled.

Inconspicuous, but inconveniently-located 2-rail/dead-rail switches on a L-105 locomotive

To make matters worse, power to the QSI Titan FX-DO decoder mounted in the tender must be cycled OFF and quickly back ON to activate the smoke unit. Given the location of the switches, this operation just wasn’t possible. What to do?

Well, how about using a “Reed Switch” to turn the power on or off using a magnet? In my research, I found numerous model railroad applications of Reed Switches inserted “inline” with power. However, Reed Switches cannot typically handle the large currents (3A or more) we encounter in O-Scale and larger. So, direct inline use of a Reed Switch was not feasible.

This site mentioned using a Pololu Big Pushbutton Power Switch that can handle large currents (up to 8A), so I thought I might be able to connect a “normally-open” Reed Switch to the convenient “push button” inputs on the Pololu Switch shown below.

Close-up of the Pololu Big Pushbutton Power Switch, MP, showing the intermittent pushbutton input.

This short post shows how to connect the Pololu Big Pushbutton Power Switch, MP, which can handle up to 8A, with a normally-open Reed Switch for convenient magnetically-controlled power ON/OFF.


As shown in the following three photos, assembly is straightforward. The only caveat is the Reed Switch is somewhat delicate, so bending the leads to the easily-broken glass capsule requires gripping the lead between the capsule and the bend, as shown in the photo below.

Technique for bending the leads to a Reed Switch to prevent breakage

Below is the finished device. Only eight solder joins are needed, and heat shrink is used to cover the Reed Switch’s solder joints. The long wiring lead to the Reed Switch provides mounting in a convenient location, including INSIDE non-magnetic metal shells!

Power Switch/Reed Switch Connections

The close-up below shows the straightforward connections to the Pololu Big Pushbutton Power Switch, which handles up to 8 A. Larger-capacity switches (up to 16A) are available from Pololu.

Close-up of Power Switch/Reed Switch Connections

Let’s demonstrate using this device.


The video below is the “proof-in-the-pudding” showing that the Reed Switch controls the ON/OFF of the Pololu Big Pushbutton Power Switch.

Demonstration of the Pololu Big Pushbutton Power Switch controlled by a Reed Switch to turn the power ON and OFF with a magnet. A battery supplies power, and the DC output is provided to a ProMiniAir receiver/amp that generates the DCC output shown on the oscilloscope.


So there you have it: a simple magnetically-controlled switch that handles large currents.

An added benefit is the Reed Switch can be mounted INSIDE a non-magnetic metal shell, such as brass! Magnetic fields pass through these metals.

A Simple AC-to-DC Converter

Sometimes folks want radio control of their locomotives but prefer to use track AC (including DCC) instead of a battery to provide DC power for the radio receiver and amplifier. This post shows how to repurpose the DCC converter PCB customarily provided with the ProMiniAir transmitter to convert track AC to DC power for the ProMiniAir receiver.

DCC Converter Modifications

The original purpose of the “DCC Converter” is to use a DCC throttle’s Track Right/Track Left output and convert it to 5V DCC and 5V power for the ProMiniAir transmitter. See the Figure below.

The original purpose of the “DCC Converter” is to provide 5V power and 5V DCC signals to the ProMiniAir transmitter.

One of the strengths of the modular approach used for the ProMiniAir transmitter and receiver is that you can “repurpose” components. The DCC Converter can be modified to use the AC track input to provide filtered, higher-voltage DC power.

Below is the repurposing idea: add a large capacitor (in series with a 100 Ohm resistor and a 1N4001 diode) across the “+” and “-” terminals of the rectifier and route out the rectifier’s DC output. Smaller onboard capacitors (10uf and 100nf) also filter out higher-frequency noise that large capacitors sometimes do not effectively filter.

One end of a 100 Ohm resistor and the + terminal of a 1N4001 diode are connected in series (and in parallel to each other) to the capacitor’s + terminal. The other end of the 100 Ohm resistor and the – terminal of the diode are connected to the rectifier’s + terminal. The capacitor’s – terminal is directly connected to the rectifier’s – terminal to form the DC ground. My thanks to for the idea of adding a resistor and diode in series with the capacitor.

When the throttle is turned on, the 100 Ohm resistor prevents an “in-rush” short circuit that might cause the throttle to cut off. When charging, the 1N4001 diode is reverse-biased with a large resistance. If AC power is interrupted, current flows out of the capacitor through the low resistance path of a forward-biased 1N4001 diode to maintain DC power output.

How keep-alive works. The resistor regulates charging, and the diode regulates discharging.
A large capacitor (along with a 100 Ohm resistor and a 1N4001 diode) can be added to the DCC Converter to output heavily-filtered DC power.
Connections between the AC-to-DC Converter with a large keep-alive capacitor and the ProMiniAir receiver/amp. The switch is NOT required if a large keep-alive capacitor is not used.

In fact, it is possible to forgo the large capacitor since these onboard capacitors do a pretty good job of “cleaning up” the DC output of the rectifier. This is a good option if space is at a premium.

The filtered DC output can now provide DC power to a ProMiniAir receiver/amp, just as a battery would. If the added capacitor is large enough, it will function as a “keep-alive” capacitor many DCC decoders use to prevent track power interruptions.

An Example

The photo below shows a real-world example of the conversion using a 10000uf “keep-alive” capacitor originally used with a Zimo decoder. The size of the capacitor dominates that of the DCC converter!

A modified DCC Converter using a very large 10000uf “keep-alive” capacitor.
Close-up of the modified DCC Converter

The oscilloscope trace below demonstrates the ability of the modified DCC Converter to produce clean DC power for your ProMiniAir (or other) receiver.

Track AC input and filtered DC power output from a modified DCC Converter with an added large (10000uf) capacitor

Note how “clean” the DC power output is (13.8VDC). Square wave track inputs at 16.8V are a severe test because they produce frequencies at odd multiples of the square wave’s frequency, e.g., at 6KHz, 18KHz, 30KHz, etc. for the example above, but very little of these frequencies “bleed through” to the DC power output.

Simplifying further, we can use the DCC Converter without an added capacitor, relying on the onboard capacitors to filter the rectifier’s “+” and “-” output. This option might be useful if space is at a premium.

Modified DCC Converter with NO capacitor

The DC power output is still clean, but you lose the “keep-alive” that a large capacitor provides.

Track AC input and filtered DC power output from a modified DCC Converter with NO added capacitor


So there you have it – the DCC Converter can be slightly modified to provide filtered DC power and “keep-alive” capability. The modified DCC amplifier with a sizeable keep-alive capacitor costs $10 + shipping. Without the capacitor, the modified DCC Converter is $7 + shipping.

Integrating a Fan-Driven Smoke Unit with QSI DCC Decoders

I have come across QSI decoders for some O-Scale Sunset 3rd Rail (2-rail) locomotives, including the beautiful D&RGW L-105. QSI decoders produce fantastic sound and provide highly flexible control of locomotive behavior, but at the price of a steep learning curve.

During the dead-rail conversion of the L-105, I could not figure out initially how to integrate a fan-driven smoke unit with the QSI “Titan FX-DO” decoder found in the tender of the Sunset L-105. But the decoder’s sound was so good that I persisted in my research and finally came across Greg Elmassian’s excellent post on integrating fan-driven smoke units with the standard QSI “Titan” (but NOT the Titan FX-DO that I was dealing with) decoder, which gave me an excellent start. Still, it did not provide the entire solution.

This post will provide all the details of integrating a QSI Titan FX-DO decoder with a fan-driven smoke unit.

Background Information

For each of their decoders, QSI defines a large number of “Features” that are configured by “indexed CVs” that define the Feature’s behavior. Based on Elmassian’s post, the Firebox Feature (F=122) controls the Smoke Unit Fan, and Rear Cab Lights Feature (F=118) controls the Smoke Unit Heater. 

The specifics of Feature F‘s behavior are defined by several “characteristics” or “attributes” (A=0, 1, etc.), such as maximum output, output duration, etc., that are given specific values V via CV 55.F.A = V.

QSI also defines several “Port numbers” P as fixed outputs on the decoder that control physical devices such as lights and our Smoke Unit. To tie all of this together, QSI then “maps” a Feature F to a Port P to convey the Feature’s behavior (via the values V of its attributes A) to a physical device using CV 115.F.0 = P. The Firebox Feature (Fan) F=122 will be “mapped” to output Port 9, and the Rear Cab Lights Feature (Heater) F=118 will be “mapped” to output Port 12.

I will NOT discuss how to set or reset the configuration variables (CV) of a QSI decoder with the Quantum Programmer. These details can be found in the documents here!

I strongly urge you to familiarize yourself with the QSI decoder’s QSI DCC Manual. Greg Elmassian’s site is also essential for understanding some features of QSI decoders that are confusing or not mentioned in the official documentation. Greg’s site is extensive, so use the site’s navigation features to find helpful information on QSI decoders. This site also provides essential information on how to program QSI decoders. These decoders are highly flexible: they produce fantastic sound and offer an extensive range of locomotive behavior control. But configuring them is complex. 

In summary:

  • CV 115.F.0  = P: Map Feature F to Port P
  • CV 55.F.A = V: For Feature F, set Attribute A to Value V

Initial Review

Warning: this section is somewhat technical, and you can skip down to the section on Decoder Programming.

The initial connections for the FX-DO decoder found in the L-105 are shown below.

The original FX-DO pinouts with future expansion for the fan-driven smoke unit

I also noticed the decoder had a “SMOKE” plug (see photo below). How do I use it?

View showing the FX-DO’s smoke plug

I connected the smoke unit’s heater to this plug. The sound came on as expected upon initial power-up, but no power was applied to the smoke unit’s heater. Disappointing.

While fiddling around some more, I quickly toggled the track power off and back on – wonder of wonders, the heater fully activated, and it was boiling! None of the information I could find discussed this method for activating a smoke unit’s heater in this fashion – it was just serendipity that I discovered this Feature.

Next are photos showing how I tracked down the connections that would control the output from this “SMOKE” plug.

First, I looked at what connects to the SMOKE plug’s “-” and “+”. The photo below shows that SMOKE “-” connects to the Rectifier’s “-“, which acts as a ground, and power transistor Q7’s drain D7 connects to the SMOKE “+”. The transistor’s source S7 connects to the Rectifier “+”, a high-power DC voltage source.

Q7’s gate G7 “opens”/”closes” source S7 (powered by Rectifier +) that sends current to drain D7, which is directly connected to Smoke +.

What control’s this power transistor’s gate G7? A bottom view of the same board reveals that Q7’s gate G7 is directly connected to transistor Q15’s collector C15. This transistor’s emitter E15 connects to a resistor R12 connected to the “ground” provided by the Rectifier “-” and Q15’s base B15 controls whether collector C15’s voltage is shorted to the Ground through emitter E15 or acts as an open circuit; i.e., this is a low-power switch controlling the turn on/turn off of the power transistor Q7.

Q15’s base B15 “opens”/”closes” emitter E15 that sends current through collector C15, which is directly connected to Q7’s G7 (photo above).

What controls Q15’s base B15? The photo below shows part of the surprising answer that a pin on the top board is directly connected to Q15’s base B15. There might be other electronics that set the voltage on base B15 (and this pin), and this pin did not seem to be connected to anything else on the top of the board.

The top board shows a pin’s connection to transistor Q15’s base B15, which turns on/off the smoke unit’s heater.

At this point, I verified that after the decoder was turned off for an extended period and then turned back on, the smoke unit’s heater was off, and the voltage on this newly-discovered pin was held at ground voltage. Quickly toggling DCC power to the decoder off and back on revealed the voltage on the pin was 5V, and the smoke unit’s heater was on. Something in the rest of the electronics was setting this voltage, almost surely through a “pull-up” resistor, connecting Q15’s base B15 to a switched 5V/ground source that the decoder was controlling – I didn’t find it.

And, when I shorted this pin (and Q15’s base B15) to the Ground, the smoke unit would turn off! No harm, no foul if I ground/unground this pin to turn the smoke unit’s heater off/on. Now we can control how long the smoke unit’s heater is on and off!

For reference, the figure below is a guess at the QSI Titan FX-DO’s smoke unit heater control electronics. This guess circuit satisfies the requirement it reproduces in simulation the results I have measured, as shown in the next section.

QSI Titan FX-DO smoke unit heater control electronics

Next, we program the decoder to control the turning on/off of this newly-found heater switch.

Decoder Programming

Following Greg Elmassian’s superb post, I reprogrammed the Titan FX-DO as follows to activate the decoder’s outputs (called ports) that will ultimately be physically connected to wiring that controls the power to the smoke unit’s heater and fan:

Fan: Feature: F=122 (Firebox), Port: P=9

  • CV115.122.0 = 9 (Default: 9): Map Feature F=122 (Firebox) to Port P=9
  • CV55.122.11 = 100 (Default: 0): For Feature F=122, set Min Attribute A=11 to Value V=100. Tune this. Chuffing is less evident if this value is too large, and the fan will not spin if this value is too small.
  • CV55.122.12 = 255 (Default: 255): For Feature F=122, set Max Attribute A=12 to Value V=255.
  • CV55.122.13 = 100 (Default: 0): For Feature F=122, set Mid Attribute A=12 to Value V=100. Tune this. Chuffing is less evident if this value is too large, and the fan will not spin if this value is too small.
  • CV55.122.17 = 1 (Default: 1): For Feature F=122, set Rise Time Attribute A=17 to Value V=1. Tune this.
  • CV55.122.18 = 22 (Default: 1): For Feature F=122, set Fall Time Attribute A=18 to Value V=22. Tune this.

Heater: Feature: F=118 (Rear Cab Lights), Port: P=12. Several of the following CV values are very important to set correctly. Otherwise, you might burn out the smoke unit! During testing, please ensure sufficient smoke fluid is loaded into the smoke unit and be prepared to turn off power to the locomotive quickly should the smoke unit get too hot and produce excessive Smoke!

  • CV115.118.0  = 12 (Default: 12): Map Feature F=118 (Rear Cab Lights) to  Port P=12
  • IMPORTANT!!! CV55.118.0 = 1 (Default: 0): For Feature F=118, set Rear Cab Lights Initial State Attribute A=0 to Value V=1: activate Feature. This setting was NOT discussed in Elmassian’s post. You want the modulation function ON at startup to prevent smoke unit heater burn-out.
  • CV55.118.1 = 85 (Default: 85): For Feature F=118, set Active Conditions Attribute A=1 to Value V=85: active for all conditions: FOR; REV; Neutral From Forward, NFF; and Neutral From Reverse, NFR
  • IMPORTANT!!! CV55.118.12 = 200 (Default: 255): For Feature F=118, set Max Attribute A=12 to Value V=200. A value of 255 fully turns the heater OFF, and a value of 0 fully turns the heater on! It is essential to tune this value to prevent burn-out of the Smoke Unit Heater!!! See the calculation in the section below.
  • IMPORTANT!!! CV55.138.2=253. The indexed CV55.138.2=Value sets the “Multiple Automatic Lights #3” controlled by the same function key, which by default is F12. When Value=253=1111101b, the Firebox (=> Fan, Feature F=122) is controlled by F12 (bit 4=1 of Value), but the Rear Cab Lights (=> Heater, Feature F=118) have no F# control (bit 1 = 0 of Value). This prevents the turn-off of the smoke unit’s heater modulation, preventing burn-out. This table from the QSI DCC Manual shows which bits activate which Feature.

The upshot is that F12 activates the smoke unit fan, and the power to the smoke unit heater is ALWAYS modulated to prevent burn-out.

Now that we have programmed the decoder’s control for the smoke unit’s fan and heater, we need to connect these decoder outputs to the rest of the circuitry on the decoder.

Decoder Board Modifications

With the proper decoder output ports L12 (for the heater) and L9 (for the fan) properly configured, the photo below shows the simple wiring connections from these two ports to physically control the smoke unit’s fan and heater.

Modifications to the decoder’s top board to control the smoke unit’s heater and fan

The top board’s physical modifications were the following:

  • Added a wire (Brown) connecting Port 12 (sometimes designated L12) to the pin indicated in the photo above. This allows L12 via Feature 118 (Rear Cabin Light) to modulate the voltage applied to the smoke unit’s heater. The smoke unit heater is activated by powering off and quickly back on: I have never seen this Feature discussed.
  • Spliced +5V (Purple wire) to the smoke unit’s Fan “+” (Blue wire), and added a wire (Grey) connecting Port 9 (sometimes designated L9) to the smoke unit’s Fan “-“. This allows L9 to modulate the power applied to the Smoke Unit Fan via Feature 122 (Firebox).
  • Note that the smoke unit’s heater is already connected to the SMOKE plug.

I think you will agree that these modifications are easy!

Tuning for a Particular Smoke Unit

For my testing, I used a small MTH smoke unit with a heater resistor value of 8 ohms. The rectified track voltage is about 14.8V (about the battery voltage I use for my dead-rail applications). Experience indicates that good smoke output requires about 6 W. A value CV 55.118.12 = 0 will deliver full power to the heater: (14.8V*14.8V)/(8ohms) = 27.4W, which is far too high. We fix this problem by reducing the percentage of time the power is ON to the smoke unit heater.

Typically, decoders do this by repeatedly fully turning ON the device, such as a light, for a short period by actively connecting the “-” of the device to the Ground and allowing current to flow, and then turning the device OFF by open circuiting the device’s “-” to prevent current flow for a short period. This scheme is called Pulse Width Modulation (PWM), and the percentage of time the device is fully ON (grounding) is called the Duty Cycle (D). A decoder’s CV value of 255 corresponds to a duty cycle of D=100%, 128 corresponds to about D=50% (really 128/255), etc.; i.e., D=(CV_Value)/255.

The next part is a little confusing. If the decoder’s heater control (L12) is ON (grounding), then our smoke unit heater is turned off OFF. When the decoder’s control (L12) is OFF (open-circuit), other electronics in the QSI decoder “take over” and pull the heater’s control voltage ON (+5V), turning ON the heater! So if the duty cycle of the decoder’s control (L12) is D (percentage of time it GROUNDS), the duty cycle of the smoke unit’s heater Dheater = (1-D) = (1-CV_Value/255) = (255-CV_Value)/255.

Relationship between the decoder heater control (L12) duty cycle, D, and the heater’s duty cycle, Dheater. The measurement point is at the pin connected to decoder port L12 by the Brown wire shown in a previous photo.

One of the simplicities of the Pulse Width Modulation (PWM) delivered by DCC decoders to modulate power to lights, smoke units, and other devices is that the average power delivered, designated Pavg, is equal to the maximum power, Pmax, times the “duty cycle.” For our smoke unit heater Pavg = Pmax * Dheater = Pmax * (1-D) = Pmax * (255-CV_Value)/255.

So let’s determine the value of CV 55.118.12, which ranges from 0 (D=0% -> Dheater=100%) to 255 (D=100% -> Dheater=0%) to produce a “safe” average power of 6W.

  • Average Power: Pavg – example: Pavg=6W. I don’t recommend much more than this value.
  • Track/Battery Voltage: Vmax – example: 14.8V. This value is typical of DCC command stations and “4s” (4 cells in series) LiPo batteries.
  • Heater Resistance: R – smoke unit’s resistance generally ranges from 8 to 27 ohms. My MTH smoke unit’s heater resistance is 8 ohms. Some Lionel smoke unit heaters have a resistance as high as 27 ohms.
  • Maximum Power: Pmax – the maximum power that can be delivered to the heater by track/battery voltage. Pmax = Vmax * Imax = Vmax * (Vmax/R) = (Vmax*Vmax)/R.

Using ohms law for a resistor I=V/R and how CV_Value corresponds to duty cycle D=(CV_value)/255, the average power is Pavg = Pmax * Dheater = Pmax * (1-D) = (Vmax*Imax) * (1-D) = (Vmax*Vmax/R) * (255-CV_value)/255. Rearranging the deck chairs to solve for CV_Value: (255-CV_Value) =(Pavg*R*255)/(Vmax*Vmax) or CV_Value = 255*(1-(Pavg*R)/(Vmax*Vmax)).

For our example CV_Value = 255*(1 – (6W*8ohm)/(14.8V*14.8V) ) = 200; i.e., CV55.118.12 = 200. You can, of course, tune this value should the smoke unit produce too much or too little Smoke. Please ensure the smoke unit is properly loaded with smoke fluid before testing.

Just remember that CV55.118.12=255 fully turns OFF the smoke unit heater, and CV55.118.12=0 fully turns it ON.

Addendum: Using an Inverter to Control the Smoke Unit Heater

One of the defects of directly connecting the output of L12 to the pin connecting to Q15’s gate G15 is control is inverting: when the decoder turns OFF the heater control, the heater is ON, and vice versa. We can fix this problem by using a small, 3-component transistor inverter as shown below.

The inverter circuit provides non-inverting control of the smoke unit heater.

With the inverter, there is no longer the possibility of burning the heater out should the decoder’s L12 control be OFF.

New settings with the inverter:

  • CV55.118.0 = 0 (Default: 0): For Feature F=118, set Rear Cab Lights Initial State Attribute A=0 to Value V=0: Feature NOT active at start-up. When the controlling port (L12) is OFF, the inverter keeps the heater OFF. 
  • CV55.118.12 = 55 (Default: 255): For Feature F=118, set Max Attribute A=12 to Value V=5. A value of 0 fully turns the heater OFF, and a value of 255 fully turns the heater on! It is essential to tune this value to prevent burn-out of the Smoke Unit Heater! The inverter now matches the duty cycle of the controlling port L12.
  • CV55.138.2=255. The indexed CV55.138.2=Value sets the “Multiple Automatic Lights #3” controlled by the same function key, which by default is F12. When Value=255=1111111b, the Firebox (=> Fan, Feature F=122) is controlled by F12 (bit 4=1 of Value), and the Rear Cab Lights (=> Heater, Feature F=118) is also controlled by F12 (bit 1 = 1 of Value). The inverter now allows us to turn ON/OFF the heater with L12 because port L12’s OFF state turns the heater OFF.
Using an inverter now allows non-inverting control of the smoke unit heater.


Below is the “proof-in-the-pudding” video. Track DCC was on (no smoke) while moving backward, and after stopping, quickly toggled off/on to activate the smoke unit. F12 was on to activate the fan.

Preliminary demo showing a QSI FX-DO decoder interfaced with a fan-driven smoke unit
Final demo showing a QSI FX-DO decoder interfaced with a fan-driven smoke unit


This is a difficult and technical post, but if you want to use a fan-driven smoke unit with a QSI Titan FX-DO decoder found in some Sunset 3rd Rail 2-rail locomotives, I think you will be rewarded with an excellent decoder to control your locomotive!

Dead-Rail Conversion of a Max Gray D&RGW L-131, 2-8-8-2, 2-Rail


I received this beautiful 2-Rail Max Gray D&RGW L-131 from a private seller. As an older O Scale model, it required updating for DCC-controlled lighting, motor, sound, smoke, and dead-rail operation (battery power, radio control).

This post is brief because many of the modifications are similar to those from past posts. The most significant modification was removing the open-frame motor with a more “modern” Pittman motor. DCC decoders struggle to control old, open-frame motors. Also, these older motors do not have the strong rare-earth magnets that improve efficiency – an essential consideration for battery power.

LokSound 5 XL Sound Project Settings

I selected a LokSound 5 XL because it provided plenty of power (5A) for a large locomotive. I chose #3608 based on photos of the L-131 I could find online. A heavily-modified LokSound UP “Challenger” Sound Project was selected because of its passing similarity to the L-131.

LokSound 5 XL Pin-out. Note the jumpers to split the heater current and provide dual fan control.
LokSound 5 XL Sound Project Settings #1
LokSound 5 XL Sound Project Settings #2
LokSound 5 XL Sound Project Settings #3. Note that AUX 5 & 6 are used to split the return current from the smoke unit heater.
LokSound 5 XL Sound Project Settings #4. AUX 7 sets steady-state fan output at rest and moving.
LokSound 5XL Sound Project Settings #5. AUX8 controls the synchronized fan output.
LokSound 5 XL Sound Project Settings #6.
LokSound 5 XL Sound Project Settings #7.
LokSound 5 XL Sound Project Settings #8.
LokSound 5 XL Sound Project Settings #9. Note the dual dynamo volume reduction.

Loco and Tender Modifications

The original “open frame” was both inefficient and difficult to control by the DCC decoder, so it was replaced with a more “modern” Pittman 9433L187, 15.1 V motor used in many O Scale locomotives.

The LokSound 5 XL was mounted in the locomotive to reduce wiring between the locomotive and tender. LEDs were used for the marker light, front light, cabin light, and firebox simulation.

The hose required slight displacement to remove the chassis from the boiler frame.

The boiler face plate was removed to allow smoke unit installation and access.

Spring-mounted fan-driven smoke unit. The DCC decoder controls heating and coordinated chuffs.
The numerous locomotive modifications include a new motor, decoder, LED lighting, and smoke unit.

The tender modifications include adding a speaker (with exit holes drilled through the chassis), battery, LED tail and marker lights, and ProMini Air transmitter and Cytron amplifier.

The tender modifications include LED lighting, speaker, battery, ProMini Air receiver, and Cytron amplifier.
Tender modifications showing power switch and battery charging plug
Tender modifications for the small whip antenna. A tiny #56 hole provides the antenna exit.
The “proof in the pudding” video. A smartphone throttle app (Locontrol) communicates with a WiFi-equipped EX-CommandStation integrated with a ProMini Air transmitter that sends wireless DCC commands to a ProMini Air receiver and amplifier located in the tender. The amplifier, in turn, sends track-level DCC to the locomotive’s LokSound 5 XL DCC decoder that controls sound, smoke, lighting, and locomotive motion.

Airwire CONVRTR Compatibility with the ProMiniAir Transmitter/Throttle

As some of you may know from my previous postings or other sources, if you try “raw” transmission of DCC from standard DCC throttles, such as with the Tam Valley Depot DRS1 transmitter, to Airwire receivers, you probably won’t get consistent control – I didn’t. This failure set me on the road to devise the ProMiniAir transmitter that would work with CVP Airwire receivers using DCC generated by standard DCC throttles, including the superb “open-source” WiFi-equipped EX-CommandStation created by the folks at Of course, the ProMiniAir receiver is fully-compatible with Airwire throttles.

My web research and discussions with fellow dead-railers led me to believe you might solve the compatibility problem by providing frequent DCC “Idle” messages. Once the dust settled on the ProMiniAir firmware we made available on our GitHub site, the ProMiniAir transmitter worked pretty well with Airwire receivers! Besides CVP Airwire transmitters, the ProMiniAir transmitter is the only currently-manufactured transmitter that works with Airwire receivers.

After this success, we have worked hard to ensure that the ProMiniAir transmitter (and receiver) are compatible with multiple product lines, including CVP Airwire, Tam Valley Depot DRS1 transmitters and receivers, Gwire transmitters and receivers (available but no longer manufactured), Stanton Cab transmitters and receivers, and the no longer manufactured NCE D13DRJ.

OK, you may ask, what’s the point of this post? Well, I’d like to share some further research on the source of the CVP receiver’s incompatibility and its consequences on updates for the ProMiniAir transmitter/receiver firmware.

Further Investigations

OK, I based our initial success in making the ProMiniAir transmitter compatible with CVP Airwire receivers on observing how well the ProMiniAir worked with Airwire receivers. Yep, numerous inserted DCC IDLE messages from the ProMiniAir transmitter seemed to keep the Airwire receivers reasonably “happy,” responding to throttle speed/direction commands and function activation.

However, sometimes the Airwire receiver seemed a bit slow to respond to function activation… And some customers (who are hopefully still friends) sometimes noted this slow response. Could this be improved?

Still, I hadn’t analyzed what an Airwire throttle was sending in detail, so I purchased a simple logic analyzer from Amazon to look at the actual DCC transmitted by an Airwire throttle. I also needed the “pulseview” software from and a DCC decoder add-on. To properly analyze DCC, I modified the add-on and will make it available on our GitHub site.

The figure below is what I observed by firing up my original ProMiniAir transmitter integrated with a WiFi-equipped EX-CommandStation, and using the iOS WiThrottle app to send throttle commands to a ProMiniAir receiver. The figure below shows the “raw” digital output from the ProMiniAir receiver’s transceiver.

The raw DCC data received by a ProMiniAir receiver from a ProMiniAir transmitter integrated with a WiFi-equipped EX-CommandStation

The waveform is what you would expect. A “one” end packet bit from the previous DCC packet and then a series of 15 “one” preamble bits followed by a “zero” packet start bit that signals to the decoder that a DCC command is coming. I observed no significant or consistent DCC “errors” in the collected data.

Here’s what the S 9.2 NMRA DCC Standard states about the preamble:

The preamble to a packet consists of a sequence of “1” bits. A digital decoder must not accept as a valid, any preamble that has less then 10 complete one bits, or require for proper reception of a packet with more than 12 complete one bits. A command station must send a minimum of 14 full preamble bits.

The data below is what I observed by firing up an Airwire T5000 transmitter and looking at the “raw” digital output pin from the transceiver (radio) on the ProMiniAir receiver.

The raw DCC data received by a ProMiniAir receiver from an Airwire T5000 throttle

Well, well. Now we see an NMRA-permissible (see line 121 of NMRA Standard S 9.2) but non-DCC transition pair, called a “cutout,” with a 1/2 “one” and 1/2 “zero” pair after a valid “one” end packet bit and before a very long (30 “one” bits) preamble. If you try to send shorter preambles, say 15 “one” bits, the Airwire receiver will NOT work consistently despite the NMRA standard stating that a decoder must not require more than 12 complete “one” bits in the preamble. So, the Airwire receiver is placing a non-standard requirement for a “long” preamble of “one” bits before it will operate consistently.

Timing of a 1/2 “one” and 1/2 “zero” cutout

While reviewing the DCC sent from an Airwire throttle, there were NOT an unusual number of DCC “Idle” messages sent by the Airwire transmitter. But, by sending tons of short (3 bytes) DCC “Idle” messages, the ProMiniAir transmitter was sending just enough “one” bits to keep the Airwire receiver functional. I am not privy to the details of Airwire’s receiver firmware, so my success was based purely on empirical observation without underlying “insider” knowledge.

So what? With this knowledge, I felt it essential to make some ProMiniAir firmware changes.

Firmware Changes to the ProMiniAir Transmitter

Based on this new information, to improve compatibility with Airwire receivers, we have modified the ProMiniAir transmitter’s firmware to ensure a 1/2 “one” followed by a 1/2 “zero” cutout comes after the end packet “one” bit, and before at least 30 “one” bits are in the preamble. This change is NOT harmful to other wireless receivers, including the ProMiniAir receiver. The ProMiniAir transmitter and receiver still insert DCC “Idle” messages when possible to keep decoders “happy” while waiting for valid DCC messages from the throttle.

Along with these firmware changes, which will be made available on our GitHub site, you can set the number of “one” bits in the preamble by going into OPS mode at address 9900 (transmitter) or 9901 (receiver) by setting the value of CV242. If you set the value of CV242 to 0, the firmware sets the number of preamble bits to a “reasonable” value of 16 (receiver) or the number of preamble bits the throttle sent (transmitter). If you set CV242 to less than 12, it will be reset to 12 to ensure decoders are “satisfied” with the number of preamble “one” bits.

You can also change the duration of the cutout’s second 1/2 transition with CV240. By default, a CV240 value of 27 makes the second 1/2 transition a “zero” with a duration of 116us. If you do NOT want a cutout inserted, you can set the CV240 value to 141, which will make the duration equal to that of the cutout’s leading 1/2 “one” (58us), resulting in an output 1/2 “one” and 1/2 “one” pair, simply increasing the number of preamble “one” bits by one.

Example CV240 values to control cutout duration

So, how well do these modifications work for Airwire receivers? It isn’t easy to quantify, but the Airwire receiver’s red data LED remains “on” more consistently with less “flicker,” and the receiver’s DCC output to the decoder contains “cutouts” (with a duration of about five preamble “one” bits) just before the preamble. These characteristics are now very similar to those from an actual Airwire throttle. See the comparison figures below. It’s difficult for me to test the more practical aspects of these improvements, but the decoders continue to operate as I would expect, perhaps with somewhat less time delay. Other users may be able to test under more stressful conditions.

CONVRTR DCC output to the decoder from an Airwire transmitter. The cutout duration does NOT matter to the decoder.
CONVRTR DCC output to the decoder from a PMA transmitter with updated firmware. The cutout duration does NOT matter to the decoder.


We now have a better idea why Airwire receivers do not work well with output from a typical, NMRA-conformant DCC throttle sent wirelessly and how to better cope with Airwire receivers’ unique DCC requirements by sending very long DCC preambles, preceded by a 1/2 “one” and 1/2 “zero” cutout.

Raw empiricism often leads you to workable, pragmatic solutions, but a little “looking under the hood” for the “how” and “why” almost always pays dividends. If you own a ProMiniAir transmitter and are not satisfied with its performance with Airwire receivers, don’t hesitate to contact me about how I can provide you with an update to see if your performance will improve.

Dead-Rail Conversion of the Lionel H-7 2-8-8-2


Warning: This is a very long, detailed post!

I like Lionel steam locomotives because Lionel designed them for simplified servicing, and Lionel’s documentation and parts are easily-available. Also, some of the locomotives, such as the H-7, are nicely detailed and are rich in features such as extensive lighting, smoke, and excellent speakers. Lionel very much “gets” the importance of the user experience.

What I don’t like are Lionel’s high-rail flanges and three-rail operation. The high-rail flanges look awful and will not work well on 2-rail trackage that meets NMRA standards S-3.2 “Scale Track, Standard Scale.” Also, many of the locomotive driver wheels are mounted on a “trapped” axle, requiring removal of the driver wheels from the axle “in situ” with a wheel puller and subsequent remounting in the correct “quarter.”

I have performed three dead-rail conversions of Lionel’s H-7 2-8-8-2 locomotive. This post will be a composite of these three locomotives.

The conversion process consists of the following:

  • Mechanical conversion: modifying or replacing all wheels and coupler replacement.
  • Electronics: All Lionel electronics are removed and replaced with a DCC decoder
  • Dead-rail: Addition of a ProMiniAir (PMA) receiver and DCC amplifier, battery, antenna, charging plug, and power/charging switch

Mechanical Conversion


Before proceeding with the locomotive conversion, several “magic screws” must be removed to separate the upper boiler shell from the lower shell and wheel chassis. This step is necessary to provide clear access to the drivers for removal and modification.

Removal also provides access to the locomotive’s electronics for removal and replacement with a DCC decoder and its wiring.

Locomotive shell disassembly #1
Locomotive disassembly #2
Locomotive disassembly #3

Removing the flexible hose mounting shown below provides clearance to remove the drivers.

Removing the flexible hose mounting provides clearance to remove the drivers.

After I gained enough clearance around the drivers, I used a wheel puller to remove those drivers whose axles were “trapped” in the chassis.

Using a wheel puller to separate a driver from its trapped axle. For illustrative purposes only, since the brake shoes require removal to prevent mechanical interference, and this particular driver pair can be removed from the frame by removing the retaining plate held in place by two screws.

The locomotive drivers present several issues:

  • Large, ugly flanges
  • Grooved tires with rubber traction tires
  • All drivers are uninsulated. This aspect is important only if you want track-powered 2-rail operation.

Lionel manufactures the locomotive driver center and flange as s single unit with a separate cylindrical tire with no flange.

The photo below shows an end mill to separate the driver tire from the driver center integrated with the flange. The process was the following:

  • A 3/16″ brass tube was fit in the axle.
  • A small brass tube was inserted into the crank-pin hole to prevent wheel rotation while milling.
  • Two pieces of brass close to the height serve as height spacers that avoid cutting into the flange.
  • The tooling is a 1/16″, two-flute end mill in a Tormach collet
  • Cutting oil was applied.
  • The end mill was very carefully translated along the radius, cutting into the cylindrical tire without cutting into the flange.
  • After the radial cut was deep enough, I used an “ordinary screwdriver to pop off the tire with an axial twist.
Removing the cylindrical tire with a 1/16″ end mill shows the integrated Lionel driver center and flange.
Lionel driver wheel with the tire removed. The 3/16″ brass tube loosely fits the axle center to hold the driver in lathe or milling chucks.

I used two strategies for modifying the Lionel driver wheels:

  • Machine down the large flanges and leave the tire in place with the driver uninsulated. I used this technique when using the locomotive strictly as dead rail.
  • Completely machine off the flange. I use this technique when creating insulated drivers for 2-rail operations using track power.

Machining down the drivers

I used a 3/16″ brass tube as a reasonably close match to the driver’s axle diameter. Because the fit is not tight, a separate small brass tube is inserted in the driver pin that will butt up against the lathe chuck’s jaws when cutting torque is applied. This technique is a bit of a kludge, but I have successfully machined down the flanges of 8 H-7 drivers on two different H-7s with this technique.

Before matching down the large flanges, you must address the grooved tires. The rubber in these tires increases the tire diameter, increasing the chances that the reduced flanges will derail. And these rubber tires are a bad idea since they could cause the locomotive to simply stall rather than slip when pulling heavy loads. Stalling is very bad since it dramatically increases the motor current, potentially causing a decoder shutdown and/or significant heating.

I used J-B Weld 8267 SteelStik Steel Reinforced Epoxy Putty Stick to fill the rubber traction rim groove. This material is metal-filled, providing traction and wear resistance.

I applied an excess of putty in the groove, and after curing, I cut the putty excess down to the radius in the lathe. It’s a fool’s errand attempting to shape the putty in the groove. The epoxy sets fairly quickly, so you have a short window of time to work the putty into place.

Machining the epoxy-steel filling to the proper diameter

The photo below shows the finished driver wheel with the Steel Reinforced Epoxy Putty machined to the driver center radius and a machined-down flange with a flange height of 0.036″ and a flange width of 0.040″. As previously, a small diameter rod was inserted into the side rod hole to prevent wheel rotation relative to the axle while machining.

The tire, after machining the flange to 2-Rail standards

Completely Machining OFF the Original Flange

First, I’ll show you how I created a new tire with a small flange. This is a long detailed section, perhaps of interest to only a few of you.

First, the driver’s tire center must be prepared. The idea is to entirely cut off the integral flange to ensure a constant radius from the front to the back of the driver center.

First, you must remove the cylindrical tire. In this case, you can use a cutting wheel to cut a slot through the flange and the tire without cutting into the driver center. Then the tire can be popped off with an axial twist using a standard screwdriver. Care must be taken not to nick the driver’s wheel center.

The slightly undersized brass tube fits somewhat loosely in the crank-pin hole but will prevent slippage in the spindle by butting against the jaws once torque is exerted by the cutting tool on the rim as the spindle rotates.

The tooling and technique to completely machine off the integrated flange

After the wheel center’s rim is machined flat, I use 0.010″ fish paper to insulate the left-side drivers. You can hold the fish paper in place with a touch of CA on the side of the rim opposite where the fish paper ends will join. This allows a shorter run to hold the fish paper tight on the rim while applying CA to the ends.

Fish paper was applied to the wheel center.

With our wheel center ready to mount inside a tire, we now create a tire with the proper dimensions. Caveat: My tire machining technique fits my modest matching skills using a small Sherline lathe. This technique is wasteful of metal blanks, but their cost is low. Other more skilled model railroad machinists have more efficient techniques that utilize a larger lathe and specialized tooling.

To help the discussion, the figure below shows the terminology from NMRA Standard S-4.2. The important terms/dimensions are flange width, flange depth, and tread width. Creating a tire within an acceptable range of these dimensions is necessary to ensure that the driver will work on 2-rail trackage defined by NMRA standard S-3.2.

Wheel dimension definitions (from NMRA Standard S-4.2)

I start with a 1.5″ diameter Ledalloy 12L14 1″ long blank obtained from This represents a maximum driver size of 72″, which is plenty large for our 57″ plus twice our flange depth of 0.036″ for 2-rail operation (1.1875″+2 x 0.036″=1.2655″).

Ledalloy blank

A 1/2″ hole is drilled into the center of the blank to provide clearance for the boring bar that will hollow out the blank to fit the outer diameter of the driver’s center.

A 1/2″ hole is drilled into the blank to provide clearance for the boring bar.

The blank is then placed in the lathe, the face is squared off with an end cut, and then a side cut reduces the blank’s diameter to the final wheel diameter + 0.072″ to account for the additional flange depth (0.036″). For our H-7’s 57″ drivers, this diameter works out to 57/48″=1.1875″ plus twice our flange depth of 2 x 0.032″=0.072 for 2-rail operation: 1.1875″+2 x 0.036″=1.2655″.

The blank after a face cut and side cut to a final diameter equal to the wheel’s final diameter + 2 x the flange depth. Note this picture does not show the center hole that should already be drilled.

Now we make an angled side cut to create the tire surface by tilting the Sherline lathe’s spin axis by 2.5-3.0 degrees. This cut produces a shallow angle across the tire’s tread width. This angle was obtained from NMRA Recommended Practices 25.

The Sherline lathe allows you to create a tilted side cut.

A careful series of side cuts are made to reduce the blank to the wheel’s diameter at the base of the flange step with a width of the wheel width (N) of 0.172″ – the flange width of 0.039″ = 0.132″. I use a wheel width slightly smaller than “code 175″ (0.175”, from NMRA Recommended Practices 25) to improve appearance, and maintain operability with 2-rail track standards.

Angled side cuts reduce the front of the blank to the final wheel diameter and tire width of ~0.132″

Next, we “straighten out” the lathe and use a boring bar to hollow out the blank’s center to be slightly smaller than the driver’s center diameter. This cut reduces the amount of material removed during the difficult cut-off operation.

A boring bar is used to enlarge the blank’s center hole to slightly smaller than the driver’s center wheel outside diameter.

Next, the tire is cut off from the rest of the blank at a distance greater than 0.039″ (the flange width) behind the flange step.

The blank is cut off more than 0.039″ inches behind the flange step

The now-separate tire is remounted in the lathe using the flange step as an indexed surface, and a careful series of face cuts are made to reduce the flange width to 0.039″.

The back face of the tire is face cut until the flange width is 0.039″

A spacer (an old tire cut off the driver) is now inserted to displace the flange from the lathe chuck’s jaws to provide clearance for rounding the edges of the flange with a file.

A spacer (an old tire) to provide clearance for rounding the flange’s sharp edges

With the lathe spinning, a file is used to carefully smooth the sharp edges of the flange.

The tire, after rounding the sharp flange edges with a file.

Now, the tire is remounted against the lathe chuck’s jaws, and a series of careful cuts with the boring bar increases the tire’s inner diameter until the driver’s center fits inside the tire. This step is tedious since very small (0.001″) cuts should be used to prevent making the tire’s inner diameter too large! The fit should not be extremely tight since we will apply Loctite to the rim of the driver’s wheel center to lock the tire to the driver’s wheel center.

Fitting the driver’s wheel center into the tire. This tire had the insulating fish paper attached to the driver’s wheel center.

Loctite 609 is applied to the fish paper, and the driver’s center is inserted into the new tire. While inserting the driver’s center, I take the opportunity to ensure it is pressed into the rim to the proper depth. This depth is a bit of a judgment call based on examining the original mounting depth.

Before the Loctite dries, the driver’s center must be aligned with the tire. I use a simple technique of inserting a 3/16″ metal rod or tube into the driver axle hole and mounting the assembly in the jaws of a milling clamp with a small “v” machined into one side of the jaws, as shown in the photo below. I firmly press the tire rim onto some brass plates placed on top of the jaws, then tighten the jaws to very lightly bind the metal tube and rotate the driver wheel. This rotation action will force the driver’s center into alignment with the tire.

While aligning these components, I take the opportunity to ensure the driver’s center is still pressed into the rim to the proper depth.

Tender Mechanical Modifications

I removed the rather ugly Lionel coupler by cutting off the tender coupler mount and mounting a Kadee coupler directly to the tender. Micro-Mark coupler shims provide the proper coupler mounting height.

Tender coupler modifications
Tender coupler mount with coupler shims

DCC Additions

I used a Zimo MX696KS DCC decoder from SBS4DCC with the “Standard Gauge Steam Locomotive Alco/Baldwin Mallet 2-8-8-2” sound file DA_R_US_2_8_8_2 Modifications were made to the function mappings and set-up of the smoke unit.

Some of the sound project’s settings are shown in the following screen captures from Zimo’s ZCS software.

Zimo sound file settings, screen #1. The settings on this page set the loco’s long address and turn on the decoder’s acknowledgment of changed CVs.
Zimo sound file settings, screen #2. Note that F4 turns on two function outputs for the firebox effects.
Zimo sound file settings, screen #3. Note the two random flicker outputs and the smoke effects output.
Zimo sound file settings, screen #4. Smoke unit settings for both smoke (heater) and smoke unit fan.
Zimo sound file settings, screen #5. Not all sound functions are shown.

Dead-Rail Conversion

Tender Modifications

My typical 14.8 LiPo battery did not comfortably fit in the back end of the tender, but a rather unusually-shaped 14.8V LiPo batter from MTO fit well: the TRAIN-10 LI-ION.

The 14.8V LiPo TRAIN-10 LI-ION battery.
Tender dead-rail additions. Note the battery, ProMiniAir receiver and DCC amplifier, antenna connections, power switch, and charging plug.
Underside view of tender dead-rail components

The tender’s LEDs must have “protection” resistors added since Lionel provided these resistors on electronics boards that were removed for dead-rail conversion.

Protection resistors were added for the rear light (“R.L”) and rear marker lights (“RML”)

Locomotive Electronics Modifications

The conversion strategy is completely removing all Lionel electronics and replacing them with a Zimo MX696KS DCC decoder, providing excellent sound, lighting, and smoke unit control.

These original Lionel locomotive electronics were all removed
Locomotive DCC decoder installation

Because the original Lionel electronics provided the protection diodes for the locomotive’s LED marker lights at low voltage, 5K resistors were added in series with the maker lights so that 14.8V power would not burn them out when activated by the Zimo decoder.

The red LED lighting for the firebox presented a bit of a challenge. The photo below shows where I added protection resistors for the two sets of LEDs that flicker independently using the “random” firebox setting for the Zimo decoder’s FO6 and FO8 outputs, as shown on the ZCS configuration menus elsewhere.

Electrical modifications for the firebox LEDs
Heater wiring
Smoke unit, number board, and marker light wiring

For one of the H-7s, I replaced the incandescent cabin light with an LED. See the photo below.

The incandescent cabin light was replaced with an LED to reduce power consumption.

I replaced the original low-current LED front marker lights with “nano” LEDs after I accidentally burned them out.

Front marker light replacement

The Proof in the Pudding

The video below is the “proof in the pudding,” showing off the lights, firebox effects, smoke, and great sound!

The “proof in the pudding”

A Simple Way to Extend a Whip Antenna

A whip antenna is a simple and effective antenna used by many dead-rail receivers, including the ProMiniAir. Still, sometimes it’s not feasible to mount the whip antenna directly to the transceiver and get good RF reception. One solution is a U.FL extender cable connected to the U.FL plug on the receiver, and the other end can be “snaked” outside the locomotive or tender shell. The U.FL whip antenna then plugs into the U.FL socket on the distant end of the extender outside the shell for better RF reception.

A U.FL extension cable. The U.FL connector on the left plugs into the receiver’s U.FL socket, and the U.FL antenna plugs into the U.FL socket on the right.

An extender has some downsides: the U.FL socket is easily broken, requires a fair-sized exit hole, and may be subject to increased RF noise. This post will show you a better solution for some applications.

A Simple Solution

While browsing RF components on AliExpress, I came across “IPX IPEX U.FL Jack RF Cable 1.13mm Jumper Solder Single-head Adapter Connector” in various lengths.

IPEX U.FL Jack Cable Single-head Adapter

Suppose you strip off 82mm (North American) or 86 mm (EU) of the outside plastic cover and grounding wrap to expose the inner plastic insulator and the antenna wire. In that case, you have over 200mm of grounded connection for “snaking” the antenna connection to a distant location.

In practice, once you have snaked the cable into its final position, you can cut off the excess, ensuring you leave enough length for stripping off the plastic cover and grounding wrap to expose the antenna. A small hole using a #56 drill bit (0.0465″) provides sufficient clearance for the grounded lead to exit the shell.

The stripped cable exposes the antenna wire with its insulating cover.

You can bend the grounded lead to the angle you want and cover the exposed antenna section with small-diameter heat shrink tubing to hide the bright antenna wire.

The final antenna mount with heat shrink tubing covering the exposed antenna wire.

Below is a video of this antenna solution in action.

The final “proof in the pudding” of the antenna concept used on a dead-rail O scale Sunset 3rd Rail (2-Rail) UP 4-6-6-4 Early Challenger. The ProMiniAir receiver and DCC amp were installed in the tender and controlled via smartphone using the Locontrol app WiFi-connected to the stand-alone ProMiniAir transmitter integrated with a WiFI-equipped EX-Command Station. The dynamo sound is much too loud!


I hope you find this simple solution valuable in your future dead-rail endeavors!

Dead-Rail Conversion of an MTH UP 4-12-2 2-Rail locomotive with the New, Smaller ProMiniAir Receiver

I have posted several dead-rail conversions of O scale 2-Rail MTH steam locomotives equipped with a PS-3.0 controller capable of operating in DCC mode. These locomotives are convenient for dead-rail conversion because they come fully equipped with good sound, lighting, and smoke effects – all controllable with DCC. However, I have received numerous questions asking for clarification.

So, what’s new in this post?

The goals of this post are to show off a dead-rail conversion with my new, much smaller ProMiniAir receiver (1.1″ x 0.8″) coupled to a small DCC amplifier, the DRV8871 (1.0″ x 0.8″) and to explain the conversion strategy for O scale, PS-3.0-equipped MTH locomotives. I have chosen the PS-3.0-equipped MTH UP 4-12-2 2-Rail locomotive (MTH 22-3641-2) because it has a small, crowded tender, making for a challenging installation of the required dead-rail components: battery, ProMiniAir receiver/DCC amplifier, antenna, switches, and charging plug.

Some conversion details, such as power connections, are left out to reduce cluttering the critical points.


The photo below shows what we are up against: a very crowded tender!

The original, very crowded tender electronics

The challenge is how/where to locate the dead-rail components.

Dead-Rail Conversion

Since this locomotive is fully configured for lighting, sound, and smoke effects, and all control electronics are in the tender, I did not modify the locomotive!

We’ll turn our attention to the tender.

The most challenging aspect of this conversion is battery location. After some fiddling and considering other battery configurations, I decided on a flat 14.8V Tenergy battery mounted in the tender, as in the photo below.

Battery location using a 14.8V Tenergy battery

This location required slightly bending the PS-3.0’s heat sink to provide battery clearance.

I also moved the speaker platform forward and removed the plastic speaker enclosure to make room for the battery.

I moved the speaker platform forward to provide room for the battery.

The wiring of the 2Rail/3Rail switch is at the heart of our conversion. Since we will not operate on 3-rail track, we will repurpose the 2Rail/3Rail switch to retain the original 2-rail track-powered operation or use the new battery-powered amplifier output connected to the ProMiniAir receiver. See the diagrams below for the original and final wiring for repurposing the 2Rail/3Rail switch.

The original switch wiring for 2-rail operation. The right 2RAIL post is not connected!
The original switch wiring for 3-rail operation. All wheels become “Track Left,” and the center-rail pick-up rollers become “Track Right.”
The final switch wiring for 2-rail operation. Track-based “Track Left” and “Track Right” are fully retained.
The final switch wiring for radio-control operation. Now the ProMiniAir receiver’s DCC amplifier outputs supply “Track Right” and “Track Left” to the PS-3.0.

I modified the wiring to the 2Rail/3Rail switch to accommodate DCC inputs from the ProMiniAir receiver’s amplifier. The photo below shows the first step: moving the gray wire soldered to the right center post of the 2Rail/3Rail switch to the front right post.

The next step is the hard part: figuring out the re-wiring required. To aid in the discussion, let’s talk about the capabilities of the MTH PS-3.0 controller. This board is designed to pick up signals through the locomotive and tender’s wheels and, if operating on 3-rail track, the center-rail pick-up rollers. To accommodate either 2-rail or 3-rail operation, MTH provides a 2Rail/3Rail switch on the underside of the tender chassis.

Consequently, when you set the switch to “2Rail”, the gray wires, which are electrically connected to the left track, provide input to the “Track Left” of the PS-3.0.

Next, the gray wire directly connecting the “Track Left” input to the PS-3.0 board is separated from the other gray wires and soldered to the right-center post of the 2Rail/3Rail switch. Now, the center-right post provides the “Track Left” input to the PS-3.0 from rail “Track Left” when you set the switch to “2Rail.”

Moving the gray wires and creating a single Track Left input to the PS-3.0
The Track Right (red)/Left (gray) connections to the 2Rail/3Rail switch to the PS-3.0 board

Since we will NOT be operating in 3Rail mode, we can repurpose the 2Rail/3Rail switch’s 3-Rail connections to provide the DCC inputs from the ProMiniAir receiver’s DCC amplifier.

I first removed the wiring on both of the 3Rail posts on the switch.

Removal of the 3-Rail wiring connections to the 2Rail/3Rail switch. After removal from the switch post, the two black wires MUST be connected to ensure that rail-based “Track Right” is supplied.

I sealed off this wiring, preserving the connection of the two black wires since they both contribute to “Track Right” from the locomotive or tender wheels.

Sealing off the 3-Rail wiring

Then, I soldered two wires with a plug to these “3Rail” switch posts that will connect to the DCC Track Right/Left outputs of the ProMiniAir receiver’s DCC amplifier. With this modification, when the switch is set to this position, it connects the PMA amplifier’s DCC output to the PS-3.0. This now completes the conversion of the 2Rail/3Rail switch to a 2Rail/RA (for radio-generated signal) switch. That was the hard part.

Wiring for DCC inputs from the ProMiniAir receiver’s DCC amplifier so that the “3Rail” switch setting now becomes the selection for “Radio Control DCC.”

The signals originally picked up from the rails come in two “languages” that the PS-3.0 controller understands: DCS and DCC. To accommodate this capability, MTH provides a DCS/DCC switch on the underside of the tender chassis. The DCS commands are a proprietary MTH invention and, for our purposes, do not interest us. DCC is important to us since the ProMiniAir receiver is designed to receive wireless DCC commands, which are an NMRA standard.

We can set up the wiring for permanent DCC operation and repurpose the DCS/DCC switch for Battery ON or Battery Charging. When you set the unmodified DCS/DCC switch to “DCS,” the two black wires activate DCS mode, which we no longer need. When you set the DCS/DCC switch to “DCC,” these two wires are not electrically connected, which is what we want permanently.

The first step is to remove these two black wires and close them off to prevent them from shorting together.

Removal and insulation of the DCS wires for repurposing the DCS/DCC switch as a Battery ON/Charging switch.

Then, three wires are soldered to this switch:

  1. Center posts: Battery +. This post provides battery power that will either supply power to the PMA Rx and DCC amplifier or receive charging power from the charging plug, depending on the switch position.
  2. Back posts: PMA Rx/DCC amp power +.
  3. Front posts: Charging plug +
Final connections for the switches

The right and left posts are soldered to each wire to ensure a low-resistance, high-amperage connection. The rest of the power connections are standard and not discussed here.

OK, we’re finished with all wiring modifications; now, let’s turn to adding the antenna and charging plug by first drilling holes in the bottom of the tender’s chassis and mounting the antenna and charging plug (see photo below).

Antenna and charging plug mounts, and repurposed switches

The antenna mount has a wire connection carrying RF output from the antenna to a U.FL connector plugged into the ProMiniAir receiver.

The charging plug has a “+” power connection wired to the battery ON/Charging switch. All power “-” connections are on the “-” posts of the charging plug.

Finally, I mounted the ProMiniAir receiver and its DCC amplifier over the speaker after removing the plastic speaker cover to provide sufficient battery clearance.

Mounting of the small ProMiniAir receiver and DCC amplifier

The small size of the ProMiniAir receiver and its DCC amplifier make this mounting strategy possible.


The video below shows the “proof in the pudding,” The locomotive is controlled by the new stand-alone ProMiniAir transmitter integrated with a WiFI-equipped EX-CommandStation that receives throttle commands from a smartphone app.

Demonstration video using WiThrottle app connected to PMA transmitter integrated with a WiFi-equipped EX-CommandStation that transmits to the onboard ProMiniAir receiver.

A Low-Cost WiFi-Equipped DCC Base Station for the ProMiniAir Transmitter

The new, stand-alone ProMiniAir transmitter integrated with a WiFi-equipped EX-CommandStation

Many model railroaders enjoy using a hand-held throttle or smartphone app that connects to a centralized DCC command station that sends DCC over the tracks to decoder-equipped locomotives, and some “dead-railers” enjoy a similar experience using specialized hand-held transmitters such as the CVP Airwire or Stanton Cab throttles. These dead-rail throttles are expensive and sometimes hard to find due to supply chain problems. Other hand-held dead-rail throttles only support their proprietary receivers and “vendor-lock” users because they have no interoperability with other dead-rail vendors 🙁

On another page, I showed how easy it was to use a smartphone equipped with a “wiThrottle-compliant” app in conjunction with the ProMiniAir transmitter to control your dead-rail locomotive(s) fitted with a variety of receivers such as ProMiniAir, Tam Valley Depot DRS1, CVP Airwire, Stanton Cab, QSI Gwire, and NCE. The downside was that you must invest in a WiFi device for the DCC base station connected to the ProMiniAir transmitter. Many folks pushed back on the additional cost and infrastructure to use their smartphone app for dead-rail control using the ProMiniAir transmitter.

I searched for a way to provide a low-cost way to use your smartphone in conjunction with the ProMiniAir transmitter, and this post shows the low-cost solution that I offer for sale.

The solution: I came across a low-cost way to create a small DCC base station equipped with WiFi at a very active group, DCC-EX, and I will describe how I configured this base station to use a smartphone to control dead-rail locomotives equipped with ProMiniAir, Tam Valley Depot, CVP Airwire, QSI Gwire, NCE, or Stanton Cab receivers.

The wiThrottle-protocol smartphone apps that will work with this solution include (this list is from DCC-EX):

The critical point is that the ProMiniAir transmitter, coupled with the WiFi-equipped EX-CommandStation, is an entirely self-contained solution for $49.99 on eBay (search on eBay with “ProMiniAir” to find this device). All you need to do is apply power and then connect with a smartphone throttle app for mobile control of dead-rail.

If you don’t want to go through the details of the solution, you can jump to the Instructions below.

The Solution

The DCC-EX team has developed an open-source, low-cost DCC controller EX-CommandStation. Here is the DCC-EX team’s description (reprinted from here):

An EX-CommandStation is a simple but powerful, DCC Command Station that you can assemble yourself and which is made using widely available Arduino boards. It supports much of the NMRA Digital Command Control (DCC) standards, including

  • Simultaneous control of multiple locomotives and their functions
  • Control of accessory/function decoders
  • Programming Track
  • Programming on Main Track

It includes advanced features such as:

  • wiThrottle Server implementation,
  • General purpose inputs and outputs (I/O) for extensibility, and
  • JMRI integration

The primary intention of the EX-CommandStation is to receive commands from multiple throttles and send out DCC on tracks. These throttles can be “wired” or “wireless:”

  • USB
  • WiFi
  • Ethernet
  • Bluetooth
  • JMRI

With the WiFi-equipped EX-CommandStation, you can use a wiThrottle-protocol smartphone app that connects to the EX-CommandStation via WiFi. Then the EX-CommandStation’s +3.3V logic DCC output is not sent to a “motor shield” to power tracks but instead serves as a direct input to the ProMiniAir transmitter for dead-rail control. It’s that simple; the technique was easy to implement and is low-cost ($49.99 on eBay, instead of paying for a WiFi device that connects to a commercial DCC throttle, a total of over $200).

Instructions for Using the ProMiniAir Transmitter/WiFi-Equipped EX-CommandStation with a Smartphone

What you need:

  1. A smartphone loaded with the wiThrottle-compliant app. See the list above.
  2. A properly configured ProMiniAir Transmitter/WiFi-equipped EX-CommandStation. We provide this.
  3. A locomotive(s) equipped with receivers compatible with the ProMiniAir transmitter, such as:
    • ProMiniAir receiver
    • Tam Valley Depot DRS1 receiver
    • CVP Airwire receiver: CONVRTR 15/25/60, G-3/4
    • Gwire receiver
    • Stanton Cab receiver
    • NCE D13DRJ wireless decoder


  1. Plug the USB power into the PMA Tx/WiFi-equipped EX-CommandStation, which turns on the ESP32 WiFi transceiver to broadcast information for your smartphone to pick up, boots up the EX-CommandStation itself, and powers up the ProMiniAir receiver and the OLED displays. You can connect a USB battery pack to the ProMiniAir transmitter/WiFi-equipped EX-Command station for “take it anywhere” capability.
  2. Go to the smartphone’s WiFi settings:
    1. If you have a home router, turn off auto-join, which prevents your smartphone from jumping to your home router rather than the DCC-EX WiFi router.
    2. Select the EX-CommandStation’s WiFi router. The router’s name is “DCCEX_123456,” where “123456” is a unique series of numbers and letters (the “MAC address” of the WiFi transceiver).
    3. When asked for a password, enter “PASS_123456”, where “123456” is the exact string of numbers and letters in the router’s name. You will probably need to enter the password only once since your smartphone will probably remember the password.
    4. The “fiddle factor:” Sometimes, the smartphone will complain it cannot connect to the DCCEX router or that the password is incorrect. Ignore this complaint (assuming you entered the password correctly) and try connecting again. The smartphone will often successfully connect once you select the DCCEX router again.
    5. You might want to turn on the auto-join option for this router so that your smartphone will automatically try to connect once the WiFi-equipped EX-CommandStation is powered up.
  3. Once connected, go to your throttle app:
    1. When asked for WiFI router configuration, set the IP address to “” and the port to “2560“.
    2. Once your throttle app connects to the EX-CommandStation, you can select your loco(s), etc.
  4. Turn on your dead-rail locomotives, and control them with your smartphone app!
  5. Once finished with the throttle app, you can go back to settings and re-select the auto-join option for your home router.

So here is the “proof of principle” demo. The photo below shows the prototype solution: a low-cost EX-CommandStation with integrated WiFi connected to a ProMiniAir transmitter. The video shows the iOS “Locontrol” app connected to the PMA Tx/EX-CommandStation with WiFi to control a dead-rail locomotive equipped with a ProMiniAir receiver and a DCC decoder that controls loco speed and direction, lighting, sound, and smoke. The Locontrol app is excellent because you can record video while controlling the locomotive.

The solution is a low-cost EX-CommandStation with integrated WiFi connected to a ProMiniAir transmitter. Up to five smartphones with WiFi throttle apps send commands to the WiFi receiver connected to the centralized command station, generating DCC output that the ProMiniAir transmitter sends to onboard locomotive receivers. NOTE: In current versions, Pin 18 instead of Pin 7 is the +5V DCC data connection to the PMA transmitter.
Detailed connections
Video of using the iOS Locontrol app with the PMA Tx/EX-CommandStation with WiFi to control a dead-rail locomotive equipped with a PMA receiver and DCC decoder

Programming on the Main (PoM) or Service Mode

OK, these smartphone throttle apps are great, but they have a limitation: they can’t currently send commands in PoM (OPS) mode or Service Mode to change the value of configuration variables “CV” in a decoder. This capability is necessary when you need to change the configuration of the ProMiniAir transmitter (whose default DCC address is 9900), such as the wireless channel (CV255 = 0-18) or power level (CV254=1-10). Of course, you might also need to make CV changes to your dead-rail locomotive’s DCC decoder using PoM (OPS) mode, too!

See the site for a full list of DCC-EX commands that you can send to the EX-CommandStation and ultimately to the dead-rail locomotives or DCC accessories.

You may NEVER change the ProMiniAir’s configuration, but you might. How to do this?

Solution #1

Both iOS and Android have apps that come to the rescue: TCP/IP to Serial Terminal and Serial WiFi Terminal. The apps provide a wireless connection to the EX-CommandStation to reconfigure the ProMiniAir transmitter (or receiver, for that matter!) or your dead-rail locomotive’s DCC decoder in PoM mode.

Since I own an iPhone, I’ll show you what to do using TCP/IP to Serial Terminal.

What you need:


  1. Ensure your smartphone is connected to the EX-CommandStations’s WiFi network!
  2. Select the app and enter the IP address and port number, and then connect:
  3. Test using the status command, entering <s> (case sensitive):
  4. See the response:
  5. Enter the command to change the value of CV 255 at address 9900 to a value of 5 by entering <w 9900 255 5> (case sensitive):
  6. Verify that the ProMiniAir transmitter Channel, which is at DCC address 9900, has changed to 5:

The steps for using the Android app Serial WiFi Terminal should be similar.

Service Mode setting of CVs is also possible. The Service Mode command for changing the CV number CVnum to a value CVval is <W CVnum CVval>. The “W” must be uppercase. Changing the DCC address is even simpler: <W new_address>. Care must be used, since PoM commands will be used by all “listening” receivers, regardless of their DCC address!

So, there you have it, a wireless way to control a WiFi-equipped EX-CommandStation in Programming on the Main (PoM) mode (OPS mode) and Service Mode. While we need these apps to send PoM commands to reconfigure the ProMiniAir transmitter, you can enter any DCC-EX Command! Have fun!

Solution #2

If you have a Windows, macOS, or Linux computer or laptop, you can interact with the WiFi-equipped EX-Command station, including reconfiguring the ProMin Air transmitter. The technique is based on the “curl” program.

What you need:

  • A Windows, macOS, or Linux computer or laptop.
  • A WiFI-equipped EX-CommandStation


  1. Connect the EX-CommandStation’s USB cable+USB converter to power. This powers up the WiFi-equipped EX-CommandStation and the ProMiniAir transmitter with its LCD.
  2. On your computer, select the DCCEX_123456 wireless router and, if asked, enter the password PASS_123456, where “123456” is a unique string representing the MAC address of the ESP8266 WiFi transceiver integrated with the EX-CommandStation.
  3. On your computer, start up a “terminal” session. A terminal session allows you to type in commands.
  4. Enter the following command curl telnet:// This opens a simple telnet-protocol connection between the computer and the WiFi-equipped EX-CommandStation at address port 2560, the default EX-CommandStation address and port.
  5. Your command line will now wait for you to enter the text transmitted to the EX-CommandStation! As a test, type in <s> and press RETURN, and you should see a response such as
    <iDCC-EX V-4.0.0 / MEGA / PMA_Tx G-a26d988>

    If using curl on Windows, you may need to press RETURN then ^Z (CONTROL+z) and then RETURN again to “flush” out the response from the EX-CommandStation.
  6. OK! Now let’s change the ProMiniAir transmitter’s channel to “5” by using a PoM (OPS) command (DCC Address: 9900, CV#: 255, CV value: 5): type in <w 9900 255 5> and press ENTER. You will not see a response (sigh), but if you look at the ProMiniAir transmitter’s LCD, you will see the following:
  7. You exit the session by hitting < control>+C.

Pretty simple!

Solution #3

This solution is NOT all wireless but demonstrates how to use the Web-based WebThrottle-EX to control the EX-CommandStation.

What you need:

  • A computer or laptop
  • A WiFi-equipped EX-CommandStation
  • The USB cable that came with your EX-CommandStation


  1. Connect the USB cable from the EX-CommandStation to your computer/laptop. This connection provides power and a data link to the PC.
  2. On your computer or laptop’s Chrome web browser, navigate this link: An excellent throttle application will start, and the DCC-EX team has excellent instructions for using this application. We will concentrate on our narrow goal: getting OPS mode instructions to the ProMiniAir transmitter.
  3. Select the “Connect DCC++ EX” button to activate the USB serial connection to the EX-CommandStation.
  4. You will see a pull-down menu of USB ports. Select the serial port you think is correct, and if it is, the log window at the bottom will cheer your success. If not, try another USB port from the pull-down list.
  5. Now look at the Debug Console and ensure Debug in “ON.”
  6. In the “Direct Command” entry, type in a “direct” command. In our example, we want to send an OPS mode command (“w” for write) to DCC address 9900 (the PMA transmitter) to change CV 255 (channel selection) to the value of 3 (the channel we want to transmit on): w 9900 255 3.
  7. Press “Send,” and you should see the log window indicating the send. You should also see the PMA Tx’s LCD show a changed value, now with a new channel!
  8. Disconnect the USB cable.
  9. Use your smartphone to connect the ProMiniAir Tx/WiFi-equipped EX-CommandStation as described above.
  10. Have fun controlling the locomotive(s)!

Of course, if you maintain the USB cable connection, you can play with the WebThrottle-EX to control the dead-rail locomotive! The DCC+EX website has excellent instructions for using WebThrottle-EX. The traditional locomotive control capability and the powerful direct control capability are valuable and fun.

An important point: These instructions are ONLY for reconfiguring the ProMiniAir transmitter or changing the CVs in your DCC decoder. Under regular smartphone throttle app use, you do NOT need to connect anything other than the power to the WiFi-equipped EX-CommandStation to activate the ProMiniAir transmitter!

Final Thoughts

While I called this approach for using a smartphone app with the ProMiniAir transmitter a “compromise solution,” if you think about it, with a more centrally-located ProMiniAir transmitter coupled to a small, inexpensive WiFi-equipped DCC base station, you achieve good layout coverage because the base station is acting as an optimally-located “repeater,” potentially reaching more of the layout than your smartphone app. This approach is a valuable “division of labor:” the smartphone gives you the mobility to enjoy different vantages, and the central transmitter covers the layout optimally. So, maybe this approach is better than a “compromise solution,” after all.

Advantage of an optimally-located central transmitter versus a local transmitter.

Information Update on the ProMini Air Receiver and Transmitter


Typical application. In some cases, such as the Airwire transmitters, the throttle and transmitter are combined. Also, the receiver and amplifier may be integrated, such as for Airwire and Tam Valley Depot receivers. The ProMiniAir transmitter and receiver require a “DCC Converter” or “DCC Amplifier” provided as part of the purchase.

I was inspired to fully develop a wireless DCC transmitter and receiver by two sources: Martin Sant, who runs the BlueRidge Engineering website, and an article by Mark and Vince Buccini titled “Build Your Own Wireless DCC System” that appeared in the April, June, and August 2014 editions of Garden Railways magazine. These back issues are still available.

The Buccinis showed that it was possible to home-build a wireless DCC system. And Martin became a great collaborator who concretely started me with the initial version of the “ProMiniAir” wireless DCC transmitter/receiver hardware and the wireless DCC software for the Pro Mini microcontroller board. I am deeply indebted to these people.

Note: Some photos may show older versions of the ProMiniAir. Also, previous versions of the ProMiniAir receiver and transmitter used 9000/9001 for their DCC address, respectively, which we changed to 9900/9901. Photos and examples may use the now-obsolete addresses.

Update for New Versions of the ProMiniAir Transmitter and Reciever

Please see this post on an important update on the ProMiniAir transmitter. It is now completely stand-alone; just plug in power and use your cell phone app to control your locomotive.

The new completely stand-alone ProMiniAir transmitter. Just plug in power, use your smartphone app to connect to the WiFI-equipped EX-CommandStation, and control your dead-rail locomotive.

The ProMiniAir transmitter and receiver have been significantly reduced in size: 1.1″ x 0.8″, making it possible to mount the ProMiniAir receiver and a tiny DCC amplifier in tighter spaces and some HO locomotives.

The new ProMiniAir receiver and small amplifier (3.6A)

Feature Comparisons

My goal for offering the ProMiniAir receiver/transmitter is to provide those interested in “dead-rail” (radio control, battery power of a model railroad locomotive) inexpensive wireless, DCC compatible transmitters and receivers for radio-control of model railroad locomotives in the US/Canadian 915MHz ISM band – the same band and protocol as used by Tam Valley Depot (TVD), CVP Airwire, NCE/QSI Gwire, and Stanton Cab. Also, you can operate the ProMiniAir transmitter and receiver in the European ISM band at 869.85MHz, and we have verified interoperability with Tam Valley Depot European DRS1 transmitters and receivers.

A note about channels: modern CVP Airwire transmitters and receivers can all operate in the Airwire channels designated 0-16 using current Anaren AIR transceiver chips. Older wireless transmitters and receivers from Tam Valley Depot and Stanton Cab used the Linx ES series transmitter or receiver chip that only operated at 916.48MHz with slightly different specialized radio settings from the Airwire channels. I call this channel 17. In most but not all cases, these Channel 17 devices are interoperable with Airwire Channel 16 @ 916.36MHz. Also, European versions of these older transmitters and receivers operated on 869.85MHz; I call this Channel 18. Here’s my unofficial Table of channels and frequencies.

ChannelFrequency (MHz)Comments
10 (A)923.12
11 (B)918.12 S-Cab alternative frequency
12 (C)916.87
13 (D)913.62
14 (E)910.87
15 (F)904.87
16 (na)916.37 TVD interoperability w/ Ch. 17
17916.48S-Cab and older Tx/Rx
18869.85European operation
Unofficial channel designations

The “ProMiniAir” receiver is compatible with the Tam Valley DRS1 transmitter (Channel 16 or 17), both the CVP AirWire T5000 and T1300 wireless throttles (Channels 0-16), the no longer manufactured NCE GWire CAB (Channels 0-7), and the Stanton Cab Throttle (Channel 17).

The ProMiniAir transmitter is compatible with the Tam Valley Depot DRS1 receiver (Channels 0-17, Channel 18(E)), the CVP Airwire CONVRTR receivers (Channels 0-16), the QSI Gwire Receiver (Channels 0-7), the Stanton Cab LXR-DCC receiver (Channel 17), and the NCE D13DRJ wireless decoder (Channel 16 or 17). Of course, the ProMiniAir transmitters and receivers are compatible!

The ProMiniAir has some features that may be more interesting than commercial offerings. See the Comparison Tables below.

NameAirwire Receiver
Level Adj
NoCh 17
(or 18(E))
NCE Gwire CabYes0-7YesNo
S-Cab ThrottleNo17NoNo
Air Transmitter
Yes0-17, 18(E)YesYes
Comparison of wireless DCC transmitters

In fairness, the manufacturers of the Airwire T5000, the NCE Gwire Cab, and the S-Cab Throttle hand-held throttles never intended to interface with standard DCC throttles. But, as Tam Valley Depot recognized, it is advantageous to use any device that supplies DCC to the rails and transmit this DCC wirelessly to DCC-compatible receivers.

A notable limitation of the Tam Valley Depot DRS1 transmitter is that it does not provide DCC “IDLE” packets that the Airwire receivers require unless the original DCC throttle does so (most, if not all, do NOT). Also, the Tam Valley Depot DRS1 transmitter can only broadcast on one Channel (near Airwire Channel 16, which I have designated Channel 17 @ 916.48MHz).

Shown in the Table below are the comparisons for wireless DCC receivers.

Channel Auto
0-17, 18(E)NoneYes
Yes (Limited)
0-17, 18(E)None or
Comparison of wireless DCC receivers

The most notable difference among the receivers is “DCC filtering,” i.e., how the receiver behaves when losing a valid RF DCC signal.

When the TVD DRS1 or QSI Gwire receivers lose a valid RF signal, they output random pulses to the decoder. I have discussed the pros and cons of this in another post.

On the other hand, the Airwire CONVRTR outputs constant-level DC when it loses a valid RF signal or doesn’t receive enough DCC “IDLE” packets. Again, as discussed in another post, the DCC decoder may halt the locomotive dead in its tracks when it receives this constant-level DC, which may or may not be what the user wants.

The Airwire CONVRTR performs “DCC filtering” by periodically evaluating whether it’s receiving DCC “IDLE” pulses. So, even if a stream of completely-valid DCC packets is received, but there are few or no “IDLE” packets, the Airwire CONVRTR will become inactive and output constant DC to the decoder.

These characteristics of the Airwire receivers are why Tam Valley DRS1 transmitter will usually NOT work with Airwire CONVRTR receivers because the DRS1 will not insert additional DCC “IDLE” packets! The Tam Valley Depot DRS1 transmitter is a passive participant: if the input DCC throttle doesn’t produce frequent DCC “IDLE” pulses, then the Tam Valley Depot DRS1 will not transmit frequent DCC “IDLE” pulses.

Stanton designed the S-Cab LXR-DCC receiver specifically for the S-Cab Throttle’s intermittent DCC transmissions. Like the Airwire CONVRTR receivers, the LXR outputs a constant DC voltage when a valid RF signal is lost.

Via OPS mode (by default at address 9901), you can reconfigure ProMiniAir’s output behavior when a valid RF signal is lost. The first option (CV246 -> 0) selects the output of DCC IDLE messages (which the decoder is “comfortable” with, rather than random pulses that might “confuse” the decoder). The second option (CV246 -> 1) selects the output of constant-level DCC.

This reconfigurability makes the ProMiniAir receiver a versatile wireless DCC receiver. The ProMiniAir receiver’s RF DCC detection technique is more sophisticated than Airwire’s. The ProMiniAir receiver detects how long it’s been since it received ANY valid DCC packet. And, after a preset time interval (which is reconfigurable via OPS mode, changing the CV252 value in 1/4 second multiples), the ProMiniAir receiver will output either the DCC “Idle” messages (DCC filtering “off”) or output constant-level DC (DCC filtering “on”). When DCC filtering is “on,” and there is no valid RF signal, the DC level output is reconfigurable via an “OPS” mode setting of CV248 (-> 1 for positive DC, -> 0 for 0V DC) at the ProMiniAir’s DCC address.

Once a valid RF signal is received again, the ProMiniAir receiver detects this condition. It outputs these valid DCC packets to the “DCC amplifier” that sends “track-level” DCC to the decoder.

Another important feature of wireless DCC receivers is Channel selection and searching.

IF YOU SET SOME JUMPERS, the TVD DRS1 receiver will “listen” on a fixed Airwire Channel. Otherwise, the DRS1 will automatically search the Airwire Channels for a valid RF signal if you do NOT insert the jumpers. This behavior may or may NOT be a good idea if multiple wireless DCC transmitters transmit simultaneously on different Channels. And changing the Channel selection behavior (fixed Channel or auto-scan) requires physical access to the receiver to connect or disconnect jumpers.

On startup, the Airwire CONVRTR “listens” for a valid RF signal on its “startup” channel (which is reconfigurable by accessing a CV using the wireless throttle’s “OPS” mode). If the CONVRTR finds no valid RF signal after a given time, the CONVRTR will switch to Channel 0. This behavior is usually a good idea.

Like the Airwire CONVRTR, on startup, the ProMiniAir receiver will “listen” for valid RF on its “startup” Channel (default, 0) stored in EEPROM memory. This startup channel is changeable using the transmitting throttle’s “OPS” mode by setting CV255 to 0 through 18 at the ProMiniAir transmitter’s DCC Address (default, 9901). Like the TVD DRS1 receiver, if the ProMiniAir does not find a valid RF signal on its startup channel, the ProMiniAir receiver will then auto-scan Channels 0(A), 18(E), 17(S), 1(A), 2(A), …, 16(A) (in that order) for valid RF signal (A=Airwire channels, E=European channel @869.85MHz, S=S-Cab Channel @ 916.48MHz). This scan sequence guarantees that a wireless DCC transmitter (if one is available) is selected, but only if the ProMiniAir does NOT find a valid RF DCC signal on its startup Channel from another wireless DC transmitter.

Once “locked on” to a Channel. The ProMiniAir Receiver will continue to “listen” on this Channel, even if the transmitter is turned off or the signal is lost. This allows the ProMiniAir Receiver to pick up signals on the “locked on” Channel once the transmitter is turned back on or the signal is re-established.

If the ProMiniAir receiver finds no valid RF DCC signal on any Channel on startup, it will select Channel 0 and wait for a valid RF DCC signal. Also, upon reset, the ProMiniAir’s Channel search process will be unchanged: it will try the “startup” channel stored in EEPROM memory, then try auto-searching Channels, and if all else fails, wait on Channel 0.

So, in summary, we are offering the ProMiniAir DCC transmitter and receiver to provide a low-cost alternative with features not entirely found in commercial offerings.

You are provided with a few additional components when buying a ProMiniAir receiver or transmitter. In the case of the ProMiniAir transmitter, we include a simple “DCC Converter” PCB that converts DCC output to the track into Ground, 5V power, and 5V logic DCC. These outputs supply the ProMiniAir transmitter with power and DCC packets to transmit, so no additional power supply is necessary.

For the ProMiniAir receiver, we include a low-cost “DCC amplifier” that converts the ProMiniAir receiver’s 5V logic DCC back to DCC. In its typical configuration, the onboard DCC decoder would pick up from the track (again, discussed in detail below). The ProMiniAir receiver can be powered directly from the battery or a small external 5V power supply.

This modularity keeps costs down, allows for easy replacement of components rather than the entire assembly, and enables the use of commodity components less susceptible to supply-chain disruptions.

ProMiniAir transmitter connections
Standalone ProMiniAir transmitter connections
ProMiniAir receiver connections for a DRV8871 (3.6) amplifier
ProMiniAir Receiver connections for a Cytron MD13S (13A) amplifier

And you will need an antenna of your choosing! I love antennas, but your antenna requirements are too diverse to offer a “one size fits all” antenna solution. We provide an FCC/IC-approved Anaren “whip” antenna that connects to the U.FL connector on a 10-pin transceiver daughterboard. This antenna should work well for most transmitter applications and is FCC/IC-approved for “intentional radiators.”

For the ProMiniAir receiver, some can use the small whip antenna without modification; others will need to run an antenna connecting cable to a small, externally-mounted antenna. We discuss several excellent antenna options below.


The definitive source of information for the ProMiniAir transmitter and receiver is available here.

Kit Assembly

We no longer offer the ProMiniAir as a kit.

Firmware Installation

The ProMiniAir Tx and Rx are provided with the firmware already loaded. These instructions are only for advanced users who want to update the firmware.

The source code is available from this GitHub site. Locate the source code in a directory where the Arduino IDE can find it. You should retain the subdirectory structure to access the “project” with the Arduino IDE.

How to download the GitHub zip file that will maintain the directory structure

If you want a transmitter or receiver, edit libraries/config/config.h to select the “define” for the transmitter or receiver.

For a receiver (Rx), config.h should look like this:

// #define EU_434MHz
/* For World-Wide 2.4GHz ISM band*/
// #define NAEU_2p4GHz

// Set Transmitter or Receiver
/* Uncomment ONLY ONE #define*/
/* For receiver*/
#define RECEIVER
/* For transmitter*/
// #define TRANSMITTER

// Set the default channel for NA/EU 900MHz only!
#if defined(NAEU_900MHz)
/* Uncomment ONLY ONE #define*/
/* To set the default to NA channel  0 for 869/915MHz ISM bands only!*/
#define NA_DEFAULT
/* To set the default to EU channel 18 for 869/915MHz ISM bands only!*/
// #define EU_DEFAULT

// Set the transceiver's crystal frequency
/* Uncomment ONLY ONE #define*/
/* For 27MHz transceivers (e.g., Anaren 869/915MHz (CC110L) and Anaren 869MHz (CC1101) radios)*/
/* For 26MHz transceiver (almost all other radios, including Anaren 433MHz (CC1101), 915MHz (CC1101), and 2.4GHz (CC2500) radios)*/


If you want a transmitter (Tx), then config.h should be

// #define EU_434MHz
/* For World-Wide 2.4GHz ISM band*/
// #define NAEU_2p4GHz

// Set Transmitter or Receiver
/* Uncomment ONLY ONE #define*/
/* For receiver*/
// #define RECEIVER
/* For transmitter*/

// Set the default channel for NA/EU 900MHz only!
#if defined(NAEU_900MHz)
/* Uncomment ONLY ONE #define*/
/* To set the default to NA channel  0 for 869/915MHz ISM bands only!*/
#define NA_DEFAULT
/* To set the default to EU channel 18 for 869/915MHz ISM bands only!*/
// #define EU_DEFAULT

// Set the transceiver's crystal frequency
/* Uncomment ONLY ONE #define*/
/* For 27MHz transceivers (e.g., Anaren 869/915MHz (CC110L) and Anaren 869MHz (CC1101) radios)*/
/* For 26MHz transceiver (almost all other radios, including Anaren 433MHz (CC1101), 915MHz (CC1101), and 2.4GHz (CC2500) radios)*/


Two further options are available. The first option selects the crystal frequency of the FCC/EC-approved transceiver: 27MHz (Anaren) or 26MHz (Ebyte). The second option specifies North American or European default use.

After you complete downloading the firmware into the Pro Mini, please do not remove the USB connection from the computer until the “secondary” LED, which indicates attempted communication over the SPI (serial peripheral interface), flashes on (it will not be bright). This step ensures you properly initialize the EEPROM!

You load the firmware into the Pro Mini MCU using an “AVR ISP,” such as the Sparkfun Pocket AVR Programmer or a less-expensive clone. This “ISP” downloading mode will bypass and erase the bootloader to directly load the firmware into the Pro Mini MCU. On boot-up with the bootloader now erased, the Pro Mini MCU will almost instantly supply “5V logic DCC” to the DCC amplifier, which provides the DCC decoder with standard DCC waveforms. There is no “boot-up DC” or need to set CV29, bit2=0. (I set it anyway.) With this solution, all DCC decoders I’ve tried (ESU, Zimo, MTH) startup without the “boot-up jerk.”

This “ISP” form of loading firmware is not as extensively used by folks using the Arduino IDE, but ISP loading is easily accessible within the Arduino IDE. The overly-brief method of ISP programming steps is the following:

  1. Remove the transceiver daughterboard and the jumper (if inserted).
  2. Connect the USBtinyISP (or other) Programmer (with power switch ON to supply 5V DC to the ProMiniAir PCB while programming) to the 6-pin connector on the ProMiniAir.
  3. From the Arduino IDE, Select Tools → Programmer → “USBtinyISP” (or whatever ISP programmer you use).
  4. Select the AirMiniSketchTransmitter sketch.
  5. Select Sketch → Upload using a Programmer.
  6. The Arduino IDE will compile the sketch and download the resulting firmware to the Pro Mini via the USBtinyISP, bypassing (and erasing) the bootloader. 

Once the ProMiniAir receiver or transmitter firmware is installed in the Pro Mini and inserted into the ProMiniAir PCB, the ProMiniAir is ready for integration!


You must establish several connections to complete the ProMiniAir receiver (Rx) integration or transmitter (Tx).

Overview of Connections

See the picture below for an overview of the connections to and from the ProMiniAir. Which connections you use depends on whether the ProMiniAir will act as a receiver (Rx) or a transmitter (Tx). THERE IS NO PROTECTION AGAINST INCORRECT BATTERY OR EXTERNAL POWER CONNECTIONS!!! You will destroy the ProMiniAir immediately if you reverse the GROUND and POSITIVE POWER SUPPLY connection!

Data and power connections for PMA Rx
Data and power connections for PMA Tx

The Anaren and Ebyte transceiver daughterboards have a versatile
U.FL plug for antenna connections. You can plug in either the
Anaren whip antenna we provide or a U.FL-to-SMA or U.FL-to-RP-SMA
cable that screws into a remotely-mounted antenna. Also, a two-pin
output provides Ground and the DCC input to (Tx) or output from
(Rx) the RF transceiver board, serving as signals to an oscilloscope for
waveform review. See the figure below for details
on these connections.

ProMiniAir antenna connector (female RP SMA) and transceiver DCC input/output

The ProMiniAir has several connections that provide an AVR programmer, I2C display outputs, and 5V logic DCC inputs or outputs. See the photo below.

ProMiniAir connections for AVR programmer, I2C display output, and 5V logic DCC input or output

We will break down these connections for the ProMiniAir receiver and transmitter in the following two sections.

Receiver Connections

Several options exist for providing power, starting with the ProMiniAir configured as a receiver (Rx). The first option is to use external battery power and jumper the +5V and +5V (Battery) pins to use the onboard 5V regulator to provide board +5V supply.

ProMiniAir power connection options (for Rx only, the Tx receives power from the DCC Converter).

Since you may not like the heat generated by the onboard 5V regulator when you supply power with external battery power and install the jumper, as an alternative, you may use an external +5V power supply, as shown below, where the external power supply provides Ground and +5V. Of course, you do NOT install the jumper.

ProMiniAir receiver powered by an external +5V power supply (older PMA version, but the connections are the same for newer versions)
Close-up of ProMiniAir receiver power connections to an external +5V power supply (older PMA version, but the connections are the same for newer versions)

The ProMiniAir receiver must connect to an external DCC amplifier that converts the 5V logic DCC from the ProMiniAir receiver to DCC A/B that a DCC decoder requires. This DCC amplifier uses battery power and the inputs from the ProMiniAir receiver to provide the power and DCC messages, coded as a bipolar DCC waveform, to the decoder for both power and DCC messages. These “DCC amplifiers” are usually medium to large amperage amplifiers that accept pulse width modulation (PWM) input to provide precision output control for electric motors. The maximum PWM frequency of these amplifiers is usually high enough (> 20kHz) to reproduce DCC packets accurately.

Depending on the particulars of your installation, the author will provide an appropriate DCC amplifier as part of your PMA Rx purchase.

Close-up of the inputs to the DCC amplifier from the ProMiniAir receiver

As shown below, some DCC amplifiers have specialized connector configurations for a GROVE-compliant amplifier.

Example of another DCC amplifier’s connections to the ProMiniAir receiver

Integration of the ProMiniAir Receiver into a Locomotive

Of course, the real purpose of the ProMiniAir receiver is to integrate it into a locomotive for wireless DCC control using an onboard battery as power. An excellent high-power (13A continuous) DCC amplifier may be purchased here, as shown below. Unless determined otherwise for size constraints, this Cytron MD13S amplifier is the one we provide with the ProMiniAir receiver. You can successfully use more expensive high-amperage amplifiers (about $30 US as of 2020) found at Pololu here or here. These amplifiers are smaller (0.8″ x 1.3″) than the Cytron.

ProMiniAir receiver integration with battery power, DCC amplifier, and antenna (older PMA version, but the connections are the same for newer versions)
Example Installation

Transmitter Connections

Let’s turn the ProMiniAir used as a transmitter (Tx) of DCC messages from any DCC-compatible throttle.

The photo below shows the connections between an interface board that takes throttle DCC A/B inputs (“track” DCC) and rectifies these inputs to provide Ground and +5V power supply output. This “DCC Converter” PCB also “taps off” the DCC A input and converts it to a 5V logic DCC output suitable for the ProMiniAir transmitter. These outputs provide the ProMiniAir transmitter with Ground, +5V power, and 5V logic DCC input.

We provide the “DCC Converter” PCB as part of your PMA Tx purchase.

Photo of ProMiniAir receiver connections to a “DCC Converter” PCB that supplies the ProMiniAir transmitter with Ground, +5V power, and 5V logic DCC. The ProMiniAir transmitter does NOT connect to a battery or use the jumper connecting +5V to +5V (Battery)!
Close-up of ProMiniAir transmitter connections to the “DCC Converter” PCB. The jumper connecting +5V to +5V (Battery) is NOT used! (older PMA version, but the connections are the same for newer versions)

The user can change the ProMiniAir transmitter’s Channel (Airwire channels 0-16, S-Cab channel 17, and EU channel 18) and Power Level (0-10) by setting the DCC throttle’s address to that of the ProMiniAir transmitter’s (9900 by default). Then, using the throttle’s OPS mode, change the value of a configuration variable (CV255 for Channel: 0-16, and CV254 for Power Level: 0-10), exit OPS mode, and change the throttle back to the locomotive’s DCC address.

Receiver/Transmitter Antenna Connections

For the ProMiniAir transmitter, we strongly urge you to use the FCC/IC-approved Anaren “whip” antenna supplied with the surface-mounted transceiver to a 10-pin interface daughterboard. This whip antenna/transceiver combination is FCC/IC-approved as an “intentional radiator.” You can purchase antennas for the ProMiniAir transmitter online from many sites for experimentation purposes. For fixed installations of the ProMiniAir transmitter, we suggest reputable products from Linx, such as their SMA one-half wave antennas with an internal counterpoise. You can find these antennas at Digi-Key, e.g., ANT-916-OC-LG-SMA ($10.55) and ANT-916-CW-HWR-SMA ($12.85). The former antenna has a slightly better gain (2.2dBi versus 1.2dBi) but is somewhat longer (6.76″ versus 4.75″).

Linx half-wave antennas. The ANT-916-OC-LG-SMA has a better gain than the ANT-916-CW-HWR-SMA at the expense of being 42% longer.

For the ProMiniAir receiver or the ProMiniAir transmitter, where a small, remotely-mounted antenna is needed, we again recommend Linx antennas such as the ANT-916-CW-RCS or ANT-916-CW-RAH.

The ANT-916-CW-RCS is an excellent choice for a small antenna with a 3.3 dBi gain. It is available from Digi-Key or Mouser and note the male RP SMA connector.
The ANT-916-CW-RAH is another excellent choice for a small antenna (2.2 dBi) available from Digi-Key or Mouser. The connector shown here is a male RP SMA, but male SMA connectors are also available from Digi-Key and Mouser.


Diagnostic Outputs

The ProMiniAir receiver or transmitter provides diagnostic outputs that are not required for operation but are helpful for troubleshooting or just for fun:

  • You can monitor the transceiver’s output (in Rx mode) or input (in Tx mode) on the output DIP pins described above.
  • “I2C” outputs can drive an inexpensive two rows 16 columns I2C LCD.
The 2-pin connector provides Ground and the RF transceiver’s transmitted or received DCC signals. An oscilloscope can monitor these signals.
ProMiniAir receiver/transmitter connections to an I2C LCD (older PMA version, but the connections are the same for newer versions)
Close-up of ProMiniAir receiver/transmitter connections to an I2C LCD (older PMA version, but the connections are the same for newer versions)

The ProMiniAir software automatically searches for a valid LCD I2C address on boot-up. Please make sure you connect only ONE display to the ProMiniAir.

You can also change the ProMiniAir’s DCC address using the throttle’s “OPS” mode. For the transmitter, you use the DCC throttle that connects to the ProMiniAir transmitter (by default at DCC address 9900 (previously 9000)). For the ProMiniAir receiver, you use the wireless DCC throttle transmitting to the ProMiniAir receiver (by default at DCC address 9901 (formerly 9001)). The EEPROM permanently stores the changed address, but this new address is not operative until you power cycle the ProMiniAir.

Configuration and Testing

We default-configured the ProMiniAir receiver and transmitter to operate on Airwire Channel 0. This default can be changed by setting the DCC address to 9901(Rx)/9900(Tx) (the default, which can be changed as described in the Users Manual) to access the ProMiniAir transmitter and in OPS or Programming-on-the-Main (POM) mode setting CV255 to the desired Channel. Valid channels are 0-17 for North American operation or Channel 18 (869.85MHz) for European operation.

Should the ProMiniAir receiver fail to detect valid DCC packets on its default channel during startup, it will cycle through all Airwire Channels to find a Channel producing valid DCC packets. If this cycling fails to find a valid Channel, the ProMiniAir receiver will change to Channel 0 and wait for a valid RF DCC signal. This channel change is not permanent, and on a restart, ProMiniAir will revert to its default channel.

Several other configuration options are available through “OPS” mode programming, as described in the ProMiniAir Users Manual.

We strongly urge the user to test the ProMiniAir before the final deployment. At the least, an inexpensive I2C LCD can be purchased here or here (and numerous other locations) to gain insight into the ProMiniAir’s state. This display is particularly beneficial when using the ProMiniAir as a transmitter.

Examples of Testing (Advanced)

This section is only for the advanced or adventurous. In the examples below, the Yellow waveform is the signal from/to the RF transceiver for Rx/Tx, respectively. The blue waveform is one Channel of the resulting DCC (Rx) sent to the decoder, or DCC received from the throttle via wireless transmission (Tx).

Receiver Testing

The photo below shows the ProMiniAir operating as a receiver. Of course, an RF transmitter wirelessly sends DCC packets. This transmitter may be a dedicated wireless DCC throttle, such as the Airwire Tx5000. Or, it may be a transmitter that converts standard “track DCC” to wireless DCC, such as the Tam Valley Depot DRS1 transmitter or the ProMiniAir used as a transmitter (as discussed in the next section)!

On the LCD, “My Ad: #” is the DCC address of the ProMiniAir itself. The “(L)” means “long” address. Displayed on the second line is the Channel number and whether DCC “filtering” is “off” (Filter: 0, as shown) or “on” (Filter: 1).

Example of output from a ProMiniAir receiver. The yellow signal on the oscilloscope is from the T/R DCC output pin on the ProMiniAir receiver (the green PCB on the left with the red RF transceiver PCB mounted on the left end). The blue trace is the DCC signal produced by the DCC amplifier (the PCB on the right with the blue power/DCC out terminal) from inputs from the ProMiniAir.

The photo below shows the oscilloscope waveforms with no valid RF DCC signal. With filtering off (Filter: 0), the DCC sent to the decoder reproduces the random pulses generated by the receiver.

The ProMiniAir receiver’s outputs when receiving no valid RF DCC. The yellow signal is the RF receiver’s DCC, and the blue signal is one of the DCC outputs from the DCC amplifier that provides input to the onboard DCC decoder.

These two photos show the ProMiniAir’s transceiver and DCC amplifier output when valid RF DCC is received and no valid RF DCC is received. DCC filtering is off, so the PMA outputs DCC Idle messages. The Tam Valley Depot and Gwire receivers simply reproduce the random pulses received by the transceiver.

Valid RF DCC received. The decoder DCC mirrors (blue) the receiver’s DCC (yellow).
No valid RF DCC. When DCC filtering is off, the PMA injects DCC IDLE messages (Filter: 0).
No valid RF DCC. The random pulses produced by the RF receiver are reproduced by the output DCC, and this is what Gwire and Tam Valley Depot receivers produce.

The user can reconfigure the ProMiniAir receiver using the throttle’s “OPS” mode. Setting the wireless throttle DCC address to 9901 now shows that the Msg address (“Msg Ad: #”) matches the ProMiniAir receiver’s address (“My Add: #”).

Set DCC filtering “on” by selecting the ProMiniAir’s address (9901 in this case). Note that the MSG address now matches ProMiniAir’s address.

Change CV246 to “1” in OPS mode, which will turn “on” the ProMiniAir receiver’s DCC filtering.

In “OPS mode,” setting CV246 to “1.” The display will indicate that you changed CV246.

The display now shows that DCC filtering is “on.”

In “OPS mode,” setting CV246 to “1.” The display will indicate that you changed CV246.

Exiting OPS mode and changing the throttle to the locomotive’s address now shows an updated “Msg Ad: #” with DCC filtering “on.”

Then change the address back to the locomotive’s address. The display now shows DCC filtering is “on.”

Below is the transceiver’s and DCC amplifier’s DCC output when transmitting valid RF DCC.

Again, the receiver and decoder DCC when a valid RF DCC signal is received.

If we turn off the wireless transmitter/throttle sending RF DCC, now the transceiver outputs random pulses (yellow). Since filtering is “on,” the ProMiniAir receiver firmware detects “bad” waveforms that do not appear to represent a valid DCC packet. The ProMiniAir receiver then outputs a constant-level signal that causes the DCC amplifier to output a high level on DCC A (blue) and zero Volts on DCC B (not shown). This behavior is similar the that of the Airwire receivers. However, the detection mechanism for Airwire receivers is simply the lack of a sufficient frequency of DCC “IDLE” packets, not an analysis of the transceiver’s pulse train.

The waveforms when no valid RF DCC signal is received. With filtering on (Filter: 1), DCC A sent to the decoder is positive, and DCC B is zero, assuming that you set CV248 to “1”. If you set CV248 to zero, DCC A is zero, and DCC B is positive.

Repeating the process of changing the wireless throttle’s DCC address to 9901, going into “OPS” mode, changing CV246 to “0”, exiting “OPS” mode, and switching back to the locomotive’s DCC address will now set DCC filtering to “off.”

You can repeat selecting the ProMiniAir’s address and, in OPS mode, set CV246=0 to turn the filtering back off and then set the address back to the locomotive’s.