1
votes

I have a TV which doesn't support HDMI-CEC and I've been trying to build a bridge between a Raspberry Pi and my ChromeCast so that the Raspberry Pi can pause or stop play via receiving IR from a remote control.

Using the cec-client on the Pi I can see:

 pi@raspberrypi:~/libcec/build $ echo "scan" | cec-client -s  -d 1
 opening a connection to the CEC adapter...
 requesting CEC bus information ...
 ERROR:   [           12174]    failed to request the physical address
 CEC bus information
 ===================
 device #1: Recorder 1
 address:       2.0.0.0
 active source: no
 vendor:        Pulse Eight
 osd string:    CECTester
 CEC version:   1.4
 power status:  on
 language:      eng


 device #4: Playback 1
 address:       f.f.f.f
 active source: no
 vendor:        Unknown
 osd string:    Chromecast
 CEC version:   1.4
 power status:  on
 language:      ???

The failure to request the physical address message is because of the ChromeCast.

So far I've made it the active source, made the Pi the active source, which all do nothing of course since the TV doesn't care, but while playing with those, I've also sent tx commands which are supposed to pause, play or stop. None of which the ChromeCast responds to.

These are some of the commands I have sent:

 echo "tx 14 44 46" | cec-client -s -d 1
 echo "tx 14 44 61" | cec-client -s -d 1
 echo "tx 14 44 45" | cec-client -s -d 1
 echo "tx 14 41 25" | cec-client -s -d 1
 # etc

None of which have had any response.

Does the ChromeCast require a TV in order to respond? Is there something specific I need to do or send to get the media receiver to respond?

Edit: further research shows the Chromecast sends:

TRAFFIC: [           47738] >> 4e:83
TRAFFIC: [           47811] >> 4e:9f

on power up, which is a request for a physical address and the CEC version.

I'd really like to throw a $CAN10 Pi Zero and a couple of bucks of IR receiver and bridge HDMI-CEC around my TV.

1
It works! Ends up that wherever I saw that suggested you should use the tx format quoted above is wrong, the correct format is: echo "tx 14:44:44" | cec-client -s -d 1 Note the semicolons. Sigh^H^H^H^HHuzzah! - J. Longman

1 Answers

0
votes

The spec is available online and describes the address method. It ends up it doesn't matter as I had the message format for cec-client wrong.

echo "tx 14:44:44" | cec-client -s -d 1 

With colons, and voila my raspberry pi can control my chromecast.