ddcutil icon indicating copy to clipboard operation
ddcutil copied to clipboard

Philips 27E2F7901 detection issue

Open ngocphamm opened this issue 8 months ago • 6 comments

Hi, I have tried to read the documentation, as well as searching issues but I haven't come across anything that would help in my case, and I'm a little confused. I hope someone would explain at least some parts for me.

My setup: 2 PHL 27E2F7901 monitors connected to my box.

  • 1 with HDMI <-> HDMI cable
  • 1 with USB-C <-> USB-C cable

I have 2 issues so far

  1. ddcutil detect doesn't run because of permissions
    • From this I2C Device Permissions section in the Post-Installation Checklist, I thought that because I'm using version 2.2.0, it should install the appropriate udev rules so that I can run ddcutil without sudo? In fact, I do see the /usr/lib/udev/rules.d/60-ddcutil-i2c.rules file, but not the /usr/lib/udev/rules.d/60-usb.rules.
  2. sudo ddcutil detect only sees 1 of the 2 monitors
    • My guess is with the USB-C connected one, but I don't have a lot more clues after that

Debugging info

  1. ddcutil environment
  2. sudo ddcutil interrogate --verbose

Output of sudo ddcutil detect with only 1 monitor

Display 1
   I2C bus:  /dev/i2c-5
   DRM connector:           card1-HDMI-A-1
   EDID synopsis:
      Mfg id:               PHL - Philips Consumer Electronics Company
      Model:                PHL 27E2F7901
      Product code:         49934  (0xc30e)
      Serial number:        UHB2329010229
      Binary serial number: 10229 (0x000027f5)
      Manufacture year:     2023,  Week: 29
   VCP version:         3.0

Please let me know if there's any more information I can provide.

Thank you for building this wonderful tool!

ngocphamm avatar Jun 18 '25 11:06 ngocphamm

It appears that you have some sort of system on a chip device.

Regarding the permissions issue, save the following lines as file /etc/udev/rules.d/60-ddcutil-i2c.rules and reboot. This will override the corresponding file in /usr/lib/udev/rules.d:

SUBSYSTEM=="i2c-dev", KERNEL=="i2c-[0-9]*", ATTRS{class}=="0x03*", TAG+="uaccess"
SUBSYSTEM=="dri", KERNEL=="card[0-9]*", TAG+="uaccess"

This changed rules file relaxes the video adapter device test (attribute class) to recognize any device whose attribute starts with x03, not just an exact match with 0x030000. In your case the attribute value is 0x038000, which I've not seen before. Let me know if this resolves the permission issue.

Alternatively, you could rely on group i2c to assign permissions. Rule 60-i2c-tools.rules from package i2c-tools sets /dev/i2c devices to have group i2c. All you need to to is add your user, ngoc, to group i2c:

sudo usermod -aG i2c ngoc

. File 60-ddcutil-usb.rules is no longer automatically installed. It is used to grant USB bus permissions in the case of monitors what implement communication with their Virtual Control Panel using USB instead of the I2C. Such monitors have turned out to be extremely rare. It is irrelevant for you.

Regarding the second display not recognized, I'm afraid I don't have a solution. There appears to be a problem with driver amdgpu's handling of your SOC system. I can see driver errors in the logs related to I2C communication and Multi-Stream-Trasnport (MST).

How are the monitors connected to the computer? Is there a docking station involved?

rockowitz avatar Jul 04 '25 19:07 rockowitz

Thank you for the response!

It appears that you have some sort of system on a chip device.

I think you are correct. Mine uses the AMD Ryzen AI 9 365 chip in a mini PC.

Regarding the permissions issue, save the following lines as file /etc/udev/rules.d/60-ddcutil-i2c.rules and reboot. This will override the corresponding file in /usr/lib/udev/rules.d:

SUBSYSTEM=="i2c-dev", KERNEL=="i2c-[0-9]*", ATTRS{class}=="0x03*", TAG+="uaccess"
SUBSYSTEM=="dri", KERNEL=="card[0-9]*", TAG+="uaccess"

This changed rules file relaxes the video adapter device test (attribute class) to recognize any device whose attribute starts with x03, not just an exact match with 0x030000. In your case the attribute value is 0x038000, which I've not seen before. Let me know if this resolves the permission issue.

Oh I see! I don't want to reboot right now but I copied the file over to /etc/udev/rules.d and changed the class to 0x03 and will try the next time I reboot. Just earlier I had to deal with those udev rules, and reading somewhere that sudo udevadm control --reload would do it (and some says also sudo udevadm trigger but those seem to be inconsistent.

Regarding the second display not recognized, I'm afraid I don't have a solution. There appears to be a problem with driver amdgpu's handling of your SOC system. I can see driver errors in the logs related to I2C communication and Multi-Stream-Trasnport (MST).

How are the monitors connected to the computer? Is there a docking station involved?

Both monitors are connected directly to the Mini PC. 1 with HDMI <-> HDMI cable. The other with USB-C <-> USB-C cable. The one that doesn't seem to be recognized, I think, is the second one. I just tried changing to USB-C <-> Display Port cable (the monitors support several types of input), and it's the same, not detected by the command.

ngocphamm avatar Jul 04 '25 19:07 ngocphamm

@rockowitz So I had to restart the computer today, and even with the following as /etc/udev/rules.d/60-ddcutil-i2c.rules, ddcutil detect still fails with permissions issues. 🤔

SUBSYSTEM=="i2c-dev", KERNEL=="i2c-[0-9]*", ATTRS{class}=="0x03", TAG+="uaccess"
SUBSYSTEM=="dri", KERNEL=="card[0-9]*", TAG+="uaccess"
Device /dev/i2c-5 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-6 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-7 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-8 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-9 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-10 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-11 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-12 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-13 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-14 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-15 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-16 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-17 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-18 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-19 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-20 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-21 is not readable and writable.  Error = EACCES(13): Permission denied
Device /dev/i2c-22 is not readable and writable.  Error = EACCES(13): Permission denied
Devices possibly used for DDC/CI communication cannot be opened: /dev/i2c-5 /dev/i2c-6 /dev/i2c-7 /dev/i2c-8 /dev/i2c-9 /dev/i2c-10 /dev/i2c-11 /dev/i2c-12 /dev/i2c-13 /dev/i2c-14 /dev/i2c-15 /dev/i2c-16 /dev/i2c-17 /dev/i2c-18 /dev/i2c-19 /dev/i2c-20 /dev/i2c-21 /dev/i2c-22
See https://www.ddcutil.com/i2c_permissions
No displays found.
Run "ddcutil environment" to check for system configuration problems.

ngocphamm avatar Jul 09 '25 00:07 ngocphamm

Your ATTRS(class) test is missing the trailing asterisk. It needs to be "x03*", not "x03".

rockowitz avatar Jul 09 '25 20:07 rockowitz

Your ATTRS(class) test is missing the trailing asterisk. It needs to be "x03*", not "x03".

Oh no. So stupid. Sorry for the false alarm. I will try that soon enough.

ngocphamm avatar Jul 09 '25 20:07 ngocphamm

A modified /usr/lib/rules.d/60-ddcutil-i2c.rules, with the ATTRS(class) test changed as described above, has been uploaded to branch 2.2.2-dev. As noted, it checks only if the first byte if the class value is x03.

rockowitz avatar Aug 02 '25 02:08 rockowitz