Philips 27E2F7901 detection issue
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
-
ddcutil detectdoesn't run because of permissions- From this
I2C Device Permissionssection in the Post-Installation Checklist, I thought that because I'm using version2.2.0, it should install the appropriate udev rules so that I can runddcutilwithoutsudo? In fact, I do see the/usr/lib/udev/rules.d/60-ddcutil-i2c.rulesfile, but not the/usr/lib/udev/rules.d/60-usb.rules.
- From this
-
sudo ddcutil detectonly 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
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!
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?
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.
@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.
Your ATTRS(class) test is missing the trailing asterisk. It needs to be "x03*", not "x03".
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.
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.