The RailDriver desktop cab controller from PI Engineering has been available for quite some time now. Although it’s been reviewed before, most of those reviews are older or are focused on using it with Trainz or Train Simulator 20xx (formerly Railworks). I finally purchased one for use with Open Rails, and thought I’d share my impressions and add a newer review to the mix.
I’ve wanted to get a RaiDriver since I first found out about it when I was running MSTS under Windows XP. Unfortunately, as support for XP wrapped up and I converted to Windows 7, the software needed to interface the RailDriver to MSTS became incompatible with Win7. I put my plans for a RailDriver on hold for a while. Open Rails development pushed ahead though, and incorporated RailDriver support, so this year I decided it was time to buy one.
Editorial note: I purchased the RailDriver at retail for my own use — this isn’t a review sample and this review is strictly my own impression with no connection to PI Engineering.
I don’t get terribly wrapped-up in “unboxing” like some reviewers and YouTube presenters. Suffice it to say that the RailDriver arrived in a sturdy retail-style box with full four-color print graphics on the outside and custom die-cut cardboard packing spacers inside, rather than the generic plain cardboard and Styrofoam packing you might expect from what would be considered a more limited-production peripheral. PI Engineering puts some pride into the packaging and that’s always nice to see.
When you take the RailDriver out of the box, you’ll discover that the labels for the buttons and levers aren’t applied from the factory. A sticker sheet is included, and you’ll have to apply them carefully one-by-one — I had flashbacks to putting together my old Kenner Star Wars X-Wing and TIE fighter toys on Christmas in the 1970’s! Take your time with the stickers. They’re sized almost perfectly for their locations in slight recesses in the molded plastic, but you’ll want to be careful to get them centered and lined up straight. Getting the round “Alert” and “Bell” button labels on straight takes extra care — there’s no locating notch molded in the buttons to match a cut in the labels, so you have to be sure you’re getting the label both centered and with the text level and straight. It’s a little easier if you use tweezers to place them, particularly the smaller ones.
The instructions advise using a flat screwdriver blade to pry up the “Wiper” and “Lights” knobs in order to place the labels. I would suggest putting a cloth or thick piece of paper between the screwdriver tip and the RailDriver housing to avoid marring the finish. The knobs don’t pop off easily. They aren’t on shafts like you would think — they snap on and off of a rotatable hexagon-shaped plastic part that’s flush with the surface of the housing.

The RailDriver in relation to my desk, 19-inch monitor and other peripherals. For size comparison, that’s a Saitek joystick on the left and the (rather large) computer keyboard is pushed to the right.
The RailDriver’s footprint on the desk takes up about as much space as a computer keyboard minus the numeric pad and arrow keys section — roughly the same footprint as one of the space-saving alphanumeric-only keyboards that are getting popular. It’s considerably taller though — the top surface that the main controls mount to is about 3″ tall. Given its form factor, I’d estimate that the RailDriver’s controls are approximately 1/4 scale or so compared to the real thing. I haven’t been in a modern locomotive cab with desktop controls to be able to say for certain, but that’s the overall impression I have if I compare it to cab photos.
The primary throttle, reverser and air brake controls are all roughly patterned after EMD and Westinghouse Air Brake controls, with the noticeably “stepped” design of the reverser and throttle quadrants (as opposed to the somewhat flatter GE design) and the air brake lever housing is strongly reminiscent of the Westinghouse plastic cover used in their electronic desktop brake valves (rather than the cast aluminum ones more commonly seen). If you’ve used photorealistic EMD cabviews in MSTS or Open Rails, you’ve probably seen the prototypes for the RailDriver’s levers.
To the right of the brake levers, there are a pair of three-position rotary switches for wipers and headlights, and to the left of the reverser and throttle levers, there’s a tall paddle switch for the horn and a set of two rocker switches plus four push buttons for various functions. These are all free-form designs, not modeled in the fashion of any particular prototypes. The left-hand controls are all molded covers over buttons and feel much like the membrane switches common on computer keyboards. There are actually three paddle-style controls with center-off positions; two are grouped with the pushbutton controls and are set up for one as the up/down selector for geared locomotives, one as the emergency air dump and the horn paddle is also based on the same mechanism. The horn and the emergency brake have both “up” and “down” positions, but depending on how the controls are set up in the simulator’s code or in a MacroMaker application script (software from PI Engineering), their functions may be the same in either position.
Above the pushbutton and paddle switches on the top of the RailDriver, there’s a three-position LED segment display that’s typically used as a digital speedometer. According to PI Engineering’s documentation and API, it can also be used to display other information depending on programming.
The front of the RailDriver housing has a secondary angled button panel that contains 28 buttons in two rows of fourteen buttons, plus a rocker switch and a directional pad (or “D-Pad” as it’s commonly referred to on game controllers). The directional pad works in eight directions — the cardinal up/down/left/right directions plus up-left/up-right/down-left/down-right when pressed toward the combination 45-degree positions. The rocker switch is generally designated as a camera zoom in/out control while the directional pad is typically designated to control the camera pan/tilt functions.
The housing of the controller is thick molded plastic that doesn’t creak or deform in your hands. The darker-colored housings around the main control groups on the top panel are all separate pieces which fit very closely with the main housing — they’re very accurately molded and fit together with only the slightest visible seam. The lower button panel is a separate molding which appears to be attached to the main housing, and there’s a more noticeable gap where the two sections meet there — but it’s still quite industrial-looking and attractive. The dark plastic surround for the button panel can be unsnapped from the bottom so that legends on strips of paper can be inserted in the windows above the two rows of buttons. (PI Engineering supplies a pre-printed set for MSTS, Trainz, and RailWorks/TS20xx and Word and PDF templates to edit and print more, including blanks.)
This snap-on face is the only plastic part that’s fairly thin, and it has a couple of extra locating tabs at the top which bend and break easily. Those two tabs aren’t really necessary; they don’t lock the snap-on face in place (the lock tabs are much sturdier) and there are still other larger tabs which do the real work of holding the faceplate in place. I chose to cleanly break off the two small, weak tabs before they broke off anyway on their own; the remaining lock tabs on the bottom and the main tabs on the top are more than adequate to hold the panel in place. I’m not really sure why the smaller tabs are present — they do fit into matching recesses on the front housing, but the normal motion of unsnapping and hinging up the panel to disengage the large top tabs is almost guaranteed to break them off in short order. They may just be there to ensure proper alignment during initial assembly. Just know that if you buy a RailDriver and discover these get damaged when you unsnap the panel to insert button legends, there’s nothing to worry about.
The base of the RailDriver cabinet is a sturdy stamped steel plate, with large flat rubber feet. It’s quite heavy and won’t move around on the desk at all.
The main lever controls all move smoothly and with appropriate resistance. For those who might be wondering, the reverser handle is fixed to the mechanism. (On North American diesel and electric locomotives, the reverser handle generally is removable as a sort of lockout safety measure.). There are detents on the reverser for forward, neutral and reverse on diesel and electric locomotives, although it’s connected to a position sensor so its full range can be used with steam power. There are no notches on the throttle lever’s range so it can be used for all types of diesel and electric locomotives, not just North American-style diesels with notched throttles. The throttle lever has an off-center “neutral” zone between the power and dynamic brake ranges. The handle itself is attached to its rotating base in an articulating segment so that it properly deflects sideways to move through the off-center portion of the quadrant like the prototype — without binding or relying on excess slack in the mechanism to bend or deflect. The automatic brake lever has a small detent in the quadrant between the continuous service position and the emergency dump position; you have to push it firmly forward to go into the “big hole”. The independent brake lever includes a mechanism that allows the entire lever to be pushed sideways from any position to “bail off” the locomotive brakes. Somewhat like the throttle lever, the sideways motion and spring action is engineered into the way the lever is mounted and moves, so the action is positive and consistent, and doesn’t put any stress on the main mechanism.
The horn/whistle lever looks like a long-handle toggle switch, but it’s really a plastic paddle that rocks over a pair of membrane switches beneath the top panel. This is the one control that many users have remarked feels weak, and even PI Engineering cautions against overly “enthusiastic” handling of it. Moving the lever handle lightly forward or back will activate the membrane switches easily; there’s no need to use force at all. In case the plastic stem ever does snap, PI does offer a replacement handle and the lock ring that snaps down around it to hold it in place.

RailDriver up close.
To use the RailDriver with Open Rails, it has to be calibrated first so that OR can read where the analog controls are in relation to their range stops. The calibration process will step you through moving each position-sensor based control through a series of steps between its lower and upper range limits. This has to be done for the reverser, throttle/dynamic brake handle, train brake and independent brake, plus the two rotary knobs which are also position sensors — not switches. Once the calibration is complete, Open Rails can respond to the RailDriver without needing any external software interface.
The Open Rails setup documents have a section which describes how to calibrate the RailDriver for OR, and how to provide the resulting calibration file for OR to recognize it. Here’s the step-by-step in a somewhat clearer form:
- First, you need the RDcalibration.exe utility from PI Engineering. The easiest way to get it is to install the MSTS drivers and utilities from PI Engineering. You can even accept the default installation into a Program Files folder, because you won’t run anything from here. It’s just for reference.
- Make a NEW folder to use with Open Rails. This simplifies calibration. Give it a recognizable name, like “RD Calibration” or similar, and put it somewhere outside of any “Program Files” folder. You’ll run the calibration utility from here.
- Look inside the folder where the RailDriver software first installed, and then copy these files:
- RDcalibration.cnt
- RDcalibration.exe
- RDcalibration.hlp
- RDcalibration_ger.cnt
- RDcalibration_ger.hlp
- RDCalReadme.txt
- RDLanguage.ini
- PIEHid.dll
- Paste them into the new “RD Calibration” folder you just made.
- Go back to the RailDriver software installation folder and find the folder named “controller”. Copy the entire folder (including its contents) and paste it into your new “RD Calibration” folder. For convenience, you can make a shortcut to RDcalibration.exe to keep handy near your Open Rails launch shortcut, if you want. I prefer to make sure that RDcalibration.exe is set to run as Administrator in the file’s Properties.
- Launch RDCalibration.exe and follow the instructions on the screen to calibrate the controls.
- At the end of the calibration sequence, it’s advisable to return the reverser to neutral, the throttle to minimim throttle, the brake controls to their minimum positions, and the wiper and light controls to their “off” positions before finishing and quitting the calibrator utility.
- Go back and open the new “RD Calibration” folder you created to run the utility from. Find the folder named “controller”. Inside, you should see a file named “ModernCalibration.rdm”. In a list or details view, it should show the current date in the “Date Modified” column.
- Copy-and-paste the new “ModernCalibration.rdm” file to your main “Train Simulator” folder — wherever Train.exe is found in an MSTS installation.
- If you use mini-routes or multiple MSTS installations, paste this copy of the file into each one, for every install that you access with Open Rails.
- Keep a backup copy of the calibration file if you want.
- You can re-run the calibration utility any time you want. Just be sure to copy the newly-generated “ModernCalibration.rdm” file to your Train Simulator folder(s) in order for Open Rails to read it.
When calibrating the throttle, you may have problems with setting it in the idle position and getting an out-of-range error from the calibration program. If this happens — and it seems to be fairly common with either newer RailDriver units or with newer versions of Windows — you should cancel out of the calibration and then close and re-open the calibrator. Before starting again, click on the “Help” menu item and “About”. Then, click on the “Copyright” line in the description text to unlock the bounds limits. You’ll get a confirmation message. With that done, you can go back through the calibration with no problems.
While calibrating, when asked to move a control to its full low or high limit, move the control there and let go of it. Holding it firmly against the “stop” may cause to the calibration to pick an extreme, narrowly defined value which will result in you having to hold the control hard against the stop to reach that setting while running a train in OR. Let go of the lever so it rests free to get an accurate reading of its position.
To use the RailDriver with Open Rails, just plug in the USB cable so the RailDriver is active. Launch Open Rails, select a route and train, and run it. Once the simulator is started, press the bottom-left button on the RailDriver that’s always labeled “RailDriver Run/Stop”. The LED display will change to show the current speed, and the controls will go active.
Note: The locomotive controls will “snap” to match the RailDriver’s controls when you activate it. If you begin an activity where the train is already under way, pause the sim and move the RailDriver’s controls to approximately match the positions visible on the screen or on the F5 HUD display. Then un-pause and activate the RailDriver and the controls will “snap” into the RailDriver settings with a minimum of difference.
If you are using the RailDriver and save a run in progress and then come back to it later, you can use the technique above to reset the RailDriver to approximately where you left the controls last. If you come back to a saved run and haven’t moved the RailDriver’s controls at all, you’ll be able to resume and the controls in the sim will remain exactly where they were when you left off.
The RailDriver comes with a small AC power brick. This is used to power the internal audio amplifier which drives a subwoofer speaker in the base. By connecting the RailDriver’s audio cable to your PC and then your PC’s speakers to the RailDriver, you can get a low-level “rumble” effect through the RailDriver. There’s a volume adjustment knob on the back of the RailDriver to control the extent of the effect. It’s optional, and the RailDriver controls themselves run off of the USB bus power alone. Because I use headphones all the time to avoid disturbing the rest of the family with train noises, I chose not to connect the extra audio and power cables. The RailDriver runs just fine without them.
Important note — On my Windows 10 computer, leaving the RailDriver’s USB cable plugged in would prevent the computer from going to sleep automatically. It’s connected to a USB hub on the desktop, so it’s easy to plug in and unplug when not in use. If you have a RailDriver and notice you computer doesn’t sleep when you leave it alone for a while, unplugging its USB connection may solve the problem. Another option is to use a USB hub with on/off switches for its ports or groups of ports. These are typically sold by better online retailers such as Amazon or Newegg.
In operation, The RailDriver definitely provides a good experience for Open Rails. Direct control over the throttle and brakes makes it easier to handle trains realistically, and going back to keyboard control alone just isn’t the same. It does take some getting used to, particularly for throttle and dynamic brake action though. Open Rails doesn’t respond to the position of the throttle or dynamic brake in an entirely linear fashion. It tends to respond to a certain amount of movement of the control between its limits. There’s a bit of a “rubber-band” effect that takes some getting used to. I found myself re-calibrating the RailDriver several times to find a calibration that worked well with Open Rails’ behavior. There is no adjustment in Open Rails to fine-tune this behavior, which is unfortunate. I think this is a shortcoming of Open Rails, not the RailDriver. Still, once I learned how to accommodate the way Open Rails responds, I still much prefer the RailDriver to keyboard control.
There are a few other issues that are due to Open Rails and how it handles the RailDriver, rather than any problem with the RailDriver itself. Open Rails implements the button panel at the base of the RailDriver according to the layout for MSTS. However, some of these functions don’t work in Open Rails. For instance, the car number and siding label displays don’t work from the RailDriver’s buttons. They should, since they should correspond to keyboard function keys, but they don’t. Also, some buttons don’t work since their corresponding functions don’t exist in Open Rails. There are no buttons to invoke the head-out views because those were never established in MSTS when PI Engineering first laid out the button template. Also, when the horn triggers the bell on a locomotive in Open Rails, the bell can’t be toggled back off from the RailDriver’s “Bell” button – you have to use the “B” key on the keyboard. However, the bell can be switched off normally using the “Bell” button on the RailDriver still. Using the RailDriver’s bail-off function of the independent brake doesn’t work correctly either. All of these issues are likely due to the RailDriver implementation being added fairly early in the development of Open Rails, but never receiving any updates. There is no interface in Open Rails to allow the RailDriver’s button mapping to be modified (unlike the keyboard map), so its functions are currently hard-coded into Open Rails. This is unfortunate, I think. I have filed a bug report about how it fails to handle the automatic bell and the independent brake bail-off with the Open Rails team, so it can be addressed in time. I’ve also added the suggestion that the RailDriver button mapping be opened up to re-mapping, the same as can be done with the keyboard. This would make it possible to customize the RailDriver to more closely follow a given locomotive’s controls as well as allow end-users to optimize function key actions on the RailDriver.
All in all, the RailDriver is a worthwhile investment. By itself, the RailDriver works well and is very well-made. Open Rails just needs more work in how it handles the RailDriver. If you also run other train simulators such as Run 8 or TS20xx, there is additional value as it can be integrated with both of these simulators as well. And although the RailDriver’s interface to MSTS from PI Engineering only works under WIndows XP, the third-party RDTrainFix (German) interface application is still in existence for die-hard MSTS users as well.