~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/admin-guide/media/cec.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/admin-guide/media/cec.rst (Version linux-6.12-rc7) and /Documentation/admin-guide/media/cec.rst (Version linux-5.18.19)


  1 .. SPDX-License-Identifier: GPL-2.0               
  2                                                   
  3 ========                                          
  4 HDMI CEC                                          
  5 ========                                          
  6                                                   
  7 Supported hardware in mainline                    
  8 ==============================                    
  9                                                   
 10 HDMI Transmitters:                                
 11                                                   
 12 - Exynos4                                         
 13 - Exynos5                                         
 14 - STIH4xx HDMI CEC                                
 15 - V4L2 adv7511 (same HW, but a different drive    
 16 - stm32                                           
 17 - Allwinner A10 (sun4i)                           
 18 - Raspberry Pi                                    
 19 - dw-hdmi (Synopsis IP)                           
 20 - amlogic (meson ao-cec and ao-cec-g12a)          
 21 - drm adv7511/adv7533                             
 22 - omap4                                           
 23 - tegra                                           
 24 - rk3288, rk3399                                  
 25 - tda998x                                         
 26 - DisplayPort CEC-Tunneling-over-AUX on i915,     
 27 - ChromeOS EC CEC                                 
 28 - CEC for SECO boards (UDOO x86).                 
 29 - Chrontel CH7322                                 
 30                                                   
 31                                                   
 32 HDMI Receivers:                                   
 33                                                   
 34 - adv7604/11/12                                   
 35 - adv7842                                         
 36 - tc358743                                        
 37                                                   
 38 USB Dongles (see below for additional informat    
 39 dongles):                                         
 40                                                   
 41 - Pulse-Eight: the pulse8-cec driver implement    
 42   ``persistent_config``: by default this is of    
 43   will store the current settings to the devic    
 44   it the next time the device is connected to     
 45                                                   
 46 - RainShadow Tech. Note: this driver does not     
 47   module option of the Pulse-Eight driver. The    
 48   have no plans to add this feature. But I acc    
 49                                                   
 50 - Extron DA HD 4K PLUS HDMI Distribution Ampli    
 51   :ref:`extron_da_hd_4k_plus` for more informa    
 52                                                   
 53 Miscellaneous:                                    
 54                                                   
 55 - vivid: emulates a CEC receiver and CEC trans    
 56   Can be used to test CEC applications without    
 57                                                   
 58 - cec-gpio. If the CEC pin is hooked up to a G    
 59   you can control the CEC line through this dr    
 60   injection as well.                              
 61                                                   
 62 - cec-gpio and Allwinner A10 (or any other dri    
 63   framework to drive the CEC pin directly): th    
 64   high-resolution timers. These timers are aff    
 65   speed up or slow down the clock to sync with    
 66   chronyd server will by default increase or d    
 67   1/12th. This will cause the CEC timings to g    
 68   add a 'maxslewrate 40000' line to chronyd.co    
 69   frequency change to 1/25th, which keeps the     
 70                                                   
 71                                                   
 72 Utilities                                         
 73 =========                                         
 74                                                   
 75 Utilities are available here: https://git.linu    
 76                                                   
 77 ``utils/cec-ctl``: control a CEC device           
 78                                                   
 79 ``utils/cec-compliance``: test compliance of a    
 80                                                   
 81 ``utils/cec-follower``: emulate a CEC follower    
 82                                                   
 83 Note that ``cec-ctl`` has support for the CEC     
 84 used in some hotel displays. See http://www.ht    
 85                                                   
 86 Note that the libcec library (https://github.c    
 87 the linux CEC framework.                          
 88                                                   
 89 If you want to get the CEC specification, then    
 90 the HDMI wikipedia page: https://en.wikipedia.    
 91 of the HDMI specification. HDMI 1.3 is freely     
 92 HDMI 1.4 w.r.t. CEC) and should be good enough    
 93                                                   
 94                                                   
 95 DisplayPort to HDMI Adapters with working CEC     
 96 =============================================     
 97                                                   
 98 Background: most adapters do not support the C    
 99 and of those that do many did not actually con    
100 Unfortunately, this means that while a CEC dev    
101 is actually all alone in the world and will ne    
102 CEC devices.                                      
103                                                   
104 This is a list of known working adapters that     
105 that properly connected the CEC pin. If you fi    
106 but are not in this list, then drop me a note.    
107                                                   
108 To test: hook up your DP-to-HDMI adapter to a     
109 (typically a TV), then run::                      
110                                                   
111         cec-ctl --playback      # Configure th    
112         cec-ctl -S              # Show the CEC    
113                                                   
114 The ``cec-ctl -S`` command should show at leas    
115 ourselves and the CEC device you are connected    
116                                                   
117 General note: I have only seen this work with     
118 PS186 chipsets and the MegaChips 2900. While M    
119 I have never seen it work.                        
120                                                   
121 USB-C to HDMI                                     
122 -------------                                     
123                                                   
124 Samsung Multiport Adapter EE-PW700: https://ww    
125                                                   
126 Kramer ADC-U31C/HF: https://www.kramerav.com/p    
127                                                   
128 Club3D CAC-2504: https://www.club-3d.com/en/de    
129                                                   
130 DisplayPort to HDMI                               
131 -------------------                               
132                                                   
133 Club3D CAC-1080: https://www.club-3d.com/en/de    
134                                                   
135 CableCreation (SKU: CD0712): https://www.cable    
136                                                   
137 HP DisplayPort to HDMI True 4k Adapter (P/N 2J    
138                                                   
139 Mini-DisplayPort to HDMI                          
140 ------------------------                          
141                                                   
142 Club3D CAC-1180: https://www.club-3d.com/en/de    
143                                                   
144 Note that passive adapters will never work, yo    
145                                                   
146 The Club3D adapters in this list are all MegaC    
147 are PS176 based and do NOT have the CEC pin ho    
148 adapters above are known to work.                 
149                                                   
150 I suspect that MegaChips 2900 based designs in    
151 whereas with the PS176 it is more hit-and-miss    
152 likely to have the CEC pin hooked up, it looks    
153 design for that chipset.                          
154                                                   
155                                                   
156 USB CEC Dongles                                   
157 ===============                                   
158                                                   
159 These dongles appear as ``/dev/ttyACMX`` devic    
160 utility to create the ``/dev/cecX`` devices. S    
161 has been added to ``inputattach`` 1.6.0. Suppo    
162 been added to ``inputattach`` 1.6.1.              
163                                                   
164 You also need udev rules to automatically star    
165                                                   
166         SUBSYSTEM=="tty", KERNEL=="ttyACM[0-9]    
167         SUBSYSTEM=="tty", KERNEL=="ttyACM[0-9]    
168         SUBSYSTEM=="tty", KERNEL=="ttyACM[0-9]    
169                                                   
170 and these systemd services:                       
171                                                   
172 For Pulse-Eight make /lib/systemd/system/pulse    
173                                                   
174         [Unit]                                    
175         Description=inputattach for pulse8-cec    
176                                                   
177         [Service]                                 
178         Type=simple                               
179         ExecStart=/usr/bin/inputattach --pulse    
180                                                   
181 For the RainShadow Tech make /lib/systemd/syst    
182                                                   
183         [Unit]                                    
184         Description=inputattach for rainshadow    
185                                                   
186         [Service]                                 
187         Type=simple                               
188         ExecStart=/usr/bin/inputattach --rains    
189                                                   
190                                                   
191 For proper suspend/resume support create: /lib    
192                                                   
193         [Unit]                                    
194         Description=restart inputattach for ce    
195         After=suspend.target                      
196                                                   
197         [Service]                                 
198         Type=forking                              
199         ExecStart=/bin/bash -c 'for d in /dev/    
200                                                   
201         [Install]                                 
202         WantedBy=suspend.target                   
203                                                   
204 And run ``systemctl enable restart-cec-inputat    
205                                                   
206 To automatically set the physical address of t    
207 EDID changes, you can use ``cec-ctl`` with the    
208                                                   
209         cec-ctl -E /sys/class/drm/card0-DP-1/e    
210                                                   
211 This assumes the dongle is connected to the ca    
212 you which output is used) and it will poll for    
213 the Physical Address whenever they occur.         
214                                                   
215 To automatically run this command you can use     
216 ``crontab -e`` and add this line::                
217                                                   
218         @reboot /usr/local/bin/cec-ctl -E /sys    
219                                                   
220 This only works for display drivers that expos    
221 such as the i915 driver.                          
222                                                   
223                                                   
224 CEC Without HPD                                   
225 ===============                                   
226                                                   
227 Some displays when in standby mode have no HDM    
228 CEC is still enabled so connected devices can     
229 message in order to wake up such displays. Unf    
230 adapters can support this. An example is the O    
231 level-shifter that is powered off when the HPD    
232 blocking the CEC pin. Even though the SoC can     
233 the level-shifter will prevent this from funct    
234                                                   
235 There is a CEC capability flag to signal this:    
236 If set, then the hardware cannot wake up displ    
237                                                   
238 Note for CEC application implementers: the <Im    
239 be the first message you send, don't send any     
240 Certain very bad but unfortunately not uncommo    
241 get very confused if they receive anything els    
242 they won't wake up.                               
243                                                   
244 When writing a driver it can be tricky to test    
245 ways to do this:                                  
246                                                   
247 1) Get a Pulse-Eight USB CEC dongle, connect a    
248    device to the Pulse-Eight, but do not conne    
249    the display.                                   
250                                                   
251    Now configure the Pulse-Eight dongle::         
252                                                   
253         cec-ctl -p0.0.0.0 --tv                    
254                                                   
255    and start monitoring::                         
256                                                   
257         sudo cec-ctl -M                           
258                                                   
259    On the device you are testing run::            
260                                                   
261         cec-ctl --playback                        
262                                                   
263    It should report a physical address of f.f.    
264    command::                                      
265                                                   
266         cec-ctl -t0 --image-view-on               
267                                                   
268    The Pulse-Eight should see the <Image View     
269    then something (hardware and/or software) i    
270    message from going out.                        
271                                                   
272    To make sure you have the wiring correct ju    
273    Pulse-Eight to a CEC-enabled display and ru    
274    on your device: now there is a HPD, so you     
275    arriving at the Pulse-Eight.                   
276                                                   
277 2) If you have another linux device supporting    
278    you can just connect your device to that de    
279    two HDMI outputs together. You won't have a    
280    want for this test), but the second device     
281                                                   
282    Otherwise use the same commands as in 1.       
283                                                   
284 If CEC messages do not come through when there    
285 need to figure out why. Typically it is either    
286 or the software powers off the CEC core when t    
287 first cannot be corrected of course, the secon    
288 driver changes.                                   
289                                                   
290                                                   
291 Microcontrollers & CEC                            
292 ======================                            
293                                                   
294 We have seen some CEC implementations in displ    
295 to sample the bus. This does not have to be a     
296 have timing issues. This is hard to discover u    
297 CEC debugger (see the next section).              
298                                                   
299 You will see cases where the CEC transmitter h    
300 a longer time than is allowed. For directed me    
301 if that happens the message will not be Acked     
302 For broadcast messages no such mechanism exist    
303                                                   
304 It's not clear what to do about this. It is pr    
305 broadcast messages twice to reduce the chance     
306 <Standby> and <Active Source> are candidates f    
307                                                   
308                                                   
309 Making a CEC debugger                             
310 =====================                             
311                                                   
312 By using a Raspberry Pi 4B and some cheap comp    
313 your own low-level CEC debugger.                  
314                                                   
315 The critical component is one of these HDMI fe    
316 (full soldering type 1):                          
317                                                   
318 https://elabbay.myshopify.com/collections/came    
319                                                   
320 The video quality is variable and certainly no    
321 (594 MHz) video. You might be able to support     
322 be limited to 1080p60 (148.5 MHz). But for CEC    
323                                                   
324 You need a breadboard and some breadboard wire    
325                                                   
326 http://www.dx.com/p/diy-40p-male-to-female-mal    
327                                                   
328 If you want to monitor the HPD and/or 5V lines    
329 these 5V to 3.3V level shifters:                  
330                                                   
331 https://www.adafruit.com/product/757              
332                                                   
333 (This is just where I got these components, th    
334 can get similar things).                          
335                                                   
336 The ground pin of the HDMI connector needs to     
337 pin of the Raspberry Pi, of course.               
338                                                   
339 The CEC pin of the HDMI connector needs to be     
340 GPIO 6 and GPIO 7. The optional HPD pin of the    
341 be connected via the level shifter to these pi    
342 The optional 5V pin of the HDMI connector shou    
343 level shifter to these pins: GPIO 25 and GPIO     
344 5V lines is not necessary, but it is helpful.     
345                                                   
346 This device tree addition in ``arch/arm/boot/d    
347 will hook up the cec-gpio driver correctly::      
348                                                   
349         cec@6 {                                   
350                 compatible = "cec-gpio";          
351                 cec-gpios = <&gpio 6 (GPIO_ACT    
352                 hpd-gpios = <&gpio 23 GPIO_ACT    
353                 v5-gpios = <&gpio 25 GPIO_ACTI    
354         };                                        
355                                                   
356         cec@7 {                                   
357                 compatible = "cec-gpio";          
358                 cec-gpios = <&gpio 7 (GPIO_ACT    
359                 hpd-gpios = <&gpio 12 GPIO_ACT    
360                 v5-gpios = <&gpio 22 GPIO_ACTI    
361         };                                        
362                                                   
363 If you haven't hooked up the HPD and/or 5V lin    
364 lines.                                            
365                                                   
366 This dts change will enable two cec GPIO devic    
367 send/receive CEC commands and the other to mon    
368 an unconfigured CEC adapter then it will use G    
369 monitoring very accurate.                         
370                                                   
371 If you just want to monitor traffic, then a si    
372 The minimum configuration is one HDMI female-f    
373 and two female-female breadboard wires: one fo    
374 pin to a ground pin on the Raspberry Pi, and t    
375 CEC pin to GPIO 6 on the Raspberry Pi.            
376                                                   
377 The documentation on how to use the error inje    
378                                                   
379 ``cec-ctl --monitor-pin`` will do low-level CE    
380 You can also store the CEC traffic to file usi    
381 it later using ``--analyze-pin``.                 
382                                                   
383 You can also use this as a full-fledged CEC de    
384 using ``cec-ctl --tv -p0.0.0.0`` or ``cec-ctl     
385                                                   
386 .. _extron_da_hd_4k_plus:                         
387                                                   
388 Extron DA HD 4K PLUS CEC Adapter driver           
389 =======================================           
390                                                   
391 This driver is for the Extron DA HD 4K PLUS se    
392 Amplifiers: https://www.extron.com/product/dah    
393                                                   
394 The 2, 4 and 6 port models are supported.         
395                                                   
396 Firmware version 1.02.0001 or higher is requir    
397                                                   
398 Note that older Extron hardware revisions have    
399 which may mean that CEC will not work. This is    
400 E34814 and up.                                    
401                                                   
402 The CEC support has two modes: the first is a     
403 to manually control CEC for the HDMI Input and    
404 full control, it is also complicated.             
405                                                   
406 The second mode is an automatic mode, which is    
407 ``vendor_id`` is set. In that case the driver     
408 received in the input will be distributed to t    
409 to use the /dev/cecX devices to talk to the co    
410 the driver that configures everything and deal    
411 changes.                                          
412                                                   
413 The driver also takes care of the EDIDs: /dev/    
414 read the EDIDs and (for the HDMI Input port) t    
415                                                   
416 By default userspace is responsible to set the    
417 according to the EDIDs of the connected displa    
418 module option is set, then the driver will tak    
419 of the HDMI Input based on the supported resol    
420 Currently the driver only supports resolutions    
421 displays support 4kp60, then it will advertise    
422 it will fall back to an EDID that just reports    
423                                                   
424 The status of the Extron is reported in ``/sys    
425                                                   
426 The extron-da-hd-4k-plus driver implements the    
427                                                   
428 ``debug``                                         
429 ---------                                         
430                                                   
431 If set to 1, then all serial port traffic is s    
432                                                   
433 ``vendor_id``                                     
434 -------------                                     
435                                                   
436 The CEC Vendor ID to report to connected displ    
437                                                   
438 If set, then the driver will take care of dist    
439 on the input to the HDMI outputs. This is done    
440                                                   
441 - <Standby>                                       
442 - <Image View On> and <Text View On>              
443 - <Give Device Power Status>                      
444 - <Set System Audio Mode>                         
445 - <Request Current Latency>                       
446                                                   
447 If not set, then userspace is responsible for     
448 configure the CEC devices for HDMI Input and t    
449                                                   
450 ``manufacturer_name``                             
451 ---------------------                             
452                                                   
453 A three character manufacturer name that is us    
454 Input. If not set, then userspace is reponsibl    
455 If set, then the driver will update the EDID a    
456 resolutions supported by the connected display    
457 anymore to manually set the EDID for the HDMI     
458                                                   
459 ``hpd_never_low``                                 
460 -----------------                                 
461                                                   
462 If set, then the Hotplug Detect pin of the HDM    
463 even if nothing is connected to the HDMI Outpu    
464 then the Hotplug Detect pin of the HDMI input     
465 Hotplug Detect pins of the HDMI Outputs are al    
466                                                   
467 This option may be changed dynamically.           
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php