CEC-FOLLOWER(1)
π cec-follower β the manual, but make it a group chat π
okay bestie, welcome to cec-follower(1), a User Commands page that's about to be your new hyperfixation. it's a little app that emulates CEC followers, and yes, it ate. let's get into it. β¨
π NAME π
cec-follower β an application to emulate CEC followers. that's the whole name, that's the whole vibe, periodt. π
β¨ SYNOPSIS β¨
cec-follower [-h] [-d <dev>] [other options]
like, look at her. minimal. iconic. π«Ά
π¦ DESCRIPTION π¦
so the cec-follower tool is out here doing the most important job: emulating CEC followers. based on the configured logical address(es) of the CEC device, it will emulate the CEC behavior accordingly. it literally reads the room and acts right. π
configuring the CEC device? that's a cec-ctl job, not hers. and ngl, certain CEC functionalities are only emulated if the corresponding Device Features flag is set (those get set when you're configuring with cec-ctl). the ones in question:
- Audio Return Channel (RX and TX)
- Audio Rate Control
- Deck Control
- Record TV screen
no flag, no emulation. that's the rule, fr fr. π©
cec-follower is basically a message loop β she's just sitting there, waiting for messages to arrive, and taking the appropriate action for each message. (incoming messages can be shown with the --show-msgs option, if you're nosy like me π). the follower also maintains an internal state with appropriate parameters like volume, current active source, power state and so on (state changes can be shown with the --show-state option, because we love transparency π).
she also aims to be a reference implementation on how a follower should behave. like, she's not just a follower, she's the follower. main character energy, honestly. π
cec-follower will keep track of incoming messages and look for violations of the CEC specification with regards to timings. for example, it will warn if it receives the same message again within 200ms after it replied <Feature Abort> ["Unrecognized Opcode"] to that message β and it will check that press and hold behavior is done properly. she's watching. she's always watching. π
cec-follower will periodically send out polling messages to discover when a remote device is removed or a new one has appeared. when a device is removed, the recorded information about it is cleared. each logical address is polled about once every 15 seconds. and here's the catch, bestie β in between polls, removing a remote device or replacing it with a new one is not detected. she's good but she's not psychic. π
when you're running compliance tests with cec-compliance, cec-follower should be run on the same device, to act on incoming messages that are not replies to messages sent by the compliance tool. and before each test-run, cec-follower should be restarted if it's running β to initialize the emulated device with a clean and known initial state. fresh start, clean slate, new me. πΈ
yes this matters. do the restart. don't be chaotic. (or do, but know that the state won't be clean and known, and that's on you π)
π OPTIONS π
-d,--device <dev>β use device <dev> as the CEC device. if <dev> is a number, then/dev/cec<dev>is used. cute little shortcut, we love her. π-D,--driver <drv>β use a cec device that has driver name <drv>, as returned by theCEC_ADAP_G_CAPSioctl. this option can be combined with-ato uniquely identify a CEC device without having to rely on the device node number. duo goals. π«Ά-a,--adapter <adap-name>β use a cec device that has adapter name <adap-name>, as returned by theCEC_ADAP_G_CAPSioctl. this option can be combined with-Dto uniquely identify a CEC device without having to rely on the device node number. see? told you. dynamic duo. β¨-v,--verboseβ turn on verbose reporting. she will not shut up (affectionate). π£οΈ--versionβ show version information. the classic. the standard. π«-w,--wall-clockβ show timestamps as wall-clock time. this also turns on verbose reporting. two for one, slay. β°-T,--traceβ trace all called ioctls. useful for debugging. very detective, very π.-h,--helpβ prints the help message. when in doubt, ask. πββοΈ-n,--no-warningsβ turn off warning messages. she'll stop telling you you're wrong. (she's still thinking it.) π€«-e,--exclusiveβ if specified, then the follower uses exclusive mode (CEC_MODE_EXCL_FOLLOWER). exclusive!! like her. π-m,--show-msgsβ show received messages. gossip mode: activated. π¬-s,--show-stateβ show state changes from the emulated device. glow-up receipts. π¦--service-by-dig-idβ report digital services by digital ID instead of by channel. iykyk. πΊ--standbyβ start the follower in the Standby status. sleepy girl era. π΄--toggle-power-status <secs>β toggle the power status every <secs> seconds. only supported if the follower is emulating a TV. so if she's a TV, she's gonna flip-flop like it's a situationship. πΊπ₯-i,--ignore <la>,<opcode>β ignore messages from logical address <la> and opcode <opcode>.'all'can be used for <la> or <opcode> to match all logical addresses or opcodes. selective hearing is a skill, actually. π--ignore-standby <n>β ignore every *<n>*th received Standby message. counting. ignoring. iconic. π’--ignore-view-on <n>β ignore every *<n>*th received Image/Text View On message. same energy, different message. πβ¨
π EXIT STATUS π
on success, it returns 0. otherwise, it will return the error code. so if you see a 0, she's happy. anything else? read the number, bestie, it's literally telling you what went wrong. π
π BUGS π
this manual page is a work in progress. she's evolving, okay, be patient. π±
bug reports or questions about this utility should be sent to the linux-media@vger.kernel.org mailinglist. yes, actually email them, that's the whole point of the line. π§
π SEE ALSO π
and that's the whole page, bestie!! you understood all of it, no cap. go emulate some followers. π¦β¨
this has been v4l-utils 1.32.0, dated August 2016 β yeah she's a vintage icon, and vintage is still slay. bye bestie, ily, remember to restart your follower before compliance tests ππ
π¦ where this page comes from
- alpine 3.24: v4l-utils-doc 1.32.0-r1 Β· LGPL-2.0-or-later
- arch rolling: v4l-utils 1.32.0-2 Β· LGPL
- fedora 43: v4l-utils 1.32.0-1.fc43 Β· GPL-2.0-or-later AND GPL-2.0-only AND (GPL-2.0-only OR BSD-3-Clause) AND LicenseRef-Fedora-Public-Domain AND HPND-sell-variant
- fedora 44: v4l-utils 1.32.0-3.fc44 Β· GPL-2.0-or-later AND GPL-2.0-only AND (GPL-2.0-only OR BSD-3-Clause) AND LicenseRef-Fedora-Public-Domain AND HPND-sell-variant
- nixos 26.05: v4l-utils 1.32.0
- nixpkgs unstable: v4l-utils 1.32.0
- ubuntu resolute: v4l-utils 1.32.0-2ubuntu1
- ubuntu stonking: v4l-utils 1.32.0-5ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms