Robin Daugherty

Spectrum Wallboard Sign Protocol

This document was created to document the serial-line protocol to control Spectrum External link signs, which come in many sizes and flavors. Spectrum is unwilling to accurately document this protocol, and has actually released a document which is poorly written, and almost completely inaccurate. Since I am writing software which uses this protocol, it was necessary to reverse-engineer another piece of software to get the codes. My findings are here so that nobody has to go through this again. You might think it would make sense to Spectrum Corp to make this information widely usable, so that they can sell more signs, but they don’t seem too bright (pun intended).

The software that I wrote that implements this protocol is called Huddle External link , which is GPL and hosted by Sourceforge.

In order to send a control message, the serial port should be set to 7 data bits, even parity, 2 stop bits. The baud rate is 1200, 2400, 4800, or 9600. There is no setting in the sign for baud rate, as the sign determines the speed based on the first characters in each message. Because of this, each control message starts with a series of zeros (0x30), about ten of them for good measure.

Next comes a 0x01, followed by the sign Type Code (see table below). This tells each type of sign whether you want it to process this message. The Type Code is followed by a two-character hexidecimal sign address. This is in the range of 00 (0x30 0x30) to ff, and matches that set in your sign. For a Type Code that addresses all boards, leave this as 00.

Next comes an STX character, 0x02, to begin sending command(s). Each command is prefaced with a Command Code (see table below). Some Command Codes require one or more characters to follow it as parameters. For commands where a file is being stored, such as A, simply start the text of the message.

You can end each command with an ETX character (0x03), and send multiple commands, ending the entire control message with an EOT character (0x04).

A sign holds one or more messages in memory, in files with a one-character name. You must send a command to reserve memory with the name of the file you will be using. This is done with a Write Special Functions command (see the table).

Type Codes

CharASCIIUsage
Z0x5AAll Message Centers
?0x3FAll Message Centers
00x30Response Type Code - Used only when a sign responds to a request
!0x21

All Message Centers with Visual Verification - This code will cause the wallboards to give a visual indication “Transmission OK” on the wallboard screen if the transmission frame format was received without error.

10x31All One line wallboards
20x32All Two line wallboards
#0x23All Matrix Products
$0x24Full Matrix Products
%0x25Character Matrix Products
a0x613214C Wallboard
b0x623614C Wallboard
c0x633024C Wallboard
d0x643424C Wallboard
e0x651512R Wallboard
f0x661512C Wallboard
g0x673214R Wallboard
h0x683614R Wallboard
i0x693024R Wallboard
j0x6A3424R Wallboard
k0x6B1023/1033 Wallboards
l0x6C3XX7 Series (3217, 3617, 3027 Wallboards)
m0x6DPower Light Series 16 row
n0x6EPower Light Series 24 row
z0x7A

All Message Centers will first configure memory for 26 files of 150 characters (A-Z) then execute the specified command.

C0x437430I
D0x447440I
E0x457460I
U0x55790I
0x22Serial Clocks
^0x5E205C

Command Codes

CharASCIIUsage
A0x41Write Text File
B0x42Read Text File
E0x45Write Special Functions
F0x46Read Special Functions
G0x47Write String File
H0x48Read String File
I0x49Write Dots Picture File
J0x4ARead Dots Picture File
M0x4DWrite Matrix Picture File
N0x4ERead Matrix Dots Picture File
O0x4FWrite Bulletin Message

Write Text File

Writing text to a file is necessary for the message to be displayed. The text of the message can use the control codes documented below. The first character following the A is a name of the file you are writing. This can apparently be any character of the ASCII table above and including 0x20.

To insert a String File in a message, send a DLE (0x10) followed by the one-character file name. String files can be changed at any time without re-sending the entire Text File, and the sign will update the message.

Colors

Send 0x1c followed by a single character.

CharColor
1Red
2Green
3Amber
4Dim Red
5Dim Green
6Brown
7Orange
8Yellow
9Rainbow Horizontal
ARainbow Checker
BRainbow Mix

Transitions

Send 0x1b followed by one or two characters.

A transition is sent before the text which will be ‘brought in’ with the transition.

IdentifierTransition
aRotate Left
bHold
cFlash
dLine Split Out/In (“Switch”)
eRoll Up
fRoll Down
gRoll Left
hRoll Right
iWipe Up
jWipe Down
kWipe Left
lWipe Right
mScroll
n0Twinkle
n1Sparkle
n2Snow
n3Interlock
n4Switch
n5Slide
n6Spray
n7Starburst
n8Graphic: Welcome
n9Graphic: Slot Machine
nSGraphic: Thank You
nUGraphic: No Smoking
nVGraphic: Don’t Drink and Drive
nWGraphic: Animal Running
nXGraphic: Fireworks
nYGraphic: Turbo Car
nZGraphic: Cherry Bomb
oAuto Mode
pRoll In
qRoll Out
rWipe In
sWipe Out
tCompress Rotate (rotates left, with letters being half as wide)

Speed

To adjust the speed of transitions, send one of the following:

Type CodeUsage
0x15Speed 1
0x16Speed 2
0x17Speed 3
0x18Speed 4
0x19Speed 5

Text Formatting

To format text, place in front of the text to be altered.

CodeUsage
0x05

Double High Followed by ‘1’ for on, ‘0’ for off.

0x06

True Descender Followed by ‘1’ for on, ‘0’ for off.

0x07

Character Flash Followed by ‘1’ for on, ‘0’ for off.

0x1d 0x30

Double Stroke Followed by ‘1’ for on, ‘0’ for off.

0x1d 0x31

Double Width Followed by ‘1’ for on, ‘0’ for off.

0x1d 0x34

Fixed Width Followed by ‘1’ for on, ‘0’ for off.

0x1d 0x35

Fancy Followed by ‘1’ for on, ‘0’ for off.

0x12

Wide Character enable.

0x11

Wide Character disable.

0x1a 0x38Full Height Fancy
0x1a 0x39Full Height Standard
0x1a 0x33Seven-High Standard
0x1a 0x31Five-High Standard
0x1e 0x30Proportional
0x1e 0x31Fixed
0x22 0x6fLine Position Top
0x20 0x6fLine Position Middle
0x26 0x6fLine Position Bottom
0x30 0x6fLine Position Fill

Write Special Functions

These are used to for many different things, which are listed below. This is only a partial list, however.

Type CodeUsage
$

Reserve Memory. Followed by:

  • The one-character name of the file (any ASCII char above 0x1f)

  • The type of file (‘A’ for text file, ‘B’ for string file)
  • Some parameters (which are not documented). “AU” works for text files, “L” works for string files.

  • The length of the file in four hex characters.
  • For text files, “FF00”. For string files, “0000”. This might mean something, but it’s undocumented.

Back to root