Sony Control-S Protocol Specifications
by
Scott Coleman
Xanadu Consulting
Internet: coleman@f69.n233.z1.fidonet.org
FIDOnet: 1:233/69.0
Copyright 1990 Scott Coleman. All Rights Reserved.
Revised: 5/21/90
The following is a reference guide to using a microcomputer
to control a VCR equipped with a Control-S (SIRCS) port. It is
being released in the hope that it will be useful to some of you.
Apparently there is no documentation on the Control-S protocol
available from Sony (at least, that's what their publications
office told me when I called). Thus, the following information is
a synthesis of bits and pieces obtained from many sources,
including the Sony Service Manual for the RMT-124 IR controller,
some net.friends, and by connecting an oscilloscope across the
LED in a Sony IR remote controller and observing the signals sent
as various buttons on the controller were pressed. The timings
given may not be exactly those used by the Sony products, but
these timings have been used successfully in controlling a Sony
SL-HF900 VCR via the Control-S port, so I figure they're pretty
close. I make no guarantees of accuracy for any of the
information contained in this document, although I'd appreciate
hearing from you if you find any errors contained herein. Also,
the names used here may not correspond to any "official" Sony
names used for the various aspects of the Control-S protocol. I
have made up some reasonably descriptive names for various
things, since there is no official reference information (that I
am aware of) which would tell me the official names. I'd also
like to acknowledge the assistance of Paul Milazzo
(milazzo@bbn.com) for his valuable pointers in the right
direction when I first began to research this topic. Without his
response to my usenet post, I might never have figured all this
stuff out and gotten my controller program working. Thanks, Paul!
Protocol Description
The Control-S protocol used by various Sony video products
is simply a TTL-level baseband version of the signals sent by the
Sony remote controllers (such as the RMT-124). The Control-S
command word is 12 bits long, and consists of a 5-bit device ID
code followed by a 7-bit button code. The control-S data packet
is preceded by a 2.4 millisecond TTL logic-1 pulse (start bit)
followed by 0.6 ms of logic-0. Each 1 bit in the control word is
represented by a 1.2 ms logic-1 level followed by a 0.6 ms logic-
0 level, and each 0 bit is 0.6 ms high, 0.6 ms low. The end of
the control packet is always a TTL logic-0 level, and the total
length of each packet is fixed at 45 ms in length. The bits in
each control word are sent in increasing bit position order (i.e.
low order bit first, high order bit last). As an example, let's
look at the command to toggle the power on a SL-HF900. The device
ID for the VCR is 00010, and the button code for the power switch
is 0010101. Thus, the entire control word is 000100010101. To
send this command to the VCR, we first send out a 2.4 ms start
bit, and then send the bits in reverse order (i.e. 101010001000).
We then hold the Control-S port to logic-0 level to make the
total packet time (i.e. the time since the rising edge of the
start pulse) equal 45 ms.
Interfacing
To send commands to a VCR equipped with a Control-S port,
your computer will need a TTL-level binary output port. A
standard IBM-PC parallel printer port works well, as does a data
acquisition and control adapter (IBM DACA board). As long as the
port can send a TTL-level signal (0VDC = logic-0, 5VDC = logic-1)
you should be OK. Connect the output line from the port to a 1/8"
mini phone plug, with the tip carrying the TTL signal and the
ring grounded. A simple software routine can then be written to
toggle the status of a bit in the output port corresponding to
the output line. Setting the corresponding bit in the output port
will cause the line to go high, clearing the bit will cause the
line to go low. By controlling the pattern and timing of these
high and low signals, the commands may be sent to the VCR. The
following pseudocode outlines a routine to send a command through
a port setup such as that described above:
begin
/* send the start bit */
raise Ctrl-S line to TTL logic-1
wait 2.4 ms
lower Ctrl-S line to logic-0
wait 0.4 ms
for current_bit = low_order_bit to high_order_bit do begin
raise Ctrl-S line to logic-1
if (current_bit is a 1)
wait 1.2 ms
else
wait 0.8 ms
lower Ctrl-S line to logic-0
end
wait a sufficient time to make the total message duration 45 ms.
end
Additional Information
The following are some of the codes I've discovered while
experimenting with the Control-S port software I wrote, as well
as some additional codes sent to me by Bruce Edwards
(bruce@locke.hs.washington.edu). Note that not all of these
commands work with all VCR models. For example, code 22 causes
the SL-HF900 to eject a tape, but the SL-HF400 ignores that
command. If you come across any codes which are not listed here,
I'd appreciate it if you'd send me a list of new codes you
discover.
Device ID Codes
1 TV
2 VTR1
4 VTR2
Button Codes
000 1 button
001 2 button
002 3 button
003 4 button
004 5 button
005 6 button
006 7 button
007 8 button
008 9 button
009 10 button/0 button
010 11 button/* button
011 12 button/CH/Enter/#
012 13 button/1-
013 14 button/2-
020 X 2 play w/sound / X 3 play
021 power
022 eject
023 L-CH/R-CH/Stereo
024 stop
025 pause
026 play
027 rewind
028 FF
029 record
032 pause engage
034 X 1/10 play
035 X 1/5 play
038 High Double Speed ( X7 ~ X15X )
040 reverse visual scan (Review on )
041 forward visual scan (Cue on)
042 TV/VTR (ANT-SW)
045 VTR from TV (ANT-VTR)
046 Power on
047 power off
048 single frame reverse/slow reverse play
049 single frame advance/slow forward play
051 X 1
058 Rewind and Play
060 aux
070 counter reset
071 Counter Memory on/off
072 Index write
073 Index erase
078 TV/VTR (ANT-TV)
083 index (scan)
089 Tape return
090 Display on/off
091 Open/Close
104 Audio Insert
105 Video Insert
106 edit play (Assemble)
107 mark
108 Start
Well, this ought to be enough to get you started. If you
have any questions, or would like to share some new device/button
codes, I can be reached at either of the following addresses:
Internet: UV@f69.n233.z1.fidonet.org
FIDOnet: UV@1:233/69.0
From: Kyler B Laird laird@ecn.purdue.edu
To: o-intelhouse@dlb.com
Date: Thu, 06 Jan 1994 22:28:34 EST
Subject: Re: Sony remote control protocol
+ The following is a reference guide to using a microcomputer to
+control Sony equipment via the SIRCS protocol. This can occur either
+via an infrared interface, or with a Control-S port. It is being
+released in the hope that it will be useful to some of you. Apparently
+there is no documentation on the protocol available from Sony (at least,
+that's what their publications office said).
You spoke to the wrong person/people. You need to ask for "Sony
Remote Control Systems" (2RM383-1). Mine was $5. SIRCS is described
on pages 17-27. (SIRCS intro from 17-22, System III on 22, Beta on 23,
and Audio on 25-27)
+ The wired Control-S protocol used by various Sony video products is
+simply a TTL-level baseband version of the signals sent by the Sony
+remote controllers (such as the RMT-124). The Control-S command word is
+12 or 15 bits long, and consists of a 5 or 8-bit device ID code followed
+by a 7-bit button code.
I haven't run into a 15 bit word. This manual only mentions 12 bit
words, but it may be out of date.
+The control-S data packet is preceded by a 2.4
+millisecond TTL logic-1 pulse (start bit) followed by 0.4 ms of logic-0.
+Each 1 bit in the control word is represented by a 1.2 ms logic-1 level
+followed by a 0.4 ms logic-0 level, and each 0 bit is 0.8 ms high, 0.4
+ms low. The end of the control packet is always a TTL logic-0 level, and
+the total length of each packet usually fixed at 45 ms in length.
Yeah, uh, I guess. Here's what this manual says:
"The SIRCS digital code is made up of a start pulse 2.4 msec
wide followed by a series of 12 pulses representing ones and
zeros. The whole frame is repeated about 22 times per second
having a frame period of 45 mseconds.
A data 0 is represented by .6 ms of no signal and .6 ms of
the 40 KHz carrier signal [logic 1 for baseband]. A data 1
is represented by .6 ms of no signal and 1.2 ms of 40 KHz
carrier. After the 12 bits comprised of 7 data bits for the
function followed by 5 bits for product category, there
occurs no signal until the end of the frame. The signal is
sent least significant bit first, most significant bit last."
+ 047 power off
+
+ 048 single frame reverse/slow reverse play
According to this manual, 48 is POWER OFF, and 47 is POWER ON.
Although these aren't often available on remote controls, they're
extremely useful for computer control since the 'puter doesn't
normally have feedback with which to toggle power intelligently.
Good work, guys! I started observing these signals (with an
MC68HC11), but after I got them and was able to send them, I
bought the manual. Much easier.
--kyler