1

I have an AV Receiver that I want to turn on from standby using cec-client on raspberry pi. The physicall setup is as follows:

RPI --HDMI--> AV Receiver

TV <--ARC_HDMI--> AV Receiver

Scanning my HDMI devices with echo "scan" | cec-client -s -d 1 I get following output:

opening a connection to the CEC adapter...
requesting CEC bus information ...
CEC bus information
===================
device #0: TV
address:       0.0.0.0
active source: no
vendor:        Samsung
osd string:    TV
CEC version:   unknown
power status:  standby
language:      ger


device #1: Recorder 1
address:       1.0.0.0
active source: no
vendor:        Pulse Eight
osd string:    CECTester
CEC version:   1.4
power status:  on
language:      eng


device #5: Audio
address:       3.0.0.0
active source: no
vendor:        Harman/Kardon
osd string:    H/K AVR
CEC version:   1.4
power status:  standby
language:      ???

As you can see, my AV Receiver has the device number #5 and physical address 3.0.0.0

I tried following already, using cec-o-matic as reference:

echo "on 3.0.0.0" | cec-client -s -d 0

echo "on 5" | cec-client -s -d 0

echo "tx 15:04" | cec-client -s -d 0

But neither command turns on the AV Receiver. The same commands addressing the TV work without an issue.

After a lot of trial and error, I found out that rebooting my Raspberry Pi actually turns on the receiver! Nice, at least something. Investigating further I found out that in /boot/config.txt one can add/set the hdmi_ignore_cec_init=1 parameter to indicate whether the Raspberry Pi should send an active source message while rebooting. Depending on whether this is set to 0 or 1 my AV receiver turns on when I boot/reboot my RPI.

Now, I obviously don't want to reboot my RPI whenever I want to turn on my AV Receiver. So my question is what is the specific CEC-message the Raspberry sends on boot, so I can replicate it with the cec-client with something along the lines of echo "tx <specific-cec-message>" | cec-client -s -d 1

I already tried monitoring cec traffic on boot with cec-client -f cec.log, but monitoring starts too late and misses the send signal from RPI on boot.

The easiest way to find this out would probably to have a second Raspberry Pi monitoring the bus while the other one boots, but I only have 1 RPI, so I can not test it myself.

Does anyone have an idea, or at least a source for me? Big Thanks for taking the time!

In case it matters here also the specific device models.

TV: Samsung ue55f8090

AVR: Harman Kardon AVR 156

RPI: Raspberry Pi 4 Model B Rev 1.4

RPI_OS: Raspbian GNU/Linux 10 (buster) armv

RPI_KERNEL: Kernel: 5.10.103-v7l+

1 Answers1

1

After more digging, I finally found a solution to my specific problem.

For my setup, as described in my question, one can turn on the Harman Kardon AVR 156 by broadcasting an active source message with the physical address of the TV.

echo "tx 1f:82:00:00" | cec-client -s -d 1

A breakdown of the CEC Frame:

1 = Recording 1 (Raspberry Pi)

F = Broadcast

82 = Active Source

00 00 = ID (TV)

I hope this helps anyone stumbling on this in the future!