On this page, you will find instructions of:

  • how to build a German semaphore main signal with LEGO bricks,
  • how to equip it with lights,
  • how to motorize the blades, and
  • how to automate the signal with a MattzoLayoutController.
German Semaphore
German Semaphore Stop Signal

About the signal

The signal was designed by Matthias Runte of MattzoBricks in 2021. Shape and functionality is based on the German semaphore main signal (Formhauptsignal) that was common on German railroads since the 19th century. Even though form signals are being replaced since the 1970s by light signals, the signal is still used in many train stations and on smaller main tracks in Germany.

How to build the signal

Designing fully functional, lighted and realistic semaphore signals for the LEGO train system is a very challenging task.

Find below some pictures of the signals that help you to build the signal yourself. Given I have enough time and my attention span is long enough, I might also compile some piece-by-piece building instructions including a registry of the required parts for the signal in the future.

The signal can be built as a two-aspect or three-aspect signal. The following picture shows the three-aspect signal, which is of course a bit more complex than the two-aspect version.

German semaphore with 3 aspects
German semaphore with 3 aspects

Required Parts

The signal can be build with standard LEGO parts. No printed parts are required for this signal.

Additional parts are:

  • A white vinyl sticker for the blades
  • 1 or 2 LEDs (5mm)
  • Thin copper wires with black lace to power up the LEDs
  • A servo to motorize the blade
  • Some inches of jeans thread or similar to connect the servo with the blade


The blades are made of red tiles with vinyl stickers. The shape of these stickers is very simple. To make them, I just bought a cheap “D” vinyl sticker for cars and used the cut the white part of it into fitting pieces.

Other useful decals can be found on the instruction page for the semaphore distant signal.


To equip the signal with lights, I have used 2 white 5mm LEDs. The LEDs fit perfectly into the holes of the LEGO parts as shown on the pictures. The wires are very thin, black copper wires used for model scale train layouts. The wires can be put between the mast parts. This way they are almost completely hidden and very hard to spot at all. The lights are connected to the MattzoLayoutController on some plus (3,3V) and minus (ground) terminals. To prevent the LEDs from burning off and to save electrical power, you may want to add some resistors to limit the current through the LED.


To make the blades move, you need a servo. I have used a 270° servo from a maker shop. This servo is available under different brands and can be ordered e.g. on Ali Express for a reasonable price.

Servo 270°
Servo 270°

The idea is that the servo rotates to a specific angle when the MattzoLayoutController gets a signal command for the different aspects.

The servo is placed in the little brown house behind the signal.

Small signal servo house
Small signal servo house

If you want the assembly to be fully autonomous, you may build a larger house that also covers the MattzoLayoutController and a rechargeable battery.

If you build your layout with MILS or similar techniques, you can place the servo under the tracks instead.

Please note that you control both blades of the three aspect signal with a single servo only.

For the signal with two aspects, I have used the following servo angles:

  • Hp0 (stop = red): 170°
  • Hp1 (clear = green): 115°

For the three aspect signal, I have used:

  • Hp0 (stop = red): 90°
  • Hp1 (clear = green): 15°
  • Hp2 (restricted = slow = green/yellow): 160°

The servo angles will vary depending on a couple of factors. If the servo angles don’t fit, just play around with them in the MattzoLayoutConfiguration until they fit to your needs.


The signal is automated with a MattzoLayoutController (MLC). The MLC controls the servo for the blades, and provide current for the LEDs. For the three aspect signal, you may also use the controller to switch on the yellow light only if it is used (when showing the slow aspect).

Find more details about the MLC here.

To use the MLC with signals is described here.

In firmware 0.5, there is an example configuration file called “MattzoLayoutController_Configuration_FormSignals.h” that should help you to easily configure your signals.


Leave a Reply

Your email address will not be published. Required fields are marked *