doomdog Posted May 10, 2023 Posted May 10, 2023 Greetings, As the subject says... CEC not detected in kernel, cec-client throws errors, nothing I tried worked. root@odroidxu4:~# uname -a Linux odroidxu4 5.4.239-odroidxu4 #1 SMP PREEMPT Thu Mar 16 15:52:54 UTC 2023 armv7l GNU/Linux root@odroidxu4:~# cec-client -l libCEC version: 6.0.2, compiled on Linux-4.19.0-14-armmp-lpae ... , features: P8_USB, DRM, P8_detect, randr, Exynos, Linux, AOCEC Found devices: 1 device: 1 com port: Linux vendor id: 0000 product id: 0000 firmware version: 0 type: Linux root@odroidxu4:~# cec-client No device type given. Using 'recording device' CEC Parser created - libCEC version 6.0.2 no serial port given. trying autodetect: path: /dev/cec0 com port: Linux opening a connection to the CEC adapter... DEBUG: [ 468] Broadcast (F): osd name set to 'Broadcast' DEBUG: [ 468] CLinuxCECAdapterCommunication::Open - m_fd=3 bStartListening=1 DEBUG: [ 468] CLinuxCECAdapterCommunication::Open - ioctl CEC_ADAP_G_PHYS_ADDR - addr=ffff WARNING: [ 468] CLinuxCECAdapterCommunication::Open - physical address is invalid DEBUG: [ 468] CLinuxCECAdapterCommunication::Open - ioctl CEC_ADAP_S_LOG_ADDRS - log_addr_mask=0000 num_log_addrs=0 DEBUG: [ 468] CLinuxCECAdapterCommunication::Open - ioctl CEC_ADAP_S_LOG_ADDRS - log_addr_mask=0000 num_log_addrs=1 NOTICE: [ 469] connection opened DEBUG: [ 469] << Broadcast (F) -> TV (0): POLL TRAFFIC: [ 469] << f0 ERROR: [ 469] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT failed - tx_status=00 errno=64 TRAFFIC: [ 469] << f0 ERROR: [ 469] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT failed - tx_status=00 errno=64 DEBUG: [ 469] >> POLL not sent DEBUG: [ 469] TV (0): device status changed into 'not present' DEBUG: [ 469] registering new CEC client - v6.0.2 DEBUG: [ 469] SetClientVersion - using client version '6.0.2' NOTICE: [ 469] setting HDMI port to 1 on device TV (0) DEBUG: [ 469] << Broadcast (F) -> TV (0): POLL TRAFFIC: [ 469] << f0 ERROR: [ 469] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT failed - tx_status=00 errno=64 TRAFFIC: [ 469] << f0 ERROR: [ 469] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT failed - tx_status=00 errno=64 DEBUG: [ 469] >> POLL not sent DEBUG: [ 469] SetConfiguration: double tap timeout = 200ms, repeat rate = 0ms, release delay = 500ms DEBUG: [ 469] detecting logical address for type 'recording device' DEBUG: [ 469] trying logical address 'Recorder 1' DEBUG: [ 469] << Recorder 1 (1) -> Recorder 1 (1): POLL DEBUG: [ 469] CLinuxCECAdapterCommunication::Process - CEC_DQEVENT - CEC_EVENT_STATE_CHANGE - log_addr_mask=0000 phys_addr=ffff TRAFFIC: [ 469] << 11 ERROR: [ 470] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT failed - tx_status=00 errno=64 TRAFFIC: [ 470] << 11 ERROR: [ 470] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT failed - tx_status=00 errno=64 DEBUG: [ 470] >> POLL not sent DEBUG: [ 470] using logical address 'Recorder 1' DEBUG: [ 470] Recorder 1 (1): device status changed into 'handled by libCEC' DEBUG: [ 470] Recorder 1 (1): power status changed from 'unknown' to 'on' DEBUG: [ 470] Recorder 1 (1): vendor = Pulse Eight (001582) DEBUG: [ 470] Recorder 1 (1): CEC version 1.4 DEBUG: [ 470] AllocateLogicalAddresses - device '0', type 'recording device', LA '1' DEBUG: [ 470] CLinuxCECAdapterCommunication::SetLogicalAddresses - ioctl CEC_ADAP_S_LOG_ADDRS - log_addr_mask=0000 num_log_addrs=0 DEBUG: [ 470] CLinuxCECAdapterCommunication::SetLogicalAddresses - ioctl CEC_ADAP_S_LOG_ADDRS - log_addr_mask=0000 num_log_addrs=1 DEBUG: [ 470] Recorder 1 (1): osd name set to 'CECTester' DEBUG: [ 470] Recorder 1 (1): menu language set to 'eng' NOTICE: [ 470] setting HDMI port to 1 on device TV (0) DEBUG: [ 470] << Recorder 1 (1) -> TV (0): POLL TRAFFIC: [ 470] << 10 ERROR: [ 470] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT failed - tx_status=00 errno=64 TRAFFIC: [ 470] << 10 ERROR: [ 470] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT failed - tx_status=00 errno=64 DEBUG: [ 470] >> POLL not sent DEBUG: [ 470] Recorder 1 (1): physical address changed from ffff to 1000 DEBUG: [ 470] << Recorder 1 (1) -> broadcast (F): physical address 1000 TRAFFIC: [ 470] << 1f:84:10:00:01 ERROR: [ 470] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT failed - tx_status=00 errno=64 TRAFFIC: [ 470] << 1f:84:10:00:01 ERROR: [ 470] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT failed - tx_status=00 errno=64 root@odroidxu4:~# lsmod Module Size Used by rfkill 24576 1 cpufreq_powersave 16384 0 cpufreq_userspace 16384 0 cpufreq_conservative 16384 0 zstd 16384 8 joydev 20480 0 input_leds 16384 0 exynos_gsc 32768 0 s5p_mfc 135168 0 s5p_jpeg 45056 0 v4l2_mem2mem 20480 2 s5p_jpeg,exynos_gsc videobuf2_dma_contig 20480 3 s5p_jpeg,s5p_mfc,exynos_gsc mali_kbase 364544 0 videobuf2_memops 16384 1 videobuf2_dma_contig videobuf2_v4l2 24576 4 s5p_jpeg,s5p_mfc,exynos_gsc,v4l2_mem2mem videobuf2_common 40960 5 s5p_jpeg,s5p_mfc,exynos_gsc,v4l2_mem2mem,videobuf2_v4l2 s5p_cec 16384 0 evdev 24576 4 exynos_gpiomem 16384 0 zram 28672 2 sunrpc 315392 1 ip_tables 24576 0 ipv6 462848 42 autofs4 36864 2 usbhid 49152 0 gpio_keys 20480 0 root@odroidxu4:~# zgrep CEC /proc/config.gz CONFIG_TABLET_USB_ACECAD=m CONFIG_CEC_CORE=y CONFIG_CEC_NOTIFIER=y CONFIG_MEDIA_CEC_SUPPORT=y # CONFIG_MEDIA_CEC_RC is not set # USB HDMI CEC adapters # CONFIG_USB_PULSE8_CEC is not set # CONFIG_USB_RAINSHADOW_CEC is not set # CONFIG_VIDEO_VIVID_CEC is not set CONFIG_CEC_PLATFORM_DRIVERS=y # CONFIG_VIDEO_CROS_EC_CEC is not set # CONFIG_CEC_GPIO is not set CONFIG_VIDEO_SAMSUNG_S5P_CEC=m # CONFIG_DRM_DP_CEC is not set Please help! Thanks in advance. 0 Quote
doomdog Posted May 24, 2023 Author Posted May 24, 2023 Ok, responding to myself lol. After many days (and nights) of testing, reflashing, up/downgrading, switching kernels/branches, even rolling my own... ....it turns out that whatever I do, kernel 5.4.x just doesn't want to give me CEC. BUT. If I run 6.1.y, CEC just works. It doesn't matter how I get to 6.1 (switching kernels, compiling my own, building from git, any branch, any userspace), it just works. It doesn't even matter what I have in boot.ini (you know, that option to supposedly turn off CEC, or that pesky HPD). So I'm at a loss. If anyone could please find out what's going on here. What could be the difference between 5.4 and 6.1 with regards to HDMI CEC? I can't figure it out. It bugs me to no end. Maybe what I described rings a bell for someone. I'm gonna stop for now and wait for the stable 23.05 with Bookworm, 6.1 and (hopefully!) still working CEC. 0 Quote
Igor Posted May 25, 2023 Posted May 25, 2023 5 hours ago, doomdog said: What could be the difference between 5.4 and 6.1 tl;dr; difference between generations is usually huge, between private old and mainline new, only bigger. https://github.com/armbian/build/blob/main/config/sources/families/odroidxu4.conf#L19-L32 5.4.y is private vendor kernel that is getting generic bug-fix patches from mainline 6.1.y is pure mainline 5 hours ago, doomdog said: What could be the difference between 5.4 and 6.1 with regards to HDMI CEC? I can't figure it out. It bugs me to no end. Without code analysis and understanding of related (CEC) mechanisms it is usually hard to tell anything. Its a complex question that could require extensive study on top of general kernel know-how. Theoretical / I didn't look into the code or commits ... it could be more simple answer too. 5 hours ago, doomdog said: It doesn't even matter what I have in boot.ini Probably features names changed. boot.ini is Harkernel proprietary way of setting kernel / hw parameters, tailored for their kernel. 5 hours ago, doomdog said: I'm gonna stop for now and wait for the stable 23.05 with Bookworm, 6.1 and (hopefully!) still working CEC. Bookworm "current" will still come with 5.4 so you need to switch to edge 6.1 kernel manually or via armbian-config. We will keep 5.4 at least for next release as dropping it ain't a simple binary decision. 0 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.