I’ve got the most obscure and least important problem in the world, so I’ve just spent four hours investigate it and find a solution.
So now you have to read about it! Hah! Share the pain!
OK, backstory: I’ve got a Sony A1 TV, and it’s very nice: Nothing annoying about it, which is the first time that’s happened to me… ever.
I use just a single input on the TV: An HDMI port. That port is connected to my computer, and I play all the media from that computer. (Using an Emacs-based UI, of course.) So I never actually interface with the TV: I don’t use the remote control, because I use TV as a stupid, simple display that displays what the computer says it’s supposed to display.
Except: The past year or so, every like three times it comes out of standby, it’s on this screen above. Is this a time-based nagging thing? First it nags you once a year, and then it gets more and more belligerent? And it thinks that you’re insane enough to actually allow a TV to connect to the interwebs?
All this means that I have to dig out the remote control and make it switch back to HDMI2.
LIKE ONCE PER MONTH! AT LEAST!
THIS STATE OF THINGS CANNOT BE ALLOWED TO STAND! TYRANNY MUST BE VANQUISHED!
So today I finally sat down, googled, and did some experiments. I’ve got a CEC injector in my HDMI production line, which I’ve used (until now) only for putting the TV into standby and waking it up. But there’s supposed to be a bunch of commands available, and Google says that this should change the input source:
echo "tx 4F:82:20:00" | cec-client -s
4F 82 is “change the source” and “20:00” is “to source 2”, apparently.
After futzing around with this for several days, I noticed that if I sent a command like that to the TV, then put it in standby, then woke it up again, then it would come back up on the old input… and then change to the one I had specified!
SOMETHING IS ALMOST WORKING!!!
The TV is getting the command… but needs to be slapped around to actually do something about it. After experimenting for several months, I found out that this works reliably:
echo as | cec-client -s echo "tx 4F:82:20:00" | cec-client -s
The “as” command tells the TV to make the CEC tester the active device. Then the 4F:82 says that it should change input, and that makes it take control again and become the active device (and switches the input at the same time).
That was totally worth it. Spent several years doing the research, and it’s going to save me several seconds over the rest of the TV’s lifetime.
*throws remote control away*