Sony SIRCS Protocol Specifications


Scott Coleman and Edward Cheung


   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). 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, and writing computer 
programs to try various codes. 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 and a SL-HF400 VCR via 
their Control-S ports, and a XBR32 TV and SL-V585HF VCR via infrared, so 
we figure they're pretty close. We make no guarantees of accuracy for 
any of the information contained in this document, although we'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 protocol. We have made up some
reasonably descriptive names for various things, since there is no 
official reference information (that we are aware of) which would tell 
me the official names. 


Acknowledgment

   We'd like to acknowledge the assistance of Paul Milazzo 
(milazzo@bbn.com) for providing valuable pointers in the right direction 
when Scott first began to research this topic. Without his response to Scott's
usenet post, He might never have figured all this stuff out and gotten Scott's
controller program working.



        Protocol Description


   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. 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. 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. 

   As mentioned above, command words are usually 12 bits long.  However, 
some commands are 15 bit long, the device code in that case is 8 bits 
long.  For example to command a Sony XBR32 TV to turn off Picture-in-
Picture, you send command 110 (decimal) to device 164 (decimal).  Note 
that the 12-bit command can be distinguished from a 15-bit command 
becuase it is three bits shorter.  Since both (0 and 1) logic levels 
cause the transmission of hi and low transitions, one can tell the 
length of the bit stream.



        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.

Instead of a hard wired connection, you can also emulate a pushbutton 
remote and flash an Infra Red LED to the appliance(s) to be controlled.  
One way is to set up a 40 kHz LED flasher which is gated by the 
computerUs TTL output line mentioned above.

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.6 ms

    lower Ctrl-S line to logic-0

    wait 0.6ms

    end


wait a sufficient time to make the total message duration 45 ms (see 
paragraph below).

end


We derived our SIRCS information independently from each other.  Because 
of that there are slight differences in our findings.  Among the results
gathered by Ed is that the above packet needs to be sent twice (with a 
small gap of a few msec. in between) in order for the device to respond; 
he also did not observe the need to have the packet take a full 45 msec.  
This was not the case with Scott's findings.  In addition, Ed observed 
slightly different timing on the high and low duration of the stream.  
One possible reason for this difference is that Ed used an Infra Red 
interface, while Scott used the wired interface.  We suspect that there 
is sufficient tolerance built into the receivers to allow a wide range 
of timing.
A note from Robert Rolf  confirms Ed's timings:
--Begin mail message
Extracting from the RM101 service manual.
'
The "Guide pulse" is 2.4mSec. The IR rcvr uses it to set AGC level.
The base bit rate is .6mSec, 1.2mSec. The frame rate is 45.0 mSec.
The remote control outputs a minimum of THREE frames.
'

I suspect the the reason for the differences in your bit timings may
be due to the variations in the IR detectors you used.
I found that the RipShack Sharp IR module has a delay of about 200uS
and that it varied depending on signal strength.

Most of the Sony remotes use a 480Khz ceramic oscillator (for low cost)
so there can be a 5% variation in timing from part to part.
I would suggest using HEX numbers for the commands since its a lot easier
to map to them from a binary scope trace. Its also a lot easier to
manually contruct commands from DEVICE+COMMAND if they're in hex,
and patterns in the commands would be more readily seen as well.

I don't recall if you explained SIRC (serial infra red control).
-- End mail message


Example Device and Command codes


   The following are some  of the  codes we've  discovered while 
experimenting with the protocol. Note that not all of these commands 
work with all VCR or TV models.  For example, button 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, we'd appreciate it if 
you'd send us a list of the codes you discover.



Note: All numbers in the following table are base 10 (may be updated to hex
in the future)

Device ID Codes

          1   TV

          2   VTR1

          4   VTR2

          6   laserdisk

          7   VTR2

          11  VTR3

          12  Surround Sound Processor

          18  Equalizer

          16  Cassette Deck and Tuner

          17  CD Player

         164  TV digital effects (note 8 bit device code)

   Note that Ed found VTR2 to be Device code 7, while Scott found it to 
be 2.  Some devices can be contained in the same box.  For example, the
Surround Sound Processor, Equalizer, and Tuner are in one box, and the 
TV digital effects is combined with the TV.


Button Codes for VCR

          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 

          011     12 button 

          012     13 button 

          013     14 button 

          020     X 2 play w/sound 

          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 

          035     X 1/5 play

          040     reverse visual scan 

          041     forward visual scan 

          042     TV/VTR 

          045     VTR from TV 

          047     power off 

          048     single frame reverse/slow reverse play 

          049     single frame advance/slow forward play 

          060     aux 

          070     counter reset 

          078     TV/VTR 

          083     index (scan) 

          106     edit play 

          107     mark 


Button Codes for TV

          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 

          011     Enter

          016     channel up

          017     channel down

          018     volume up

          019     volume down

          020     Mute

          021     Power

          022     Reset TV

          023     Audio Mode:Mono/SAP/Stereo

          024     Picture up

          025     Picture down

          026     Color up

          027     Color down

          030     Brightness up

          031     Brightness down

          032     Hue up

          033     Hue down

          034     Sharpness up

          035     Sharpness down

          036     Select TV tuner

          038     Balance Left

          039     Balance Right

          041     Surround on/off

          042     Aux/Ant

          047     Power off

          048     Time display

          054     Sleep Timer

          058     Channel Display

          059     Channel jump

          064     Select Input Video1

          065     Select Input Video2

          066     Select Input Video3

          074     Noise Reduction on/off

          078     Cable/Broadcast

          079     Notch Filter on/off

          088     PIP channel up

          089     PIP channel down

          091     PIP on

          092     Freeze screen

          094     PIP position

          095     PIP swap

          096     Guide

          097     Video setup

          098     Audio setup

          099     Exit setup

          107     Auto Program

          112     Treble up

          113     Treble down

          114     Bass up

          115     Bass down

          116     + key

          117     - key

          120     Add channel

          121     Delete channel

          125     Trinitone on/off

          127     Displays a red RtestS on the screen


Button Codes for TV digital effects

          110     PIP off

          115     replay last 15 seconds

          116     channel preview

          119     Split screen


If you have any questions, or would like to share some new device/button 
codes, we can be reached at the following addresses:


Scott Coleman:  tmkk@uiuc.edu  

Edward Cheung:  edward.cheung@gsfc.nasa.gov
From news.gsfc.nasa.gov!newsfeed.gsfc.nasa.gov!ukma!news.uky.edu!gatech!psuvax1!news.math.psu.edu!news.cac.psu.edu!newsserver.jvnc.net!newsserver2.jvnc.net!howland.reston.ans.net!newsfeed.internetmci.com!in1.uu.net!noc.near.net!news.ipswitch.com!ddl Wed Dec 13 10:07:57 EST 1995
Article: 13287 of comp.home.automation
Path: news.gsfc.nasa.gov!newsfeed.gsfc.nasa.gov!ukma!news.uky.edu!gatech!psuvax1!news.math.psu.edu!news.cac.psu.edu!newsserver.jvnc.net!newsserver2.jvnc.net!howland.reston.ans.net!newsfeed.internetmci.com!in1.uu.net!noc.near.net!news.ipswitch.com!ddl
From: ddl@harvard.edu (Dan Lanciani)
Newsgroups: comp.home.automation
Subject: Re: IR Remote Specifications
Message-ID: <3506@news.IPSWITCH.COM>
Date: 11 Dec 95 21:27:02 GMT
References:  <4ahcq3$8kb@post.gsfc.nasa.gov>
Organization: Internet 
Lines: 111

Here is a slightly larger set of Sony VCR button codes that might be of
use.  They are collected from several different VCRs, so not all will
work on all models, of course...  Name is at the left; the 2 is the
device code and the final number is the button code.

1               sony    2 0
2               sony    2 1
3               sony    2 2
4               sony    2 3
5               sony    2 4
6               sony    2 5
7               sony    2 6
8               sony    2 7
9               sony    2 8
0               sony    2 9
10              sony    2 9
11              sony    2 10
12              sony    2 11
enter           sony    2 11
13              sony    2 12
14              sony    2 13
#
ch+             sony    2 16
channel-up      sony    2 16
ch-             sony    2 17
channel-down    sony    2 17
#
x2              sony    2 20
power           sony    2 21
eject           sony    2 22
audio-monitor   sony    2 23
stop            sony    2 24
pause           sony    2 25
play            sony    2 26
rewind          sony    2 27
rew             sony    2 27
fast-forward    sony    2 28
ff              sony    2 28
record          sony    2 29
rec             sony    2 29
# 30-31 noop
pause-engage    sony    2 32
# 33 noop
x1/10           sony    2 34
x1/5            sony    2 35
# 36-37 noop
scan            sony    2 38
track-auto/man  sony    2 39
search-rew      sony    2 40
search-ff       sony    2 41
tv/vtr          sony    2 42
# 43-44 noop
vtr             sony    2 45
power-on        sony    2 46
power-off       sony    2 47
        sony    2 49
# 50 noop
x1              sony    2 51
# 52-54
track-normal    sony    2 55
# 56-57
rewind-play     sony    2 58
# 59 noop
aux             sony    2 60
# 61-64 noop
counter-remain  sony    2 65
up              sony    2 66
down            sony    2 67
tracking-up     sony    2 68
tracking-down   sony    2 69
counter-reset   sony    2 70
# 71 noop
index-mark      sony    2 72
index-erase     sony    2 73
# 74-75 noop
time-search     sony    2 76
menu            sony    2 77
tv              sony    2 78
input-select    sony    2 79
ee              sony    2 80
execute         sony    2 81
quick-timer     sony    2 82
index           sony    2 83
# 84-87 noop
tape-speed      sony    2 88
tape-return     sony    2 89
display         sony    2 90
# 91-95 noop
timer-set       sony    2 96
right           sony    2 97
next            sony    2 97
left            sony    2 98
timer-clear     sony    2 99
timer-check     sony    2 100
timer-record    sony    2 101
timer-rec       sony    2 101
# 102-103 noop
insert-audio    sony    2 104
insert-video    sony    2 104
edit-assemble   sony    2 106
edit-mark       sony    2 107
edit-start      sony    2 108
#
digital-off     sony    2 110
speed+          sony    2 111
speed-          sony    2 112
stop-motion     sony    2 113
flash-motion    sony    2 115
digital-scan    sony    2 124
pause-on        sony    2 126
Home Automation Main Page

Back Home