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

Off

Off

19200

Off

On

9600

On

Off

38400

On

On

1200

 

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

SEP  1EH

Data Record(s)

EOT

04H

 

<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

Making the Ferrograph SDX 63 Aurora XML aware

I mentioned in a previous post how we have used an old Ferrograph SDX 63 LED moving message display / wallboard and Robert Cowards excellent ADF firmware to give us a sign that is to be used for our Extreme Feedback device.

Once i had got my head round the Alpha Protocol, i started to knit a huge perl module together to control the sign. Essentially all it did was create an alpha protocol formated string and send it to the sign. At first this seed to be the logical way to approach the problem. I had already written an IRC bot that announces the build status into the channel and it too was written in about 10 lines of perl, so giving the bot access to the the sign module would allow the bot to relay messages to the sign.

However, once you start send messages to the sign you realise that what you actually want is an SGML way of writing message to the sign, that is to say, create your message in your mark up then send it to the sign. The sign itself only has a Z80 processor and its already overburdened with the task of displaying data on the LEDs, so making the sign understand SGML was out of the question. So how about using XML and transforming the XML through an XSLT that would result in a stream of data the sign could understand? At last i found something i actually made real use of XML transformation.

XSLT is commonly used to turn XML into html, all i had to do was create an XSL with the appropriate taxonomy for the ADF firmware and then build up my message using my own SGML.

I’ve never found a use for XML before, I’ve always found it to be a bit pointless, but then that s probably to do with my age. Once upon a time we only had 8-bit processors and 1k of RAM, and those sort of constraints make you think about how you are going to deal with your data very carefully. The last thing i would do is transmit 80 bytes of data in a 4k document, just because it can specify its contents.

SO no sooner had I finished my work when as usual i found i wasn’t the first, and software already exists that can speak the Alpha protocol and uses XML and XSLT its called bbxml (BB from the betabrite signs). Bugger!

Ferrograph SDX – scrolling LED sign

One important aspect of being Agile is have short feedback loops. Wherever possible we aspire to reduce the feedback times, and one aid in decreasing feedback time is a feedback monitor. Having a some sort of visual indicator for the state of the project is obviously valuable. Its believed that if used correctly it can boost productivity and morale within the team considerably, however there is a certain amount of Kudos to be gained for having anything more than a VGA screen.

If you have a quick Google for Extreme Feedback Devices (no i’m not talking about a Marshall JCM800, 4×12″ cab and a Gibson Les Paul) will turn up a large amount of hits for glowing orbs, VGA screens, lava lamps, lots of bespoke devices powered by Atmel AVRs, devices controlled by X10, water features, gummi bears and so on. One post by Dirk Ziegelmeier caught my eye, he had used a scrolling LED message board.

I picked up an old Ferrograph Aurora 64 SDX moving message / LED wall board, the type that is typically used in a call centre environment. In fact our call centres employ these boards to show the inbound call queue, and average call waiting times etc. for the Avaya Index ACD system.

The Ferrograph SDX boards turn up quite frequently on Ebay, and i had (somewhat naively) assumed that there would be enough info on the internet for me to be able to integrate the sign into our build monitor. Like i say, i had assumed, and as Eric Bogosian put it so eloquently in “Under Siege 2: Dark Territory (1995)” , “assumption is the mother of all f**ck ups”.

The sign came with a short pig tail of cat5 cable terminated in an RJ45 plug. I have seen these signs listed on eBay as being “networked”, this is an incorrect assumption being made by the seller as this is not a network cable but a serial cable. In my case the sign had been configured for RS422. Being a hardware geek more than a software geek, meant i had the sign opened up and running on RS232 in a matter of minutes.

Inside the sign is a main-board, at the end of which there is an RS422 header and RS232 header. Although there didn’t seem to be a pin out that i could see printed on the PCB i traced back a little bit to work out which pin was which (a guesstimate based on where the pins ended up), i soldered up a 9pin D-connector to three wires (gnd, Rx, Tx) and stuffed it into the back of my PC. I took a guess at 9-n-1 (as its fairly standard HW setting) and sent “hello world” using the Alpha 1-byte protocol. The sign displayed nothing, nada, zip, bupkis, diddly-squat, zilch, bugger.

A long hard trawl of the internet turned up nothing. A few posts on various “Q&A” sites asking for info on these boards, but little else. A few lunchtimes of hunting and i came across a posting on makezine where Robert Coward said he had successfully reverse engineered the SDX signs.

I dropped Robert a line, and he very generously sent me the secret i needed to know for me to be able to get “hello world” onto the sign.

Because the Ferrograph SDX signs were designed for call centre ACD systems using the Avaya Index telephone system, it expect to be sent the phrase “SDX” at the start of every packet. It was that one nugget of information that allowed me to get going with the SDX wallboard but it was Roberts reverse engineering that really enabled me to push the sign to its limits – which took all of about 5 minutes!

There are many things wrong with the SDX sign, in fact possibly more defects than working features. I’m guessing that when Ferrograph tested the sign they only tested the features that would be needed for the sign to operate with the ACD system and not the features that are typical of the Betabrite or Alpha LED moving message led displays.

Anyhoo, long story short, Robert has created some new firmware ADF for the board, that does the following amazing things:

* Conforms to the publicly available Alpha protocol. It works with ready made applications, and it’s easy to write your own applications for it.
* It has lots of fancy effects (snow, dissolve, drop down, cursor wipe and many more), and smooth continual scrolling, as well as all standard wipes/scrolls.
* Supports small/large normal and fancy character fonts; one or two line operation for small fonts. Double wide, flashing and colour shift flashing options available.
* Automatic word fit and centering to ensure a presentable display at all times.
* Many colour combinations, including three colour rainbow and two colour stripes.
* Full support for pictures and animations; configurable animation speed.
* Sophisticated & flexible memory management.
* Full real time and date display support in various formats.
* Ability to set messages to appear and disappear at certain times/days.
* Control of two optically isolated misc IO signals available on some Aurora 63 units, allowing automatic control of external buzzers, lights and even mains appliances (via suitable interface hardware) in synchronisation with message displays.
* Serial readback for message data and system/error status.
* Works on RS232 or RS485 interfaces.
* Serial timeout message option to display an error or blank message if host serial comms fails.
* Automatically detects Z8S180 CPUs on modern units and switches to high speed internally for maximum performance. Also automatically handles boards hard wired to double speed operation.

I’m sure you will agree that its some features list. Robert has turned what was previously a skippable board into a fantastic fully featured LED scrolling message board that would cost thousands of pounds.

A big feature here is that the with the ADF firmware the sign talks Alpha protocol, 1-byte, 2-byte and 3-byte. The Alpha protocol is publicly available and therefore there is much info available on the internet about it including sample code.

For example, in Linux i can:

echo "_01Z00_02A0hello world_04" > /dev/ttyS0

I contacted Robert again and purchased a copy of the firmware off him, which he supplied on an EEPROM ready to drop straight into the mainboard of the sign.
I powered up the sign and put and sent it “hello world” and basked in the 3 colour glow. within minutes a small crowd had gathered around my desk, Ooh-ing and Ahh-ing at the effects. You see if you sent the old SDX firmware “hello world”, that’s all you got, however with Roberts ADF firmware, the sign centres the text and positions it in the middle of the two rows, then applies various effects to the text. The crowd were pleased.

Ok, so know i needed to make this sign work hard, i needed it to parse the cctray.xml that is generated by Cruise. Surely this is something i’d find ready made on the t’interweb? Well yes and no. Lots of people are parsing the xml that is output from Cruise Control, but we are using Cruise, and cctray.xml was what i wanted to parse (at first at least). But that as they say, is another story.

If you have a Ferrograph Aurora (Aurora 62, 63 or 64, new or old hardware type) SDX display / wallboard and you are interested in Roberts firmware you can contact him directly via email: robertcoward{at}gmail{dot}com