Here is a document a buddy and I wrote on the sony format. I hope this is appropriate here. There has been some traffic on ir formats lately..... 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.8 ms lower Ctrl-S line to logic-0 wait 0.4ms 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 ScottUs findings. In addition, Ed observed slightly different timing on the high and low duration of the stream. The 0.8 msec and 0.4 msec times are both 0.6 msec. 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. 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. 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 095 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 117 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: oadebc@robots.gsfc.nasa.gov +---------------------------------------------------------------------------+ | Edward Cheung, Ph.D. | The opinions expressed herein | | NASA Goddard Space Flight Center | do not necessarily reflect | | Code 714.1, Bldg T11B | those of my employers' | | Greenbelt, MD 20771 | | | 301-286-1269(office) 286-1717(fax) | My next book: | | Internet: ebc714@rs710.gsfc.nasa.gov | Statistics, Demos and Other Lies | +---------------------------------------------------------------------------+