Please also review the Troubleshooting TTP which gives information on configuring a PC to connect to a Tesira system for testing purposes.
Telnet is configured by specifying the IP address of the Tesira Server and connecting via port 23. A maximum of 32 Telnet connections per server are supported. The ability for Tesira Server, Server IO, Tesira Amplifiers or TesiraFORTÉ devices to use Telnet can be enabled or disabled via a DEVICE TTP command or in the Device Maintenance Settings > Network Settings dialog.
When controlling multiple Tesira units that are not part of the same TMF file, each Tesira Server unit will need to be addressed via its own Telnet Session. Commands sent via Telnet are not encrypted.
Tesira implements a Telnet server on port 23. When the request from the control system to open a session is received, the Tesira Telnet server attempts to negotiate the session’s options, following specifications described in the Telnet standard document RFC 854 as well as document RFC 855, Telnet Option Specifications.
A standard Telnet client would be able to negotiate the session options without problem, but several third party controllers do not implement a Telnet client by default. Instead, they implement control over TCP/IP using what’s commonly known as a ‘RAW’ connection. If the Control System does not respond to the Telnet session options negotiations, the session will not go ahead. As such, the control system will have to be programmed to negotiate the Telnet options with Tesira’s Telnet server. Many of the available options can be useful during a control session and indeed a programmer may choose to enable some of them, but if the desire is to continue using a ‘RAW’ connection, the simplest way to initiate a control session is for the control system to respond with a rejection to any option negotiation request from the server.
The best way to understand the Telnet options negotiation procedure is by looking at the data in Hex format. Notation will be “0xFF” for Hex character FF.
The Telnet commands we are concerned with are always three bytes long. The first is the Interpret As Command (IAC) character, and it is always 0xFF. The second character is the Command and the last character is the Option being negotiated.
Commands can be:
Negotiated options can be (but not limited to*):
* There are many different Telnet options in existence; a master list is maintained by IANA http://www.iana.org/assignments/telnet-options
The control system needs to react to any incoming string that begins with 0xFF, and decide whether the option is desired or not. If the intent is to control Tesira using a ‘raw’ connection, all that’s required is to always reject the option negotiation. If Tesira sends a “WILL” Command, the control system shall respond with “DON’T”, and if Tesira sends a “DO”, the response should be “WON’T”. The Option byte needs to be returned as received.
In essence, the mechanism is as follows:
When the server sends: |
0xFF |
WILL |
<byte X> |
The control system responds with: |
0xFF |
DON’T |
<byte X> |
When the server sends: |
0xFF |
DO |
<byte X> |
The control system responds with: |
0xFF |
WON’T |
<byte X> |
Source | IAC | Command | Option | Notes |
Tesira Sever | 0xFF | 0xFD | 0x01 | Do Echo |
control system / Client | 0xFF | 0xFC | 0x01 | Won’t Echo |
Source | IAC | Command | Option | Notes |
Tesira Sever | 0xFF | 0xFB | 0x03 | Will Suppress Go Ahead |
control system / Client | 0xFF | 0xFE | 0x03 | Don’t Suppress Go Ahead |
Once all options are negotiated, the Tesira server will send the message “Welcome to the Tesira Text Protocol Server”, preceded and followed by 0x0D and 0x0A. The control system is now free to send TTP commands.
Please note that the Tesira server will usually end any string with either 0x0D (CR character) followed by 0x0A (LF character), but as per Telnet RCF it may also use 0x0D (CR character) followed by 0x00 (NUL character). As such, the third party control system must be able to read one more character after it sees a 0x0D, which will always be either 0x0A or 0x00, and handle them appropriately.
In addition, and while in practice most of the negotiations will always take place at the beginning of a session, Telnet allows for them to happen at any point during the session.
Below is an example session options negotiation at the beginning of a Telnet session between Tesira and a TCP Client which was programmed to reject all options offered by the server. Please note this is for illustrations purposes only and the order and quantity of options negotiated may vary depending on firmware release. Strings have been organized below for clarity; however multiple Telnet strings may arrive from the Server in one Ethernet frame. Responses can be sent one at the time, or multiple responses in a single frame.
Source | IAC | Command | Option | Notes |
Tesira Server | 0xFF | 0xFD | 0x18 | Do Terminal Type |
Client | 0xFF | 0xFC | 0x18 | Won't Terminal Type |
Tesira Server | 0xFF | 0xFD | 0x20 | Do Terminal Speed |
Client | 0xFF | 0xFC | 0x20 | Won't Terminal Speed |
Tesira Server | 0xFF | 0xFD | 0x23 | Display Location |
Client | 0xFF | 0xFC | 0x23 | Won’t X Display Location |
Tesira Server | 0xFF | 0xFD | 0x27 | Do New Environment Option |
Client | 0xFF | 0xFC | 0x27 | Won't New Environment Option |
Tesira Server | 0xFF | 0xFD | 0x24 | Do Environment Option |
Client | 0xFF | 0xFC | 0x24 | Won't Environment Option |
Tesira Server | 0xFF | 0xFB | 0x03 | Will Suppress Go Ahead |
Client | 0xFF | 0xFE | 0x03 | Don’t Suppress Go Ahead |
Tesira Server | 0xFF | 0xFD | 0x01 | Do Echo |
Client | 0xFF | 0xFC | 0x01 | Won’t Echo |
Tesira Server | 0xFF | 0xFD | 0x22 | Do Linemode |
Client | 0xFF | 0xFC | 0x22 | Won’t Linemode |
Tesira Server | 0xFF | 0xFD | 0x1F | Do Negotiate About Window Size |
Client | 0xFF | 0xFC | 0x1F | Won't Negotiate About Window Size |
Tesira Server | 0xFF | 0xFB | 0x05 | Will Status |
Client | 0xFF | 0xFE | 0x05 | Don't Status |
Tesira Server | 0xFF | 0xFD | 0x21 | Do Remote Flow Control |
Client | 0xFF | 0xFC | 0x21 | Won't Remote Flow Control |
Tesira Server | 0xFF | 0xFB | 0x01 | Will Echo |
Client | 0xFF | 0xFE | 0x01 | Don’t Echo |
Tesira Server | 0xFF | 0xFD | 0x06 | Do Timing Mark |
Client | 0xFF | 0xFC | 0x06 | Won't Timing Mark |
Tesira Server | 0xFF | 0xFD | 0x00 | Do Binary Transmission |
Client | 0xFF | 0xFC | 0x00 | Won't Binary Transmission |
Tesira Server | 0xFF | 0xFB | 0x03 | Will Suppress Go Ahead |
Client | 0xFF | 0xFE | 0x03 | Don’t Suppress Go Ahead |
Tesira Server | 0xFF | 0xFB | 0x01 | Will Echo |
Client | 0xFF | 0xFE | 0x01 | Don’t Echo |
Tesira Server | 0xFF | 0xFD | 0x0A | |
Tesira Server | 0x0D 0x0A Welcome to the Tesira Text Protocol Server 0x0D 0x0A |