Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ddcutils is unable to read/write all i2c devices and unable to control monitors #5102

Open
2 tasks done
TraceyC77 opened this issue Feb 21, 2025 · 2 comments
Open
2 tasks done
Assignees
Labels
Bug Something isn't working Priority: Normal Normal priority

Comments

@TraceyC77
Copy link
Contributor

Please confirm there isn't an open report for this issue

  • I have searched through bug reports

Summary

ddcutil does not have proper read/write permissions for i2c devices, which causes the ddcutil utilities to fail. The user is unable to change brightness, for example.

Steps to reproduce

Possibly related: This bug in the ddcutil tracker
nvidia GPU on laptop connected to a dock. 2 monitors connected to the dock

  1. Run ddctuil detect

Expected result

Monitors correctly detected and details listed

Actual result

ddcutil detect was unable to get information from the monitors.

❯ ddcutil detect
Invalid display
   I2C bus:  /dev/i2c-9
   DRM connector:           card0-eDP-1
   EDID synopsis:
      Mfg id:               SHP - Sharp Corporation
      Model:                
      Product code:         5399  (0x1517)
      Serial number:        
      Binary serial number: 0 (0x00000000)
      Manufacture year:     2021,  Week: 45
   This is a laptop display.  Laptop displays do not support DDC/CI

Invalid display
   I2C bus:  /dev/i2c-16
   DRM connector:           card1-DP-9
   EDID synopsis:
      Mfg id:               GSM - Goldstar Company Ltd (LG)
      Model:                LG ULTRAGEAR
      Product code:         30538  (0x774a)
      Serial number:        104NTQDH8932
      Binary serial number: 586932 (0x0008f4b4)
      Manufacture year:     2021,  Week: 4
   DDC communication failed. (getvcp of feature x10 returned Error_Info[EIO in ddc_write_read_with_retry, causes: EIO])

Environment

  • Is system up to date?

Repo

Unstable

Desktop Environment

Plasma

System details

Operating System: Solus 4.7
KDE Plasma Version: 6.3.0
KDE Frameworks Version: 6.10.0
Qt Version: 6.8.2
Kernel Version: 6.12.12-313.current (64-bit)
Graphics Platform: Wayland
Processors: 16 × 11th Gen Intel® Core™ i7-11800H @ 2.30GHz
Memory: 62.5 GiB of RAM
Graphics Processor 1: Intel® UHD Graphics
Graphics Processor 2: NVIDIA GeForce RTX 3060 Laptop GPU
Manufacturer: Dell Inc.
Product Name: XPS 17 9710

2 DDC capable LG monitors attached to the Dell dock

Other comments

For common use cases, such as controlling brightness on monitors, see
https://commandmasters.com/commands/ddcutil-linux/

I had been trying to test a bug for KDE Plasma related to monitor brightness control
I'm pretty sure this had worked in the past.

Per the DDC FAQ I ran ddcutil environment which suggested the cause was my user not having RW permissions to the ic2 devices:

*** Primary Check 2: Check that /dev/i2c-* exist and writable ***

Current user: tracey (1000)

Checking /dev/i2c-* devices...

Devices /dev/i2c-* must exist and the logged on user must have read/write permission for those devices (or at least those devices associated 
with monitors).

Typically, this access is enabled by:
  - setting the group for /dev/i2c-* to i2c
  - setting group RW permissions for /dev/i2c-*
  - making the current user a member of group i2c

Alternatively, this can be enabled by just giving everyone RW permission
The following tests probe for these conditions.

Checking for /dev/i2c-* devices...
   crw-rw----+ 1 root root 89,  0 Feb 20 08:42 /dev/i2c-0
   crw-rw----+ 1 root root 89,  1 Feb 20 08:42 /dev/i2c-1
   crw-rw----+ 1 root root 89, 10 Feb 20 08:42 /dev/i2c-10
   crw-rw----+ 1 root root 89, 11 Feb 20 08:42 /dev/i2c-11
   crw-rw----+ 1 root root 89, 12 Feb 20 08:42 /dev/i2c-12
   crw-rw----+ 1 root root 89, 13 Feb 20 08:42 /dev/i2c-13
   crw-rw----+ 1 root root 89, 14 Feb 20 08:42 /dev/i2c-14
   crw-rw----+ 1 root root 89, 15 Feb 20 08:42 /dev/i2c-15
   crw-rw----+ 1 root root 89, 16 Feb 20 08:42 /dev/i2c-16
   crw-rw----+ 1 root root 89, 17 Feb 20 08:42 /dev/i2c-17
   crw-rw----+ 1 root root 89, 18 Feb 20 08:42 /dev/i2c-18
   crw-------  1 root root 89, 19 Feb 20 08:42 /dev/i2c-19
   crw-rw----+ 1 root root 89,  2 Feb 20 08:42 /dev/i2c-2
   crw-------  1 root root 89, 20 Feb 20 08:42 /dev/i2c-20
   crw-------  1 root root 89, 21 Feb 20 08:42 /dev/i2c-21
   crw-rw----+ 1 root root 89,  3 Feb 20 08:42 /dev/i2c-3
   crw-rw----+ 1 root root 89,  4 Feb 20 08:42 /dev/i2c-4
   crw-rw----+ 1 root root 89,  5 Feb 20 08:42 /dev/i2c-5
   crw-rw----+ 1 root root 89,  6 Feb 20 08:42 /dev/i2c-6
   crw-rw----+ 1 root root 89,  7 Feb 20 08:42 /dev/i2c-7
   crw-rw----+ 1 root root 89,  8 Feb 20 08:42 /dev/i2c-8
   crw-rw----+ 1 root root 89,  9 Feb 20 08:42 /dev/i2c-9
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

WARNING: Current user (tracey) does not have RW access to all /dev/i2c-* devices.

....
Configuration suggestions:
   Issue:
      Current user has RW access to some but not all /dev/i2c-N devices.
      If there is RW access to at least the /dev/i2c-N devices for connected monitors,
      this is not a problem.
      Remaining suggestions assume RW access is still to be established.
      
   Issue:
      Group i2c does not exist.
   Suggestion:
      Create group i2c. To create group i2c, use command:
         sudo groupadd --system i2c
      Assign /dev/i2c-N devices to group i2c by adding a rule to /etc/udev/rules.d
      Add the current user to group i2c:
         sudo usermod -G i2c -a <username>
      After this, you will have to logout and login again.
      The changes to the user's group list are not read until a new login.

@TraceyC77 TraceyC77 added the Bug Something isn't working label Feb 21, 2025
@github-project-automation github-project-automation bot moved this to Triage in Solus Feb 21, 2025
@TraceyC77 TraceyC77 added the Priority: Normal Normal priority label Feb 21, 2025
@TraceyC77
Copy link
Contributor Author

I found these, which are properly installed by the ddcutils package

❯ fd rules | rg ddc
usr/lib64/udev/rules.d/60-ddcutil-usb.rules
usr/lib64/udev/rules.d/60-ddcutil-i2c.rules
usr/share/ddcutil/data/60-ddcutil-usb.rules
usr/share/ddcutil/data/60-ddcutil-i2c.rules

@TraceyC77
Copy link
Contributor Author

There's been a new major release of ddcutil. I'll see if I can update the package and if that fixes this issue

@TraceyC77 TraceyC77 self-assigned this Feb 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working Priority: Normal Normal priority
Projects
Status: Triage
Development

No branches or pull requests

1 participant