TS500 Terminal Server

The TS500 terminal server is a tool designed to be used in production development and test automation. This product is a bridge between on one side a standard TCP/IP network connection and on the other side 5 fully isolated TTL level UART ports.

Unique features are that each port is fully isolated from all other ports on the device, and each port can also be switched into high impedance state which corresponds to physically unplugging a cable. With these features it is possible to capture trace and debug data from devices in test automation without issues related to ground loops. It is also possible to disconnect the UART cable from the test device when for example performing device current measurements without having to physically disconnect the device. Each port is individually programmable for UART TTL levels between 1.8V to 5.0V allowing to interface with multiple UARTs at different voltage levels.

For the product developer this product also replaces typical "USB to UART" cables, making device UART ports available as network sockets instead. No special terminal software is needed on the host computer, for interactive use all that is needed is a standard telnet client. For logging and programmatic use UARTs are available as standard TPC/IP socket, standard tools such as netcat interfaces directly with the TS500.

Features

    • 5 fully isolated TTL level UART ports

    • All port parameters are set individually for each port

      • Baudrate 1200 to 921600

      • 7, 8 or 9 data bits

      • Even, odd or no parity bits

      • 1 or 2 stop bits

      • 1.8V, 2.5V, 3.3V or 5.0V I/O voltage

      • HW flow control option (ports 1 through 4)

      • Telnet or "raw" socket protocol

      • Active or "high impedance" port state

    • Embedded webserver for easy configuration and FW upgrade

    • 10/100MBit Ethernet port with DCHP or static IP address

    • Display showing important information

      • Current IP address

      • TCP/IP socket connection status for each port

      • Port UART transmit and receive activity

    • "PoE", Power Ever Ethernet or 5V DC power supply

Block diagram

Cabling options

Each UART port has its own dedicated 6 pin 2.54mm pitch connector. Included in the delivery are 5 UART cables with a length of 75cm (not pictured above) with a 2.54mm 6 pin connector at the device end of the cable. It is also possible to assemble custom cables if needed, the connector inside the TS500 is a TE Connectivity 5-104363-5 to which a mating connector suitable for custom cables can be assembled using housing 104257-5 and crimp contacts 1-104480-5.

Pinout of the UART connector is clearly marked on the front of the TS500, the included cables are "straight" cables with a simple 1:1 mapping of the pins between both connectors.

Using the TS500

There is a longer article available on LinkedIn with background defining the feature set of the TS500, this section is a more condensed version of how the TS500 works.

Serial port sockets

Each of the 5 serial ports has its own dedicated TCP/IP socket which is used for sending and receiving serial port data, mapping of physical ports is static and defined by this table

Each TCP/IP data socket on the TS500 socket server supports a maximum of one client at a time, so there is a one to one mapping between the data traffic on the serial port to the socket traffic on the TCP/IP client which is connected. When a client is connected to a port, a * is shown on the display after the port number which can be viewed as a "busy" indicator.

Each port can be configured in either telnet mode or "raw" mode. Telnet mode allows interactive use from a host computer by using a standard telnet client to open up a connection to a serial port, for example a connection to serial port 1 can be made by starting the telnet application on Linux

$telnet <TS500 IP address> 3301

The telnet server in TS500 negotiates telnet options with the connected client to achieve a good user experience (suppressing telnet "Go Ahead", configuring echo and allowing binary transfers). Telnet mode is recommended when you want to interactively type commands on an embedded device for example. The second mode is "raw", which disables all protocol translations in TS500, data received on the serial port will be forwarded "as is" on the TCP/IP socket and vice versa. "netcat" is a very useful tool which allows reading a TCP/IP socket and simply send the output data to stdout, combined with other tools such as "ts" for timestamping, "tee" for storing to file and "hexdump" allows using common Linux host tools to view for example trace data from a target on the host. One example of such a command is

$nc <TS500 IP address> 3301 | ts "%b %d %H:%M:%.S".

Using parity

The TS500 supports even and odd parity bits, the parity bit count is however included in the count of databits which needs to be considered when configuring ports with parity. Configuring a scheme of for example 8 databits plus even or odd parity requires selecting both the correct parity scheme and 9 databits in the TS500 configuration. Likewise 7 databits plus parity requires a 8 databits plus the correct parity scheme.

Configuration

Configuration is handled by the built-in webserver of TS500, point for your browser to the TS 500 IP address and a simple webpage is shown with all available port settings which can be changed interactively. TS500 configuration is based on HTTP GET requests, both for reading and writing configuration parameters. As such TS500 makes no claim to follow all RESTful API conventions. The response to all GET requests is a plain text string of current settings, separated by semicolon, so regardless if reading or writing configuration parameters the response is always the same.

TS500 support library

A C++ library is available which handles both reading and writing data over the TCP/IP data socket as well as changing TS500 configuration, see https://github.com/daniel-dnil/ts500

Reading current configuration

Details of the HTTP GET queries used to read active configuration (used by both the internal TS500 webserver and the C++ library) are shown in the table below for reference.

Writing configuration

Details of the HTTP GET queries used to apply new configuration (used by both the internal TS500 webserver and the C++ library) are shown in the table below for reference.

Changing settings using the "set" queries in the table above applies settings as soon as possible (within a few milliseconds), it is not necessary to disconnect the data TCP/IP socket connection to the port where changes are applies. In the query format above, settings are also stored in internal non-volatile memory in TS500. In some cases it might be desirable to not store settings, for example in test automation where port settings are changes numerous times per iteration. All params_set.php queries above supports an optional parameter "volatile=1" which requests TS500 to apply the settings but not store it in internal non-volatile memory. For example, http://<ts500 ip>/params_set.php?port=2?volatile=1?baud=460800 changes port 2 baudrate to 460800 without storing settings to TS500 internal memory.

Availability

The TS500 is available now in sample quantities, please contact sales@dnil.se for more details.