Kemp’s Blog

A technical blog about technical things

DeviceMaster protocol, part 0: My device and software

This is the first post of a short series describing my effort to reverse engineer the protocol used by Comtrol for their DeviceMaster range of Ethernet device servers. These allow RS-232/422/485 connected devices to be communicated with over an ethernet network.

DeviceMaster RTS 8-Port DB9

For the purpose of this task I used a DeviceMaster RTS 8-Port DB9. It appears to be fundamentally the same as the rack-mount Serial Hub 8-Port. The particular unit I had access to was running an ancient version of the firmware, older than the was listed in any documentation available on the site in fact. The serial number, similarly, was older than any listed on their table of serial numbers versus firmware versions. I had a “fun” time getting the firmware upgraded, but got there in the end so it’s running a much more current Bootloader 4.31 and SocketServer 11.34.

I used the official PortVision DX 5.01 application to communicate with the DeviceMaster and Wireshark to watch what was being sent back and forth. My PC was connected to the DeviceMaster’s Up port via Ethernet through a switch.

There was a breaking change made in PortVision DX 4.00, Bootloader 4.00, and SocketServer 10.00 that I understand to be around the deprecation of the old MAC-based device discovery method and the introduction of a new UDP-based one. I’ve been told the unit I’m working with had stability issues in the past that were believed to be related to how other network devices handled the older protocol, while the new protocol appears to be very stable for me since upgrading the firmware.

Device discovery is via the UDP-based protocol while use of the serial ports is via a TCP-based protocol, so I’ve split my posts down that line. The posts document my process and how I determined what the parts of the messages mean rather than being straight documentation of my findings. It should also be noted that there are still parts that are unknown and may require comparison across different devices in the range in order to figure out.

In the next part I’ll show the UDP discovery messages I captured.