When I use CEC-Client to send the active source command to switch the TV input to a particular source, nothing happens. What am I doing wrong?


I have a Raspberry Pi 4 running Raspbian plugged into a Vizio TV. I've installed cec-client (via cec-utils), and I'm running commands using it from within Bash on the Raspberry Pi.

Here is the scan of the CEC bus of my setup:

CEC bus information
device #0: TV
active source: no
vendor:        Unknown
osd string:    TV
CEC version:   1.3a
power status:  on
language:      eng

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

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

currently active source: Recorder 1 (1)

What I have tried:

A lot of things.
More specifically:

Other Info

  • I know that the TV supports it, because the device that I am trying to switch to (a Roku) uses CEC to switch inputs to itself when I start using its remote. Watching CEC-Client when it does this, it sends 4f:82:10:00 to declare itself as the active source, which is exactly what I've tried except with itself as the initiator (which I've also tried just in case).

  • To make sure that the tx command was working, I used it to successfully send the TV into standby.

  • Using as to set the Pi as the active source works fine, but the corresponding tx command, tx 1f:82:40:00, does nothing (even though the output of CEC-Client shows it using the exact same message).

  • I have only listed the CEC-Client commands above, but I have tried them all both directly in the CEC-Client's interactive prompt and by echoing it into cec-client (i.e. echo "tx 1F:82:10:00" | cec-client RPI -s -d 1).

Where I'm At

Any help/feedback would be greatly appreciated! I'm at my wits' end, and can't think of anything else to try that I haven't already.

This is a cross post of this, but it's not getting much attention over there, and I thought this might be a Raspberry Pi specific problem. Let me know if I should delete it or something; I'm still pretty new to posting on the StackExchange network. On that note, any feedback on my question is welcome!

  • maybe the TV does not understand the message
    – jsotola
    Commented Dec 6, 2019 at 4:07
  • I thought that at first, but when I was monitoring the bus I saw that the as command and the Roku itself both send this message and it worked for them. :( Commented Dec 6, 2019 at 14:43
  • are you able to monitor the bus when the RPi is sending the messages? .... if you are able, then monitor Roku, turn TV off, then on .... do the same with the RPi ... compare the data streams
    – jsotola
    Commented Dec 9, 2019 at 0:28

1 Answer 1


So, it turns out setting the type (-t or --type) when launching the CEC-Client is necessary for me. It seems like -t t and -t p are the best working options. It's still super finicky (or I would do more testing to post a more deterministic answer).

I'm going with setting the type to tuner (t) as it allows me to switch input, and doesn't prevent me from changing the volume on my TV with the remote like audio (a) did, yet it is still a device type that I won't be plugging in to my TV, so I don't have to worry about getting it confused or anything. I may eventually switch to playback (p) in the future if that seems to help with anything. Explicitly setting recorder (r) actually also worked once, but I think the TV still thought it was an audio device (since I still couldn't change the volume. It took me a while and a lot of fiddling to fix that...).

(If anyone knows why this is necessary, even though using the built-in as command works without specifying the type at launch, or more detail on the effects of changing the type, I'll accept their answer.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.