# BetaBrite Sign¶

We have an LED sign in the office! Its protocol documentation is available either at http://support.adaptivedisplays.com/Documentation/questions.php?questionid=149 or a local mirror (not public since we lack redistribution rights!) is available in AFS file:///afs/acm.jhu.edu/group/admins/scratch/Alpha%20Sign%20Communication%20Protocol%20(PN%2097088061).pdf .

## Wiring¶

As shown on page 105 of the above, our sign uses a six-pin RJ connector. It should be cabled up as per the cable named 1088-9108 on page 103.

For the current, hackish, cabling harness, that means that the following connections should be made. Pin labels are as will be connected to a

 white/orage pin 5 Ground blue pin 2 Sign TX / Host RX white/green pin 3 Sign RX / Host TX

## Basic Communication Examples¶

First, you will want to set the baud rate and raw mode of the serial port. The sign supports both 7E2 and 8N1 serial streams, apparently, so pick your favorite one of

stty -F ${SERIAL_PORT_DEVICE} 9600 cs7 cstopb parenb -parodd clocal raw stty -F${SERIAL_PORT_DEVICE} 9600 cs8 -cstopb -parenb clocal raw


You will probably want, as well, to set

COMM_PREFIX="\0\0\0\0\0\001Z00\x02"
COMM_SUFFIX="\x04"


which carries the synchronizing stream of nulls, the start of header character, th esign type code (any sign), the broadcast address, and the start of text character.

### Set TEXT File¶

The sign is really quite amazing internally, but most of its time is spent displaying one of 26 text messages, named ‘A’ to ‘Z’. To set a message, use the “Write TEXT file” command (page 18, section 6.1.1), for example

echo -ne ${COMM_PREFIX}'AQtesting 1 2 3'${COMM_SUFFIX} >${SERIAL_PORT_DEVICE}  will set text message ‘Q’ to be ‘this is a test’. Usually, our sign displays message ‘A’, but that can be changed. #### Use Special Commands¶ TEXT files can contain control characters (see appendix G) to do funny things like display the date or time. For example echo -ne${COMM_PREFIX}'AQ\x0B9 \x19'${COMM_SUFFIX} >${SERIAL_PORT_DEVICE}


will set the TEXT file Q to display something like “FRI. 12:03 PM”, which is nicely informative.

Fonts (0x1A), character attributes (0x1D), spacings (0x1E), speed (0x15 - 0x19), and color control (0x1C) are also available using this mechanism. This example specifies mode and mixes fonts and colors:

echo -ne ${COMM_PREFIX}'AA\x1B b\x1A1\x1C1\x0B9 \x1A7\x1C2\x13'${COMM_SUFFIX} >${SERIAL_PORT_DEVICE}  #### Use Modes¶ TEXT files can have “modes” set on them, which determines how they appear on the display. If no modes are specified, the so-called automode table is used (see section 7.13.5). Mode fields begin with an ESCape character at the start of a text file echo -ne${COMM_PREFIX}'AQ\x1b athis is a test'${COMM_SUFFIX} >${SERIAL_PORT_DEVICE}


will cause “this is a test” to scroll by. See section 7.9.1 and 7.9.2 for more on modes.

### SMALL DOTS PICUTRE¶

Be sure that memory is configured correctly (see below).

One can then load in a SMALL DOTS PICTURE:

echo -ne ${COMM_PREFIX}'I!050501010\x0D10101\x0D01010\x0D10101\x0D01010\x0D'${COMM_SUFFIX} >${SERIAL_PORT_DEVICE}  And call out to it: echo -ne${COMM_PREFIX}'AA\x1B b\x14!'${COMM_SUFFIX} >${SERIAL_PORT_DEVICE}


### Set Time of Day¶

Set the current time with

echo -ne ${COMM_PREFIX}'E 'date +%H%M${COMM_SUFFIX} >${SERIAL_PORT_DEVICE}  And day of week echo -ne${COMM_PREFIX}'E&'$(((date +%u + 1) % 7))${COMM_SUFFIX} >${SERIAL_PORT_DEVICE}  And date echo -ne${COMM_PREFIX}'E;'date +%m%d%y${COMM_SUFFIX} >${SERIAL_PORT_DEVICE}


Note that the sign is not a real-time clock (it will lose track of the date, apparently) and is only capable of representing years 1994 through 2009. 00 corresponds to 2000, 94 to 1994, and 09 to 2009, but 93 to 2007, 92 to 2006, 10 to 1994 ... this seems to be a firmware “feature” which renders the sign’s understanding of the date pretty useless.

A command like od -t x1 -w1 -v -a ${SERIAL_PORT_DEVICE} can be used to view bytes as they come back from the sign. This is useful for reading back messages or configuration data. To read back text file ‘A’, run (page 19): echo -ne${COMM_PREFIX}'BA'${COMM_SUFFIX} >${SERIAL_PORT_DEVICE}


You’ll get back something like

nul ... null soh 0 0 0 stx A A t e s t i n g sp 1 sp 2 sp 3 etx 0 4 7 B eot


which is seen to be a synchronization burst, an addres indicating response (the first “0”) from the broadcast address (the next two “0”s) containing a message “AAtesting 1 2 3” with a trailing checksum (printed using upper-case hex letters).

Other possibly interesting read-backs include (swap out BA above with the contents of the parenthesis below):

• (F ) (F space) – the time of day
• (F") general information about the sign