diff --git a/simtrace/SIMTRACE_Templates.ttcn b/simtrace/SIMTRACE_Templates.ttcn
new file mode 100644
index 0000000..934253e
--- /dev/null
+++ b/simtrace/SIMTRACE_Templates.ttcn
@@ -0,0 +1,333 @@
+module SIMTRACE_Templates {
+
+import from SIMTRACE_Types all;
+import from General_Types all;
+import from Osmocom_Types all;
+
+/* TTCN-3 templates Osmocom SIMTRACE2
+ * as found in simtrace2.git/host/include/osmocom/simtrace2/simtrace_prot.h
+ *
+ * (C) 2020 by Harald Welte <laforge@gnumonks.org>
+ */
+
+
+/***********************************************************************
+ * GENERAL
+ ***********************************************************************/
+
+template (value) SIMTRACE_PDU
+ts_SIMTRACE(template (value) SIMTRACE_MsgClassType msg_type,
+	    template (value) SIMTRACE_Payload payload) := {
+	msg_type := msg_type,
+	seq_nr := 0,
+	slot_nr := 0,
+	reserved := '0000'O,
+	msg_len := 0, /* overwritten */
+	payload := payload
+}
+template (present) SIMTRACE_PDU
+tr_SIMTRACE(template (present) SIMTRACE_MsgClassType msg_type,
+	    template (present) SIMTRACE_Payload payload) := {
+	msg_type := msg_type,
+	seq_nr := ?,
+	slot_nr := ?,
+	reserved := '0000'O,
+	msg_len := ?,
+	payload := payload
+}
+
+template (value) SIMTRACE_PDU ts_SIMTRACE_BOARD_INFO :=
+	ts_SIMTRACE(SIMTRACE_CMD_BD_BOARD_INFO,
+		{ gen_bd_board_info := {
+			hardware := {
+				manufacturer := "",
+				model := "",
+				version := ""
+				},
+			software := {
+				provider := "",
+				name := "",
+				version := "",
+				buildhost := "",
+				crc := '00000000'O
+				},
+			max_baud_rate := 0,
+			cap_generic_bytes := 0,
+			cap_vendor_bytes := 0,
+			cap_generic := omit,
+			cap_vendor := omit
+			}
+		});
+template (present) SIMTRACE_PDU
+tr_SIMTRACE_BOARD_INFO(template (present) Board_Info_Hardware hw := ?,
+		       template (present) Board_Info_Software sw := ?,
+		       template Generic_Capability cap_gen := *,
+		       template Generic_Capability_Vendor cap_vend := *) :=
+	tr_SIMTRACE(SIMTRACE_CMD_BD_BOARD_INFO,
+		{ gen_bd_board_info := {
+			hardware := hw,
+			software := sw,
+			max_baud_rate := ?,
+			cap_generic_bytes := ?,
+			cap_vendor_bytes := ?,
+			cap_generic := cap_gen,
+			cap_vendor := cap_vend
+			}
+		});
+
+
+/***********************************************************************
+ * CARD EMULATION
+ ***********************************************************************/
+
+/* dummy flags for BD_STATUS [request] */
+template (value) CardEmu_StatusFlags ts_CardEmu_StatusFlags := {
+	reserved := '000'B,
+	reset_active := false,
+	card_insert := false,
+	rcemu_active := false,
+	clk_active := false,
+	vcc_present := false,
+	reserved2 := '000000000000000000000000'B
+};
+template (present) CardEmu_StatusFlags
+tr_CardEmu_StatusFlags(template (present) boolean reset_active := ?,
+		 	template (present) boolean card_insert := ?,
+			template (present) boolean clk_active := ?,
+			template (present) boolean vcc_present := ?,
+			template (present) boolean rcemu_active := ?) := {
+	reserved := ?,
+	reset_active := reset_active,
+	card_insert := card_insert,
+	rcemu_active := rcemu_active,
+	clk_active := clk_active,
+	vcc_present := vcc_present,
+	reserved2 := ?
+};
+
+template (value) CardEmu_DataFlags
+ts_CardEmu_DataFlags(template (value) boolean pb_and_rx := false,
+		     template (value) boolean pb_and_tx := false,
+		     template (value) boolean final := false,
+		     template (value) boolean tpdu_hdr := false) := {
+	reserved := '0000'B,
+	pb_and_rx := pb_and_rx,
+	pb_and_tx := pb_and_tx,
+	final := final,
+	tpdu_hdr := tpdu_hdr,
+	reserved2 := '000000000000000000000000'B
+};
+template (present) CardEmu_DataFlags
+tr_CardEmu_DataFlags(template (present) boolean pb_and_rx := ?,
+		     template (present) boolean pb_and_tx := ?,
+		     template (present) boolean final := ?,
+		     template (present) boolean tpdu_hdr := ?) := {
+	reserved := ?,
+	pb_and_rx := pb_and_rx,
+	pb_and_tx := pb_and_tx,
+	final := final,
+	tpdu_hdr := tpdu_hdr,
+	reserved2 := ?
+};
+
+
+template (value) SIMTRACE_PDU
+	ts_SIMTRACE_CEMU_TX_DATA(template (value) CardEmu_DataFlags flags,
+			   template (value) octetstring data) :=
+ts_SIMTRACE(SIMTRACE_MSGT_DT_CEMU_TX_DATA,
+	    { cardem_dt_txdata := {
+		flags := flags,
+		data_len := 0, /* overwritten */
+		data := data }
+	    });
+
+
+template (value) SIMTRACE_PDU
+ts_SIMTRACE_CEMU_SET_ATR(template (value) octetstring atr) :=
+	ts_SIMTRACE(SIMTRACE_MSGT_DT_CEMU_SET_ATR,
+		{ cardem_dt_setatr := { atr_len := 0 /* overwritten */, atr := atr } });
+
+
+template (value) SIMTRACE_PDU
+ts_SIMTRACE_CEMU_STATUS :=
+	ts_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_STATUS,
+		{ cardem_bd_status := {
+			flags := ts_CardEmu_StatusFlags,
+			voltage_mv := 0, fi := 0, di := 0, wi := 0, waiting_time := 0
+			}
+		});
+
+template (present) SIMTRACE_PDU
+tr_SIMTRACE_CEMU_STATUS(template (present) CardEmu_StatusFlags flags := ?,
+			template (present) uint16_t voltage_mv := ?,
+			template (present) uint8_t fi := ?,
+			template (present) uint8_t di := ?,
+			template (present) uint8_t wi := ?,
+			template (present) uint32_t waiting_time := ?) :=
+	tr_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_STATUS,
+		{ cardem_bd_status := {
+			flags := flags,
+			voltage_mv := voltage_mv,
+			fi := fi,
+			di := di,
+			wi := wi,
+			waiting_time := waiting_time
+		}});
+
+
+template (value) SIMTRACE_PDU
+ts_SIMTRACE_CEMU_CARDINSERT(uint8_t insert) :=
+	ts_SIMTRACE(SIMTRACE_MSGT_DT_CEMU_CARDINSERT,
+		{ cardem_dt_cardinsert := { card_insert := insert } });
+
+
+template (present) SIMTRACE_PDU
+tr_SIMTRACE_CEMU_RX_DATA(template (present) CardEmu_DataFlags flags,
+			 template (present) octetstring data) :=
+	tr_SIMTRACE(SIMTRACE_MSGT_DO_CEMU_RX_DATA,
+		{ cardem_do_rxdata := {
+			flags := flags,
+			data_len := ?,
+			data := data
+			}
+		});
+
+template (present) SIMTRACE_PDU
+tr_SIMTRACE_CEMU_PTS(template (present) octetstring req, template (present) octetstring resp) :=
+	tr_SIMTRACE(SIMTRACE_MSGT_DO_CEMU_PTS,
+		{ cardem_do_pts := {
+			pts_len := ?,
+			req := req,
+			resp := resp
+			}
+		});
+
+template (value) CardEmu_FeatureFlags ts_FeatureFlags(boolean status_irq) := {
+	reserved := '0000000'B,
+	status_irq := status_irq,
+	reserved2 := '000000000000000000000000'B
+}
+template (present) CardEmu_FeatureFlags tr_FeatureFlags(template (present) boolean status_irq := ?) := {
+	reserved := '0000000'B,
+	status_irq := status_irq,
+	reserved2 := '000000000000000000000000'B
+}
+
+
+template (value) SIMTRACE_PDU
+ts_SIMTRACE_CEMU_CONFIG(template (value) CardEmu_FeatureFlags flags) :=
+	ts_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_CONFIG, { cardem_bd_config := { features := flags } });
+
+template (present) SIMTRACE_PDU
+tr_SIMTRACE_CEMU_CONFIG(template (present) CardEmu_FeatureFlags flags) :=
+	tr_SIMTRACE(SIMTRACE_MSGT_BD_CEMU_CONFIG, { cardem_bd_config := { features := flags } });
+
+
+/***********************************************************************
+ * MODEM CONTROL
+ ***********************************************************************/
+
+template (value) Modem_Status ts_ModemStatus(boolean card_inserted, boolean wwan_led) := {
+	reserved := '000000'B,
+	card_inserted := card_inserted,
+	wwan_led := wwan_led
+}
+template (present) Modem_Status tr_ModemStatus(template (present) boolean card_inserted,
+					       template (present) boolean wwan_led) := {
+	reserved := ?,
+	card_inserted := card_inserted,
+	wwan_led := wwan_led
+}
+
+
+
+template (value) SIMTRACE_PDU
+ts_SIMTRACE_MODEM_RESET(ModemResetType rst_type := MODEM_RESET_PULSE,
+			uint16_t duration_msec := 400) :=
+	ts_SIMTRACE(SIMTRACE_MSGT_DT_MODEM_RESET,
+		{ modem_dt_reset := {
+			asserted := rst_type,
+			pulse_duration_msec := duration_msec
+			}
+		});
+
+template (value) SIMTRACE_PDU
+ts_SIMTRACE_MODEM_SIM_SELECT(SimSelect sim_sel) :=
+	ts_SIMTRACE(SIMTRACE_MSGT_DT_MODEM_SIM_SELECT,
+		{ modem_dt_sim_select := {
+			sim_select := sim_sel
+			}
+		});
+
+template (value) SIMTRACE_PDU
+ts_SIMTRACE_MODEM_STATUS :=
+	ts_SIMTRACE(SIMTRACE_MSGT_BD_MODEM_STATUS,
+		{ modem_bd_status := {
+			supported := ts_ModemStatus(false, false),
+			status := ts_ModemStatus(false, false),
+			changed := ts_ModemStatus(false, false)
+			}
+		});
+template (present) SIMTRACE_PDU
+tr_SIMTRACE_MODEM_STATUS(template (present) Modem_Status supported := ?,
+			 template (present) Modem_Status status := ?,
+			 template (present) Modem_Status changed := ?) :=
+	tr_SIMTRACE(SIMTRACE_MSGT_BD_MODEM_STATUS,
+		{ modem_bd_status := {
+			supported := supported,
+			status := status,
+			changed := changed
+			}
+		});
+
+
+/***********************************************************************
+ * SNIFFER
+ ***********************************************************************/
+
+template (present) SIMTRACE_PDU
+tr_SIMTRACE_SNIFF_CHANGE(template (present) Sniff_Flags flags) :=
+	tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_CHANGE,
+		{ sniff_do_change := { flags := flags } });
+
+template (present) SIMTRACE_PDU
+tr_SIMTRACE_SNIFF_FIDI(template (present) uint8_t fidi := ?) :=
+	tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_FIDI,
+		{ sniff_do_fidi := { fidi := fidi } });
+
+template (present) SIMTRACE_PDU
+tr_SIMTRACE_SNIFF_ATR(template (present) octetstring data,
+		      template (present) Sniff_Flags flags := ?) :=
+	tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_FIDI,
+		{ sniff_do_atr := {
+			flags := flags,
+			data_len := ?,
+			data := data
+			}
+		});
+
+template (present) SIMTRACE_PDU
+tr_SIMTRACE_SNIFF_PPS(template (present) octetstring data,
+		      template (present) Sniff_Flags flags := ?) :=
+	tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_PPS,
+		{ sniff_do_atr := {
+			flags := flags,
+			data_len := ?,
+			data := data
+			}
+		});
+
+template (present) SIMTRACE_PDU
+tr_SIMTRACE_SNIFF_TPDU(template (present) octetstring data,
+		       template (present) Sniff_Flags flags := ?) :=
+	tr_SIMTRACE(SIMTRACE_MSGT_SNIFF_TPDU,
+		{ sniff_do_atr := {
+			flags := flags,
+			data_len := ?,
+			data := data
+			}
+		});
+
+
+
+}
