Get desktop application:
View/edit binary Protocol Buffers messages
* Request: set flags of the device @start @next Success @next Failure
bitmask, can only set bits, not unset
* Request: change some property of the device, e.g. label or homescreen @start @next Success @next DataChunkRequest @next Failure
homescreen image in single array, deprecated for 14
ASK = 0; DEVICE = 1; HOST = 2;
rotation of display (in degrees from North)
do not prompt for passphrase, enforce device entry
Safety check level,
set to Prompt to limit path namespace enforcement
enable experimental message types
do not show passphrase coming from host
enable haptic feedback
byte length of new homescreen, device will request chunks
time in ms after which device locks when on battery
* Request: Request a signature of the provided challenge. @start @next AuthenticityProof @next Failure
A random challenge to sign.
* Response: Signature of the provided challenge along with a certificate issued by the Trezor company. @end
A certificate chain starting with the Optiga device certificate,
followed by intermediate CA certificates, the last of which is signed by Trezor company's root CA.
A DER-encoded signature of "\x13AuthenticateDevice:" + length-prefixed
challenge that should be verified using the Optiga device certificate.
A certificate chain starting with the Tropic device certificate,
followed by intermediate CA certificates, the last of which is signed by Trezor company's root CA.
A DER-encoded signature of "\x13AuthenticateDevice:" + length-prefixed
* Request: Perform backup of the device seed if not backed up using ResetDevice @start @next Success
Used in:
* Type of the mnemonic backup given/received by the device during reset/recovery.
Used in: , ,
also called "Single Backup", see BIP-0039
also called "Shamir Backup", see SLIP-0039
also called "Super Shamir" or "Shamir with Groups", see SLIP-0039#two-level-scheme
extendable single-share Shamir backup
extendable multi-share Shamir backup
extendable multi-share Shamir backup with groups
* Request: Abort last operation that required user interaction @start @next Failure
(message has no fields)
* Request: Cancel any outstanding authorization in the current session. @start @next Success @next Failure
(message has no fields)
* Request: change the device language via translation data. Does not send the translation data itself, as they are too large for one message. Device will request the translation data in chunks. @start @next DataChunkRequest @next Failure
byte length of the whole translation blob (set to 0 for default language - english)
Prompt the user on screen. In certain conditions (such as freshly installed device), the confirmation prompt is not mandatory. Setting show_display=false will skip the prompt if that's the case. If the device does not allow skipping the prompt, a request with show_display=false will return a failure. (This way the host can safely try to change the language without invoking a prompt.) Setting show_display to true will always show the prompt. Leaving the option unset will show the prompt only when necessary.
* Request: Starts workflow for setting/changing/removing the PIN @start @next Success @next Failure
is PIN removal requested?
* Request: Starts workflow for setting/removing the wipe code @start @next Success @next Failure
is wipe code removal requested?
* Request: Translation/homescreen payload data. @next DataChunkRequest @next Success
Bytes from translation/homescreen payload
* Response: Device asks for more data from translation/homescreen image. @end @next DataChunkAck
Number of bytes being requested
Offset of the first byte being requested
* Allowed display rotation angles (in degrees from North)
Used in: ,
* Request: Ask device to prepare for a preauthorized operation. @start @next PreauthorizedRequest @next Failure
(message has no fields)
* Request: end the current sesson. Following actions must call Initialize again. Cache for the current session is discarded, other sessions remain intact. Device is not PIN-locked. @start @next Success
(message has no fields)
* Response: Reply with random data generated by internal RNG @end
chunk of random generated bytes
* Request: Provide additional entropy for seed generation function @next Success @next EntropyCheckReady
256 bits (32 bytes) of the host's random data
* Request: Proceed with the next phase of the entropy check protocol, asking Trezor to either reveal its internal entropy or to finish and store the seed. @next Success @next EntropyRequest
finish the entropy check protocol, store the seed
* Response: Trezor is ready for the next phase of the entropy check protocol. @next EntropyCheckContinue @next GetPublicKey
(message has no fields)
* Response: Ask for additional entropy from host computer @next EntropyAck
HMAC-SHA256 of Trezor's internal entropy used in entropy check.
Trezor's internal entropy from the previous round of entropy check.
* Response: Reports various information about the device @end
name of the manufacturer, e.g. "trezor.io"
major version of the firmware/bootloader, e.g. 1
minor version of the firmware/bootloader, e.g. 0
patch version of the firmware/bootloader, e.g. 0
build version of the firmware/bootloader, e.g. 0
is device in bootloader mode?
device's unique identifier
is device protected by PIN?
is node/mnemonic encrypted using passphrase?
device language
device description label
does device contain seed?
SCM revision of firmware
hash of the bootloader
was storage imported from an external source?
is the device unlocked? called "pin_cached" previously
is passphrase already cached in session?
is firmware loaded?
does storage need backup? is repeated backup unlocked?
device flags (equals to Storage.flags)
device hardware model
reported firmware version if in bootloader mode
reported firmware version if in bootloader mode
reported firmware version if in bootloader mode
reported firmware version if in bootloader mode
reported firmware vendor if in bootloader mode
optional bytes fw_vendor_keys = 26; // obsoleted, use fw_vendor
report unfinished backup (equals to Storage.unfinished_backup)
report no backup (equals to Storage.no_backup)
whether or not we are in recovery mode and of what kind
list of supported capabilities
type of device backup (BIP-39 / SLIP-39 basic / SLIP-39 advanced)
is SD card present
is SD Protect enabled
is wipe code protection enabled
device enforces passphrase entry on Trezor
safety check level, set to Prompt to limit path
namespace enforcement
number of milliseconds after which the device locks itself
rotation of display (in degrees from North)
are experimental message types enabled?
is the device busy, showing "Do not disconnect"?
format of the homescreen, 1 = TOIf, 2 = jpg, 3 = TOIG
should we hide the passphrase when it comes from host?
internal model name
color of the unit/device
unit/device is intended as bitcoin only
homescreen width in pixels
homescreen height in pixels
bootloader is locked
translation blob version matches firmware version
unit/device packaging version
haptic feedback is enabled
what type of recovery we are in
NB: this works in conjunction with recovery_status
Optiga's security event counter.
Battery state of charge (0 - 100%)
true if the firmware is corrupted
number of milliseconds after which
the battery-powered device locks itself
RGB LED settings
USB connected
Wireless charger connected
Used in:
/ Device is already backed up, or a previous backup has failed.
/ Device is not backed up. Backup is required.
/ Device is already backed up and can be backed up again.
Used in:
Altcoins based on the Bitcoin source code
BNB Smart Chain
generic crypto operations for GPG, SSH, etc.
the device is capable of passphrase entry
directly on the device
Bluetooth Low Energy
Near Field Communications
Used in:
we are not in recovery mode
we are in "Normal" or "DryRun" recovery
we are in repeated backup mode
* Response: Hash of the installed firmware combined with the optional challenge. @end
* Request: Request a sample of random data generated by hardware RNG. May be used for testing. @start @next Entropy @next Failure
size of requested entropy
* Request: Ask for device details (no device reset) @start @next Features
(message has no fields)
* Request: Get a hash of the installed firmware combined with an optional challenge. @start @next FirmwareHash @next Failure
Blake2s key up to 32 bytes in length.
* Request: Set U2F counter @start @next NextU2FCounter
(message has no fields)
* Request: Ask device to generate a random nonce and store it in the session's cache @start @next Nonce
(message has no fields)
* Request: Get unit serial number @start @next SerialNumber
(message has no fields)
* Format of the homescreen image
Used in:
full-color toif
jpeg
greyscale toif
* Request: Reset device to default state and ask for device details @start @next Features
assumed device session id; Trezor clears caches if it is different or empty
removed as part of passphrase redesign
whether to derive Cardano Icarus root keys in this session
* Request: Load seed and related internal settings from the computer @start @next Success @next Failure
seed encoded as mnemonic (12, 18 or 24 words for BIP39, 20 or 33 for SLIP39)
set PIN protection
enable master node encryption using passphrase
deprecated (use ChangeLanguage)
device label
do not test mnemonic for valid BIP-39 checksum
U2F counter
set "needs backup" flag
indicate that no backup is going to be made
indicate that backup process has failed
* Request: soft-lock the device. Following actions will require PIN. Passphrases remain cached. @start @next Success
(message has no fields)
* Request: Set U2F counter @end
* Response: Contains a random nonce @end
a 32-byte random value generated by Trezor
* Request: Test if the device is alive, device sends back the message in Success response @start @next Success
message to send back in Success message
ask for button press
* Request: Device awaits a preauthorized operation. @start @next SignTx @next GetOwnershipProof
(message has no fields)
* Request: Reboot firmware to bootloader @start @next Success @next DataChunkRequest
Action to be performed after rebooting to bootloader
Firmware header to be flashed after rebooting to bootloader
Used in:
Go to bootloader menu
Connect to host and wait for firmware update
* Request: Start recovery workflow asking user for specific words of mnemonic Used to recovery device safely even on untrusted computer. @start @next WordRequest
number of words in BIP-39 mnemonic (T1 only)
enable master node encryption using passphrase
enable PIN protection
deprecated (use ChangeLanguage)
device label
enforce BIP-39 wordlist during the process (T1 only)
supported recovery input method (T1 only)
U2F counter
the type of recovery to perform
* Type of recovery procedure. These should be used as bitmask, e.g., `RecoveryDeviceInputMethod_ScrambledWords | RecoveryDeviceInputMethod_Matrix` listing every method supported by the host computer. Note that ScrambledWords must be supported by every implementation for backward compatibility; there is no way to not support it.
Used in:
use powers of two when extending this field
words in scrambled order
matrix recovery type
Used in: ,
recovery from seedphrase on an uninitialized device
mnemonic validation
unlock SLIP-39 repeated backup
* Request: Ask device to do initialization involving user interaction @start @next EntropyRequest @next Failure
strength of seed in bits
enable master node encryption using passphrase
enable PIN protection
deprecated (use ChangeLanguage)
device label
U2F counter
postpone seed backup to BackupDevice workflow
indicate that no backup is going to be made
type of the mnemonic backup
run with entropy check protocol
* Level of safety checks for unsafe actions like spending from invalid path namespace or setting high transaction fee.
Used in: ,
disallow unsafe actions, this is the default
ask user before unsafe action
like PromptAlways but reverts to Strict after reboot
* Request: Starts workflow for enabling/regenerating/disabling SD card protection @start @next Success @next Failure
* Structure representing SD card protection operation
Used in:
* Response: contains unit serial number @end
* Request: Set device brightness @start @next Success
if not specified, let the user choose
* Request: Show a "Do not disconnect" dialog instead of the standard homescreen. @start @next Success
The time in milliseconds after which the dialog will automatically disappear.
* Request: Set U2F counter @start @next Success
* Request: Show tutorial screens on the device @start @next Success
(message has no fields)
* Request: Unlocks bootloader, !irreversible! @start @next Success @next Failure
(message has no fields)
* Request: Ask device to unlock a subtree of the keychain. @start @next UnlockedPathRequest @next Failure
prefix of the BIP-32 path leading to the account (m / purpose')
the MAC returned by UnlockedPathRequest
* Request: Device awaits an operation. @start @next SignTx @next GetPublicKey @next GetAddress
authentication code for future UnlockPath calls
* Request: Request device to wipe all sensitive data and settings @start @next Success @next Failure
(message has no fields)
* Request: Computer replies with word from the mnemonic @next WordRequest @next Success @next Failure
one word of mnemonic on asked position
* Response: Device is waiting for user to enter word of the mnemonic Its position is shown only on device's internal display. @next WordAck
* Type of Recovery Word request
Used in: