Serial Command Mode Interface
This information is provided to allow you to issue commands to MULTOS Trust Anchor devices over a serial port. This information is only relevant when the device is operating in Command Mode (serial interface) which is instigated by pulling pin 18 low before power up or reset.
The Tutorials page contains an example Arduino sketch that implements this protocol.
The Developer board contains a built-in USB/SERIAL interface, the Nano board provides an FTDI compatible header and the Breakout board can be connected directly.
Message Format
All messages are encoded in a compact big-endian binary TLV format as follows:
Tag | Length | Value |
---|---|---|
1 or 2 bytes | 0, 1 or 2 bytes | n bytes |
The upper two bits of the first tag byte are used to define the format of the TLV as follows:
Bits | Tag Size | Length Size |
---|---|---|
00 | 1 byte | 0 bytes |
01 | 1 byte | 1 byte |
10 | 1 byte | 2 bytes |
11 | 2 bytes | 2 bytes |
This means that the following tag ranges are possible:
Tag Range | Data Size | TLV Size |
---|---|---|
0x00-0x3F | No data | 1 byte |
0x40-0x7F | <= 0xFF bytes of data | 2+n bytes |
0x80-0xBF | <= 0xFFFF bytes of data | 2+n bytes |
0xC000-0xFFFF | <= 0xFFFF bytes of data | 4+n bytes |
Messages
The following user messages have been defined. Other messages are used for debugging.
Message | Tag | Length | Value | Direction | Notes | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ACK | 0x01 | 0 | M -> PC | Used to indicate that the previously transmitted message was received OK. | |||||||||||||||
Reset | 0x06 | 0 | PC -> M | Requests a reset. | |||||||||||||||
NACK | 0x3F | 0 | M -> PC | Used to indicate that the previously transmitted message was received in error (invalid structure/contents). | |||||||||||||||
Comms Parameters | 0x44 | 0x03 |
|
PC -> M | Changes the com port’s baud rate. May take up to a second to process. The ACK is transmitted after the baud rate has been changed. | ||||||||||||||
Command APDU | 0x80 | 0x0004-0xFFFF |
|
PC -> M | Lc and command data only present for case 3 and case 4 commands. Le only present for case 2 and case 4 commands. |
||||||||||||||
Response APDU | 0x81 | 0x0002-0xFFFF |
|
M -> PC | Response data only present for case 2 and case 4 commands. | ||||||||||||||
Startup | 0xAA | 0-0xFFFF |
M5 currently transmits zero bytes of data. |
M -> PC | Transmitted when MULTOS starts up in command mode. |