diff --git a/legacy/firmware/fsm.c b/legacy/firmware/fsm.c
index eefed373db..f7d321aa68 100644
--- a/legacy/firmware/fsm.c
+++ b/legacy/firmware/fsm.c
@@ -191,6 +191,12 @@ void fsm_sendFailure(FailureType code, const char *text)
       case FailureType_Failure_InvalidSession:
         text = _("Invalid session");
         break;
+      case FailureType_Failure_ThpUnallocatedSession:
+        text = _("Unallocated session");
+        break;
+      case FailureType_Failure_InvalidProtocol:
+        text = _("Invalid protocol");
+        break;
       case FailureType_Failure_FirmwareError:
         text = _("Firmware error");
         break;
diff --git a/legacy/firmware/protob/Makefile b/legacy/firmware/protob/Makefile
index 48dbd5ddc7..253f00f3f9 100644
--- a/legacy/firmware/protob/Makefile
+++ b/legacy/firmware/protob/Makefile
@@ -10,7 +10,7 @@ SKIPPED_MESSAGES := Binance Cardano DebugMonero Eos Monero Ontology Ripple SdPro
 	EthereumTypedDataValueRequest EthereumTypedDataValueAck ShowDeviceTutorial \
 	UnlockBootloader AuthenticateDevice AuthenticityProof \
 	Solana StellarClaimClaimableBalanceOp \
-	ChangeLanguage TranslationDataRequest TranslationDataAck \
+	ChangeLanguage TranslationDataRequest TranslationDataAck Thp \
 	SetBrightness DebugLinkOptigaSetSecMax EntropyCheckReady EntropyCheckContinue \
 	BenchmarkListNames BenchmarkRun BenchmarkNames BenchmarkResult
 
diff --git a/legacy/firmware/protob/messages-debug.options b/legacy/firmware/protob/messages-debug.options
index b36b617261..c099b38b0b 100644
--- a/legacy/firmware/protob/messages-debug.options
+++ b/legacy/firmware/protob/messages-debug.options
@@ -2,14 +2,19 @@ DebugLinkDecision.input                 max_size:33
 DebugLinkDecision.x                     type:FT_IGNORE
 DebugLinkDecision.y                     type:FT_IGNORE
 
-DebugLinkState.layout                   max_size:1024
-DebugLinkState.pin                      max_size:51
-DebugLinkState.matrix                   max_size:10
-DebugLinkState.mnemonic_secret          max_size:240
-DebugLinkState.reset_word               max_size:12
-DebugLinkState.reset_entropy            max_size:128
-DebugLinkState.recovery_fake_word       max_size:12
-DebugLinkState.tokens                   type:FT_IGNORE
+DebugLinkGetState.thp_channel_id        type:FT_IGNORE
+
+DebugLinkState.layout                                 max_size:1024
+DebugLinkState.pin                                    max_size:51
+DebugLinkState.matrix                                 max_size:10
+DebugLinkState.mnemonic_secret                        max_size:240
+DebugLinkState.reset_word                             max_size:12
+DebugLinkState.reset_entropy                          max_size:128
+DebugLinkState.recovery_fake_word                     max_size:12
+DebugLinkState.tokens                                 type:FT_IGNORE
+DebugLinkState.thp_pairing_code_entry_code            type:FT_IGNORE
+DebugLinkState.thp_pairing_code_qr_code               type:FT_IGNORE
+DebugLinkState.thp_pairing_code_nfc_unidirectional    type:FT_IGNORE
 
 DebugLinkLog.bucket                     max_size:33
 DebugLinkLog.text                       max_size:256
diff --git a/legacy/firmware/protob/messages-thp.proto b/legacy/firmware/protob/messages-thp.proto
new file mode 120000
index 0000000000..4799efe83a
--- /dev/null
+++ b/legacy/firmware/protob/messages-thp.proto
@@ -0,0 +1 @@
+../../vendor/trezor-common/protob/messages-thp.proto
\ No newline at end of file