From b01042d530ad80970dbde26ddcd1a438b837b432 Mon Sep 17 00:00:00 2001 From: bbedward Date: Sat, 4 Jul 2026 20:12:27 -0400 Subject: [PATCH] brightness/ddc: avoid re-probing already identified devices related #2049 --- core/internal/server/brightness/ddc.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/internal/server/brightness/ddc.go b/core/internal/server/brightness/ddc.go index ccd9bd281..b6e7e4c40 100644 --- a/core/internal/server/brightness/ddc.go +++ b/core/internal/server/brightness/ddc.go @@ -68,6 +68,12 @@ func (b *DDCBackend) scanI2CDevicesInternal(force bool) error { activeBuses[i] = true id := fmt.Sprintf("ddc:i2c-%d", i) + // Don't re-probe identified monitors: DDC traffic during a wake + // sequence can disturb some monitors' own brightness handling. + if _, ok := b.devices.Load(id); ok { + continue + } + dev, err := b.probeDDCDevice(i) if err != nil || dev == nil { continue @@ -107,7 +113,8 @@ func (b *DDCBackend) probeDDCDevice(bus int) (*ddcDevice, error) { dummy := make([]byte, 32) syscall.Read(fd, dummy) //nolint:errcheck - writebuf := []byte{0x00} + writebuf := []byte{DDC_SOURCE_ADDR, 0x80} + writebuf = append(writebuf, ddcciChecksum(writebuf)) n, err := syscall.Write(fd, writebuf) if err == nil && n == len(writebuf) { name := b.getDDCName(bus)