Monitor not working in Linux

I’ve been trying to test the waters on a move from Windows to Linux/Bazzite but have hit a roadblock: One of my monitors refuses to work properly.

It works absolutely fine in Windows but I’ve tried multiple distros with none of them working.

Monitor is an HP w2207h, it’s supposed to run at 1680x1050 but neither that nor any other 16:10 resolution work. It will display with 1600x900 and even 1920x1080 will be tolerated but the edges are cut off.

Whenever I set the monitor to it’s proper native resolution, it will sit black and about every second there will be like a 1 frame blink of the screen.

There is absolutely no issues in Windows at all and I’ve tried both direct HDMI and DP-to-HDMI with the exact same results.

A quick search indicates no common issues with this setup. Have you tried it with an ubuntu live USB or something like that? Might be a little bug. Seems like we get quite a few bazzite complaints lately… I’m sure it’s coincidence.

So far I’ve tried with:
Bazzite (KDE)
Bazzite (rebased to GNOME)
Bazzite (rebased to SteamOS)
Bazzite Live
–All Live–
Ubuntu 24.04.3 LTS
Ubuntu 25.04
Debian 13.1.0
Manjaro 25.0.9 (KDE)

None of them worked with only slight variations between them in how they failed to work.

I’ve had the opposite issue, where the monitor works on my arch laptop but fucks up on the work Windows laptop… Still haven’t figured out what’s up with that, either.

Sounds like a timing issue? What do you get from edid-decode? Something like edid-decode /sys/class/drm/card1/card1-eDP-1/edid (that’s what it is on my laptop, but this’ll be different.)

IIRC all the distros had the correct pixel counts (i.e. front porch, sync), and the correct polarity.

Though a lot of them (via xrandr) said that the pixel clock was 146Mhz when it should be 146.25Mhz.

I think other utilities all showed the correct pixel clock though and Manjaro still had issues even though xrandr showed correctly there.

Also I want to add that I’ve played with custom timings on this monitor in Windows before and it seems pretty tolerant.

1 Like

I just realized I talked past what you asked for, here is the output of edid-decode

Block 0, Base EDID:
  EDID Structure Version & Revision: 1.3
  Vendor & Product Identification:
    Manufacturer: HWP
    Model: 9897
    Serial Number: xxxx
    Made in: week 48 of 2007
  Basic Display Parameters & Features:
    Digital display
    Maximum image size: 47 cm x 30 cm
    Gamma: 2.20
    DPMS levels: Standby Suspend Off
    RGB color display
    Default (sRGB) color space is primary color space
    First detailed timing is the preferred timing
  Color Characteristics:
    Red  : 0.6464, 0.3388
    Green: 0.2900, 0.6025
    Blue : 0.1445, 0.0654
    White: 0.3134, 0.3291
  Established Timings I & II:
    IBM     :   720x400    70.081663 Hz   9:5     31.467 kHz     28.320000 MHz
    DMT 0x04:   640x480    59.940476 Hz   4:3     31.469 kHz     25.175000 MHz
    DMT 0x06:   640x480    75.000000 Hz   4:3     37.500 kHz     31.500000 MHz
    DMT 0x09:   800x600    60.316541 Hz   4:3     37.879 kHz     40.000000 MHz
    DMT 0x0b:   800x600    75.000000 Hz   4:3     46.875 kHz     49.500000 MHz
    Apple   :   832x624    74.551266 Hz   4:3     49.726 kHz     57.284000 MHz
    DMT 0x10:  1024x768    60.003840 Hz   4:3     48.363 kHz     65.000000 MHz
    DMT 0x12:  1024x768    75.028582 Hz   4:3     60.023 kHz     78.750000 MHz
    DMT 0x24:  1280x1024   75.024675 Hz   5:4     79.976 kHz    135.000000 MHz
    Apple   :  1152x870    75.061550 Hz 192:145   68.681 kHz    100.000000 MHz
  Standard Timings:
    GTF     :  1152x720    59.999964 Hz  16:10    44.760 kHz     67.319000 MHz
    DMT 0x20:  1280x960    60.000000 Hz   4:3     60.000 kHz    108.000000 MHz
    DMT 0x23:  1280x1024   60.019740 Hz   5:4     63.981 kHz    108.000000 MHz
    DMT 0x2f:  1440x900    59.887445 Hz  16:10    55.935 kHz    106.500000 MHz
    GTF     :  1600x1000   59.999820 Hz  16:10    62.100 kHz    133.142000 MHz
    DMT 0x3a:  1680x1050   59.954250 Hz  16:10    65.290 kHz    146.250000 MHz
  Detailed Timing Descriptors:
    DTD 1:  1680x1050   59.954250 Hz   8:5     65.290 kHz    146.250000 MHz (473 mm x 296 mm)
                 Hfront  104 Hsync 176 Hback  280 Hpol N
                 Vfront    3 Vsync   6 Vback   30 Vpol P
    Display Range Limits:
      Monitor ranges (GTF): 48-76 Hz V, 24-83 kHz H, max dotclock 160 MHz
    Display Product Name: 'HP w2207'
    Display Product Serial Number: 'xxxx'
  Extension blocks: 1
Checksum: 0xdc

----------------

Block 1, CTA-861 Extension Block:
  Revision: 3
  Underscans IT Video Formats by default
  Basic audio support
  Supports YCbCr 4:4:4
  Supports YCbCr 4:2:2
  Native detailed modes: 1
  Audio Data Block:
    Linear PCM:
      Max channels: 2
      Supported sample rates (kHz): 48 44.1 32
      Supported sample sizes (bits): 24 20 16
  Video Data Block:
    VIC   4:  1280x720    60.000000 Hz  16:9     45.000 kHz     74.250000 MHz (native)
    VIC   2:   720x480    59.940060 Hz   4:3     31.469 kHz     27.000000 MHz
    VIC   1:   640x480    59.940476 Hz   4:3     31.469 kHz     25.175000 MHz
    VIC   7:  1440x480i   59.940060 Hz  16:9     15.734 kHz     27.000000 MHz
    VIC  22:  1440x576i   50.000000 Hz  16:9     15.625 kHz     27.000000 MHz
    VIC  17:   720x576    50.000000 Hz   4:3     31.250 kHz     27.000000 MHz
    VIC  16:  1920x1080   60.000000 Hz  16:9     67.500 kHz    148.500000 MHz
    VIC  31:  1920x1080   50.000000 Hz  16:9     56.250 kHz    148.500000 MHz
  Speaker Allocation Data Block:
    FL/FR - Front Left/Right
  Vendor-Specific Data Block (HDMI), OUI 00-0C-03:
    Source physical address: 1.0.0.0
  Detailed Timing Descriptors:
    DTD 2:   720x480    59.940060 Hz   3:2     31.469 kHz     27.000000 MHz (473 mm x 296 mm)
                 Hfront   16 Hsync  62 Hback   60 Hpol N
                 Vfront    9 Vsync   6 Vback   30 Vpol N
    DTD 3:   720x576    50.000000 Hz   5:4     31.250 kHz     27.000000 MHz (473 mm x 296 mm)
                 Hfront   12 Hsync  64 Hback   68 Hpol N
                 Vfront    5 Vsync   5 Vback   39 Vpol N
    DTD 4:  1920x1080i  60.000000 Hz  16:9     33.750 kHz     74.250000 MHz (473 mm x 296 mm)
                 Hfront   88 Hsync  44 Hback  148 Hpol P
                 Vfront    2 Vsync   5 Vback   15 Vpol P Vfront +0.5 Odd Field
                 Vfront    2 Vsync   5 Vback   15 Vpol P Vback  +0.5 Even Field
    DTD 5:  1280x720    50.000000 Hz  16:9     37.500 kHz     74.250000 MHz (473 mm x 296 mm)
                 Hfront  440 Hsync  40 Hback  220 Hpol P
                 Vfront    5 Vsync   5 Vback   20 Vpol P
    DTD 6:  1920x1080i  50.000000 Hz  16:9     28.125 kHz     74.250000 MHz (473 mm x 296 mm)
                 Hfront  528 Hsync  44 Hback  148 Hpol P
                 Vfront    2 Vsync   5 Vback   15 Vpol P Vfront +0.5 Odd Field
                 Vfront    2 Vsync   5 Vback   15 Vpol P Vback  +0.5 Even Field
Checksum: 0x60

The output of Xrandr

HDMI-A-1 connected 1680x1050+1920+0 (0x41) normal (normal left inverted right x axis y axis) 473mm x 296mm
	Identifier: 0x23
	Timestamp:  34115
	Subpixel:   unknown
	Gamma:      1.0:1.0:1.0
	Brightness: 0.0
	Clones:    
	CRTC:       1
	CRTCs:      1
	Transform:  1.000000 0.000000 0.000000
	            0.000000 1.000000 0.000000
	            0.000000 0.000000 1.000000
	           filter: 
	RANDR Emulation: 1 
	non-desktop: 0 
		supported: 0, 1
  1680x1050 (0x41) 146.000MHz -HSync +VSync *current +preferred
        h: width  1680 start 1784 end 1960 total 2240 skew    0 clock  65.18KHz
        v: height 1050 start 1053 end 1059 total 1089           clock  59.85Hz
  1400x1050 (0x42) 121.500MHz -HSync +VSync
        h: width  1400 start 1488 end 1632 total 1864 skew    0 clock  65.18KHz
        v: height 1050 start 1053 end 1057 total 1089           clock  59.86Hz
  1280x1024 (0x43) 109.000MHz -HSync +VSync
        h: width  1280 start 1360 end 1496 total 1712 skew    0 clock  63.67KHz
        v: height 1024 start 1027 end 1034 total 1063           clock  59.89Hz
  1280x960 (0x44) 101.250MHz -HSync +VSync
        h: width  1280 start 1360 end 1488 total 1696 skew    0 clock  59.70KHz
        v: height  960 start  963 end  967 total  996           clock  59.94Hz
  1152x864 (0x45) 81.500MHz -HSync +VSync
        h: width  1152 start 1216 end 1336 total 1520 skew    0 clock  53.62KHz
        v: height  864 start  867 end  871 total  897           clock  59.78Hz
  1024x768 (0x46) 63.250MHz -HSync +VSync
        h: width  1024 start 1072 end 1176 total 1328 skew    0 clock  47.63KHz
        v: height  768 start  771 end  775 total  798           clock  59.68Hz
  800x600 (0x47) 38.250MHz -HSync +VSync
        h: width   800 start  832 end  912 total 1024 skew    0 clock  37.35KHz
        v: height  600 start  603 end  607 total  624           clock  59.86Hz
  640x480 (0x48) 23.750MHz -HSync +VSync
        h: width   640 start  656 end  720 total  800 skew    0 clock  29.69KHz
        v: height  480 start  483 end  487 total  500           clock  59.38Hz
  320x240 (0x49)  6.000MHz -HSync +VSync
        h: width   320 start  328 end  360 total  400 skew    0 clock  15.00KHz
        v: height  240 start  243 end  247 total  253           clock  59.29Hz
  1440x900 (0x4a) 106.500MHz -HSync +VSync
        h: width  1440 start 1520 end 1672 total 1904 skew    0 clock  55.93KHz
        v: height  900 start  903 end  909 total  934           clock  59.89Hz
  1280x800 (0x4b) 83.500MHz -HSync +VSync
        h: width  1280 start 1352 end 1480 total 1680 skew    0 clock  49.70KHz
        v: height  800 start  803 end  809 total  831           clock  59.81Hz
  1152x720 (0x4c) 66.500MHz -HSync +VSync
        h: width  1152 start 1208 end 1320 total 1488 skew    0 clock  44.69KHz
        v: height  720 start  723 end  729 total  748           clock  59.75Hz
  960x600 (0x4d) 45.250MHz -HSync +VSync
        h: width   960 start  992 end 1088 total 1216 skew    0 clock  37.21KHz
        v: height  600 start  603 end  609 total  624           clock  59.63Hz
  928x580 (0x4e) 42.750MHz -HSync +VSync
        h: width   928 start  968 end 1056 total 1184 skew    0 clock  36.11KHz
        v: height  580 start  583 end  589 total  603           clock  59.88Hz
  800x500 (0x4f) 30.750MHz -HSync +VSync
        h: width   800 start  824 end  896 total  992 skew    0 clock  31.00KHz
        v: height  500 start  503 end  509 total  521           clock  59.50Hz
  768x480 (0x50) 28.500MHz -HSync +VSync
        h: width   768 start  792 end  864 total  960 skew    0 clock  29.69KHz
        v: height  480 start  483 end  489 total  500           clock  59.38Hz
  720x480 (0x51) 26.750MHz -HSync +VSync
        h: width   720 start  744 end  808 total  896 skew    0 clock  29.85KHz
        v: height  480 start  483 end  493 total  500           clock  59.71Hz
  640x400 (0x52) 19.750MHz -HSync +VSync
        h: width   640 start  656 end  720 total  800 skew    0 clock  24.69KHz
        v: height  400 start  403 end  409 total  417           clock  59.20Hz
  320x200 (0x53)  5.000MHz -HSync +VSync
        h: width   320 start  328 end  360 total  400 skew    0 clock  12.50KHz
        v: height  200 start  203 end  209 total  215           clock  58.14Hz
  1600x900 (0x54) 118.000MHz -HSync +VSync
        h: width  1600 start 1688 end 1856 total 2112 skew    0 clock  55.87KHz
        v: height  900 start  903 end  908 total  934           clock  59.82Hz
  1368x768 (0x55) 85.250MHz -HSync +VSync
        h: width  1368 start 1440 end 1576 total 1784 skew    0 clock  47.79KHz
        v: height  768 start  771 end  781 total  798           clock  59.88Hz
  1280x720 (0x56) 74.500MHz -HSync +VSync
        h: width  1280 start 1344 end 1472 total 1664 skew    0 clock  44.77KHz
        v: height  720 start  723 end  728 total  748           clock  59.86Hz
  1024x576 (0x57) 46.500MHz -HSync +VSync
        h: width  1024 start 1064 end 1160 total 1296 skew    0 clock  35.88KHz
        v: height  576 start  579 end  584 total  599           clock  59.90Hz
  864x486 (0x58) 32.500MHz -HSync +VSync
        h: width   864 start  888 end  968 total 1072 skew    0 clock  30.32KHz
        v: height  486 start  489 end  494 total  506           clock  59.92Hz
  720x400 (0x59) 22.250MHz -HSync +VSync
        h: width   720 start  744 end  808 total  896 skew    0 clock  24.83KHz
        v: height  400 start  403 end  413 total  419           clock  59.27Hz
  640x350 (0x5a) 17.500MHz -HSync +VSync
        h: width   640 start  656 end  720 total  800 skew    0 clock  21.88KHz
        v: height  350 start  353 end  363 total  369           clock  59.28Hz

And Kscreen-console

Id:  2
Name:  "HDMI-A-1"
Type:  "HDMI"
Connected:  true
Enabled:  true
Priority:  2
Rotation:  KScreen::Output::None
Pos:  QPoint(1920,0)
MMSize:  QSize(473, 296)
FollowPreferredMode:  false
Size:  QSize(1680, 1050)
Scale:  1
Clones:  None
Mode:  "48"
Preferred Mode:  "48"
Preferred modes:  QList("48")
Modes: 
	 "48"    "1680x1050@60"   QSize(1680, 1050)   59.954
	 "49"    "1920x1080@60"   QSize(1920, 1080)   60
	 "50"    "1920x1080@60"   QSize(1920, 1080)   59.94
	 "51"    "1920x1080@50"   QSize(1920, 1080)   50
	 "52"    "1600x1000@60"   QSize(1600, 1000)   60.008
	 "53"    "1280x1024@75"   QSize(1280, 1024)   75.025
	 "54"    "1280x1024@60"   QSize(1280, 1024)   60.02
	 "55"    "1440x900@60"   QSize(1440, 900)   59.901
	 "56"    "1280x960@60"   QSize(1280, 960)   60
	 "57"    "1280x800@60"   QSize(1280, 800)   59.954
	 "58"    "1152x864@75"   QSize(1152, 864)   75
	 "59"    "1280x720@60"   QSize(1280, 720)   60
	 "60"    "1280x720@60"   QSize(1280, 720)   59.94
	 "61"    "1280x720@50"   QSize(1280, 720)   50
	 "62"    "1152x720@60"   QSize(1152, 720)   59.967
	 "63"    "1024x768@75"   QSize(1024, 768)   75.029
	 "64"    "1024x768@60"   QSize(1024, 768)   60.004
	 "65"    "832x624@75"   QSize(832, 624)   74.551
	 "66"    "800x600@75"   QSize(800, 600)   75
	 "67"    "800x600@60"   QSize(800, 600)   60.317
	 "68"    "720x576@50"   QSize(720, 576)   50
	 "69"    "720x576@50"   QSize(720, 576)   50
	 "70"    "720x480@60"   QSize(720, 480)   60
	 "71"    "720x480@60"   QSize(720, 480)   59.94
	 "72"    "720x480@60"   QSize(720, 480)   59.94
	 "73"    "640x480@75"   QSize(640, 480)   75
	 "74"    "640x480@60"   QSize(640, 480)   60
	 "75"    "640x480@60"   QSize(640, 480)   59.94
	 "76"    "640x480@60"   QSize(640, 480)   59.94
	 "77"    "720x400@70"   QSize(720, 400)   70.082
	 "78"    "1600x900@60"   QSize(1600, 900)   59.946
	 "79"    "1368x768@60"   QSize(1368, 768)   59.882
EDID Info: 
	Device ID:  "xrandr-Hewlett Packard-HP w2207-xxx"
	Name:  "HP w2207"
	Vendor:  "Hewlett Packard"
	Serial:  "xxx"
	EISA ID:  ""
	Hash:  "e328be05c1689d7d95f693872dcb7586"
	Width:  47
	Height:  30
	Gamma:  2.2
	Red:  QQuaternion(scalar:1, vector:(0.646484, 0.335938, 0))
	Green:  QQuaternion(scalar:1, vector:(0.290039, 0.602539, 0))
	Blue:  QQuaternion(scalar:1, vector:(0.144531, 0.0654297, 0))
	White:  QQuaternion(scalar:1, vector:(0.313477, 0.329102, 0))

A couple theories I’ve been trying to explore:

  • A weird issue with the GPU driver in the kernel or mesa
  • Does Linux try to talk on DDC/CI? This monitor supposedly supports it but all software I’ve used throws up errors. Maybe it’s trying to communicate and it’s causing the monitor to freak out.

A strange thing that I don’t know what it means is that the monitor will often stay alive during a blink for longer if I press/hold down OSD buttons.

First off: This monitor seems to be from 2007, just want to doublecheck this is the right one? HP seems to have removed it from their product website.

So we are looking at one of three different problems:

  1. Unsupported screen protocol. The screen uses some sort of proprietary protocol that requires a specific driver that is loaded by default on Windows but not on Linux.
  2. Problem with GPU drivers.
  3. Wayland and/or Xorg issues.

Given that the screen is almost 20 years old, I would personally start looking into a new screen (1440p IPS) for $150-$200, put your primary screen to the secondary one and the new screen as your primary one. Life is just too short to deal with buggy hardware from the 2000s, unless you are a graphics developer or something like that.

Fully understand if you do not wish to go this route however. I spent $600 on two 1440p@180Hz last year, and I haven’t looked back :slight_smile:

I’d love a new screen but it’s not in the budget.

At absolute most, if I ditch this screen it’s gonna have to be for some second hand monitor for pennies.

I feel like I didn’t have this issue when I was using a GTX 980 way back when because I don’t remembering it happening in past Linux forays.

Is hdmi your only option? Have you tried a different cable?

This monitor only has VGA and HDMI ports.

I can’t try VGA since my card doesn’t have that anymore.

For HDMI, I’ve tried a DP-to-HDMI cord and 2 direct HDMI cords with near identical results across the stack.

1 Like

Are you using a live iso for all of this? Or actual installations? Is there any difference between live and installed?

What gpu are you using?

Live ISO for all but one attempt with Bazzite. The tests have had near identical results.

AMD RX 7800XT

All I have is just a bunch of guesses:

  • Sometimes there might be a difference between 59 Hz and 60 Hz (I have experience this on old intel integrated gpus + “weird” monitors)
  • Can you disable DDC/EDID via monitor OSD?
  • Maybe you can force specific ModeLine / frequencies / timings, but I have no idea how to force this kind of thing on wayland. On X11 one can force it like this: Xorg - ArchWiki (this is not arch-specific). Maybe some tweaking of modeline values could help?

In general I have not experienced this kind of problem, but since you posted on “Small Linux Problems” - here is the best I can offer :slight_smile:

I think what is happening here is that the Screens HDMI is “Sort-of-but-not-quite” HDMI standard, as usually happens when a standard is kinda new.

That is, HDMI Consortium published a standard, vendors started implementing it, bugs were discovered, best practices were changed, and HDMI was slapped on a whole lot of products that, quite frankly, did not meet the standard proper. As time moves on, these almost-but-not-quite HDMI products lose mainstream support and finally kick the bucket 20 years later.

I recommend trying the VGA interface using one of these, this should be good enough to get the screen going:

But for long term, simply replacing the screen with a 1440p 180Hz screen for $175 or so is the best long-term option. This would also provide you with a huge boost for your gaming experience overall. Here is one of many good monitors:

Of course, you know your own situation best here. $150-$200 is a bit to save up for, but this will be plenty worth it. Even then, you can get a cheap $70 1080p screen with 60Hz and 5ms response time that is way better than what you have now. Sometimes it is time to let the past go.

I’m not sure that is the issue, since it seems like it’s usually matching what Windows is supposedly sending out and I’ve played with the refresh rate on this monitor before and it’s been pretty happy to run out of spec. (IIRC I once ran it at 70hz without any issue)

I can turn DDC/IC on and off but I didn’t see almost any difference. The closest was I believe ddcutil showing either a DDC error or DDC control unavailable with it off and on respectively (IIRC it was the opposite of what would make sense). It also showed DDC being there but unavailable or something similar when connected over DP but I assume that is probably from the converter chip.

I’ll look into seeing if I can play with the ModeLine but I had the same issue figuring out how to do it on Wayland since most things want you to use xrandr but that’s meant for X11 (IIRC).

I appreciate the comment and hopefully it pushes me closer. Thank you very much.

1 Like

I’ll keep the suggestions in mind.

Maybe something cursed like an HDMI to DVI into a DVI to HDMI adapter would help force things to work on an older but still digital level.

Or maybe I’ll go for a more sane adapter.

Also I’m sorry to make you worry, I should’ve been more clear.
This isn’t my main/only monitor, this is my second screen a.k.a YouTube and auxillary content screen.

So I’m critically addicted to the second screen but I’m actually gaming on a slightly more sane and slightly newer ASUS VG248QE

Not IPS but at least 1080p and set to 120hz for 24/30/60fps content to show correctly.
Not that games want to run at 120 consistently anymore.

1 Like

I discovered something a bit cursed.

1680x1050 doesn’t work on my main monitor either.

It works just fine in Windows with GPU scaling manually disabled in AMD Adrenaline (so should be the proper output), the monitor EDID includes it and it displays just fine but with black bars. However, when I try on Linux I had similar issues either the screen just stayed black or I didn’t notice the flickering.

Have you tried the troubleshooting steps at ArchWiki xrandr ?

According to the wiki certain monitors do have issues with blinking and there are steps to resolve it.

I was just about to do something similar. I was wondering if, despite the monitor requesting CVT timings, it might work if I changed timings to Reduced Blanking timings in case there is just some weird issue with the defaults.

I’ll update this post with the results.

Also if this works, I need to figure out a method that’ll work with Bazzite too (Wayland and Atomic Desktop make it harder).

EDIT:
Reduced Timings did not work