UVSG Satellite Data

From Prevue Guide Wiki
Revision as of 01:44, 30 November 2010 by AriX (talk | contribs) (→‎Command Modes)
Jump to navigation Jump to search

This was the format used by United Video Satellite Group to send data out at 2400 baud through the VBI of both WGN Superstation (from 1981 through 2005) and the C-band Prevue Channel feed (from 1988 through 1999). Many different types of information were sent out through this feed, including time/date information, system settings, channel listings, system updates, and information on previews/promos currently playing through the C-band feed.

Tin has successfully reverse engineered parts of this format, and it is now possible to send our own messages to emulated or real EPG/Prevue machines over serial. Additionally, some test files received from an ex-UV employee have helped to further the reverse engineering effort.

Overview

Every message always starts with the header "55 AA", followed by a select code, a 00, and a checksum. This is followed by another "55 AA", then a byte indicating which mode of command is being sent out, then the data of the command, which is usually followed by checksum.


For example, here's a command that will change the title of the EPG to "PREVUE GUIDE":

55 AA 41 2A 00 94 55 AA 54 50 52 45 56 55 45 20 47 55 49 44 45 00 D0

In this example, the select code being addressed is 2A, or the ASCII code for an asterisk (*). This means every machine that is listening to the satellite feed will act on this command. Then, a 00 to terminate the string, and a checksum (94). After the 55 AA, you see the mode byte (54, or T for Title), and then an ASCII string (PREVUE GUIDE). Lastly, there is another 00 to terminate the string, and D0, the checksum for the entire string.

Initial Checksum

Most commands have a checksum that is calculated on all the bytes of the data part of the command. This is sent over the serial port and compared to the correct value by the receiving machine. If the checksum does not match, the computer discards the whole command. The checksum is calculated by bitwise XOR of each byte of data within the command excluding the command letter itself. Each command has its own hardcoded seed checksum which is loaded as the initial value of the checksum as soon as the initial command letter is recieved.

Command Modes

Some of this is conjecture and named according to clues found in the reverse-engineered code - it's subject to change and mistakes!

Command Name Initial Checksum Description Notes
A Box On $BE Addresses the machines by select code, informing them to listen for commands
C Channel $BC Contains the channel lineup Divided by the receiving machine into a list of channel numbers, call letters, and sources.
E ? $BA ? Atari L9118
F Configuration $B9 Gives the receiving machine information about its location, local time, settings, ads, and more. Completely different syntax between Atari and Amiga commands, but same command letter and initial checksum
H Download $B7 Can be used to write a file to disk, likely other Amiga maintenance tasks as well Obviously works only on Amiga platforms
J Order Information $B5 For pay-per-view channels
j Order Information $95 For pay-per-view channels (likely newer format)
K Clock $AB Sets the time centrally The known syntax of this command does not work on post-1997 Prevue Grid software
L Ad $B3 Centrally provides an ad or message Seems to crash Prevue Grid if there is already ad in a slot, maybe bad syntax
M ? $B2 ? Atari L9152
N ? $B1 ? Atari L92A4
O ? N/A ? No checksum, expects $00 and $B0 to follow - Atari L91BA
P Program $AF Program information
p Program $8F Program information Possibly newer format, example in NEWP test file
Q ? $AE Not sure, probably has something to do with PPV channels
R ? $00? Not sure, possible warm reset Atari L917D
T Title $AB Sets the guide title Only applicable to EPG, but recognized by Prevue Grid as a valid command
Z ? $A5 ? Atari L9206
$03 ? ? ? Atari L949F (hexadecimal 03)
$BB Box Off N/A Tells all listening boxes to stop listening Hexadecimal BB