• Stars
    star
    132
  • Rank 274,205 (Top 6 %)
  • Language
    C++
  • License
    MIT License
  • Created almost 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Control Onkyo devices through Remote Interactive port

Onkyo-RI

Control Onkyo devices is possible among others through Remote Interactive port. This port is normally used for direct communication between two Onkyo devices (ex. receiver and CD player). But why not turn on the receiver automatically when you start your own player?

License Stars Issues Average time to resolve an issue Percentage of issues still open

Connection

To connect to the RI port is used 3.5mm mono jack. Tip is for data signal and sleeve is ground (GND). Data are sent via TTL logic. So it is easy to connect RI device to 5V MCU (Arduino). Just connect data signal to some output pin and connect GND between each other. In case of stereo jack, connect tip to DATA, sleeve and ring to GND.

Protocol

Protocol description could be found at:

or with grafical representation at:

Protocol is pretty simple for implementation. In one message is transfered 12 bit code. This code represents action for target device. Most significant bit is send first.

Library

There are two Onkyo-RI library:

  • blocking - send() method blocks other program execution until whole command is sent. It takes up to 61 ms.
  • non-blocking - send() method only start command sending. The execution is handled by processing() function. This function must be called periodically with maximum 1 ms period. Function return bool value about sending status (true - data is being sent, false - nothing to sent/sending is done). Before the command is completely sent other functions can be executed. Library use internaly Arduino micros() function, so no other timer is not blocked.

RI codes

At mentioned sites are also listed codes for Onkyo devices. Unfortunnately none of the codes is not valid for my receiver TX-8020. To determine the valid codes I wrote a simple loop for Arduino (more below) that goes through the whole 12bit code range (0x0-0xFFF). Results are listed below commands.

TX-8020 receiver

Codes are valid for TX-8020 receiver. With a high probability it will work with other Onkyo receivers.

ActionCommandNotes
Input CD0x20Switch input to CD channel
Turn On + CD0x2FTurn ON receiver and select CD as input channel
Input TAPE0x70Switch input to TAPE channel
Turn On + TAPE0x7FTurn ON receiver and select TAPE as input channel
Input BD/DVD0x120Switch input to BD/DVD channel
Turn On + BD/DVD0x12FTurn ON receiver and select BD/DVD as input channel
Input DOCK0x170Switch input to DOCK channel
Turn On + DOCK0x17FTurn ON receiver and select DOCK as input channel
Dimmer Hi0x2B0Set dimmer brightness to highest level
Dimmer Mid0x2B1Set dimmer brightness to mid level
Dimmer Lo0x2B2Set dimmer brightness to lowest level
Dimmer Hi0x2B8Set dimmer brightness to highest level
Dimmer Lo0x2BFSet dimmer brightness to lowest level
Turn Off0x420Turn OFF(set into standby) receiver
Test mode0x421 - 0x424Some kind of test modes. Leave test mode is possible by code 0x420 (Turn Off). Test modes provides clear of receiver setting.
Radio search next0x430Tune next radio station when radio is selected.
Radio search previous0x431Tune previous radio station when radio is selected.
Radio Stereo/Mono0x432Switch between Stereo and Mono when FM radio is selected.
Radio station next0x433Jump to next stored radio station when radio is selected.
Radio station previous0x434Jump to previous stored radio station when radio is selected.

TX-SR304 receiver

Thanks to lonejeeper

ActionCommandNotes
Input CD0x20Switch input to CD channel
Input TAPE0x70Switch input to TAPE channel
Input BD/DVD0x120Switch input to BD/DVD channel
Input HDD0x170Switch input to HDD channel
Input Video20x1A0Switch input to Video2 channel
Vol Up0x1A2Volume Up
Vol Down0x1A3Volume Down
Mute0x1A4Mute
Power OFF0x1AEPower OFF
Power ON0x1AFPower ON
Dim0x2B0Set dimmer brightness to highest level
Dimer0x2B1Set dimmer brightness to mid level
Dimmest0x2B2Set dimmer brightness to lowest level
Dimmer Daytime0x2B8Set daytime brightness
Dimmer Nighttime0x2BFSet nighttime brightness
Test mode0x421 - 0x423, 0x430RDS TEST

TX-SR313 receiver

Thanks to wongcz

ActionCommandNotes
Input Aux0x20Switch input to AUX channel
Turn ON + AUX0x2FTurn ON receiver and select AUX as input channel
Input TV(/CD)0x70Switch input to TV(/CD) channel
Turn ON + input TV(/CD)0x7FTurn ON receiver and select TV(/CD) as input channel
Input BD/DVD0x120Switch input to BD/DVD channel
Turn ON + input BD/DVD0x12FTurn ON receiver and select BD/DVD as input channel
Turn ON + input DOCK0x17FTurn ON receiver and select DOCK as input channel
Dim0x2B0Set dimmer brightness to highest level
Dimer0x2B1Set dimmer brightness to mid level
Dimmest0x2B2Set dimmer brightness to lowest level
Dimmer Daytime0x2B8Set daytime brightness
Dimmer Nighttime0x2BFSet nighttime brightness
Test mode0x421 - 0x423, 0x430RDS TEST

TX-SR333 receiver

Thanks to ogrady

ActionCommandNotes
Input TV/CD0x20Switch input to TV/CD channel
Input BD/DVD0x120Switch input to BD/DVD channel
Dim0x2B0Set dimmer brightness to highest level
Dimer0x2B1Set dimmer brightness to mid level
Dimmest0x2B2Set dimmer brightness to lowest level
Test mode set0x421 - 0x424Test 1-00,2-00,3-00,4-00
Test0x425Test x-01
Test0x426Test x-02
Test0x427WiFi test
Test0x428Route test
Test0x42aKey Test Mode
Test0x42bTest x-07
Test0x42cTest x-08
Test0x42dTest x-09
Test0x42eTest x-00
Test mode set0x43eTest 5-00
Test0x43fCEC test

TX-SR600 receiver

Thanks to kelvinlaw

ActionCommandNotes
Input CD0x20Switch input to CD channel
Turn On + CD0x2FTurn ON receiver and select CD as input channel
Input TAPE0x70Switch input to TAPE channel
Turn On + TAPE0x7FTurn ON receiver and select TAPE as input channel
Input BD/DVD0x120Switch input to BD/DVD channel
Turn On + BD/DVD0x12FTurn ON receiver and select BD/DVD as input channel
Input Video30x1A0Switch input to Video3 channel
Turn On + Input Video30x1AFTurn ON receiver and select Video3 as input channel
Power Off0x1AEPower OFF (only works if you are currently in Video 3!!)

TX-SR603 receiver

Thanks to jimtng

ActionCommandNotes
Input Video30x1A0Switch input to Video3 channel
Vol Up0x1A2Volume Up (only when input is set to Video 3)
Vol Down0x1A3Volume Down (only when input is set to Video 3)
Mute0x1A4Mute (only when input is set to Video 3)
Unmute0x1A5Unmute (only when input is set to Video 3)
Power Off0x1AEPower OFF (only works if you are currently in Video 3!!)
Turn On + Input Video30x1AFTurn ON receiver and select Video3 as input channel

TX-SR606 receiver

ActionCommandNotes
Input CD0x20Switch input to CD channel
Turn On + CD0x2FTurn ON receiver and select CD as input channel
Input TAPE0x70Switch input to TAPE channel
Turn On + TAPE0x7FTurn ON receiver and select TAPE as input channel
Input DVD0x120Switch input to DVD channel
Turn On + DVD0x12FTurn ON receiver and select DVD as input channel
Input GAME/TV0x1A0Switch input to GAME/TV channel
Vol Up0x1A2Volume Up (only when input is set to GAME/TV)
Vol Down0x1A3Volume Down (only when input is set to GAME/TV)
Mute0x1A4Mute (only when input is set to GAME/TV)
Unmute0x1A5Unmute (only when input is set to GAME/TV)
Power Off0x1AEPower OFF (only when input is set to GAME/TV)
Turn On + GAME/TV0x1AFTurn ON receiver and select GAME/TV as input channel
Setup0x420-0x424Displayed: SETUP. Playing loud noisy sounds
CEC test0x43EDisplayed: CEC TEST OK
TEST 5-000x43FDisplayed: TEST 5-00

A-803 receiver

ActionCommandNotes
Volume +0x2See notes on volume
Volume -0x3See notes on volume
Power On/Power Off0x4The receiver actually enters/exits standby since the only way to properly shut it down is through the power switch located on the front of the receiver itself.
Mute0x5
Input Aux/Video0x6
Input Tape-2 Monitor0x7
Input Tape-1/DAT0x8Alternative code: 0x70.
Input CD0x9Alternative code: 0x20.
Input Phono0xAAlternative code: 0x30.
Input Tuner0xBAlternative code: 0xE0.
Source direct0x13
OFF0xEAThis code will switch the receiver into stanby mode, but it will not switch it back on.

A-9050 receiver

Thanks to Aaron G

ActionCommandNotes
Vol Up0x2Volume Up
Vol Down0x3Volume Down
Turn ON/OFF0x4Turn receiver ON and OFF
Mute/Unmute0x5Toggle Mute
Input Line 10x20Select Line 1 as input channel
Turn ON + Input Line 10x2FTurn ON and select Line 1 as input channel
Input Next0xD5Select next input channel
Input Prev0xD6Select previous input channel
Mute0xD7Mute
Unmute0xD8Unmute
Turn ON0xD9Turn ON
Turn OFF0xDATurn OFF
Input Line 20xE0Select Line 2 as input channel
Turn ON + Input Line 20xFBTurn ON and select Line 2 as input channel
Input Line 30x170Select Line 3 as input channel
Turn ON + Input Line 30x17FTurn ON and select Line 3 as input channel
Test0x421Test Mode?
Test0x422Test Mode?
Test0x423Test Mode?

Notes on volume

Volume control codes shown in the table are sent by the receiver out of its RI ports when adjusting the volume using a remote control (they can be found using an oscilloscope). However, the receiver will not react to these codes when they are sent from an external device, effectively making impossible to control its volume through RI signals.

Test program

Program is located in repo folder Onkyo_test. It serves for check all codes (0x0 - 0xFFF) on target device in 500ms interval. For data line pin 10 is used as default.

Actual checked code is sent as ASCII through serial port and can be displayed in terminal. For serial port 9600b/s is set. Using terminal test program can be stopped, reset or user defined code could be used.

Terminal commands:

  • p - pause/run command sending
  • r - reset loop (program start from 0)
  • hexadecimal number - number in hexadecimal format represents code that user want to test on target device. From this code automatical procedure will continue.