Ferrograph – secrets of the <SDX>

I haven’t played about with the Ferrograph LED displays for a while. Its one of those things, once the system is up and running, you don’t touch it. You change the system, that sends the content.

Recently i have received a number of emails from people who are trying to make something, anything appear on the sign. They google and end up at my old post about the Ferrograph signs/. In that post i mention that the phrase <SDX> needs to be sent at the start of a message, and it’s this particular aspect that is a little confusing.

Before we get into the meat, we need to make sure we are talking to the sign at the right baud rate etc.

Many Ferrograph signs come wired for RS422, read the old post to see how to wire it up for RS232 operation.

The SDX firmware can be configured to operate at different baud rates. The sign always operates at 8 data, no parity and 1 stop bit (8n1). The default baud rate with switches 5 and 6 off is 19200 baud, and other baud rates can be set as follows:

Switch 6

Switch 5

Baud Rate














Note that the 38400 baud rate is only available if the CPU is running at double speed, either due to fixed hardware speed, or a Z8S180 CPU being detected.

If (most likely) the sign is operating at single speed, this baud rate will not be available.

The bottom four DIP switches select the network address, in the range 00H to 0FH. This is not an ethernet address. Its for when multiple signs are daisy chained over RS422.

Address 00H is reserved as a broadcast address, and if the display’s address is set to it, it will act on every message received regardless of the message address. Similarly, the display will act on any message containing the 00H broadcast address, regardless of its own address.

To make hello world appear on the display, we need to send a properly structured message or packet. This is common with all displays of this nature. The SDX packet requires the addition of an “SDX” text field as well as the SOT character and the ASCII Address field. Therefore, the basic packet structure is as follows:

SOT  01H

“SDX” Text Field

Address Field

Optional Control Sequences


Data Record(s)




<SOT> (01H): Start of Transmission character, must be sent at start of message.

<SDX> The “SDX” text field simply consists of the fixed string of three ASCII characters: ‘S’, ‘D’ and ‘X’. It is used to ensure that the SDX firmware will only operate with compatible driver software, and not the driver software designed for the original Ferrograph UDP firmware. Note that the “SDX” text field is only required at the start of the basic packet structure, and not for nested Message and Page sequences.

These are more complicated message structures and wont be covered here.

<ADDR> The Address Field consists of two ASCII HEX Digits (e.g. address “00” represented by two bytes 30H 30H).  The address must be in the Range “00” to “3F”. For a message to appear on the display, the address in the packet must match the address set via DIP switches on the rear panel, unless the DIP switches are set to address “00”, where any address will be accepted. Note, however, that these bytes must always be valid ASCII HEX digits.

<SEP> (1EH): The separator byte is always required before the data record containing free text, some control sequences and any nested Message sequences.

<EOT> (04H): End of Transmission character. This must always be sent at the end of a message.

Therefore, to make the string “hello world” appear on the sign, regardless of its address, we need to send:

<01H><SDX><30H30H><1EH><hello world><40H>

To the display. Note, you don’t send the <> characters! I have simply used them to show how a message sequence is structured.

Within linux you should be able to:

echo -e '\01SDX\30\30\1Ehello world\40' > /dev/ttyS0

Or from windows:

you can use copy con and place the message structure in a file. I wont go into the how here, thats a subject for entire blog post, let me google that for you