Adding more realism to a model of a T-class

Published date: 4 October 2026 Read time: 23 min T-class Electronics

Introduction

T-class locomotive exiting a tunnel.

One of my favorite things to do in terms of model railroading is to operate trains. I therefor want the behavior of the models to be as close to the prototype as possible. Most models do have a bit of rolling distance before they stop, but quite a lot of models stop instantly. The extremely short stopping distance is quite practical when attending driving sessions, but it is in many cases unrealistic. A heavy freight with a speed of 90 Km/h won't stop instantly like it does in the model railroad world.

There is also the speed of model trains. Some models takes of like a rocket. There are definetely some trains that accelerate fast in the real world, but a heavy freight train definetly won't go off like a rocket. The top speed of certain models is also unrealistic.

I operate my trains using DCC (Digital Command control). That opens up a myriad of configuration posibilities, especially on ESU decoders. I have recently started experimenting with all the different settings on the ESU decoder in my T-class.

Understanding the prototype

An important step in tuning the decoder with more realistic settings is to understand as much as possible about the prototype. The locomotive I will be working on this time is the Australian T-class. It's a locomotive I unfortunately known little about, but there is luckily a Wikipedia article describing the locomotive. Do note though that the article might not be entirely correct. It's always good practice to use at least two independent quality controlled sources for good references. I will not spend much time on this type of quality control, so the base content here might not be entirely accurate. I did however find this website that has a diagram of the locomotive with some info. The diagram can be found here.

The T-class is according to the Wikipedia article an EMD G8 locomotive with an EMD 8-567 engine with 8 cylinders as prime mover. That also matches what the diagram shows. There are also some other info in relation to the engine, but my experience with engines is quite lacking. It's therefor of no value to me to dive any deeper into the engine specifications. Knowing the type of motor is enough for using the correct sound parameters.

Model decoder

The next step in the process of adding more realism is to understand the decoder in the locomotive model. The decoder equipped as of writing this article is an ESU LokSound 5 micro deocder. The sound project added by the shop I ordered the model from is EMD 8-567C NT. The beforementioned project page contains a function table for the default settings for the decoder, wich also has an reference to wich sound functions are located in what slot.

ESU have created the LokProgrammer, which is a device with associated software that makes it easier to program ESU decoders. Re-programming the sound of the decoder actually requires that device and software. I do not own such a device, so I will use JMRI to reprogram the decoder. JMRI is an open-source program that can program almost any aspect of an ESU decoder. The great thing about JMRI is that it's fully compatible with Z21, wich is the DCC system I use. The sound project I want on this decoder is allready loaded in from the store, so it's therefor no need for me to get the ESU LokProgrammer just to add another sound project.

Check out my other T-class articles if you want to know more about how I installed the decoder. Those articles can be found here.

Remapping the functions

One thing I want to do over time with most of my model locomotives is to standardize the function mappings as much as possible. The benfits of function mapping standarization is as follows.

  • It will be easier to remember what function is mapped to which function key, as it will be the same across all locomotives
  • Automation will be easier, as less customization is necessary

Do note that creating a function mapping standard might be confusing for other people that operates your models if attending an operation session. It's therefor a good idea to keep the function mapping as simple as possible for those models you will use on operation sessions. The T-class model I own will most likely never be used on an operation session where other people control the locomotive. This is therefor a consideration I can safely ignore for this particular model.

My T-cass model will be the first model in my collection where I implement a standarized function mapping. The mapping I decided to go for as of writing this article is as follows.

Function Description
F0 Front lights - low beam
F1 Front lights - high beam
F2 Tail lights
F3 Switch light direction
F4 Dynamic brake
F5 Auto brake
F6 Shunting mode
F7 Horn
F8 Start or stop engine
F9 Bell
F10 Independent brakes
F11 Cab door
F12 Coupler sound
F13 Engine compartment doors
F14 Handbrake
F15 Isolation switch
F16 Heavy load
F17 Sanding
F18 Compressor
F19 Flange squal on/off
F20 Instant acceleration and deceleration
F21 <empty>
F22 <empty>
F23 <empty>
F24 Manual notching on/off
F25 Rev up engine
F26 Rev down engine
F27 Shutters open/close
F28 Air dryer
F29 Short air let off
F30 Radiator fan
F31 Sound fader

Changing the function mapping will also affect the random functions setup on the decoder. I therefor had to change those mappings as well.

Random function Activated function
Random 1 F30 (radiator fan)
Random 2 F19 (flange squeal)
Random 3 F29 (short air let off)
Random 4 F18 (compressor)
Random 5 F28 (Air dryer)
Random 6 F27 (Shutters open/close)

Note that random 2 is used for sanding by default. I decided to use it for flange squeal instead. One intersting function I decided to map up is function 20. That function is used for changing the acceleration and deceleration. So what is the purpose of that function? I intend to use it whenever I need to clean the wheels. Having to wait for the wheels to spin won't work well with wheel cleaners. The bellow table shows what the mappings look like in JMRI.

Conditions Physical outputs Logical functions Sounds
F0,not F1,not F3 Headlight[1] Dim lights -
F0,F1,not F3 Headlight[1] - -
F2,not F3 Aux 1[1] - -
F0,not F1,F3 Rear light[1] Dim lights -
F0,F1,F3 Rear light[1] - -
F2,F3 Aux 2[1] - -
F4 - Brake 3,Shift Mode 1 Sound slot 6
F5 - Brake 2 Sound slot 10
F6 - Shunting Mode,Momentum off -
F7 - Grade crossing Sound slot 3
F8 - - Sound slot 1
Stopped,F8 - - Sound slot 19
Stopped,F8,not F15 - - Sound slot 26
Moving,F8 - - Sound slot 25
F9 - - Sound slot 4
F10 - Brake 1 Sound slot 11
F11 - - Sound slot 15
F12 - - Sound slot 16
F13 - - Sound slot 5
F14 - - Sound slot 14
F15 - Shift Mode 4 Sound slot 21
Moving,F16 - Primary Load,Shift Mode 6 -
F17 - - Sound slot 13
F18 - - Sound slot 7
F19 - - Sound slot 23
F20 - Momentum off,Shift Mode 1 -
F21 - - -
F22 - - -
F23 - - -
F24 - - -
F24,F25 - Shift Mode 2 -
F24,F26 - Shift Mode 3 -
F27 - - Sound slot 32
F28 - - Sound slot 17
F29 - - Sound slot 24
F30 - - Sound slot 8
F31 - Sound fade -

Tuning engine parameters

The next step is to adjust the engine parameters. Adjusting the top speed before adjusting other settings like brakes and sound is a good idea, as the top speed will influence those other settings. The top speed of the prototype is 62 MPH. My initialy attempt at configuring the speed realistcly resulted in way to low speed, as my calculations where incorrect. I therefor had to do some research online to find the correct way to calculate the speed parameters.

One video I found quite useful is this video from Steve's World of Model Railways. It discusses a lot of intersting aspects of speed in the model railway world. It goes through several different ways to deal with scale speed. The video shows a formula for calculating scale MPH wich is as follows.

v = ( 3600 * 100 t ) 5280

I will not explain the formula in depth here, as it is explained in the video. I will describe how I used the formula though. The variable t in the formula is the time in seconds it takes for the model to travel 100 scale feet. The value v will be the velocity (speed) in MPH. I model in H0 scale, so I therefor have to measure out 35 cm which according to the video is 100 scale feet. H0 scale is 1:87, which means that 1 cm in the scale world is 87 cm in the real world. 100 feet is 3058 cm. 3048 divided by 87 is aproximately 35 cm.

I therefor used a yardstick to measure out 35 cm followed by using some masking tape to mark the distance.

Section of track with tape as distance indicators.

I then ran the model at full speed between the points and used the stop watch on my cell phone to get the time. The model used aproximately 2 seconds between the points at full speed. That gives the following calculation.

( 3600 * 100 2 ) 5280 ≈ 34

I decided to test out an online scale speed calculator to find out if it gave the same result, wich it did. The prototype does as mentioned have a top speed of 62 MPH according to Wikipedia and the previously mentioned diagram. We can use that information to find the seconds by turning the formula around.

t = 3600 * 100 v * 5280

We can then utilize the formula to find the result, wich is aproximately 1.0997.

3600 * 100 62 * 5280 ≈ 1.0997

That means that the model should use aproximately 1.1 second rounded up to traverse 35 cm. The value to alter the maximum speed value according to the LokSound manual is the VMax value (CV5). That value is in the JMRI version I use named Vhigh, wich is configured under the Speed Table tab.

I had the value set to 90 after the initial tests, wich is the value I tested with above. That gives way to low top speed in comparision with the prototype. Furhter testing shows that a more suitable value is 170 for a realistic speed.

I also decided to adjust the VMin value (Vstart in JMRI, CV 2). The reasoning behind that decission is that the model stutters a bit when going at the lowest speed. I could have adjusted the speed steps on the controller to avoid the stuttering, but I decided to adjust VMin instead because I want to run all my models on 128 speed steps.

I initialy decided to not change the speed table because I have no clue what the speed table is on the prototype. There is however a problem with that. I want the target speed of the model to match the displayed speed in the Z21 app. The problem is that the throttle is linear while the speed curve is non-linear. I therefor decided to change the speed curve to a linear one. That might not be entirely realistic, but it will ensure that the displayed speed and the actual scale speed matches. Do note that a linear speed table will influence the realism of the acceleration. I then did a new test with 15 MPH as the target speed, wich now gave the expected numbers of seconds.

Bellow is the resulting configuration that I ended up using on the Speed Table tab. I decided to leave the trim settings for VMin and VMax as their default values.

Screenshot from the speed table tab in JMRI.

What I found out during the testing at the accurate speed was that it was quite fast. I know that my layout won't be large, wich makes high speed a bad idea. Especially when I know my layout will have tight curves. I therefor decided to lower the value again. The decision I landed on was to operate at half speed. I therefor changed the value of VMax to 85, wich is close to the first value I tested.

The next tab relevant for the engine parameters is the Motor tab in JMRI. The values I changed first is the acceleration (CV 3) and the deceleration (CV 4). The first value I changed was the value of the deceleration. The value range is 0 to 255. I decided to use 255, wich means that the stopping distance will be long. The ESU manual describes that the CV for deaceleration specified the time it takes to stop in units of 0,896 seconds. The inputed value is first multiplied by 0,25.

The next is the acceleration value. There is probably a formula that can be used to calculate the expected acceleration based on the values from the diagram. I decided to use a different approach to estimate expected acceleration. I have a game named Train Simulator classic where one of the locomotives is an EMD SW10. That is a similar locomotive to the T-class. Not sure if the engine is the same though. I will however use that locomotive as a basis for determining if the acceleration value is sensible.

It took me aproximately 2 minuttes to get the EMD SW10 up to just bellow 62 MPH. There is 120 seconds in two minutes. Dividing that by 0,25 gives the value that should be inputed in the acceleration field, wich is 480. The maximum value that can be entered is 255, wich is equal to 63 seconds. I therefor decided to try a value of 240, wich is the same as 60 seconds. That value asumes that 1 second in the real world is 2 seconds in the scale world. That gave a way to slow acceleration in my opinion. I therefor decided to try a 3:1 ratio for the time. That gives a value of 160.

Note that the acceleration will be linear because of the speed curve, wich might not be entirely realistic. The problem is that the acceleration will be way to fast at lower speeds and way to slow at higher speeds. This is a compromise I decied to live with as I prefer the target speed to be correct in the Z21 app over having a more a realistic acceleration. I do not known the speed curve of the real locomotive, so it wouldn't be possible for me to get a realistic speed curve anyways.

The next settings is related to load compensation characteristics. These settings will for most use cases work best with the default settings. There is however an automatic calibration feature. The automatic calibration feature will cause the locomotive to go at full speed for 1,5 seconds to try to the detect the most sensible parameters for CVs 51, 52, 53, 54 and 55. I decided to do that calibration.

The last thing i decided to do was to turn on the Motor Overload protection. I do not known how that feature work or if it is beneficial to have it turned on, but my impression is that turning on overload protection will protect the locomotive electronics if the motor does something funky. The modifications done results in a Motor tab as shown bellow for a realistic setup.

Screenshot from the motor tab in JMRI.

I decided to later change the acceleration to 80. That was necessary for me since I decided to configure the model with a top speed of half of the realistic speed.

Tuning brakes

ESU decoders comes with three different brakes. What brake to use for independent, dynamic or auto depends on the preference of the person programming the decoder. The default mapping with the config on the decoder I have in the T-class is as follows.

Brake function Type of brake
Brake 1 Independent brake
Brake 2 Auto brake
Brake 3 Dynamic brake

The way the brakes work on ESU decoders is that they subtract the a specified value from the deceleration value. The deceleration value I went for is 255 as described in the previous section. So specifying a value of 255 for one brake will result in that brake instantly stopping the locomotive if applied. Note that the brakes are cumulative, so applying more than one brake will add the values together.

The diagram for the T-class shows a brake percentage of 60%. That value can be used to estimate the stopping distance of the locomotive in meters according to this article. I will base the calculation on a speed of 100 Km/h (aproximately 62 MPH), with a gravity of 9,81 mm/s2 and an ahesion cofficient of 0.15. 100 Km/h is aproximately 27 meters per second. That gives the followig equation.

27 2 2 * 9.81 * 0.6 * 0.5 ≈ 123.85

We can then see that the theoretical stopping distance is 124 meters rounded up. That translates to 144 centimeters in H0 scale rounded up. I therefor measured up 144 centimeters using a yardstick on my interim layout as show in the bellow picture. It would be more precise to use a straight piece of track, but that would involve rebuilding the layout, wich is something I won't do simply for this test.

Yardstick laying on top of trakcs.

The braking logic I will use in this case is that the auto brake and independent brake combined should result in a stopping distance of 144 centimeters as I am not sure what brakes the brake percentage covers. It's possible to calculate the expected time to stop, but I decided to do some testing instead. What I found out after some testing is that a decent combined brake value is 225.

I also decided to calculate the stopping distance for 24 Km/h (aproximately 15 MPH). That is aproximately 7 meters per second. That gives the following equation.

7 2 2 * 9.81 * 0.6 * 0.5 ≈ 8.32

That translates to 9 cm in H0 scale. I therefor measured up 9 cm with my yardstick to test if the breaking distance is 9 cm when stopping from a speed of 15 MPH. That matches, wich means that the braking distance makes sense also on lower speeds. My impression is that a braking length of 9 cm feels way to fast, but it matches what it's supposed to be, so I will configure the brakes like that.

I therefor decided to set CV 179 (brake 1) to 75 and CV 180 (brake 2) to 100. I am not sure if that is a realistic setup, but my impression is that the auto brake is more powerfull than the independendt brake. I also set CV 182 and CV 183 to 0. Those CVs controls the maximum allowed speed that the locomotive should travel at when brakes 1 and 2 are applied. I want to use the brakes to stop the train, so I therefor set both values to 0.

T-class locomotive stopeed besides a tape acting as brake marker.

The last brake to adjust is the dynamic brake. The purpose of that brake is to use the engine to slow down the locomotive instead of putting strain on the brake discs, especially when going downhill. This is therefor a break that I want to allow to continue to move the locomotive while the brake is applied. It's important to remember that this brake is also cumulativ. The values I decided to use is 10 for CV 181 (brake time reduction) and 60 for CV 184 (maximum speed with brakes applied).

All of the settings related to brakes mentioned in this section can be configured under brake functions in the advanced tab in JMRI. Bellow is an image of what the configuration looks like in JMRI.

Screenshot from the brake function under the advanced tab in JMRI.

I later decided to use 185 as the combined value for the independendt and auto brake as a result of using a different top speed. I therefor changed CV 179 to 60 and CV 180 to 125.

Adjusting sound effects

One of the first things I adjusted in terms of sound was the volume. I have noticed over time that you can barely hear the horn over the engine sound. I therefor decresed the engine volume and increased the horn volume. The next thing I did was to adjust the automatic brake sound. That is the sound you hear just before the locomotive stops. The sound will be on way to long when the brake length is adjusted as described previosly. The settings I ended up using is as follows.

Screenshot from the automatic brake section under the sound tab in JMRI.

This is another configuration where you have to compromise. The settings shown above will give a nice sound effect if you brake with only one brake or slow down slowly, but using both brakes won't trigger the sound effect. It is possible to configure the sound effect to trigger for quick braking, but that will cause the sound effect to stay on way to long at low speeds. I do not want the brake sound to be to long at slower speeds, so I therefor decided to use a setting supporting that.

The next thing I changed was the horn type. I have no clue what horn the T-class uses, so I therefor tried a few different horns before deciding to use the Leslie S-3L horn by setting CV 163 (SoundCV9) to 6. I also have no clue what the bell sounds like, so I decided to go for the default bronze bell.

Final thoughts

T-class approaching station.

Adjusting decoder settings is a time consuming process. There are a lot of settings to play with and the process involves a lot of trial and error. So is all the work required for adding more realism worth it? I would say that it depends on what you are looking for. I enjoy operating trains, so for me realistc train operation is something I seek. Those who do model railroading for other reasons might have other preferences. An important aspect of the model railroad hobby is finding out what you want from the hobby.

Another aspect here is the compromises you make when selecting the level of realism. I ended up using half of the realistic top speed as that fits my layout better. What compromisies to make really depends on how you want to operate your model trains and the size of your layout.

Publication date: 4 October 2026

Superspeed500 2026