Sircs description
Up ] more info Link ] Video Equipment ] Audio Equipment ] Device ID's ] Mods Page ]




This page was last updated on the Monday, August 17, 1998 11:28:48 PM

Sircs is the name given to Sony's remote control system. Currentley there are 3 types 12 bit, 15 bit

and 20 bit. The 12 bit has been around for many years but the 15 & 20bit seems to be making an

appearence with video and television products. I used Heiko's software to decode these also modifying

it to read the 15 & 20bit ones. The description below is the best description I have found on the Net,

Unfortunately I am unable to remember where I got it from.

Sorry gents

Here are the files I used to read the remote controls.

sircs4  Heiko's original pascal code written in Turbo Pascal 6 & exe file.


sircsall Sircs's modified pascal code written in Turbo Pascal 6 & exe file.


Credit must goto Heiko for his original program Sircs4, this program I modified to create Sircsall which read all current sircs formats 12bit, 15bit & 20bit.

For list of remote control files click here

For a look at my Windows based PC remote control click here

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.


We'd like to acknowledge the assistance of Paul Milazzo
( 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.


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:

/* 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
wait 0.6 ms
lower Ctrl-S line to logic-0
wait 0.6ms

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


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:              

Edward Cheung:  
Below is a graphical representation of the Sircs waveform (12 bit).  
S3.jpg (123895 bytes)

If you have any additional info please email me at: