Linux 上不同 USB-C 适配器的 DDC/CI 检测问题

Linux 上不同 USB-C 适配器的 DDC/CI 检测问题

我在运行 Ubuntu Linux 的笔记本电脑与通过 USB-C 转 HDMI 适配器(集线器)连接的两个外部显示器之间的 DDC/CI 通信方面遇到了棘手的问题。

虽然 DDC/CI 在使用直接 HDMI 连接时可以完美运行,但它无法通过我的 USB-C 转 HDMI 适配器工作。

有趣的是,朋友的相同适配器型号(Anker 555)在其设置上成功启用了 DDC/CI 通信,这让我怀疑适配器是否能正常工作取决于运气。

设置详细信息:

  • 笔记本电脑操作系统:Ubuntu Linux,内核 6.5.0-17-generic
  • 中央处理器:英特尔 i5-12500H
  • GPU 驱动程序:i915
  • USB-C 集线器 1Anker 555USB-C 集线器(8 合 1)。我自己有一个,但不能与 DDC 配合使用。我朋友有一个相同的,但可以工作(可以改变亮度等)。
  • USB-C 集线器 2Anker 332USB-C 集线器。该集线器不适用于 DDC。
  • 外接显示器:2x Dell SE2422HX,通过以下方式连接:
    • 直接 HDMI(与 DDC/CI 配合使用)
    • 上文提到的 USB-C 集线器

故障排除完成:

  1. 确认两个显示器都支持 DDC/CI(能够使用ddcutil、更改亮度等……)。
  2. ddcutil正确检测监视器,但对于使用“坏”适配器的设置报告“DDC 通信失败”。
  3. 任何适配器均没有可用的固件更新。
  4. 以下是ddcutil detect -verbose连接两个适配器时的输出比较。显示器 1 是连接到“工作”适配器的显示器,无效显示器是未连接到的显示器。在这种情况下,两个适配器都是 Anker 555:
Display 1
   I2C bus:  /dev/i2c-13
      DRM connector:                      card0-DP-1
      Driver:                             i915
      I2C address 0x50 (EDID) responsive: true 
      Is eDP device:                      false
      Is LVDS device:                     false
      /sys/bus/i2c/devices/i2c-13/name    AUX USBC1/DDI TC1/PHY TC1
      PCI device path:                    /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/i2c-13
   EDID synopsis:
      Mfg id:               DEL - Dell Inc.
      Model:                DELL SE2422HX
      Product code:         41418  (0xa1ca)
      Serial number:        53D5WB3
      Binary serial number: 808863825 (0x30364851)
      Manufacture year:     2021,  Week: 16
      EDID version:         1.3
      Extra descriptor:        
      Video input definition:    0x80 - Digital Input
      Supported features:
         DPMS standby
         DPMS suspend
         DPMS active-off
         Digital display type: RGB 4:4:4 + YCrCb 4:4:4
         Standard sRGB color space: False
      White x,y:        0.313, 0.329
      Red   x,y:        0.650, 0.333
      Green x,y:        0.317, 0.615
      Blue  x,y:        0.151, 0.060
      Extension blocks: 1
   EDID source: I2C
   EDID hex dump:
              +0          +4          +8          +c            0   4   8   c   
      +0000   00 ff ff ff ff ff ff 00 10 ac ca a1 51 48 36 30   ............QH60
      +0010   10 1f 01 03 80 35 1e 78 ee 96 d5 a6 55 51 9d 26   .....5.x....UQ.&
      +0020   0f 50 54 a5 4b 00 71 4f 81 80 a9 c0 d1 c0 01 01   .PT.K.qO........
      +0030   01 01 01 01 01 01 02 3a 80 18 71 38 2d 40 58 2c   .......:..q8-@X,
      +0040   45 00 0f 28 21 00 00 1e 00 00 00 ff 00 35 33 44   E..(!........53D
      +0050   35 57 42 33 0a 20 20 20 20 20 00 00 00 fc 00 44   5WB3.     .....D
      +0060   45 4c 4c 20 53 45 32 34 32 32 48 58 00 00 00 fd   ELL SE2422HX....
      +0070   00 30 4b 1f 54 12 00 0a 20 20 20 20 20 20 01 0e   .0K.T...      ..
   VCP version:         2.1
   Controller mfg:      Mstar
   Firmware version:    41.2
   Monitor returns DDC Null Response for unsupported features: false

Invalid display
   I2C bus:  /dev/i2c-15
      DRM connector:                      card0-DP-3
      Driver:                             i915
      I2C address 0x50 (EDID) responsive: true 
      Is eDP device:                      false
      Is LVDS device:                     false
      /sys/bus/i2c/devices/i2c-15/name    AUX USBC3/DDI TC3/PHY TC3
      PCI device path:                    /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-3/i2c-15
   EDID synopsis:
      Mfg id:               DEL - Dell Inc.
      Model:                DELL SE2422HX
      Product code:         41418  (0xa1ca)
      Serial number:        GHC5WB3
      Binary serial number: 808928849 (0x30374651)
      Manufacture year:     2021,  Week: 16
      EDID version:         1.3
      Extra descriptor:        
      Video input definition:    0x80 - Digital Input
      Supported features:
         DPMS standby
         DPMS suspend
         DPMS active-off
         Digital display type: RGB 4:4:4 + YCrCb 4:4:4
         Standard sRGB color space: False
      White x,y:        0.313, 0.329
      Red   x,y:        0.650, 0.333
      Green x,y:        0.317, 0.615
      Blue  x,y:        0.151, 0.060
      Extension blocks: 1
   EDID source: I2C
   EDID hex dump:
              +0          +4          +8          +c            0   4   8   c   
      +0000   00 ff ff ff ff ff ff 00 10 ac ca a1 51 46 37 30   ............QF70
      +0010   10 1f 01 03 80 35 1e 78 ee 96 d5 a6 55 51 9d 26   .....5.x....UQ.&
      +0020   0f 50 54 a5 4b 00 71 4f 81 80 a9 c0 d1 c0 01 01   .PT.K.qO........
      +0030   01 01 01 01 01 01 02 3a 80 18 71 38 2d 40 58 2c   .......:..q8-@X,
      +0040   45 00 0f 28 21 00 00 1e 00 00 00 ff 00 47 48 43   E..(!........GHC
      +0050   35 57 42 33 0a 20 20 20 20 20 00 00 00 fc 00 44   5WB3.     .....D
      +0060   45 4c 4c 20 53 45 32 34 32 32 48 58 00 00 00 fd   ELL SE2422HX....
      +0070   00 30 4b 1f 54 12 00 0a 20 20 20 20 20 20 01 e9   .0K.T...      ..
   DDC communication failed

问题:

  1. 是否有人遇到过相同适配器型号之间 DDC/CI 功能的类似变化?
  2. 是否有已知的解决方法或工具可以在 Linux 上通过 USB-C 到 HDMI 连接实现 DDC/CI 通信?
  3. 该问题是否与适配器内的固件差异有关?如果是,是否有一种安全的方法将固件从一个工作适配器克隆到另一个适配器?

相关内容