patch inline: watch_displays_using_udev when it finds zero connected screens crashes
Asan found this baby:
=================================================================
==62810==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000007091 at pc 0x7f167dd1795e bp 0x7f1678331cc0 sp 0x7f1678331468
READ of size 2 at 0x602000007091 thread T3 (watch_displays)
#0 0x7f167dd1795d in __interceptor_strlen /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:370
#1 0x7f16787a091a in join_string_g_ptr_array_t /home/raster/C/other/AUR/ddcutil-git/src/ddcutil/src/util/glib_string_util.c:86
#2 0x7f167876735c in watch_displays_using_udev /home/raster/C/other/AUR/ddcutil-git/src/ddcutil/src/ddc/ddc_watch_displays.c:347
#3 0x7f16784acce0 (/usr/lib/libglib-2.0.so.0+0x7fce0)
#4 0x7f167d8363e8 in start_thread (/usr/lib/libpthread.so.0+0x93e8)
#5 0x7f167d764292 in __GI___clone (/usr/lib/libc.so.6+0x100292)
0x602000007091 is located 0 bytes to the right of 1-byte region [0x602000007090,0x602000007091)
allocated by thread T3 (watch_displays) here:
#0 0x7f167dd8c459 in __interceptor_malloc /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cpp:145
#1 0x7f16787a54c8 in strjoin /home/raster/C/other/AUR/ddcutil-git/src/ddcutil/src/util/string_util.c:351
#2 0x7f16787a08cc in join_string_g_ptr_array /home/raster/C/other/AUR/ddcutil-git/src/ddcutil/src/util/glib_string_util.c:44
#3 0x7f16787a090f in join_string_g_ptr_array_t /home/raster/C/other/AUR/ddcutil-git/src/ddcutil/src/util/glib_string_util.c:85
#4 0x7f167876735c in watch_displays_using_udev /home/raster/C/other/AUR/ddcutil-git/src/ddcutil/src/ddc/ddc_watch_displays.c:347
#5 0x7f16784acce0 (/usr/lib/libglib-2.0.so.0+0x7fce0)
This turns out to be the debug print:
GPtrArray * prev_displays = get_sysfs_drm_displays();
DBGTRC(debug, TRACE_GROUP,
"Initial connected displays: %s", join_string_g_ptr_array_t(prev_displays, ", ") );
that string join tries to join and array of zero strings.. this fails in strjoin() which happens to malloc a single byte then and never init it at all (so its junk) and so any string stuff can walk off the end of this string array. simple fix - always put a nul byte in. later strcpy's that add in string items will overwrite this. the array is empty because no screens report being connected in /sys/class/drm/cardX/status ... which is itself bizarre, but it is something ddcutil shouldn't crash on.
diff --git a/src/util/string_util.c b/src/util/string_util.c
index 0e13aaa0..3f81d4db 100644
--- a/src/util/string_util.c
+++ b/src/util/string_util.c
@@ -349,6 +349,7 @@ char * strjoin( const char ** pieces, const int ct0, const char * sepstr) {
// printf("(%s) ct=%d, total_length=%d\n", __func__, ct, total_length);
char * result = malloc(total_length);
+ result[0] = '\0';
char * end = result;
for (ndx=0; ndx<ct; ndx++) {
if (ndx > 0 && seplen > 0) {
I don't need attribution - just want to fix this for a user who is finding endless segfaults, so consider this 1 liner patch public domain.
Background - we're using libdductil in enlightenment (we dlopen libddcutil.so2 or libddcutil.so.3 and dlsym it for symbols and then use it from a setuid root slave util to control external monitor brightness just like we control internal laptop panel brightness via sysfs - so it's automagically enabled as a feature if ddcutil just gets installed at all - this slave util we launch was continually crashing and being restarted for a user when they enabled asan as it found this issue).
enjoy!
Thanks for the precise bug report. I've pushed out a fix to the 1.0.0 branch.
I also appreciate hearing about how libddcutil is being used. Comments on its usability are welcome.
/sys is the proverbial maze of twisty passageways, all alike. I've been mucking around in it lately, trying to address the following problem: Occasionally the same monitor will appear at 2 different /dev/i2c-N devices. Sometimes both are writable, sometimes only one. Sometimes it's associated with DisplayPort MST and possibly docking stations.
The version of "ddcutil environment --v" in branch 1.0.0-dev dumps out a lot of information about relevant contents. You may find it helpful trying to understand what is going on. Different drivers seem to use /sys differently.
You mention you're looking at /sys/class/drm/cardX/status. This may just be shorthand describing what you're doing. But note that /sys/class/drm is a directory with subdirectories card0, card1, etc. It also contains symbolic links to the members of card0, card1, etc., e.g. card0-DP-1 -> card0/card0-DP-1. So drm/card0-DP-1/status exists, but drm/card0/status does not.
Regards, Sanford
On 11/20/20 6:17 AM, rastermann wrote:
Asan found this baby:
|================================================================= ==62810==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000007091 at pc 0x7f167dd1795e bp 0x7f1678331cc0 sp 0x7f1678331468 READ of size 2 at 0x602000007091 thread T3 (watch_displays) #0 0x7f167dd1795d in __interceptor_strlen /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:370 #1 0x7f16787a091a in join_string_g_ptr_array_t /home/raster/C/other/AUR/ddcutil-git/src/ddcutil/src/util/glib_string_util.c:86 #2 0x7f167876735c in watch_displays_using_udev /home/raster/C/other/AUR/ddcutil-git/src/ddcutil/src/ddc/ddc_watch_displays.c:347 #3 0x7f16784acce0 (/usr/lib/libglib-2.0.so.0+0x7fce0) #4 0x7f167d8363e8 in start_thread (/usr/lib/libpthread.so.0+0x93e8) #5 0x7f167d764292 in __GI___clone (/usr/lib/libc.so.6+0x100292) 0x602000007091 is located 0 bytes to the right of 1-byte region [0x602000007090,0x602000007091) allocated by thread T3 (watch_displays) here: #0 0x7f167dd8c459 in __interceptor_malloc /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cpp:145 #1 0x7f16787a54c8 in strjoin /home/raster/C/other/AUR/ddcutil-git/src/ddcutil/src/util/string_util.c:351 #2 0x7f16787a08cc in join_string_g_ptr_array /home/raster/C/other/AUR/ddcutil-git/src/ddcutil/src/util/glib_string_util.c:44 #3 0x7f16787a090f in join_string_g_ptr_array_t /home/raster/C/other/AUR/ddcutil-git/src/ddcutil/src/util/glib_string_util.c:85 #4 0x7f167876735c in watch_displays_using_udev /home/raster/C/other/AUR/ddcutil-git/src/ddcutil/src/ddc/ddc_watch_displays.c:347 #5 0x7f16784acce0 (/usr/lib/libglib-2.0.so.0+0x7fce0) |
This turns out to be the debug print:
GPtrArray * prev_displays = get_sysfs_drm_displays(); DBGTRC(debug, TRACE_GROUP, "Initial connected displays: %s", join_string_g_ptr_array_t(prev_displays, ", ") );
that string join tries to join and array of zero strings.. this fails in strjoin() which happens to malloc a single byte then and never init it at all (so its junk) and so any string stuff can walk off the end of this string array. simple fix - always put a nul byte in. later strcpy's that add in string items will overwrite this. the array is empty because no screens report being connected in /sys/class/drm/cardX/status ... which is itself bizarre, but it is something ddcutil shouldn't crash on.
|diff --git a/src/util/string_util.c b/src/util/string_util.c index 0e13aaa0..3f81d4db 100644 --- a/src/util/string_util.c +++ b/src/util/string_util.c @@ -349,6 +349,7 @@ char * strjoin( const char ** pieces, const int ct0, const char * sepstr) { // printf("(%s) ct=%d, total_length=%d\n", func, ct, total_length); char * result = malloc(total_length); + result[0] = '\0'; char * end = result; for (ndx=0; ndx<ct; ndx++) { if (ndx > 0 && seplen > 0) { |
I don't need attribution - just want to fix this for a user who is finding endless segfaults, so consider this 1 liner patch public domain.
Background - we're using libdductil in enlightenment (we dlopen libddcutil.so2 or libddcutil.so.3 and dlsym it for symbols and then use it from a setuid root slave util to control external monitor brightness just like we control internal laptop panel brightness via sysfs - so it's automagically enabled as a feature if ddcutil just gets installed at all - this slave util we launch was continually crashing and being restarted for a user when they enabled asan as it found this issue).
enjoy!
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/154, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3VRKUSTDHM46IU4M3DSQZF5TANCNFSM4T4UTMCA.
Oh I was describing what ddcutil was doing when it as walking through /sys/class/drm/cardX devices (card0, card1, card2, etc.). It then walked through the subdirs (outputs) and checked status - it just so happens on this system (not mine - a user's system so I can't reproduce. I worked with them to identify the issue as it was having major adverse effects elsewhere for us). It just so happened this system had no connected outputs there. My machine does - this user' smachine doesn't. It seems it's probably unusual as otherwise you'd have hit this bug earlier. :)
Indeed sysfs is an adhoc maze. I've spent decades dealing with it and its changes too over time... I remember long ago when /proc/apm was simple and all you needed to report battery info... :) That has all changed dramatically over the years. I totally understand your pain. I'm happy to piggy-back off your pain to save some of my own. I actually plan in the future to make a complete monitor configuration Ui based on everything ddcutil can swizzle (basically a kbd+mouse driven OSD config menu on your monitor - not only brightness, but the rest too). I plan to also poll the rotation property and use that to auto-rotate screens (randr). I'm happy ddcutil makes this all possible, so thanks so much for the work you put in. :) I know how hard this kind of stuff is and I hope I just helped make your life a little better by fixing something for you. My way of saying thanks.
Just some comments/asides you may find of interest. It seems ddcutil has been a bit slow in doing things like changing properties. It also regularly even fails to do it - especially if you change backlight right after the monitor woke up from DPMS. I am sure this is a monitor problem, but the slowness I did notice was the usleeps in ddcutil. At the time i reduced the usleep time and found it to work, but a little less reliably. I dedicated a thread just to ddcutil to make sure it doesn't impact anything else. I actually literally fade the backlight in and out when monitors come on or are sent to sleep, or go idle or come out of idle by sending my backlight change requests over the space of a second (If possible it'd be nice it changes every 16ms as I send these request at refresh framerate). I've had to do some hackery to set backlight and then read it back to ensure it worked as it sometimes does not. It'd be nice if this were all solid and reliable, but I've done my workarounds to beat it into shape already. So just some info in how ddcutili is being abused so you can account for it in future. :)
I've found the location of the sloppy check for status. It's in a loop that watches for displays to be added and removed. The code to modify internal data structures and notify the library's caller of the change is not yet written, so at this point it has no effect. Assuming you're building from source, you can disable the loop by commenting out the call to ddc_start_watch_displays() in function _ddca_init() at approximately line 165 of file src/libmain/api_base.c.
I hadn't considered that the library might be used in a headless environment. Is this some sort of continuous integration context? Even so, I'm surprised that a connector "node" in sysfs (e.g. card0/card0-HDMI-A-1) exists without a status element. Can I ask you to run "ddcutil environment --verbose" in the problematic environment (using the latest 1.0.0-dev branch) and send the output as an attachment? Its probing of /sys should help me understand what's going on.
If you're looking to build a UI "based on everything that ddcutil can swizzle", that's an enormous number of VCP features whose existence varies by monitor and whose interpretation varies by VCP/MCCS version. Most features are not of interest to general users. I suspect that what you really want to do is present a unified interface to monitors that implement DDC/CI along with those that don't (i.e. laptop displays), and include properties such as xrandr rotation that are outside of DDC/CI. I assume you've looked at ddcui. The code is ugly (it's my first Qt project) but it does try to handle the full set of VCP features. It's designed as a "sys admin" type of tool, but it may give you some ideas.
I'm open to extending the API if that would make your use easier. The API design has been driven by the needs of ddcui, and that's a sample size of 1. Can you point me at the code that's currently using ddcutil? I'd like to see how you're using the API and I may have suggestions.
If you're making brightness changes in rapid succession for fade-in/fade-out purposes, you probably want to verify the value only at the end of the changes. Also, it probably doesn't matter if some of the changes fail so long as the final set succeeds. It might make sense to allow for reducing the DDC/CI spec mandated delay after setting the feature value in this case. Relatedly, though it doesn't address your use case, the way that ddcui avoids overloading the API with tiny changes to continuous values is by sending a feature change request to the API at most once a second when the slider or spin-box is being changed, and finally when the slider or spin-box is released. It's a UI cheat that seems to work.
Regards, Sanford
On 11/20/20 7:41 PM, rastermann wrote:
Oh I was describing what ddcutil was doing when it as walking through /sys/class/drm/cardX devices (card0, card1, card2, etc.). It then walked through the subdirs (outputs) and checked status - it just so happens on this system (not mine - a user's system so I can't reproduce. I worked with them to identify the issue as it was having major adverse effects elsewhere for us). It just so happened this system had no connected outputs there. My machine does - this user' smachine doesn't. It seems it's probably unusual as otherwise you'd have hit this bug earlier. :)
Indeed sysfs is an adhoc maze. I've spent decades dealing with it and its changes too over time... I remember long ago when /proc/apm was simple and all you needed to report battery info... :) That has all changed dramatically over the years. I totally understand your pain. I'm happy to piggy-back off your pain to save some of my own. I actually plan in the future to make a complete monitor configuration Ui based on everything ddcutil can swizzle (basically a kbd+mouse driven OSD config menu on your monitor - not only brightness, but the rest too). I plan to also poll the rotation property and use that to auto-rotate screens (randr). I'm happy ddcutil makes this all possible, so thanks so much for the work you put in. :) I know how hard this kind of stuff is and I hope I just helped make your life a little better by fixing something for you. My way of saying thanks.
Just some comments/asides you may find of interest. It seems ddcutil has been a bit slow in doing things like changing properties. It also regularly even fails to do it - especially if you change backlight right after the monitor woke up from DPMS. I am sure this is a monitor problem, but the slowness I did notice was the usleeps in ddcutil. At the time i reduced the usleep time and found it to work, but a little less reliably. I dedicated a thread just to ddcutil to make sure it doesn't impact anything else. I actually literally fade the backlight in and out when monitors come on or are sent to sleep, or go idle or come out of idle by sending my backlight change requests over the space of a second (If possible it'd be nice it changes every 16ms as I send these request at refresh framerate). I've had to do some hackery to set backlight and then read it back to ensure it worked as it sometimes does not. It'd be nice if this were all solid and reliable, but I've done my workarounds to beat it into shape already. So just some info in how ddcutili is being abused so you can account for it in future. :)
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/154#issuecomment-731476247, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3QAQ6VPL54BI4MV7KLSQ4EEZANCNFSM4T4UTMCA.
That's the odd thing... it's not a headless system. It's got a GPU and monitor plugged in yet this is finding no connected displays in sysfs - it literally reports nothing there, but there is a screen. As it's not my system I'm limited in knowing the exact makeup of it, but I do know this. I asks the user to find any status files in that subtree for an output - there are none. the status files are missing entirely, and yet ddcutil works, so it's swizzling the monitor properties in some other way.
Well when I said "complete UI" for ddc ... I didn't mean literally probe every DDC property val and expose it - go through all the major known ones and provide a good GUI for it. Expand it over time - like modify color temperature, brightness, contrast (already do backlight), That kind of thing. a nice GUI for what you find in the monitor's own OSD controls, but you don't need to use those unusable monitor UI controls. Any UI that just dumbly lists property strings with some value field is invariably a poor UI and at that point - ddcutil on the cmdline will do and be good enough and about as friendly. We already fully cover randr in other screen setup stuff. This is about complementing that with more controls per screen, remembering them and applying them. As we already have all the resolution, layout, rotation configuring - it makes sense to listen to rotation info and apply accordingly as well as other monitor controls available as above.
Relevant libddcutil using code here:
https://git.enlightenment.org/core/enlightenment.git/tree/src/bin/system/e_system_ddc.c - it hooks into https://git.enlightenment.org/core/enlightenment.git/tree/src/bin/system/e_system_main.c with i/o to calling process stdio handled by https://git.enlightenment.org/core/enlightenment.git/tree/src/bin/system/e_system_inout.c and shared header https://git.enlightenment.org/core/enlightenment.git/tree/src/bin/system/e_system.h (there are other subsystems inside that dir that hook in to this slave setuid root util for other services too).
I'v pretty cleanly sliced it in with thread hiding the latency and what not, but you can tell I've had to do some workarounds failure like with the probing. You can see the API and code is actually generic allowing getting/setting any property async (the animation is handled outside this slave fromt he calling process so it usses lots of property sets in a row). That code is https://git.enlightenment.org/core/enlightenment.git/tree/src/bin/e_backlight.c (which also handles swizzling backlight via sysfs and xrandr as well as ddc - ddc and sysfs talk to this setuid slave).
I know the UI cheat you do - common and I've done it many times, but the point here is to actually try smoothly fade/animate. I think I wrote this code before ddcutil had an api to change the usleep time - thus i experimented with manually modifying it. I've been using ddcutil's library api now for quite a while. :)
On 11/21/20 7:12 PM, rastermann wrote:
That's the odd thing... it's not a headless system. It's got a GPU and monitor plugged in yet this is finding no connected displays in sysfs
- it literally reports nothing there, but there is a screen. As it's not my system I'm limited in knowing the exact makeup of it, but I do know this. I asks the user to find any status files in that subtree for an output - there are none. the status files are missing entirely, and yet ddcutil works, so it's swizzling the monitor properties in some other way.
ddcutil finds DDC capable monitors by scanning the /dev/i2c devices. It ignores SMBus devices and those I2C devices whose name is not of the form /dev/i2c-N. It first tries to read the EDID, and if one is found it attempts DDC/CI communication, which is an expensive operation because of the sleeps.
The sysfs status error occurs in the loop that watches for monitors being connected or disconnected. If ddcutil was built with udev, the loop waits on a monitor change event. Otherwise, it simply polls the list of monitors the monitors reported in /sys every three seconds. If not, it polls the list of monitors every 3 seconds. These are cheap operations. Only in the rare case of a monitor being added or removed are the expensive /dev/i2c checks required.
Again, I'd really appreciate it if "ddcutil environment --verbose" can be run on the problematic system, built from the current 1.0.0-dev branch. I recently added code that reports relevant parts of the /sys tree, and will hopefully indicate how it is that there's no status element.
Well when I said "complete UI" for ddc ... I didn't mean literally probe every DDC property val and expose it - go through all the major known ones and provide a good GUI for it. Expand it over time - like modify color temperature, brightness, contrast (already do backlight), That kind of thing. a nice GUI for what you find in the monitor's own OSD controls, but you don't need to use those unusable monitor UI controls. Any UI that just dumbly lists property strings with some value field is invariably a poor UI and at that point - ddcutil on the cmdline will do and be good enough and about as friendly. We already fully cover randr in other screen setup stuff. This is about complementing that with more controls per screen, remembering them and applying them. As we already have all the resolution, layout, rotation configuring - it makes sense to listen to rotation info and apply accordingly as well as other monitor controls available as above.
Relevant libddcutil using code here:
https://git.enlightenment.org/core/enlightenment.git/tree/src/bin/system/e_system_ddc.c
- it hooks into https://git.enlightenment.org/core/enlightenment.git/tree/src/bin/system/e_system_main.c with i/o to calling process stdio handled by https://git.enlightenment.org/core/enlightenment.git/tree/src/bin/system/e_system_inout.c and shared header https://git.enlightenment.org/core/enlightenment.git/tree/src/bin/system/e_system.h (there are other subsystems inside that dir that hook in to this slave setuid root util for other services too).
I'v pretty cleanly sliced it in with thread hiding the latency and what not, but you can tell I've had to do some workarounds failure like with the probing. You can see the API and code is actually generic allowing getting/setting any property async (the animation is handled outside this slave fromt he calling process so it usses lots of property sets in a row). That code is https://git.enlightenment.org/core/enlightenment.git/tree/src/bin/e_backlight.c (which also handles swizzling backlight via sysfs and xrandr as well as ddc - ddc and sysfs talk to this setuid slave).
A few comments on the code.
It looks like you're assuming that continuous features have values in the range 0..100. This is common, but not fixed. The maximum value has to be obtained from the mh/ml bytes of the getvcp response. 0..255 is frequently seen, and I even had a ddcui bug report from a user whose monitor actually used values greater than 255.
The code verifies that the value read for a feature value is the same as the value set, modulo floating point conversion. However, it's sometimes the case that the final value is off by 1, e.g. if a value of 95 is set, the subsequent read of the feature might return 94 or 96. While you may want to hack for it in the UI, there's no point in treating the off by 1 state as a DDC error. (I suspect that this is because of floating point conversions in the monitor.)
The binary EDID is not perfectly reliable as a unique monitor identifier. I've seen one monitor, a LG 27MU67, which has neither an ASCII nor a binary serial number. So if 2 of these monitors were manufactured in the same week, they would have identical EDIDs. It's also possible that the user has loaded identical custom EDIDs into multiple monitors. Finally, there's the situation that led to me to write the code to examine /sys: occasionally the same monitor will appear as 2 different /dev/i2c devices. Hopefully I will figure out what's going on sufficiently to submit a bug report, or at least to work around it, but until then 2 /dev/i2c devices with the same EDID are possible.
Try calling:
ddca_enable_sleep_suppression(true)
This experimental option improves performance by eliminating some sleeps, and does not appear to increase the number of retries. If that holds true, I expect it will become the default.
Regards, Sanford
I know the UI cheat you do - common and I've done it many times, but the point here is to actually try smoothly fade/animate. I think I wrote this code before ddcutil had an api to change the usleep time - thus i experimented with manually modifying it. I've been using ddcutil's library api now for quite a while. :)
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/154#issuecomment-731656372, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3QHWXYQ7LPZBWMFZFLSRBJOTANCNFSM4T4UTMCA.
Hey - back. I was waiting to get in touch with the user again. here is his output:
Output level: Verbose
Reporting DDC data errors: false
Trace groups active: none
Traced functions: none
Traced files: none
Force I2C slave address: false
User defined features: disabled
Performance and Retry Options:
Deferred sleep enabled: false
Sleep suppression (reduced sleeps) enabled: false
Dynamic sleep adjustment enabled: false
The following tests probe the runtime environment using multiple overlapping methods.
Current time (local): 2020-11-25 12:49:03 PST
Current time (UTC): 2020-11-25 20:49:03
Seconds since boot: 599117
*** Basic System Information ***
ddcutil version: 0.9.9
/proc/version:
Linux version 5.9.0-2-amd64 ([email protected]) (gcc-10 (Debian 10.2.0-16) 10.2.0, GNU ld (GNU Binutils for Debian) 2.35.1) #1 SMP Debian 5.9.6-1 (2020-11-08)
Architecture: x86_64
Distributor id: Devuan
Release: testing/unstable
Found a known architecture
/proc/cmdline:
BOOT_IMAGE=/boot/vmlinuz-5.9.0-2-amd64 root=UUID=9f612bdc-2265-4916-bc17-a96756a424ff ro libata.force=4.00:noncq
Compiler information:
C standard: 201710
gcc compatible compiler:
Compiler version: 10.2.0
Processor information as reported by lscpu:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 48 bits physical, 48 bits virtual
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: AuthenticAMD
CPU family: 16
Model: 4
Model name: AMD Phenom(tm) II X4 975 Processor
Stepping: 3
CPU MHz: 800.000
CPU max MHz: 3600.0000
CPU min MHz: 800.0000
BogoMIPS: 7224.21
Virtualization: AMD-V
L1d cache: 256 KiB
L1i cache: 256 KiB
L2 cache: 2 MiB
L3 cache: 6 MiB
NUMA node0 CPU(s): 0-3
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Spec store bypass: Not affected
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Full AMD retpoline, STIBP disabled, RSB filling
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt nodeid_msr hw_pstate vmmcall npt lbrv svm_lock nrip_save
DMI Information from /sys/class/dmi/id:
Motherboard vendor: ASUSTeK COMPUTER INC.
Motherboard product name: SABERTOOTH 990FX R2.0
System vendor: To be filled by O.E.M.
System product name: To be filled by O.E.M.
Chassis vendor: To Be Filled By O.E.M.
Chassis type: 3 - Desktop
Byte order checks:
Is big endian (local test): false
WORDS_BIGENDIAN macro (autoconf): not defined
__BYTE_ORDER__ macro (gcc): __ORDER_LITTLE_ENDIAN__
*** Primary Check 1: Identify video card and driver ***
Obtaining card and driver information from /sys...
Primary video controller at PCI address 0000:03:00.0 (boot_vga flag is set)
Device class: x030000 VGA compatible controller
Vendor: x1002 Advanced Micro Devices, Inc. [AMD/ATI]
Device: x7340 Navi 14 [Radeon RX 5500/5500M / Pro 5500M]
Subvendor/Subdevice: 1043/04e6 ASUSTeK Computer Inc.
Driver name: amdgpu
Driver version: Unable to determine
I2C device: i2c-8 name: AMDGPU DM i2c hw bus 2
I2C device: i2c-6 name: AMDGPU DM i2c hw bus 0
I2C device: i2c-9 name: AMDGPU DM i2c hw bus 3
I2C device: i2c-7 name: AMDGPU DM i2c hw bus 1
*** Primary Check 2: Check that /dev/i2c-* exist and writable ***
Current user: gnarface (1000)
Checking /dev/i2c-* devices...
Unless the system is using the AMD proprietary driver fglrx, 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...
ls: cannot access '/dev/i2c-*': No such file or directory
Current user (gnarface) has RW access to all /dev/i2c-* devices.
Checking for group i2c...
Group i2c exists
WARNING: Current user gnarface is NOT a member of group i2c
Looking for udev rules files that reference i2c:
Checking rules directory /lib/udev/rules.d:
/lib/udev/rules.d/60-i2c-tools.rules:SUBSYSTEM=="i2c-dev",KERNEL=="i2c-[0-9]*", GROUP="i2c", MODE="0660"
/lib/udev/rules.d/60-sensor.rules:SUBSYSTEM=="iio", KERNEL=="iio*", SUBSYSTEMS=="usb|i2c", \
Checking rules directory /run/udev/rules.d:
grep: /run/udev/rules.d/*rules: No such file or directory
Checking rules directory /etc/udev/rules.d:
*** Primary Check 3: Check that module i2c_dev is loaded ***
Checking for module i2c_dev...
Module i2c-dev is NOT built into kernel
Loadable i2c-dev module found
Module i2c_dev is NOT loaded
No /dev/i2c-N devices found, and module i2c_dev is not loaded.
Check that kernel module i2c_dev is being loaded by examining files where this would be specified...
grep: /run/modules-load.d/*conf: No such file or directory
grep: /usr/lib/modules-load.d/*conf: No such file or directory
Check for any references to i2c_dev in /etc/modprobe.d ...
/etc/modprobe.d/i2c.conf:alias char-major-89 i2c-dev
grep: /run/modprobe.d/*conf: No such file or directory
*** Primary Check 4: Driver specific checks ***
Performing driver specific checks...
No driver specific checks apply.
*** Additional probes ***
Scanning /proc/modules for driver environment...
Loaded video module depends on: asus_wmi,
Found video driver module: amdgpu
Found other loaded module: videodev
Found other loaded module: drm_kms_helper
Loaded drm module depends on: amdgpu,gpu_sched,ttm,drm_kms_helper,
Found other loaded module: i2c_algo_bit
Found other loaded module: i2c_piix4
Testing if modules are loaded using /sys...
Module amdgpu is loaded
Module fbdev is NOT loaded
Module fglrx is NOT loaded
Module fturbo is NOT loaded
Module i915 is NOT loaded
Module mgag200 is NOT loaded
Module nvidia is NOT loaded
Module nouveau is NOT loaded
Module radeon is NOT loaded
Module vboxvideo is NOT loaded
Module vc4 is NOT loaded
Module drm is loaded
Module i2c_algo_bit is loaded
Module i2c_dev is NOT loaded
Module i2c_piix4 is loaded
Module ddcci is NOT loaded
Examining /sys/bus/i2c/devices...
/sys/bus/i2c/devices/i2c-3/name: SMBus PIIX4 adapter port 4 at 0b00
/sys/bus/i2c/devices/5-0018/name: ir_video
(each_i2c_device ) Unexpected /sys/bus/i2c/devices file name: 5-0018
/sys/bus/i2c/devices/i2c-10/name: AMDGPU DM aux hw bus 0
/sys/bus/i2c/devices/i2c-1/name: SMBus PIIX4 adapter port 2 at 0b00
/sys/bus/i2c/devices/i2c-8/name: AMDGPU DM i2c hw bus 2
/sys/bus/i2c/devices/5-0040/name: msp3400
(each_i2c_device ) Unexpected /sys/bus/i2c/devices file name: 5-0040
/sys/bus/i2c/devices/i2c-6/name: AMDGPU DM i2c hw bus 0
/sys/bus/i2c/devices/i2c-4/name: SMBus PIIX4 adapter port 1 at 0b20
/sys/bus/i2c/devices/i2c-11/name: AMDGPU DM aux hw bus 1
/sys/bus/i2c/devices/i2c-2/name: SMBus PIIX4 adapter port 3 at 0b00
/sys/bus/i2c/devices/i2c-0/name: SMBus PIIX4 adapter port 0 at 0b00
/sys/bus/i2c/devices/i2c-9/name: AMDGPU DM i2c hw bus 3
/sys/bus/i2c/devices/5-0061/name: tuner
(each_i2c_device ) Unexpected /sys/bus/i2c/devices file name: 5-0061
/sys/bus/i2c/devices/i2c-7/name: AMDGPU DM i2c hw bus 1
/sys/bus/i2c/devices/5-0021/name: saa7115
(each_i2c_device ) Unexpected /sys/bus/i2c/devices file name: 5-0021
/sys/bus/i2c/devices/i2c-5/name: ivtv i2c driver #0
/sys/bus/i2c/devices/i2c-12/name: AMDGPU DM aux hw bus 2
Examining I2C buses, as detected by I2C layer...
Current time (local): 2020-11-25 12:49:04 PST
Current time (UTC): 2020-11-25 20:49:04
Seconds since boot: 599119
Detected 0 non-ignorable I2C buses:
No buses
xrandr connection report:
DisplayPort-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 521mm x 293mm panning 1920x1080+0+0
DisplayPort-1 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 521mm x 293mm panning 1920x1080+1920+0
DisplayPort-2 disconnected (normal left inverted right x axis y axis)
HDMI-A-0 disconnected (normal left inverted right x axis y axis)
Checking for possibly conflicting programs...
Examining I2C buses using i2cdetect...
Current time (local): 2020-11-25 12:49:04 PST
Current time (UTC): 2020-11-25 20:49:04
Seconds since boot: 599119
No I2C buses found
Performing basic scan of I2C devices using local sysenv functions...
Current time (local): 2020-11-25 12:49:04 PST
Current time (UTC): 2020-11-25 20:49:04
Seconds since boot: 599119
No /dev/i2c-* devices found
EDIDs reported by X11 for connected xrandr outputs:
xrandr output: DisplayPort-0
Raw EDID:
+0 +4 +8 +c 0 4 8 c
+0000 00 ff ff ff ff ff ff 00 04 69 9a 24 87 63 04 00 .........i.$.c..
+0010 27 17 01 03 80 34 1d 78 2a 2a c5 a4 56 4f 9e 28 '....4.x**..VO.(
+0020 0f 50 54 b7 ef 00 71 4f 81 40 81 80 95 00 b3 00 .PT...qO.@......
+0030 d1 c0 81 c0 81 00 02 3a 80 18 71 38 2d 40 58 2c .......:..q8-@X,
+0040 45 00 09 25 21 00 00 1e 00 00 00 ff 00 44 39 4c E..%!........D9L
+0050 4d 54 46 32 38 37 36 32 33 0a 00 00 00 fd 00 32 MTF287623......2
+0060 4b 18 53 11 00 0a 20 20 20 20 20 20 00 00 00 fc K.S... ....
+0070 00 41 53 55 53 20 56 53 32 34 37 0a 20 20 00 07 .ASUS VS247. ..
EDID synopsis:
Mfg id: ACI
Model: ASUS VS247
Serial number: D9LMTF287623
Manufacture year: 2013
EDID version: 1.3
Product code: 9370
Binary sn: 287623 (0x00046387)
Extra descriptor:
Video input definition: 0x80 - Digital Input
Supported features:
DPMS active-off
Digital display type: RGB 4:4:4
Standard sRGB color space: False
White x,y: 0.313, 0.329
Red x,y: 0.641, 0.338
Green x,y: 0.311, 0.619
Blue x,y: 0.159, 0.059
Extension blocks: 0
EDID source:
(query_x11 ) EDID not found
xrandr output: DisplayPort-1
Raw EDID:
+0 +4 +8 +c 0 4 8 c
+0000 00 ff ff ff ff ff ff 00 04 69 9a 24 86 63 04 00 .........i.$.c..
+0010 27 17 01 03 80 34 1d 78 2a 2a c5 a4 56 4f 9e 28 '....4.x**..VO.(
+0020 0f 50 54 b7 ef 00 71 4f 81 40 81 80 95 00 b3 00 .PT...qO.@......
+0030 d1 c0 81 c0 81 00 02 3a 80 18 71 38 2d 40 58 2c .......:..q8-@X,
+0040 45 00 09 25 21 00 00 1e 00 00 00 ff 00 44 39 4c E..%!........D9L
+0050 4d 54 46 32 38 37 36 32 32 0a 00 00 00 fd 00 32 MTF287622......2
+0060 4b 18 53 11 00 0a 20 20 20 20 20 20 00 00 00 fc K.S... ....
+0070 00 41 53 55 53 20 56 53 32 34 37 0a 20 20 00 09 .ASUS VS247. ..
EDID synopsis:
Mfg id: ACI
Model: ASUS VS247
Serial number: D9LMTF287622
Manufacture year: 2013
EDID version: 1.3
Product code: 9370
Binary sn: 287622 (0x00046386)
Extra descriptor:
Video input definition: 0x80 - Digital Input
Supported features:
DPMS active-off
Digital display type: RGB 4:4:4
Standard sRGB color space: False
White x,y: 0.313, 0.329
Red x,y: 0.641, 0.338
Green x,y: 0.311, 0.619
Blue x,y: 0.159, 0.059
Extension blocks: 0
EDID source:
(query_x11 ) EDID not found
Error executing command: EPERM(-1): Operation not permitted
Probing I2C devices using udev, susbsystem i2c-dev...
Current time (local): 2020-11-25 12:49:04 PST
Current time (UTC): 2020-11-25 20:49:04
Seconds since boot: 599119
Summary of udev I2C devices
No devices detected
Looking for udev devices with name attribute DPMST...
Summary of udev DPMST devices...
No devices detected
amdgpu configuration parameters:
amdgpu parameters (/sys/module/drm/holders/amdgpu/parameters)
abmlevel: 0
aspm: -1
async_gfx_ring: 1
audio: -1
bapm: -1
benchmark: 0
cg_mask: 4294967295
cik_support: 0
compute_multipipe: -1
cwsr_enable: 1
dc: -1
dcdebugmask: 0
dcfeaturemask: 0
debug_evictions: N
debug_largebar: 0
deep_color: 0
disable_cu: (null)
discovery: -1
disp_priority: 0
dpm: -1
emu_mode: 0
exp_hw_support: 0
force_asic_type: -1
forcelongtraining: 0
fw_load_type: -1
gartsize: (null)
gpu_recovery: -1
gttsize: (null)
halt_if_hws_hang: 0
hw_i2c: 0
hws_gws_support: N
hws_max_conc_proc: 8
ignore_crat: 0
ip_block_mask: 4294967295
job_hang_limit: 0
lbpw: -1
lockup_timeout:
max_num_of_queues_per_device: 4096
mcbp: 0
mes: 0
moverate: (null)
msi: -1
noretry: 0
pcie_gen2: -1
pcie_gen_cap: 0
pcie_lane_cap: 0
pg_mask: 4294967295
ppfeaturemask: 4294950911
queue_preemption_timeout_ms: 9000
ras_enable: -1
ras_mask: 4294967295
reset_method: -1
runpm: -1
sched_hw_submission: 2
sched_jobs: 32
sched_policy: 0
sdma_phase_quantum: 32
send_sigterm: 0
si_support: 0
smu_memory_pool_size: 0
test: 0
tmz: 0
virtual_display: (null)
vis_vramlimit: 0
vm_block_size: -1
vm_debug: 0
vm_fault_stop: 0
vm_fragment_size: -1
vm_size: -1
vm_update_mode: -1
vramlimit: (null)
Examining configuration files...
DKMS modules:
Kernel I2C configuration settings:
CONFIG_I2C_CHARDEV=m
Kernel AMDGPU configuration settings:
CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_SI=y
CONFIG_DRM_AMDGPU_CIK=y
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set
Examining system logs...
Current timestamps:
Current time (local): 2020-11-25 12:49:04 PST
Current time (UTC): 2020-11-25 20:49:04
Seconds since boot: 599119
Scanning dmesg output for I2C related entries...
Executing command: dmesg
No lines found after filtering
Scanning journalctl output for I2C related entries...
Executing command: journalctl --no-pager --boot
File not found: /var/log/Xorg.0.log
Scanning file: /var/log/messages
Limiting output to last 40 relevant lines...
No lines found after filtering
Scanning file: /var/log/kern.log
Limiting output to last 20 relevant lines...
No lines found after filtering
Scanning file: /var/log/daemon.log
Limiting output to last 10 relevant lines...
Empty file
Scanning file: /var/log/syslog
Limiting output to last 50 relevant lines...
No lines found after filtering
Log Summary
Log Checked Found
=== ======= =====
dmesg true true
journalctl true false
/var/log/daemon.log true true
/var/log/kern.log true true
/var/log/messages true true
/var/log/syslog true true
/var/log/Xorg.0.log true false
Probing connected monitors using libdrm...
Checking libdrm version using pkg-config...
2.4.103
Has a DRM kernel driver been loaded? (drmAvailable()): true
Probing device /dev/dri/card0...
Open succeeded for device: /dev/dri/card0
DRM driver version information:
Version: 3.39.0
Driver: amdgpu
Date: 20150101
Description: AMD GPU
DRM library version: 1.3.0.
DRM Busid: pci:0000:03:00.0
Device information:
bustype: 0 - pci
domain:bus:device.func: 0000:03:00.0
vendor vid:pid: 0x1002:0x7340
subvendor vid:pid: 0x1043:0x04e6
revision id: 0x00c5
Is a modesetting capable driver attached to bus id: pci:0000:03:00.0?
(calling drmCheckModesettingAvailable())
Yes
Retrieving DRM resources...
Scanning defined properties...
Scanning connectors...
connector_id: 80
connector name DP-1
connector_type: 10 - DP
connector_type_id: 1
connection: 1 - connected
encoder: 79
encoder type (signal format): 2 - TDMS
EDID property
Raw property blob:
blob id: 84
+0 +4 +8 +c 0 4 8 c
+0000 00 ff ff ff ff ff ff 00 04 69 9a 24 87 63 04 00 .........i.$.c..
+0010 27 17 01 03 80 34 1d 78 2a 2a c5 a4 56 4f 9e 28 '....4.x**..VO.(
+0020 0f 50 54 b7 ef 00 71 4f 81 40 81 80 95 00 b3 00 .PT...qO.@......
+0030 d1 c0 81 c0 81 00 02 3a 80 18 71 38 2d 40 58 2c .......:..q8-@X,
+0040 45 00 09 25 21 00 00 1e 00 00 00 ff 00 44 39 4c E..%!........D9L
+0050 4d 54 46 32 38 37 36 32 33 0a 00 00 00 fd 00 32 MTF287623......2
+0060 4b 18 53 11 00 0a 20 20 20 20 20 20 00 00 00 fc K.S... ....
+0070 00 41 53 55 53 20 56 53 32 34 37 0a 20 20 00 07 .ASUS VS247. ..
EDID synopsis:
Mfg id: ACI
Model: ASUS VS247
Serial number: D9LMTF287623
Manufacture year: 2013
EDID version: 1.3
Product code: 9370
Binary sn: 287623 (0x00046387)
Extra descriptor:
Video input definition: 0x80 - Digital Input
Supported features:
DPMS active-off
Digital display type: RGB 4:4:4
Standard sRGB color space: False
White x,y: 0.313, 0.329
Red x,y: 0.641, 0.338
Green x,y: 0.311, 0.619
Blue x,y: 0.159, 0.059
Extension blocks: 0
EDID source:
(probe_open_device_using_libdrm) Unexpected: EDID ...20200007 not found in device cross reference table
connector_id: 85
connector name DP-2
connector_type: 10 - DP
connector_type_id: 2
connection: 1 - connected
encoder: 83
encoder type (signal format): 2 - TDMS
EDID property
Raw property blob:
blob id: 89
+0 +4 +8 +c 0 4 8 c
+0000 00 ff ff ff ff ff ff 00 04 69 9a 24 86 63 04 00 .........i.$.c..
+0010 27 17 01 03 80 34 1d 78 2a 2a c5 a4 56 4f 9e 28 '....4.x**..VO.(
+0020 0f 50 54 b7 ef 00 71 4f 81 40 81 80 95 00 b3 00 .PT...qO.@......
+0030 d1 c0 81 c0 81 00 02 3a 80 18 71 38 2d 40 58 2c .......:..q8-@X,
+0040 45 00 09 25 21 00 00 1e 00 00 00 ff 00 44 39 4c E..%!........D9L
+0050 4d 54 46 32 38 37 36 32 32 0a 00 00 00 fd 00 32 MTF287622......2
+0060 4b 18 53 11 00 0a 20 20 20 20 20 20 00 00 00 fc K.S... ....
+0070 00 41 53 55 53 20 56 53 32 34 37 0a 20 20 00 09 .ASUS VS247. ..
EDID synopsis:
Mfg id: ACI
Model: ASUS VS247
Serial number: D9LMTF287622
Manufacture year: 2013
EDID version: 1.3
Product code: 9370
Binary sn: 287622 (0x00046386)
Extra descriptor:
Video input definition: 0x80 - Digital Input
Supported features:
DPMS active-off
Digital display type: RGB 4:4:4
Standard sRGB color space: False
White x,y: 0.313, 0.329
Red x,y: 0.641, 0.338
Green x,y: 0.311, 0.619
Blue x,y: 0.159, 0.059
Extension blocks: 0
EDID source:
(probe_open_device_using_libdrm) Unexpected: EDID ...20200009 not found in device cross reference table
connector_id: 90
connector name DP-3
connector_type: 10 - DP
connector_type_id: 3
connection: 2 - disconnected
encoder: 0
Encoder with id 0 not found
EDID property
Blob not found
connector_id: 94
connector name HDMI-1
connector_type: 11 - HDMI
connector_type_id: 1
connection: 2 - disconnected
encoder: 0
Encoder with id 0 not found
EDID property
Blob not found
Examining /sys/class/drm...
Found connector: card0-HDMI-A-1
/sys/class/drm/card0/card0-HDMI-A-1/status: disconnected
Found connector: card0-DP-2
/sys/class/drm/card0/card0-DP-2/status: connected
I2C device: i2c-11
(query_drm_using_sysfs ) Unexpected. Bus 11 not in xref table
(query_drm_using_sysfs ) Unexpected. EDID ...20200009 not in xref table
Found connector: card0-DP-3
/sys/class/drm/card0/card0-DP-3/status: disconnected
Found connector: card0-DP-1
/sys/class/drm/card0/card0-DP-1/status: connected
I2C device: i2c-10
(query_drm_using_sysfs ) Unexpected. Bus 10 not in xref table
(query_drm_using_sysfs ) Unexpected. EDID ...20200007 not in xref table
Query file system for i2c nodes under /sys/class/drm/card*...
drwxr-xr-x 3 root root 0 Nov 25 12:48 /sys/class/drm/card0/card0-DP-1/i2c-10
drwxr-xr-x 3 root root 0 Nov 25 12:48 /sys/class/drm/card0/card0-DP-2/i2c-11
drwxr-xr-x 3 root root 0 Nov 25 12:48 /sys/class/drm/card0/card0-DP-3/i2c-12
Device Identifier Cross Reference Report
Video related contents of /etc/modprobe.d
/etc/modprobe.d/i2c.conf:alias char-major-89 i2c-dev
/etc/modprobe.d/i915-kms.conf:options i915 modeset=1
/etc/modprobe.d/options.conf:options nvidia NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=44 NVreg_DeviceFileMode=0660
/etc/modprobe.d/options.conf:# nouveau kms breaks nvidia so we are blacklisting nouveau
/etc/modprobe.d/options.conf:blacklist nouveau
/etc/modprobe.d/radeon-kms.conf:options radeon modeset=1
Env_Accumulator:
architecture: x86_64
distributor_id Devuan
Drivers detected: amdgpu
/dev/i2c device numbers:
sysfs_i2c_devices_exist: true
/sys/bus/i2c device numbers: 0 1 2 3 4 5 6 7 8 9 10 11 12
dev_i2c_devices_required: true
module_i2c_dev_needed: true
module_i2c_dev_builtin: false
loadable_i2c_dev_exists: true
i2c_dev_loaded_or_builtin: false
group_i2c_checked: true
group_i2c_exists: true
dev_i2c_common_group_name: (null)
all_dev_i2c_has_group_i2c: true
any_dev_i2c_has_group_i2c: false
all_dev_i2c_is_group_rw: true
any_dev_i2c_is_group_rw: false
cur_uname: gnarface
cur_uid: 1000
cur_user_in_group_i2c: false
cur_user_any_devi2c_rw: false
cur_user_all_devi2c_rw: true
Configuration suggestions:
Issue:
No /dev/i2c-N devices found.
I2C devices exist in /sys/bus/i2c
Module dev-i2c is required.
Module dev-i2c is not loaded
Suggestion:
Manually load module i2c-dev using the command:
sudo modprobe i2c-dev
If this solves the problem, put an entry in directory /etc/modules-load.d
that will cause i2c-dev to be loaded. Type "man modules-load.d" for details
He's using devuan - so trying to avoid systemd... so that would make it a lot different to my machines. All systemd (for my sanity). They tell me the outputs actually are DP -> DVI cables. It still worked so I assumed it found it some other way. I noticed I had to modrpboe i2c-dev to have it work... thus why this is done from our end in the setuid root too. :) Anyway...
It looks like you're assuming that continuous features have values in the range 0..100. This is common, but not fixed. The maximum value has to be obtained from the mh/ml bytes of the getvcp response. 0..255 is frequently seen, and I even had a ddcui bug report from a user whose monitor actually used values greater than 255.
Oh... thanks for that. I was going by what my monitors were saying... I didn't have any obvious information tell me otherwise. I'll fix this. I've made a note in the code right now.
The code verifies that the value read for a feature value is the same as the value set
Ahhh yes - and this was NOT because of rounding. I actually found sometimes my monitor entirely ignores a request - not rounding. Like I request to set to 30 (current level is 0) and nothing happens. If I just send another request then it works. It's probably a monitor bug. This tends to happen much more if waking up from DPMS sleep just before... this also happens to handle rounding issues like when going to 0 or 100 brightness when I really want it to be there (so end of a fade in or out it ends at the right value). But the issue here is that sometimes it just doesn't like being sent lots of changes rapidly and decides to drop some.
The binary EDID is not perfectly reliable as a unique monitor identifier. I've seen one monitor, a LG 27MU67, which has neither an ASCII nor a binary serial number. So if 2 of these monitors were manufactured in the same week, they would have identical EDIDs.
we base all our monitor detection on EDID binary hex ... PLUS output name. so the entire screen handling is EDIDHEX/OUTPUT ... this accounts for the exact same EDID but attached to a different output... but for ddc .... we don't know the output name to match this up. I couldnt see any other way to do this. FYI both my monitors are Samsung monitors I bought at the same time... they are 2 serial numbers apart.... their EDID's have this embedded and so don't match. They ... at least, are well behaved. :) Wel the monitors at home. I haven't been to the office since February ... but they monitors are different models so also don't match. But... what other solutions do we have right now? If we could somehow know the output name too ... then we can combine this with the EDID like we do for screens. The probolem is for me the device will report like /dev/i2c-6 so it's not mappable to the output name like DP0 or HDMI-1 etc. ... I at least am just now crossing my fingers and hoping people rarely have this identical EDID issue. In this case I guess I'd just say "sorry - this feature won't work for you properly". I guess I should actually put in some identical EDID detection code and at least warn them of pending doom... :)
I'll try turn on ddca_enable_sleep_suppression() as I have the above "check if value set succeeded and retry" anyway that seems necessary that would handle error cases.
oh ... sorry wrong dump from ddcutil. here:
Output level: Verbose
Reporting DDC data errors: false
Trace groups active: none
Traced functions: none
Traced files: none
Open failed for /dev/i2c-3: errno=EACCES(13): Permission denied
Open failed for /dev/i2c-4: errno=EACCES(13): Permission denied
Open failed for /dev/i2c-5: errno=EACCES(13): Permission denied
Force I2C slave address: false
User defined features: disabled
Performance and Retry Options:
Deferred sleep enabled: false
Sleep suppression (reduced sleeps) enabled: false
Dynamic sleep adjustment enabled: false
The following tests probe the runtime environment using multiple overlapping methods.
Current time (local): 2020-11-26 12:15:07 AEST
Current time (UTC): 2020-11-26 02:15:07
Seconds since boot: 8748
*** Basic System Information ***
ddcutil version: 0.9.9
/proc/version:
Linux version 5.9.9-arch1-1 (linux@archlinux) (gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35.1) #1 SMP PREEMPT Wed, 18 Nov 2020 19:52:04 +0000
Architecture: x86_64
Distributor id: Arch
Release: rolling
Found a known architecture
/proc/cmdline:
initrd=\amd-ucode.img initrd=\initramfs-linux.img root="UUID=0e426a15-59bd-431a-b3a1-ee157ac0428c" rw
Compiler information:
C standard: 201710
gcc compatible compiler:
Compiler version: 10.2.0
Processor information as reported by lscpu:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 43 bits physical, 48 bits virtual
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: AuthenticAMD
CPU family: 23
Model: 1
Model name: AMD Ryzen 3 1300X Quad-Core Processor
Stepping: 1
Frequency boost: enabled
CPU MHz: 3396.633
CPU max MHz: 3500.0000
CPU min MHz: 1550.0000
BogoMIPS: 7002.84
Virtualization: AMD-V
L1d cache: 128 KiB
L1i cache: 256 KiB
L2 cache: 2 MiB
L3 cache: 8 MiB
NUMA node0 CPU(s): 0-3
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2: Mitigation; Full AMD retpoline, IBPB conditional, STIBP disabled, RSB filling
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor smca
DMI Information from /sys/class/dmi/id:
Motherboard vendor: MSI
Motherboard product name: B350M MORTAR ARCTIC (MS-7A37)
System vendor: Micro-Star International Co., Ltd.
System product name: MS-7A37
Chassis vendor: Micro-Star International Co., Ltd.
Chassis type: 4 - Low Profile Desktop
Byte order checks:
Is big endian (local test): false
WORDS_BIGENDIAN macro (autoconf): not defined
__BYTE_ORDER__ macro (gcc): __ORDER_LITTLE_ENDIAN__
*** Primary Check 1: Identify video card and driver ***
Obtaining card and driver information from /sys...
Primary video controller at PCI address 0000:1c:00.0 (boot_vga flag is set)
Device class: x030000 VGA compatible controller
Vendor: x10de NVIDIA Corporation
Device: x1c82 GP107 [GeForce GTX 1050 Ti]
Subvendor/Subdevice: 1462/3351 Micro-Star International Co., Ltd. [MSI]
Driver name: nvidia
Driver version: 455.45.01
I2C device: i2c-3 name: NVIDIA i2c adapter 4 at 1c:00.0
I2C device: i2c-4 name: NVIDIA i2c adapter 6 at 1c:00.0
I2C device: i2c-5 name: NVIDIA i2c adapter 7 at 1c:00.0
*** Primary Check 2: Check that /dev/i2c-* exist and writable ***
Current user: matheros (1000)
Checking /dev/i2c-* devices...
Unless the system is using the AMD proprietary driver fglrx, 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------- 1 root root 89, 0 Nov 26 09:49 /dev/i2c-0
crw------- 1 root root 89, 1 Nov 26 09:49 /dev/i2c-1
crw------- 1 root root 89, 2 Nov 26 09:49 /dev/i2c-2
crw------- 1 root root 89, 3 Nov 26 09:49 /dev/i2c-3
crw------- 1 root root 89, 4 Nov 26 09:49 /dev/i2c-4
crw------- 1 root root 89, 5 Nov 26 09:49 /dev/i2c-5
Device /dev/i2c-0 is not readable and writable. Error = EACCES(13): Permission denied
Device /dev/i2c-1 is not readable and writable. Error = EACCES(13): Permission denied
Device /dev/i2c-2 is not readable and writable. Error = EACCES(13): Permission denied
Device /dev/i2c-3 is not readable and writable. Error = EACCES(13): Permission denied
Device /dev/i2c-4 is not readable and writable. Error = EACCES(13): Permission denied
Device /dev/i2c-5 is not readable and writable. Error = EACCES(13): Permission denied
WARNING: Current user (matheros) does not have RW access to all /dev/i2c-* devices.
Checking for group i2c...
Group i2c does not exist
Looking for udev rules files that reference i2c:
Checking rules directory /lib/udev/rules.d:
/lib/udev/rules.d/60-autosuspend.rules:SUBSYSTEM=="i2c", ATTR{name}=="cyapa", \
/lib/udev/rules.d/60-sensor.rules:SUBSYSTEM=="iio", KERNEL=="iio*", SUBSYSTEMS=="usb|i2c|platform", \
Checking rules directory /run/udev/rules.d:
grep: /run/udev/rules.d/*rules: No such file or directory
Checking rules directory /etc/udev/rules.d:
grep: /etc/udev/rules.d/*rules: No such file or directory
*** Primary Check 3: Check that module i2c_dev is loaded ***
Checking for module i2c_dev...
Module i2c-dev is NOT built into kernel
Loadable i2c-dev module found
Module i2c_dev is loaded
Check that kernel module i2c_dev is being loaded by examining files where this would be specified...
grep: /etc/modules: No such file or directory
grep: /etc/modules-load.d/*conf: No such file or directory
grep: /run/modules-load.d/*conf: No such file or directory
Check for any references to i2c_dev in /etc/modprobe.d ...
grep: /run/modprobe.d/*conf: No such file or directory
*** Primary Check 4: Driver specific checks ***
Performing driver specific checks...
Checking for special settings for proprietary Nvidia driver
(Needed for some newer Nvidia cards).
grep: /etc/X11/xorg.conf: No such file or directory
grep: /etc/X11/xorg.conf.d/*: No such file or directory
*** Additional probes ***
Scanning /proc/modules for driver environment...
Found other loaded module: videobuf2_vmalloc
Found other loaded module: videobuf2_memops
Found other loaded module: videobuf2_v4l2
Found other loaded module: videobuf2_common
Found other loaded module: videodev
Found other loaded module: i2c_dev
Found video driver module: nvidia
Found other loaded module: drm_kms_helper
Found other loaded module: i2c_piix4
Loaded drm module depends on: nvidia_drm,drm_kms_helper,
Testing if modules are loaded using /sys...
Module amdgpu is NOT loaded
Module fbdev is NOT loaded
Module fglrx is NOT loaded
Module fturbo is NOT loaded
Module i915 is NOT loaded
Module mgag200 is NOT loaded
Module nvidia is loaded
Module nouveau is NOT loaded
Module radeon is NOT loaded
Module vboxvideo is NOT loaded
Module vc4 is NOT loaded
Module drm is loaded
Module i2c_algo_bit is NOT loaded
Module i2c_dev is loaded
Module i2c_piix4 is loaded
Module ddcci is NOT loaded
Examining /sys/bus/i2c/devices...
/sys/bus/i2c/devices/i2c-3/name: NVIDIA i2c adapter 4 at 1c:00.0
/sys/bus/i2c/devices/i2c-1/name: SMBus PIIX4 adapter port 2 at 0b00
/sys/bus/i2c/devices/i2c-4/name: NVIDIA i2c adapter 6 at 1c:00.0
/sys/bus/i2c/devices/i2c-2/name: SMBus PIIX4 adapter port 1 at 0b20
/sys/bus/i2c/devices/i2c-0/name: SMBus PIIX4 adapter port 0 at 0b00
/sys/bus/i2c/devices/i2c-5/name: NVIDIA i2c adapter 7 at 1c:00.0
Examining /proc/driver/nvidia:
/proc/driver/nvidia/version:
NVRM version: NVIDIA UNIX x86_64 Kernel Module 455.45.01 Thu Nov 5 23:03:56 UTC 2020
GCC version: gcc version 10.2.0 (GCC)
/proc/driver/nvidia/registry:
Binary: ""
/proc/driver/nvidia/params:
ResmanDebugLevel: 4294967295
RmLogonRC: 1
ModifyDeviceFiles: 1
DeviceFileUID: 0
DeviceFileGID: 0
DeviceFileMode: 438
InitializeSystemMemoryAllocations: 1
UsePageAttributeTable: 4294967295
EnableMSI: 1
RegisterForACPIEvents: 1
EnablePCIeGen3: 0
MemoryPoolSize: 0
KMallocHeapMaxSize: 0
VMallocHeapMaxSize: 0
IgnoreMMIOCheck: 0
TCEBypassMode: 0
EnableStreamMemOPs: 0
EnableBacklightHandler: 1
EnableUserNUMAManagement: 1
NvLinkDisable: 0
RmProfilingAdminOnly: 1
PreserveVideoMemoryAllocations: 0
DynamicPowerManagement: 0
DynamicPowerManagementVideoMemoryThreshold: 200
RegisterPCIDriver: 1
EnablePCIERelaxedOrderingMode: 0
RegistryDwords: ""
RegistryDwordsPerDevice: ""
RmMsg: ""
AssignGpus: ""
GpuBlacklist: ""
TemporaryFilePath: ""
PCI bus id: 0000:1c:00.0
/proc/driver/nvidia/gpus/0000:1c:00.0/information:
Model: GeForce GTX 1050 Ti
IRQ: 68
GPU UUID: GPU-f3377428-8e9d-9e1d-6efb-a9bb5253c6c5
Video BIOS: 86.07.39.00.e9
Bus Type: PCIe
DMA Size: 47 bits
DMA Mask: 0x7fffffffffff
Bus Location: 0000:1c:00.0
Device Minor: 0
Blacklisted: No
/proc/driver/nvidia/gpus/0000:1c:00.0/registry:
Binary: ""
Examining I2C buses, as detected by I2C layer...
Current time (local): 2020-11-26 12:15:07 AEST
Current time (UTC): 2020-11-26 02:15:07
Seconds since boot: 8748
Detected 3 non-ignorable I2C buses:
Bus /dev/i2c-3 found: true
Bus /dev/i2c-3 probed: true
Bus accessible: false
Bus is eDP: false
Valid bus name checked: true
I2C bus has valid name: true
Address 0x37 present: false
Address 0x50 present: false
Bus /dev/i2c-4 found: true
Bus /dev/i2c-4 probed: true
Bus accessible: false
Bus is eDP: false
Valid bus name checked: true
I2C bus has valid name: true
Address 0x37 present: false
Address 0x50 present: false
Bus /dev/i2c-5 found: true
Bus /dev/i2c-5 probed: true
Bus accessible: false
Bus is eDP: false
Valid bus name checked: true
I2C bus has valid name: true
Address 0x37 present: false
Address 0x50 present: false
xrandr connection report:
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 697mm x 392mm
DP-1 disconnected (normal left inverted right x axis y axis)
Checking for possibly conflicting programs...
Examining I2C buses using i2cdetect...
Current time (local): 2020-11-26 12:15:07 AEST
Current time (UTC): 2020-11-26 02:15:07
Seconds since boot: 8748
Device /dev/i2c-0 is a SMBus or other ignorable device. Skipping i2cdetect.
Device /dev/i2c-1 is a SMBus or other ignorable device. Skipping i2cdetect.
Device /dev/i2c-2 is a SMBus or other ignorable device. Skipping i2cdetect.
Probing bus /dev/i2c-3 using command "i2cdetect -y 3"
i2cdetect command unavailable
Performing basic scan of I2C devices using local sysenv functions...
Current time (local): 2020-11-26 12:15:07 AEST
Current time (UTC): 2020-11-26 02:15:07
Seconds since boot: 8748
Examining device /dev/i2c-0...
Device /dev/i2c-0 is a SMBus or other ignorable device. Skipping.
Examining device /dev/i2c-1...
Device /dev/i2c-1 is a SMBus or other ignorable device. Skipping.
Examining device /dev/i2c-2...
Device /dev/i2c-2 is a SMBus or other ignorable device. Skipping.
Examining device /dev/i2c-3...
Device /dev/i2c-3 is not readable and writable. Error = EACCES(13): Permission denied
Examining device /dev/i2c-4...
Device /dev/i2c-4 is not readable and writable. Error = EACCES(13): Permission denied
Examining device /dev/i2c-5...
Device /dev/i2c-5 is not readable and writable. Error = EACCES(13): Permission denied
EDIDs reported by X11 for connected xrandr outputs:
xrandr output: DP-0
Raw EDID:
+0 +4 +8 +c 0 4 8 c
+0000 00 ff ff ff ff ff ff 00 1e 6d 2a 77 f1 2f 03 00 .........m*w./..
+0010 03 1e 01 04 b5 46 27 78 9e 05 95 a7 56 51 9c 25 .....F'x....VQ.%
+0020 15 50 54 25 6b 80 71 40 81 80 81 c0 a9 c0 b3 00 .PT%k.q@........
+0030 d1 c0 81 00 d1 cf 56 5e 00 a0 a0 a0 29 50 30 20 ......V^....)P0
+0040 35 00 b9 88 21 00 00 1a d9 76 00 a0 a0 a0 34 50 5...!....v....4P
+0050 30 20 35 00 b9 88 21 00 00 1a 00 00 00 fd 00 32 0 5...!........2
+0060 90 1e e6 3c 00 0a 20 20 20 20 20 20 00 00 00 fc ...<.. ....
+0070 00 4c 47 20 51 48 44 0a 20 20 20 20 20 20 01 44 .LG QHD. .D
EDID synopsis:
Mfg id: GSM
Model: LG QHD
Serial number:
Manufacture year: 2020
EDID version: 1.4
Product code: 30506
Binary sn: 208881 (0x00032ff1)
Extra descriptor:
Video input definition: 0xb5 - Digital Input (DisplayPort)
Supported features:
DPMS standby
Digital display type: RGB 4:4:4 + YCrCb 4:2:2
Standard sRGB color space: True
White x,y: 0.313, 0.329
Red x,y: 0.652, 0.336
Green x,y: 0.317, 0.610
Blue x,y: 0.146, 0.083
Extension blocks: 1
EDID source:
(query_x11 ) EDID not found
Probing I2C devices using udev, susbsystem i2c-dev...
Current time (local): 2020-11-26 12:15:07 AEST
Current time (UTC): 2020-11-26 02:15:07
Seconds since boot: 8748
Summary of udev I2C devices
Subsystem Sysname Sysattr Name Devpath
i2c-dev i2c-0 SMBus PIIX4 adapter port 0 at 0b00 /devices/pci0000:00/0000:00:14.0/i2c-0/i2c-dev/i2c-0
i2c-dev i2c-1 SMBus PIIX4 adapter port 2 at 0b00 /devices/pci0000:00/0000:00:14.0/i2c-1/i2c-dev/i2c-1
i2c-dev i2c-2 SMBus PIIX4 adapter port 1 at 0b20 /devices/pci0000:00/0000:00:14.0/i2c-2/i2c-dev/i2c-2
i2c-dev i2c-3 NVIDIA i2c adapter 4 at 1c:00.0 /devices/pci0000:00/0000:00:03.1/0000:1c:00.0/i2c-3/i2c-dev/i2c-3
i2c-dev i2c-4 NVIDIA i2c adapter 6 at 1c:00.0 /devices/pci0000:00/0000:00:03.1/0000:1c:00.0/i2c-4/i2c-dev/i2c-4
i2c-dev i2c-5 NVIDIA i2c adapter 7 at 1c:00.0 /devices/pci0000:00/0000:00:03.1/0000:1c:00.0/i2c-5/i2c-dev/i2c-5
Looking for udev devices with name attribute DPMST...
Summary of udev DPMST devices...
No devices detected
amdgpu configuration parameters:
Examining configuration files...
DKMS modules:
hid-xpadneo, 0.9.r1.g84cabe9, 5.9.9-arch1-1, x86_64: installed
Kernel I2C configuration settings:
grep: /boot/config-5.9.9-arch1-1: Permission denied
Kernel AMDGPU configuration settings:
grep: /boot/config-5.9.9-arch1-1: Permission denied
Examining system logs...
Current timestamps:
Current time (local): 2020-11-26 12:15:08 AEST
Current time (UTC): 2020-11-26 02:15:08
Seconds since boot: 8749
Scanning dmesg output for I2C related entries...
Executing command: dmesg
[ 0.295145] ACPI: Added _OSI(Linux-Dell-Video)
[ 0.355290] pci 0000:1c:00.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[ 2.789487] systemd[1]: Starting Load Kernel Module drm...
[ 2.818566] systemd[1]: [email protected]: Succeeded.
[ 2.818806] systemd[1]: Finished Load Kernel Module drm.
[ 4.114041] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.1/0000:1c:00.1/sound/card0/input3
[ 4.114085] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.1/0000:1c:00.1/sound/card0/input4
[ 4.114116] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.1/0000:1c:00.1/sound/card0/input5
[ 4.114145] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:03.1/0000:1c:00.1/sound/card0/input6
[ 4.114174] input: HDA NVidia HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:03.1/0000:1c:00.1/sound/card0/input7
[ 4.114203] input: HDA NVidia HDMI/DP,pcm=11 as /devices/pci0000:00/0000:00:03.1/0000:1c:00.1/sound/card0/input8
[ 4.479536] Modules linked in: ccm bnep algif_aead btusb btrtl cbc btbcm btintel hid_generic(+) des_generic bluetooth libdes ecb edac_mce_amd algif_skcipher kvm_amd usbhid iptable_nat cmac hid nf_nat kvm snd_hda_codec_realtek md4 nf_conntrack snd_hda_codec_hdmi snd_hda_codec_generic algif_hash ledtrig_audio nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c af_alg apple_mfi_fastcharge iptable_mangle iwlmvm snd_hda_intel ecdh_generic iptable_filter ecc irqbypass crct10dif_pclmul crc32_pclmul wmi_bmof snd_intel_dspcfg snd_hda_codec mac80211 ghash_clmulni_intel ppdev snd_hda_core libarc4 aesni_intel crypto_simd cryptd glue_helper snd_hwdep drm_kms_helper rapl iwlwifi snd_pcm cec pcspkr r8169 sp5100_tco snd_timer k10temp ccp i2c_piix4 rc_core syscopyarea cfg80211 realtek sysfillrect snd sysimgblt rng_core soundcore fb_sys_fops mdio_devres of_mdio fixed_phy libphy rfkill wmi parport_pc parport pinctrl_amd gpio_amdpt evdev mac_hid acpi_cpufreq drm pkcs8_key_parser crypto_user agpgart ip_tables x_tables
[ 4.872843] nvidia: loading out-of-tree module taints kernel.
[ 4.872852] nvidia: module license 'NVIDIA' taints kernel.
[ 4.882808] nvidia: module verification failed: signature and/or required key missing - tainting kernel
[ 4.898463] nvidia-nvlink: Nvlink Core is being initialized, major device number 237
[ 4.898973] nvidia 0000:1c:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=io+mem
[ 5.015669] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 455.45.01 Thu Nov 5 23:03:56 UTC 2020
[ 5.052184] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 455.45.01 Thu Nov 5 22:55:44 UTC 2020
[ 5.055754] [drm] [nvidia-drm] [GPU ID 0x00001c00] Loading driver
[ 5.055756] [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:1c:00.0 on minor 0
[ 5.496416] caller _nv000709rm+0x1af/0x200 [nvidia] mapping multiple BARs
[ 4038.294826] usb 3-3: Product: AN-VC400 Camera
[ 4038.347389] videodev: Linux video capture interface: v2.00
[ 4038.362115] uvcvideo: Found UVC 1.00 device AN-VC400 Camera (043e:3009)
[ 4038.364957] input: AN-VC400 Camera as /devices/pci0000:00/0000:00:07.1/0000:1d:00.3/usb3/3-3/3-3:1.0/input/input23
[ 4038.365055] usbcore: registered new interface driver uvcvideo
[ 4038.365055] USB Video Class driver (1.1.1)
Scanning journalctl output for I2C related entries...
Executing command: journalctl --no-pager --boot
Nov 26 09:49:23 Turmeric kernel: ACPI: Added _OSI(Linux-Dell-Video)
Nov 26 09:49:23 Turmeric kernel: pci 0000:1c:00.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
Nov 26 09:49:23 Turmeric systemd[1]: Starting Load Kernel Module drm...
Nov 26 09:49:23 Turmeric systemd[1]: [email protected]: Succeeded.
Nov 26 09:49:23 Turmeric systemd[1]: Finished Load Kernel Module drm.
Nov 26 09:49:24 Turmeric kernel: input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.1/0000:1c:00.1/sound/card0/input3
Nov 26 09:49:24 Turmeric kernel: input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.1/0000:1c:00.1/sound/card0/input4
Nov 26 09:49:24 Turmeric kernel: input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.1/0000:1c:00.1/sound/card0/input5
Nov 26 09:49:24 Turmeric kernel: input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:03.1/0000:1c:00.1/sound/card0/input6
Nov 26 09:49:24 Turmeric kernel: input: HDA NVidia HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:03.1/0000:1c:00.1/sound/card0/input7
Nov 26 09:49:24 Turmeric kernel: input: HDA NVidia HDMI/DP,pcm=11 as /devices/pci0000:00/0000:00:03.1/0000:1c:00.1/sound/card0/input8
Nov 26 09:49:24 Turmeric kernel: Modules linked in: ccm bnep algif_aead btusb btrtl cbc btbcm btintel hid_generic(+) des_generic bluetooth libdes ecb edac_mce_amd algif_skcipher kvm_amd usbhid iptable_nat cmac hid nf_nat kvm snd_hda_codec_realtek md4 nf_conntrack snd_hda_codec_hdmi snd_hda_codec_generic algif_hash ledtrig_audio nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c af_alg apple_mfi_fastcharge iptable_mangle iwlmvm snd_hda_intel ecdh_generic iptable_filter ecc irqbypass crct10dif_pclmul crc32_pclmul wmi_bmof snd_intel_dspcfg snd_hda_codec mac80211 ghash_clmulni_intel ppdev snd_hda_core libarc4 aesni_intel crypto_simd cryptd glue_helper snd_hwdep drm_kms_helper rapl iwlwifi snd_pcm cec pcspkr r8169 sp5100_tco snd_timer k10temp ccp i2c_piix4 rc_core syscopyarea cfg80211 realtek sysfillrect snd sysimgblt rng_core soundcore fb_sys_fops mdio_devres of_mdio fixed_phy libphy rfkill wmi parport_pc parport pinctrl_amd gpio_amdpt evdev mac_hid acpi_cpufreq drm pkcs8_key_parser crypto_user agpgart ip_tables x_tables
Nov 26 09:49:24 Turmeric systemd[1]: Condition check resulted in Load Kernel Module drm being skipped.
Nov 26 09:49:24 Turmeric kernel: nvidia: loading out-of-tree module taints kernel.
Nov 26 09:49:24 Turmeric kernel: nvidia: module license 'NVIDIA' taints kernel.
Nov 26 09:49:24 Turmeric kernel: nvidia: module verification failed: signature and/or required key missing - tainting kernel
Nov 26 09:49:24 Turmeric kernel: nvidia-nvlink: Nvlink Core is being initialized, major device number 237
Nov 26 09:49:24 Turmeric kernel: nvidia 0000:1c:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=io+mem
Nov 26 09:49:25 Turmeric kernel: NVRM: loading NVIDIA UNIX x86_64 Kernel Module 455.45.01 Thu Nov 5 23:03:56 UTC 2020
Nov 26 09:49:25 Turmeric kernel: nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 455.45.01 Thu Nov 5 22:55:44 UTC 2020
Nov 26 09:49:25 Turmeric kernel: [drm] [nvidia-drm] [GPU ID 0x00001c00] Loading driver
Nov 26 09:49:25 Turmeric kernel: [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:1c:00.0 on minor 0
Nov 26 09:49:25 Turmeric kernel: caller _nv000709rm+0x1af/0x200 [nvidia] mapping multiple BARs
Nov 26 09:49:26 Turmeric root[494]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 09:49:27 Turmeric root[535]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 09:49:27 Turmeric root[544]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 09:49:27 Turmeric root[548]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 09:49:27 Turmeric root[552]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 09:49:27 Turmeric root[556]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 09:49:27 Turmeric root[560]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 09:49:27 Turmeric root[564]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 09:49:27 Turmeric root[568]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 09:49:27 Turmeric root[572]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 09:49:27 Turmeric root[576]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 10:34:13 Turmeric root[2511]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 10:34:16 Turmeric root[2526]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 10:43:16 Turmeric root[2600]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 10:43:18 Turmeric root[2609]: ACPI group/action undefined: jack/videoout / VIDEOOUT
Nov 26 10:56:38 Turmeric kernel: usb 3-3: Product: AN-VC400 Camera
Nov 26 10:56:38 Turmeric kernel: videodev: Linux video capture interface: v2.00
Nov 26 10:56:38 Turmeric kernel: uvcvideo: Found UVC 1.00 device AN-VC400 Camera (043e:3009)
Nov 26 10:56:38 Turmeric kernel: input: AN-VC400 Camera as /devices/pci0000:00/0000:00:07.1/0000:1d:00.3/usb3/3-3/3-3:1.0/input/input23
Nov 26 10:56:38 Turmeric kernel: usbcore: registered new interface driver uvcvideo
Nov 26 10:56:38 Turmeric kernel: USB Video Class driver (1.1.1)
Scanning file: /var/log/Xorg.0.log
Limiting output to first 200 relevant lines...
[ 5.101] X.Org Video Driver: 24.1
[ 5.102] (II) xfree86: Adding drm device (/dev/dri/card0)
[ 5.103] (**) OutputClass "nvidia" ModulePath extended to "/usr/lib/nvidia/xorg,/usr/lib/xorg/modules,/usr/lib/xorg/modules"
[ 5.106] (II) Applying OutputClass "nvidia" to /dev/dri/card0
[ 5.106] loading driver: nvidia
[ 5.106] (==) Matched nvidia as autoconfigured driver 0
[ 5.106] (==) Matched nouveau as autoconfigured driver 1
[ 5.106] (==) Matched fbdev as autoconfigured driver 4
[ 5.106] (II) LoadModule: "nvidia"
[ 5.106] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
[ 5.108] (II) Module nvidia: vendor="NVIDIA Corporation"
[ 5.108] Module class: X.Org Video Driver
[ 5.109] (II) LoadModule: "nouveau"
[ 5.109] (WW) Warning, couldn't open module nouveau
[ 5.109] (EE) Failed to load module "nouveau" (module does not exist, 0)
[ 5.109] Module class: X.Org Video Driver
[ 5.109] ABI class: X.Org Video Driver, version 24.1
[ 5.109] (II) LoadModule: "fbdev"
[ 5.109] (WW) Warning, couldn't open module fbdev
[ 5.109] (EE) Failed to load module "fbdev" (module does not exist, 0)
[ 5.109] Module class: X.Org Video Driver
[ 5.109] ABI class: X.Org Video Driver, version 24.1
[ 5.110] (II) NVIDIA dlloader X Driver 455.45.01 Thu Nov 5 23:01:05 UTC 2020
[ 5.110] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
[ 5.113] (II) NVIDIA(0): Creating default Display subsection in Screen section
[ 5.113] (==) NVIDIA(0): Depth 24, (==) framebuffer bpp 32
[ 5.113] (==) NVIDIA(0): RGB weight 888
[ 5.113] (==) NVIDIA(0): Default visual is TrueColor
[ 5.113] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
[ 5.113] (II) Applying OutputClass "nvidia" options to /dev/dri/card0
[ 5.113] (**) NVIDIA(0): Option "AllowEmptyInitialConfiguration"
[ 5.114] (**) NVIDIA(0): Enabling 2D acceleration
[ 5.114] (II) Loading sub module "glxserver_nvidia"
[ 5.114] (II) LoadModule: "glxserver_nvidia"
[ 5.114] (II) Loading /usr/lib/nvidia/xorg/libglxserver_nvidia.so
[ 5.155] (II) Module glxserver_nvidia: vendor="NVIDIA Corporation"
[ 5.155] (II) NVIDIA GLX Module 455.45.01 Thu Nov 5 22:58:18 UTC 2020
[ 5.157] (II) NVIDIA: The X server supports PRIME Render Offload.
[ 5.930] (--) NVIDIA(0): Valid display device(s) on GPU-0 at PCI:28:0:0
[ 5.930] (--) NVIDIA(0): DFP-0
[ 5.930] (--) NVIDIA(0): DFP-1
[ 5.930] (--) NVIDIA(0): DFP-2 (boot)
[ 5.930] (--) NVIDIA(0): DFP-3
[ 5.930] (II) NVIDIA(0): NVIDIA GPU GeForce GTX 1050 Ti (GP107-A) at PCI:28:0:0
[ 5.930] (II) NVIDIA(0): (GPU-0)
[ 5.930] (--) NVIDIA(0): Memory: 4194304 kBytes
[ 5.930] (--) NVIDIA(0): VideoBIOS: 86.07.39.00.e9
[ 5.930] (II) NVIDIA(0): Detected PCI Express Link width: 16X
[ 5.930] (--) NVIDIA(GPU-0): DFP-0: disconnected
[ 5.930] (--) NVIDIA(GPU-0): DFP-0: Internal TMDS
[ 5.930] (--) NVIDIA(GPU-0): DFP-0: 330.0 MHz maximum pixel clock
[ 5.930] (--) NVIDIA(GPU-0):
[ 5.931] (--) NVIDIA(GPU-0): DFP-1: disconnected
[ 5.931] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
[ 5.931] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
[ 5.931] (--) NVIDIA(GPU-0):
[ 5.931] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): connected
[ 5.931] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): Internal DisplayPort
[ 5.931] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): 1440.0 MHz maximum pixel clock
[ 5.931] (--) NVIDIA(GPU-0):
[ 5.932] (--) NVIDIA(GPU-0): DFP-3: disconnected
[ 5.932] (--) NVIDIA(GPU-0): DFP-3: Internal TMDS
[ 5.932] (--) NVIDIA(GPU-0): DFP-3: 165.0 MHz maximum pixel clock
[ 5.932] (--) NVIDIA(GPU-0):
[ 5.936] (==) NVIDIA(0):
[ 5.936] (==) NVIDIA(0): No modes were requested; the default mode "nvidia-auto-select"
[ 5.936] (==) NVIDIA(0): will be used as the requested mode.
[ 5.936] (==) NVIDIA(0):
[ 5.936] (II) NVIDIA(0): Validated MetaModes:
[ 5.936] (II) NVIDIA(0): "DFP-2:nvidia-auto-select"
[ 5.936] (II) NVIDIA(0): Virtual screen size determined to be 2560 x 1440
[ 5.942] (--) NVIDIA(0): DPI set to (92, 93); computed from "UseEdidDpi" X config
[ 5.942] (--) NVIDIA(0): option
[ 5.943] (II) NVIDIA: Using 24576.00 MB of virtual memory for indirect memory
[ 5.943] (II) NVIDIA: access.
[ 5.959] (II) NVIDIA(0): Setting mode "DFP-2:nvidia-auto-select"
[ 6.035] (==) NVIDIA(0): Disabling shared memory pixmaps
[ 6.035] (==) NVIDIA(0): Backing store enabled
[ 6.035] (==) NVIDIA(0): Silken mouse disabled
[ 6.035] (==) NVIDIA(0): DPMS enabled
[ 6.035] (II) NVIDIA(0): [DRI2] Setup complete
[ 6.035] (II) NVIDIA(0): [DRI2] VDPAU driver: nvidia
[ 6.038] (II) Initializing extension XVideo
[ 6.038] (II) Initializing extension XVideo-MotionCompensation
[ 6.522] (II) config/udev: Adding input device HDA NVidia HDMI/DP,pcm=3 (/dev/input/event3)
[ 6.522] (II) config/udev: Adding input device HDA NVidia HDMI/DP,pcm=7 (/dev/input/event4)
[ 6.522] (II) config/udev: Adding input device HDA NVidia HDMI/DP,pcm=8 (/dev/input/event5)
[ 6.523] (II) config/udev: Adding input device HDA NVidia HDMI/DP,pcm=9 (/dev/input/event6)
[ 6.523] (II) config/udev: Adding input device HDA NVidia HDMI/DP,pcm=10 (/dev/input/event7)
[ 6.523] (II) config/udev: Adding input device HDA NVidia HDMI/DP,pcm=11 (/dev/input/event8)
[ 6.528] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): connected
[ 6.528] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): Internal DisplayPort
[ 6.528] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): 1440.0 MHz maximum pixel clock
[ 6.528] (--) NVIDIA(GPU-0):
[ 7.032] (--) NVIDIA(GPU-0): DFP-0: disconnected
[ 7.032] (--) NVIDIA(GPU-0): DFP-0: Internal TMDS
[ 7.032] (--) NVIDIA(GPU-0): DFP-0: 330.0 MHz maximum pixel clock
[ 7.032] (--) NVIDIA(GPU-0):
[ 7.032] (--) NVIDIA(GPU-0): DFP-1: disconnected
[ 7.032] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
[ 7.032] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
[ 7.032] (--) NVIDIA(GPU-0):
[ 7.032] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): connected
[ 7.032] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): Internal DisplayPort
[ 7.032] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): 1440.0 MHz maximum pixel clock
[ 7.032] (--) NVIDIA(GPU-0):
[ 7.033] (--) NVIDIA(GPU-0): DFP-3: disconnected
[ 7.033] (--) NVIDIA(GPU-0): DFP-3: Internal TMDS
[ 7.033] (--) NVIDIA(GPU-0): DFP-3: 165.0 MHz maximum pixel clock
[ 7.033] (--) NVIDIA(GPU-0):
[ 7.037] (--) NVIDIA(GPU-0): DFP-0: disconnected
[ 7.037] (--) NVIDIA(GPU-0): DFP-0: Internal TMDS
[ 7.037] (--) NVIDIA(GPU-0): DFP-0: 330.0 MHz maximum pixel clock
[ 7.037] (--) NVIDIA(GPU-0):
[ 7.037] (--) NVIDIA(GPU-0): DFP-1: disconnected
[ 7.037] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
[ 7.037] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
[ 7.037] (--) NVIDIA(GPU-0):
[ 7.037] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): connected
[ 7.037] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): Internal DisplayPort
[ 7.037] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): 1440.0 MHz maximum pixel clock
[ 7.037] (--) NVIDIA(GPU-0):
[ 7.038] (--) NVIDIA(GPU-0): DFP-3: disconnected
[ 7.038] (--) NVIDIA(GPU-0): DFP-3: Internal TMDS
[ 7.038] (--) NVIDIA(GPU-0): DFP-3: 165.0 MHz maximum pixel clock
[ 7.038] (--) NVIDIA(GPU-0):
[ 7.043] (II) NVIDIA(0): Setting mode "DP-0: 2560x1440_144 @2560x1440 +0+0 {ViewPortIn=2560x1440, ViewPortOut=2560x1440+0+0}"
[ 7.109] (II) NVIDIA(0): Setting mode "DP-0: 2560x1440_144 @2560x1440 +0+0 {ViewPortIn=2560x1440, ViewPortOut=2560x1440+0+0}"
[ 7.154] (II) NVIDIA(0): Setting mode "DP-0: 2560x1440_144 @2560x1440 +0+0 {ViewPortIn=2560x1440, ViewPortOut=2560x1440+0+0}"
[ 7.198] (II) NVIDIA(0): Setting mode "DP-0: 2560x1440_144 @2560x1440 +0+0 {ViewPortIn=2560x1440, ViewPortOut=2560x1440+0+0}"
[ 7.242] (II) NVIDIA(0): Setting mode "DP-0: 2560x1440_144 @2560x1440 +0+0 {ViewPortIn=2560x1440, ViewPortOut=2560x1440+0+0}"
[ 8.359] (--) NVIDIA(GPU-0): DFP-0: disconnected
[ 8.359] (--) NVIDIA(GPU-0): DFP-0: Internal TMDS
[ 8.359] (--) NVIDIA(GPU-0): DFP-0: 330.0 MHz maximum pixel clock
[ 8.359] (--) NVIDIA(GPU-0):
[ 8.359] (--) NVIDIA(GPU-0): DFP-1: disconnected
[ 8.359] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
[ 8.359] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
[ 8.359] (--) NVIDIA(GPU-0):
[ 8.359] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): connected
[ 8.360] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): Internal DisplayPort
[ 8.360] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): 1440.0 MHz maximum pixel clock
[ 8.360] (--) NVIDIA(GPU-0):
[ 8.361] (--) NVIDIA(GPU-0): DFP-3: disconnected
[ 8.361] (--) NVIDIA(GPU-0): DFP-3: Internal TMDS
[ 8.361] (--) NVIDIA(GPU-0): DFP-3: 165.0 MHz maximum pixel clock
[ 8.361] (--) NVIDIA(GPU-0):
[ 8.361] (--) NVIDIA(GPU-0): DFP-0: disconnected
[ 8.361] (--) NVIDIA(GPU-0): DFP-0: Internal TMDS
[ 8.361] (--) NVIDIA(GPU-0): DFP-0: 330.0 MHz maximum pixel clock
[ 8.361] (--) NVIDIA(GPU-0):
[ 8.361] (--) NVIDIA(GPU-0): DFP-1: disconnected
[ 8.361] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
[ 8.361] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
[ 8.361] (--) NVIDIA(GPU-0):
[ 8.361] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): connected
[ 8.361] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): Internal DisplayPort
[ 8.361] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): 1440.0 MHz maximum pixel clock
[ 8.361] (--) NVIDIA(GPU-0):
[ 8.362] (--) NVIDIA(GPU-0): DFP-3: disconnected
[ 8.362] (--) NVIDIA(GPU-0): DFP-3: Internal TMDS
[ 8.362] (--) NVIDIA(GPU-0): DFP-3: 165.0 MHz maximum pixel clock
[ 8.362] (--) NVIDIA(GPU-0):
[ 8.363] (--) NVIDIA(GPU-0): DFP-0: disconnected
[ 8.363] (--) NVIDIA(GPU-0): DFP-0: Internal TMDS
[ 8.363] (--) NVIDIA(GPU-0): DFP-0: 330.0 MHz maximum pixel clock
[ 8.363] (--) NVIDIA(GPU-0):
[ 8.363] (--) NVIDIA(GPU-0): DFP-1: disconnected
[ 8.363] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
[ 8.363] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
[ 8.363] (--) NVIDIA(GPU-0):
[ 8.363] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): connected
[ 8.363] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): Internal DisplayPort
[ 8.363] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): 1440.0 MHz maximum pixel clock
[ 8.363] (--) NVIDIA(GPU-0):
[ 8.364] (--) NVIDIA(GPU-0): DFP-3: disconnected
[ 8.364] (--) NVIDIA(GPU-0): DFP-3: Internal TMDS
[ 8.364] (--) NVIDIA(GPU-0): DFP-3: 165.0 MHz maximum pixel clock
[ 8.364] (--) NVIDIA(GPU-0):
[ 8.365] (--) NVIDIA(GPU-0): DFP-0: disconnected
[ 8.365] (--) NVIDIA(GPU-0): DFP-0: Internal TMDS
[ 8.365] (--) NVIDIA(GPU-0): DFP-0: 330.0 MHz maximum pixel clock
[ 8.365] (--) NVIDIA(GPU-0):
[ 8.365] (--) NVIDIA(GPU-0): DFP-1: disconnected
[ 8.365] (--) NVIDIA(GPU-0): DFP-1: Internal TMDS
[ 8.365] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
[ 8.365] (--) NVIDIA(GPU-0):
[ 8.365] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): connected
[ 8.365] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): Internal DisplayPort
[ 8.365] (--) NVIDIA(GPU-0): LG Electronics LG QHD (DFP-2): 1440.0 MHz maximum pixel clock
[ 8.365] (--) NVIDIA(GPU-0):
[ 8.366] (--) NVIDIA(GPU-0): DFP-3: disconnected
[ 8.366] (--) NVIDIA(GPU-0): DFP-3: Internal TMDS
[ 8.366] (--) NVIDIA(GPU-0): DFP-3: 165.0 MHz maximum pixel clock
[ 8.366] (--) NVIDIA(GPU-0):
[ 8.366] (--) NVIDIA(GPU-0): DFP-0: disconnected
[ 8.366] (--) NVIDIA(GPU-0): DFP-0: Internal TMDS
[ 8.366] (--) NVIDIA(GPU-0): DFP-0: 330.0 MHz maximum pixel clock
[ 8.366] (--) NVIDIA(GPU-0):
[ 8.366] (--) NVIDIA(GPU-0): DFP-1: disconnected
File not found: /var/log/messages
File not found: /var/log/kern.log
File not found: /var/log/daemon.log
File not found: /var/log/syslog
Log Summary
Log Checked Found
=== ======= =====
dmesg true true
journalctl true false
/var/log/daemon.log true false
/var/log/kern.log true false
/var/log/messages true false
/var/log/syslog true false
/var/log/Xorg.0.log true true
Probing connected monitors using libdrm...
Checking Nvidia options to see if experimental kernel modesetting enabled:
Executing command: modprobe -c | grep "^options nvidia"
Checking libdrm version using pkg-config...
2.4.103
Has a DRM kernel driver been loaded? (drmAvailable()): true
Probing device /dev/dri/card0...
Open succeeded for device: /dev/dri/card0
DRM driver version information:
Version: 0.0.0
Driver: nvidia-drm
Date: 20160202
Description: NVIDIA DRM driver
DRM library version: 1.3.0.
DRM Busid:
Device information:
bustype: 0 - pci
domain:bus:device.func: 0000:1c:00.0
vendor vid:pid: 0x10de:0x1c82
subvendor vid:pid: 0x1462:0x3351
revision id: 0x00a1
Is a modesetting capable driver attached to bus id: pci:0000:1c:00.0?
(calling drmCheckModesettingAvailable())
Modesetting not supported (-ENOSYS)
Retrieving DRM resources...
Failure retrieving DRM resources, errno=EOPNOTSUPP(95): Operation not supported
Examining /sys/class/drm...
Query file system for i2c nodes under /sys/class/drm/card*...
ls: cannot access '/sys/class/drm/card*/card*/i2c*': No such file or directory
Device Identifier Cross Reference Report
Video related contents of /etc/modprobe.d
Env_Accumulator:
architecture: x86_64
distributor_id Arch
Drivers detected: nvidia
/dev/i2c device numbers: 0 1 2 3 4 5
sysfs_i2c_devices_exist: true
/sys/bus/i2c device numbers: 0 1 2 3 4 5
dev_i2c_devices_required: true
module_i2c_dev_needed: true
module_i2c_dev_builtin: false
loadable_i2c_dev_exists: true
i2c_dev_loaded_or_builtin: true
group_i2c_checked: true
group_i2c_exists: false
dev_i2c_common_group_name: root
all_dev_i2c_has_group_i2c: false
any_dev_i2c_has_group_i2c: false
all_dev_i2c_is_group_rw: true
any_dev_i2c_is_group_rw: false
cur_uname: matheros
cur_uid: 1000
cur_user_in_group_i2c: false
cur_user_any_devi2c_rw: false
cur_user_all_devi2c_rw: false
Configuration suggestions:
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.
Is it possible for user gnarface to rerun "ddcutil environment --verbose" built from the 1.0.0-dev branch? That is the version that contains the detailed analysis of /sys. Also, the command needs to be run as root, as that is needed for the extended checks for the "--verbose" option.
It's unclear to me why you sent the second listing for user matheros. Does this system also exhibit the missing status attribute? Again, I would need the detailed analysis of /sys provided by "ddcutil environment --verbose" in branch 1.1.0-dev. And again, the command should be run as root.
Please send voluminous output as attachments rather than inline. They're hard to make sense of without copying the output to separate files, and more importantly they make it hard to follow the thread of an issue.
Re your additional comments:
For our purposes the major difference between VGA/DVI/HDMI and DisplayPort is that the former use dedicated pins for I2C communication, while the latter carries the logical I2C signal over its AUX channel. So a DP-DVI adapter will have to perform a conversion. I believe this is one of the differences between active vs passive adapters, but I have not seen this documented and have not tested to confirm.
I agree that it makes sense to punt on the very unlikely case of multiple monitors with the same EDID. However, at least for drm devices it is possible to associate a connector/edid pair with an I2C device by examining /sys/class/drm/cardN-connector. Attribute edid is, well, the EDID. For DisplayPort connectors the i2c bus is attribute i2c-N. For non-DisplayPort connectors, the i2c bus is found at ddc/i2c-dev/i2c-N.
A further follow up re lost setvcp requests. For getvcp, the host sends a getvcp request packet to the display. As part of the protocol for sending an I2C packet, a sequence of ACKs and NACKs ensure that the packet was delivered. The display subsequently sends a response packet to the host, which includes a flag indicating whether the feature is supported, along with its value. Or it may return a DDC Null Message, indicating that it can't respond, e.g. if it doesn't know what to do with the request.
For setvcp, there is only the request packet sent from the host to the display. There is no response packet. So all the host knows is that the request was delivered, not that it was processed. If the requests arrive too quickly, unless the display has an internal request queue of sufficient size, some requests will not be processed properly, i.e. some setvcp requests will fail.
matheros was the right user - I mixed up 2 users who are using ddcutil. gnarface didn't have the issues - matheros did. I asked them today (they've been away for a bit) - they are using the ddcutil-git AUR pkg - so this should be latest and greatest for you, right?
As for DDC signals over DP - for me at least its not DVI -> DP. It's direct DP to DP - no DVI conversion cable involved. Well it was until yesterday. One of my screens flat-out died and doesn't power on - the other is on the blink (can't use DPMS...). I've now had to buy 2 replacements and they are now HDMI only (well in theory I could use USB-C alt-mode with DP ... if my GPU had that output... it doesn't)
I found that in some cases like when the monitor just powers up (eg. from dpms sleep) it may drop setvcp's and ignore them for some period of time. Thus why I started doing gt's and re-tries to see if it worked. :)
@rastermann File out.txt contains output for the 0.9.9 production release, This is the master branch in this git repository. The additional code exploring /sys is only in the 1.0.0-dev development branch. Also, for some reason the out.txt file ends in what should be the middle of the output.
you you do your git upside down to us - master for us is dev, and stable releases in branches... hmm i have to convince them to swtich branches in their aur build..