A Numbers Game: The 2022 Dieburg (Germany) Train Collision

Max S
23 min readApr 21, 2024


Dieburg is a city of 15.699 people (as of 2022) in southwest Germany, located in the federal state of Hesse 20km/12mi west-southwest of Aschaffenburg and 26km/16mi southeast of Frankfurt (both measurements in linear distance).

The location of Dieburg in Europe.

Dieburg lies on the Rhine-Main-Railway (Rhein-Main-Bahn, referring to the two rivers merging at its starting point), a 78km/48mi double-tracked electrified main line connecting Mainz with Aschaffenburg. The line opened in December 1858, being the result of a cooperation between the then-independent Kingdom of Bavaria and Grand-Duchy of Hesse. The line sees both freight and passenger services, being an important corridor for freight trains to go around the city of Frankfurt, but lost long-distance passenger services when the DB (German national railway) retired the Interregio-trains in the 1990s. The line’s sections are counted northbound, meaning a southbound train (like those involved in the accident) passes through them in decreasing order.

The site of the accident seen from above, just northeast of Dieburg. Both trains were coming from the northeast (top-right corner of the image). The accident is usually credited to Dieburg despite the site being closer to the towns of Altheim and Münster (Hesse).

The Trains Involved

DGS 46192 was an international freight service from Bratislava (Slovakia) to Troisdorf Friedrich-Wilhelmshütte (Germany). It consisted of an Ecco-Rail (an Austrian rail service provider) Series 185 locomotive and 20 four-axle freight cars carrying so-called steel collies, rolls of new sheet steel. The Series 185 is a four-axle electric locomotive introduced in 1999 for both international passenger and freight trains. The locomotives measure 18.98m/62ft in length at a weight of 85 metric tons and can reach up to 160kph/99mph. They’re set up for multi-system use, meaning they can work with different countries’ varying electrification standards.

An Ecco-Rail Series 185 locomotive, identical with the one pulling DGS 46192, as depicted on the company’s website.

DGS 42174 was another international freight service from Sommacampagna Sona (Italy) to Wuppertal-Langerfeld (Germany), provided by the German Rail Cargo Carrier GmbH, a subsidiary of the Austrian Rail Cargo Group (RCG). It consisted of an Austrian Series 1016 locomotive and 16 pocket cars carrying semi-trailers. The train had a total length of 524m/1719ft and weighted 1582 metric tons. The Series 1016, nicknamed “Taurus”, is a four-axle multipurpose electric locomotive introduced in 1999 as part of Siemens’ “EuroSprinter”-family. Each locomotive of the type, which can be found all over Europe, measures 19.28m/63ft in length at a weight of 88 metric tons and can reach up to 230kph.

An ÖBB (Austrian National Railway) Series 1016 photographed in March 2022 hauling a row of pocket cars with semi-trailers, forming a train identical with DGS 42174.

Lastly there was GAG 60101, a freight service from Hamburg-Billwerder to Kornwestheim, provided by the DB’s Cargo division. It consisted of DB 152 128 and eight low-floor container cars, giving it a total length of 220m/722ft at 469 metric tons in weight. The Series 152 is a four-axle multipurpose electric locomotive introduced in 1998 as another member of Siemens’ “EuroSprinter”-family. Each Series 152 measures 19.58m in length at a weight of 87 metric tons and can reach 140kph. The locomotive was developed for both passenger and freight service but is only used for freight services. DB 152 128 had been delivered to DB Cargo in August 2000 and, until the accident, had a spotless service record.

DB 152 128, the locomotive pulling GAG 60101, photographed waiting for its next train half a year before the accident.

The Accident

DGS 46192 receives permission to depart Babenhausen station on the 19th of May 2022 at 2:44am, heading southeast-bound towards Dieburg (10.5km/6.5mi down the line). It passes through block section 36 and stops at the red main signal for section 34 (there is no section 35 between them) by 2:52am. The dispatcher at Babenhausen station tried to set the path for the following DGS 42174 into section 36 as it did, but the signaling system prevents him from turning the station’s exit-signal (P1) green as the first train had yet to vacate the section.

To understand the logic of the system one should know that the block-sections of a rail line are predetermined sections of the line which only one train may occupy at any time. Their size limits the maximum length of a regular train, since the trains cannot be longer than one section. To simplify, the signal ahead of the next block section can only be turned green if the signaling system doesn’t detect a train in that next section, in order to ensure that trains also remain far enough apart to maintain sufficient stopping-distance. Trains usually don’t run within sight of each other, as their required brake-distances are far longer than those of, say, a truck on the road. A train could be too close to the one in front without the driver of the rear train being able to see the back end of the train ahead. Thus, in the case of DGS 42174, the signaling-system correctly blocked the dispatcher’s intention to turn signal P1 green as DGS 46192 was not yet a safe distance ahead.

A (translated) graphic from the report, showing the positions of the trains between Dieburg and Babenhausen at 2:51am (not to scale). The train in section 34 kept DGS 46192 from clearing section 36 which would be required for DGS 42174 to depart.

The dispatcher, accepting that they couldn’t clear the freight train for departure as they had intended to, decides to allow an oncoming train to enter the station first. This requires that train to cross the path already pre-set for DGS 42174, which obviously gets blocked by the signaling system as two trains cannot be allowed on the same piece of track. The dispatcher, correctly, presses a button [“Fahrstraßenhilfsauflösetaste”, drive-path-delete-assistance-key. German is weird sometimes] on his control desk to delete the path for DGS 42174 in order to let the other train depart the station, crossing what used to be the reserved track.

The dispatcher notices that DGS 42174’s marker on the screen is gone after the other train departs, so they, suspecting a software bug, manually enters it again at the station where the train is still holding ahead of the red P1 signal.

DGS 46192 is finally allowed to proceed into section 34 at 2:55am. It’s marker had disappeared alongside the one for DGS 42174, though, which the dispatcher didn’t notice. Thus, with no number linked to the train that the system sensed moving into section 34, an error message (F3304) pops up on the error-log screen above the dispatcher’s desk. They clear the error after 41 seconds and without notifying anyone else of the odd occurrence, leaving section 34 displaying red (“occupied”) with no info on what occupies it. But it was still occupied, so the system could still operate and maintain safe distances at this point. DGS 42174 enters section 36 at 3:06am, a minute before DGS 46192 stops at a red signal outside Dieburg station.

The situation as it appears to Babenhausen’s dispatcher at 3:05am, with section 34 showing as “occupied” without displaying DGS 46192’s marker.

Dieburg’s dispatcher, unaware of the apparent bugs encountered by his coworker, tries to work out why section 34 is reporting “occupied”, figuring that it must be DGS 42174. He contacts that train’s driver on the radio at 3:11am, being told that they stopped at a red signal ahead of section 34. He thus assumes a malfunction in the signaling system erroneously reporting section 34 to be occupied and, after reporting that to a superior at Frankfurt, receives permission to have DGS 42174 proceed into the (in his assumption not actually) occupied section 34 under the rare “operate on sight”-rules. DGS 42174 enters section 34 as the dispatcher overrides the red “stop”-order displayed by signal Zbk 3334 at 3:23am, with the signaling system now displaying that train number in section 34. Guidelines demand that the dispatcher at Dieburg now waits for the train to pull up outside Dieburg station and radio in once they come to a halt, allowing their orderly reintroduction to regular operation. The dispatcher instead chooses to set the station’s entrance-signal to green, which is spotted by the driver of DGS 46192 who had been waiting at that signal for 21 minutes by the time it turns green. He assumes that the signal is meant for him and sets his train in motion, beginning to enter the station. Fatally, the signaling system shows his train entering the station as DGS 42174, unaware that there are two trains in section 34.

The dispatcher does follow the requirement to look out the window to check if the train has completely vacated section 34, but attributes the freight cars he sees rumbling past to DGS 42174, in accordance with what he sees on his screen. He enters “section 34 cleared” into the logbook at 3:31am. He either fails to notice or disregards warning-messages from two level crossings in section 34, which had remained closed way longer than they are programmed to anticipate due to the actual DGS 42174’s slow progress under the operate on sight rules. He instead radios the driver of DGS 42174 and accuses him of speeding under those rules, having reached the station way too soon, and orders an immediate stop. DGS 42174’s driver insists that he’s at Kilometer-marker 56.2, 3km/1.9mi ahead of Dieburg station, but the dispatcher rejects that claim due to the very clear evidence on his screen and the train he saw pass outside his window. He’s sure that the driver is lying and is actually standing outside Darmstadt-Kranichstein station, 13km/8mi beyond Dieburg station on the other side. The marker “DGS 42174” on the screen, as it may be obvious by this point, actually belongs to DGS 46192, which is actually sitting in that location.

A rough sketch showing where DGS 42174 was stopped (orange) vs where both the dispatcher and the signaling system claimed it was (red marker).

The dispatcher, eventually giving up on trying to convince DGS 42174’s driver that he didn’t know where he was, resets the occupancy-status for section 34, under the assumption that there was some bug in the system and the section is clear. He does so by referring to the axle-counter, a system meant to further ensure a section is completely clear if shown so by counting the axles of each train entering and then leaving a section. The reset was possible as the system had counted DGS 42192’s axles (believing it to be DGS 42174) leaving the section after the actual DGS 42174 had entered the section with the same number of axles. The section is thus no longer listed as occupied and the dispatcher can allow the next freight train, GAG 60101, to depart Babenhausen station at 4:00am under a green signal. The departure under a green signal dooms the train, as DGS 42174 is still sitting at kilometer 56.2, waiting to finally be allowed to proceed after what must have been a confusing argument with the dispatcher.

The driver of GAG 60101 begins accelerating as their train departs Babenhausen, aiming to reach the 100kph/62mph speed limit. He’d never get to that speed before, at 4:04am, his locomotive slams into the back of the stationary DGS 42174 at 94kph/58mph. The impact caves the front of 152 128 in before throwing the locomotive into the adjacent field as DGS 42174 is shoved forwards. Several cars of both trains also derail, with some getting twisted and crushed as they can’t be thrown aside fast enough. The driver of GAG 60101 is pinned in the remains of his locomotive and soon succumbs to his injuries, his coworker aboard DGS 42174 suffers minor injuries and a shock.


Several residents called the emergency services soon after the accident, reporting a loud noise and variously suspecting car crashes, planes falling from the sky or an explosion. Dieburg’s dispatcher had previously alerted the DB’s emergency response department (ERD) at 3:38 due to the supposedly speeding DGS 42174, reporting that he had had the train stop outside Darmstadt‐Kranichstein, leading the department to send an emergency incident manager to that location. The dispatcher’s coordinating supervisor received an alert at 4:08 that DGS 42174 had set an emergency stop order for all trains between Dieburg and Babenhausen, reporting this to the ERD but claiming that the train was, according to the dispatcher, sitting outside Darmstadt‐Kranichstein. It took another 4 minutes for the local police department to notify the DB of the various emergency calls, which sparked another discussion about what happened where before, at 4:28am, the line between Dieburg and Babenhausen was finally locked down due to a “suspected derailment” around kilometer 56.2. The extensive delay was blamed on confusion about DGS 42174’s location, and its driver had also been unable to leave his locomotive after sending the stop-order as the torn overhead catenary was yet to be turned off. He thus couldn’t investigate what exactly had occurred at the far end of his train as the dangling wires posed a lethal risk.

The impact by GAG 60101 threw some of the cargo from the semi-trailers aboard DGS 42174, even without derailing the train cars or dislodging the trailers.

Investigators examined both trains involved in the collision at the site, finding no sign of any preexisting defect that could have contributed to an accident. GAG 60101’s train cars had all their brakes (those that were still attached to the train at least) applied, but even recovery and review of 152 128’s data-logger couldn’t determine if the driver had triggered an emergency stop or if the brakes had applied as the collision ruptured the brakes’ air lines. The brakes on DGS 42174 had been not been applied when it was struck by the other train, which made it slightly easier to shove forward, but the resistance from the stationary train was still enough to fatally crush the leading cab of 152 128.

It was both the statement by DGS 42174’s driver and recordings from the signaling system that brought the investigation onto the right path to the accident, allowing them to gradually piece together the series of events that led to the collision outside Dieburg station.

A crane recovers a pocket car which was folded in half by the forces of the collision.

The dispatcher at Babenhausen had seen DGS 46192 depart Babenhausen station for Dieburg, occupying section 36 as it came to a halt at signal Zbk 3334 where it waited for permission to enter section 34. Section 36 is home to level crossing number 59.9, which activated as the train departed Babenhausen, also starting an internal timer counting down an anticipated standard timespan for being closed due to a train in its proximity.

DGS 42174, the next freight train to head from Babenhausen to Dieburg, was meant to follow DGS 46192 on the same path. But the Babenhausen dispatcher’s request to send it on that path at 2:47am was rejected by the system as DGS 42174 was still in section 36, standing at signal Zbk 3334. Its slow progress and eventual stop caused the level crossing to send an excessive blockade warning at 2:51am when its timer ran out, which was ignored by the dispatcher.

The positions of trains between Dieburg and Babenhausen at 2:51am along with the level crossing 59.9 and the intended path for DGS 42174 (not to scale).

The programming for the signaling system saw it assume signal P1 was green already (even though it wouldn’t actually turn green until the path to Zbk 3334 would be clear), keeping the set path for DGS 42174 reserved. This simulated setting was independent from the signal’s actual setting, meaning the signal at the site remained red due to the occupied section ahead while the system calculated with it being green under the assumption that the section ahead would be green in order to set and reserve the path for DGS 42174.

The dispatcher at Babenhausen decided to use the time until section 36 would be clear to allow an oncoming train from Dieburg to Babenhausen to enter the station first, which required the train to cross the reserved path for DGS 42174, which the system (correctly) didn’t allow. A reserved path is seen as “train may depart immediately”, so the path cannot be crossed or otherwise used by another train. The dispatcher thus, correctly, uses a button to delete the path from the signaling system so that one for the incoming train can be set, as they know the train wouldn’t actually depart for a few more minutes at least. Deleting the path sees the signaling system register P1 switching from the (simulated) green to red. This is the point where things got complicated.

P1 had turned red when DGS 46192 passed it, as the section beyond it (36) was then occupied. Checking if the path was available for the following DGS 42174 required the simulated green in order to then check the section of track beyond it. But the way the path was then deleted saw the signal’s simulated switch to red (which, in reality, it had been the whole time) register as an actual change from green to red, which wouldn’t happen unless a train had departed the station, passing the signal. DGS 42174’s marker on the dispatcher’s screen was thus moved to section 36, overwriting the marker for DGS 46192, despite the train not actually moving an inch. The train’s departure was also added to the traffic log printed out by the signal box printer as if the train had actually departed.

The simulated switch of signal P1 sees DGS 42174’s marker erroneously overwriting that for DGS 42174 ahead, without the train actually moving, at 2:52am.

DGS 42174 was then no longer shown as sitting at the station, but the dispatcher, knowing that it hadn’t left, manually entered it back into the system at its actual position after radioing the driver to ensure the train really was still sitting at the station. The system doesn’t allow a train’s number to exist twice, logically, and since manually entered numbers have priority over automatically tracked numbers the manual entry of DGS 42174 in its correct spot saw the system see its displayed location of that train as erroneous and deleted the marker. This programming was present so that, if the system has an error, the human input isn’t challenged by what might be faulty software or hardware. The dispatcher was obviously meant to ensure presence of all trains meant to be present if they moved markers around via the manual input. The signaling system could still tell that section 36 was occupied, deleting the marker due to duplication merely meant it no longer showed what occupied it, hiding DGS 46192. Deleting a duplicate train number also wasn’t documented by the printer.

The train ahead of DGS 46192 had finally moved along while this occurred, clearing section 34 and turning Zbk 3334 green at 2:53am, allowing the train to proceed into section 34. Since the system had no marker in section 36 it didn’t know what marker to show occupying section 34, leading to DGS 46192 being shown with the error-code F3304 once it passed the signal, which turned red (as it should).

The situation at 2:55am, with DGS 46192 showing an error-code instead and the manually entered DGS 42174 being correctly shown at Babenhausen station. Signal P1 would subsequently turn green.

Section 34 was under the jurisdiction of the dispatcher for Dieburg station, but the investigation found that the error-code was cleared at 2:55:56am from the Babenhausen dispatcher’s desk, which he did without consulting his coworker who was actually in charge of that section or radioing any train drivers for their positions. This left section 34 showing “occupied” without a marker, DGS 46192 had once again disappeared from the screens. The train correctly operated two level crossings within section 34, which was shown in the signal box but didn’t raise suspicions by the dispatchers.

DGS 42174 departed Babenhausen station at 3:01am, coming to a halt at signal Zbk 3334 by 3:06:54am as the following section was still registering as occupied even if the signaling system no longer knew what occupied it. DGS 46192, running invisible to the dispatchers, comes to a stop at signal 30F outside Dieburg station 15 seconds later.

Dieburg’s dispatcher noticed the “occupied” status of section 34 without a train marker at 3:11am and radioed the driver of DGS 42174 to inquire about their location, being told (correctly) that they’re sitting in section 36, ahead of signal Zbk 3334, and have been sitting there for a while already. The dispatcher suspects a malfunction in the train detection system for section 34 as the cause of the odd status displayed. He finds train number 51756 in the logbook as what seems to be the last train to pass through the section, but that train has moved beyond Dieburg station by this point meaning he can no longer make its driver step off and ensure his train is complete and out of the section. Dieburg’s dispatcher thus contacts the coordinating supervisor at Frankfurt at 3:13am, telling him that train number 51756 left section 34 showing occupied for unknown reasons and requests permission to let the following DGS 42174 proceed on sight. It appears that he was unaware of DGS 46192’s existence.

DGS 42174’s driver receives permission to enter section 34 on sight at 3:18am. The dispatcher attempts one more time to un-occupy the section via the axle counter, which fails. As far as he knows all train cars that entered the section left it again, but the system refuses the reset as it still has DGS 42174’s axles entering the section but not leaving it. Dieburg’s dispatcher, still believing in a faulty train detection, thus uses a so-called replacement signal to officially override Zbk 3334’s red light at 2:23am, allowing DGS 42174 to proceed into the section at low speed.

A replacement signal (three white lights) overruling the red “stop”-status displayed by a German main signal.

DGS 42174 now slowly proceeded into the 5.4km/3.37mi long section 34, which had DGS 46192 still sitting at its far end. It had been there for 16 minutes by that point, 11 longer than the time a train driver is expected to wait before inquiring about the reason for the delay. There happened to be some construction work going on in the area at the time of the accident, and it’s assumed that the driver of DGS 42174 assumed the unusual delay was part of delays caused by that, perhaps choosing not to inquire about his status as to not further stress the dispatchers.

The signaling system detected DGS 42174 entering section 34 and reacts by now displaying its number in the empty marker-field left when DGS 46192’s error code was cleared. Nobody at the signal box seems to have noticed the freight train teleporting several kilometers down the line. The actual DGS 42174 was now invisible to the dispatchers as it moved along the line at approximately 25kph/15.5mph, with the signaling system only being able to show one train in the section at any time since that was the most there was meant to be in one section at once.

Guidelines required that Dieburg’s dispatcher waited until DGS 42174 radioed in that they were standing outside signal 30F at the entrance to Dieburg station, but he instead turns that signal green at 3:26am in preparation of the train’s arrival there. DGS 46192‘s driver sees the signal turn green in front of him and proceeds into Dieburg station, proceeding through and beyond it while being shown in the signal box as DGS 42174. Dieburg’s dispatcher does look out his window to confirm that section 34 is actually clear, but the tail end of a freight train he sees rumble past belongs to DGS 46192, not DGS 42174. He still logs it as the latter train clearing the section at 3:31am.

DGS 46192 proceeds through Dieburg station with the wrong number, leaving DGS 42174 “invisible” as it occupies section 34.

A level crossing within section 34 sent a warning message at that same moment, reporting that it had been activated for too long. This was caused by the actual DGS 42174 driving far slower than usual, but despite being strong evidence of section 34 being actually occupied the dispatcher doesn’t follow up on the warning, which disappears 12 seconds later as DGS 42174 finally passes the “off-switch”-sensor for the level crossing as it moves out of the level crossing’s proximity.

Dieburg’s dispatcher figured out at that point that seeing the back end of DGS 42174 pass his signal box just a short bit ago means the train was speeding quite a bit, especially under the risky “drive on sight” status. He contacts the driver of DGS 42174, confronting him with the accusation and is told that, due to the darkness, the train is actually driving very slowly and is still a considerable distance from reaching Dieburg station. Some back-and-forth ensues, ending with the driver being given a stop-order and bringing DGS 42174 to a halt at kilometer 56.2, 3km/1.9mi from Dieburg station.

The dispatcher was insistent on the driver of DGS 42174 having misbehaved (and then lied to him), but still decides to ask the dispatcher for Babenhausen station what the last train sent to Dieburg had been. Babenhausen’s dispatcher confirmed that that train had been DGS 42174, explaining that he remembered that train very well due to the train’s marker “jumping around” on screen a bit for unknown reasons before the train was dispatched. Neither dispatcher brought up any other trains during the conversation, which ends at 3:34am. Dieburg’s dispatcher, suspecting a malfunction in the signaling system’s train detection system along with a randomly lying, speeding train driver, follows malfunction-handling guidelines by checking the axle-counter for section 34. The counter shows the same number of axles entering (DGS 42174) and leaving (DGS 46192) the section, allowing a reset of the occupancy-status. 46192’s entrance into the section, having occurred without a train number attached as “unknown occupancy”, hadn’t been recorded by the axle counter. Additionally, both trains just happened to have the same number of axles. The system could thus be reset, showing section 34 as unoccupied despite the “invisible” DGS 42174 still stopped within it.

Section 34 after the axle-counter was used to reset occupancy at 3:34am.

The dispatcher stopped DGS 46192 outside Darmstadt-Kranichstein station at 3:39, still thinking he stopped DGS 42174. He made several radio calls in the following minutes, to 42174’s driver, the ERD and the coordinating supervisor along with consulting Babenhausen’s dispatcher, with the recorded conversations indicating that the coordinating supervisor agreed that DGS 42174 must have been speeding and was 21.5km/13mi further down the line than he claimed. GAG 60101 was then allowed to depart Babenhausen station at 4:00am towards Dieburg. The signaling system, seeing an unoccupied path all the way to Dieburg station, turned signal Zbk 3334 green as GAG 60101 approached it. The freight train passed the signal at 4:03am, seconds before it slammed into the back of the stationary DGS 42174 which, forgotten by dispatchers and reset-removed from the signaling system, had been sitting outside Dieburg station that whole time.

The collision shows up on the screens at both the signal box and the central control center as a complete loss of overhead catenary power as the piling wreckage tore the wires and shorted them out. DGS 42174’s driver, being shoved forward with his parked train, triggers an emergency stop-order for all trains in the vicinity at 4:06am. An oncoming train, already starting to slow due to the lack of power from the catenary, is brought to a halt by the stop order less than 1000m/0.6mi from the wreckage. Dieburg’s dispatcher, still placing DGS 42174 near Darmstadt, sets a stop-order for any trains in that location as well, which is later lifted as it becomes clear that DGS 42174 had been where its driver claimed.

An aerial photo of the wreckage taken the following morning, it appears that DB 152 128 had been wholly thrown aside rather than derailing.

The report notes that DGS 46192 twice failed to radio in when he was held at a signal for longer than usual, both when he was stopped for 21 minutes outside Dieburg station and later when he was brought to a halt outside Darmstadt-Kranichstein. He had been stopped at the latter location at 3:39am, and only attempted to contact the dispatcher by 4:20:58am, well after the 5-minute guideline and after the accident had occurred. This wasn’t unusual behavior though, as train drivers often wouldn’t inquire after 5 minutes if they knew about/expected further delays. The absence of the inquiry by DGS 46192’s driver, which may have reminded the dispatchers of his train’s existence, was listed as a contributing factor though.

The report, which isn’t allowed to place guilt (that is the job of law enforcement and the judicial system), concludes that the odd functionality of the signaling-system, which was insufficiently explained/taught to the dispatchers, was the main cause of the accident, enabled primarily by improperly performed procedures by Babenhausen’s dispatcher. The programming of the signaling-system caused it to falsely assume departure of a train just because a pre-set path was deleted, giving the assumed departure priority of a previously properly logged train and overwriting that train’s identity with that of the one the system assumed departed. Furthermore, the manual entry of a train’s position into the system should have, if anything, reset the previously overwritten marker to the status it displayed previously. Instead, the system completely deleted the “duplicate” number when the dispatcher entered DGS 42174 back into the marker at the station, instead of reverting it to displaying DGS 46192. Babenhausen’s dispatcher failed to notice this and thus also didn’t manually enter DGS 46192 into the correct position. He apparently forgot about DGS 46192 as a whole at that point, and thus also concluded that the error-code that popped up when DGS 46192 proceeded from section 36 to 34 was actually caused by the “jumping around” of DGS 42174. He proceeded to delete the error-code, despite it appearing in a section of the line where he was only allowed to observe as it was in the jurisdiction of Dieburg’s dispatcher.

Dieburg’s dispatcher, meanwhile, had been having an unusually busy night due to various delays caused by construction work in the area, which the investigation argued may have aided in him failing to notice both the “disappearance” of DGS 46192 and his coworkers unauthorized deletion of the error-code.

Dieburg’s dispatcher’s desk as shown in the report, surveilling Dieburg station, the line to Babenhausen and CCTV from a local level crossing among other things.

He had no way to know that he was receiving faulty information due to the actions of Babenhausen’s dispatcher, and thus had no reason to doubt what the system showed him. However, in handling the occurrence as the malfunction it appeared to him as, he failed to follow the proper procedures. He most notably turned the entrance-signal to Dieburg station (30F) green early instead of first waiting for the train he assumed to be watching to confirm having arrived at it, allowing the invisible DGS 46192 to proceed past it instead. This led to both him and the signaling system mistaking it for DGS 42174. Lastly, when he did inquire about DGS 42174’s position, he repeatedly rejected the driver’s correct location report, towards the end even in an agitated fashion, rather than trusting the driver over a signaling system that he simultaneously assumed was malfunctioning. The driver reports and the signaling system are meant to be treated equally, but with one being seen as malfunctioning the other should reasonably be given priority. His behavior was aided by guidelines existing for both “no train-number shown” and “inexplicable occupation-status”, but no guideline that combines the two.

In conclusion, the report blames the accident on non-ideal programming/functioning of the signaling system, which provided two dispatchers with faulty information. Somewhat poor adherence to guidelines then allowed the problem to escalate to the point of a fatal accident as both dispatchers failed to catch the discrepancies between reality, the signaling system and their assumptions. Dieburg’s dispatcher became the suspect of a criminal investigation by the German federal police shortly after the accident, aiming to determine if he or someone else involved had acted in criminal negligence. No result has been published as of April 2024, but it’s quite possible that nobody involved will be found to be of sufficient fault, which would mean nobody would be put on trial.

The wreckage seen from the other side, with the torn down overhead catenary strung across it.

The DB has announced in late 2022 that they were looking to update the signaling system’s software to avoid the behavior it showed in the lead-up to the accident, a return to a previous software-version is allegedly not possible. Requirements for future signaling system software were also improved. Furthermore, more emphasis on excessive blockade warnings and combinations of different oddities (like “no train-number displayed” in combination with “inexplicable occupancy status”) in the training for dispatchers was announced.

The rail line at the site remained closed for over a month, requiring the replacement of tracks and overhead wires on 1.5km/0.9mi once the investigation cleared the wreckage for removal. Material damage was listed at 2 Million Euros/2.17 Million USD. DB 152 128 suffered such catastrophic damage in the collision that it became the first of its type to be retired, sending it to the scrapyard in June 2022.

The back end of DB 152 128, having suffered severe compression damage when it was struck by its own train.

History Repeated Itself

The collision at Dieburg was the second train collision in Germany caused by mixed up train numbers within just a few years, after a previous collision between a freight train and a regional passenger service at Meerbusch-Osterath in December 2017. There, a dispatcher had mixed up two train numbers when manually entering one of them into the system, causing the system to delete the (actually correct) duplicate. This made the freight train “invisible”. The system still wouldn’t let the regional train proceed into the section occupied by the freight train, leading the dispatcher to override the red signal there too. Crucially, they were so sure that the section was clear that the regional train’s driver received no order to “drive on sight”, allowing full speed. The regional train’s driver triggered an emergency stop when the freight train came into view, reducing speed on impact from 120kph/75mph to 85kph/53mph. Everyone survived that accident, but 39 people were injured. I covered that accident in more detail in an early installment on this blog:

The wreckage of the 2017 collision at Meerbusch-Osterath, which had a very similar lead-up to the accident at Dieburg.


I have chosen to stay off Medium’s monetization offers to keep these stories as accessible as possible, but you can support me with a small tip via “Buy me a coffee” if you feel like it.


A kind reader is posting the installments on reddit for me, I cannot interact with you there but I will read the feedback and corrections. You can find the post right here.



Max S

Train crash reports and analysis, published weekly.