STEP BY STEP
Getting from blank screen to GUI with nouveau.
Reader beware. I am new to Linux and make no claim of expertise. Having put myself through a bit of a crash course getting nouveau working on my system, I have gleaned some understanding of the cause and a workable solution. From my experience searching the net, it seems this problem presents itself in different ways, is described in multiple ways, and multiple pages lead to wild goose chases. I am simply writing this from the standpoint of: If I could start over again, what would have helped me isolate and resolve the issue without having any Linux experience?
My hardware repeats this issue for any distribution I have tried using nouveau. Judging from the net, it appears to be platform independent. IE: PPC X86 X64
This post is specific to nouveau using kernel mode-setting or KMS. (For the same problem with nouveau not in kernel mode, "Option B" on the first page of this thread may lead to resolution.) YMMV It is highly likely that there are better/easier ways. This worked for me.Problem Definition:
Are we talking about the same thing? Descriptions like "blank screen, won't boot, wrong color depth" don't give us much to go on. Some possible indicators: (Read as "may be.")
- After successfully completing install, reboot results in a blank screen. May also be described as power save, black screen, sleep mode, or blank screen.
- Start up sound plays. (If the distribution has one. IE Ubuntu bongo drum.)
- Combined key entry CTL+ALT(Option)+F1 does not yield a prompt.
- You can get to a graphical login screen, but colors and/or resolutions are lower than expected.
- You CAN get to a prompt using the following at boot prompt
Linux 1 nosplash video=ofonly nouveau.modeset=0
- Others report that they have no problem on the same hardware.
- Hardware is verified to work properly using optimal display settings with other operating systems.
- Hardware used has more than one video output (multi-head). (Could also apply to laptop with external video capability.)
- NV or proprietary nvidia driver works on the hardware that nouveau is not.
OK. So we fit in the maybe category. Now what? The following steps would lead to verification. (As of this posting, I am unaware of any definitive indicator.)
- At the boot prompt:
Linux 1 nosplash video=ofonly nouveau.modeset=0When prompted, enter root password set during install.
- Verify that xorg.conf file is NOT being used. I stress this step. If it is, it can change log entries and lead to more head scratching.
more /var/log/Xorg.0.log Scan the first few lines for the following:
...If only the line ending in xorg.conf.d is listed, skip to step 5. If "Using config file...xorg.conf" is listed, continue to the next step. (keys CTL+Z to leave the log screen)
(==)]Using config file: "/etc/X11/xorg.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
- rename the xorg.conf
mv /etc/X11/xorg.conf /etc/X11/xorg.whatever Substitute directory path to match what is used in the log if different. Linux is case sensitive. Pay attention to capital letters.
shutdown -r now Let the machine boot normally all the way up to the blank screen. (Just "Linux" at the boot: prompt.) When you are sure you have allowed time for the system to finish booting, combine keys CTL+ALT+F1 followed by CTL+ALT+DEL. This will again reboot the machine. (The point is creating a new Xorg.0.log unaffected by xorg.conf file.) This time enter the command in step 1 above to get back to a prompt.
Xorg -configure The message ""number of created screens does not match number of detected devices" is one potential verifier. (Do not copy or move the xorg.conf.new file anywhere. This was just to check for the message.)
more /var/log/Xorg.0.log Scan through the log for detected displays such as:
... Note exactly what the system is calling each display. This varies by hardware. IE: DVD-D-1, VGA-0, etc.
(II) NOUVEAU(0): Output DVI-I-1 has no monitor section
(II) NOUVEAU(0): Output DVI-I-2 has no monitor section
(II) NOUVEAU(0): Output TV-1 has no monitor section
- Continue scanning the log.
(II) NOUVEAU(0): Printing probed modes for output TV-1
(II) NOUVEAU(0): Modeline "720x576"x50.0 28.66 720 776 856 960 576 576 588 597 -hsync -vsync (29.9 kHz)
(II) NOUVEAU(0): Modeline "1024x768"x50.0 54.16 1024 1064 1200 1344 768 768 777 806 -hsync -vsync (40.3 kHz)
(II) NOUVEAU(0): Modeline "800x600"x50.0 32.14 800 840 920 1040 600 600 604 618 +hsync +vsync (30.9 kHz)
(II) NOUVEAU(0): Modeline "720x480"x50.0 25.20 720 752 872 960 480 480 493 525 -hsync -vsync (26.2 kHz)
(II) NOUVEAU(0): Modeline "640x480"x50.0 23.10 640 672 768 880 480 480 492 525 -hsync -vsync (26.2 kHz)
(II) NOUVEAU(0): Modeline "400x300"x100.0 20.10 400 432 496 640 300 300 303 314 doublescan +hsync +vsync (31.4 kHz)
(II) NOUVEAU(0): Modeline "320x240"x100.0 14.73 320 344 392 560 240 240 246 263 doublescan -hsync -vsync (26.3 kHz)
(II) NOUVEAU(0): Modeline "320x200"x100.0 12.32 320 344 392 560 200 200 202 220 doublescan -hsync -vsync (22.0 kHz)
(II) NOUVEAU(0): Output DVI-I-1 disconnected
(II) NOUVEAU(0): Output DVI-I-2 connected
(II) NOUVEAU(0): Output TV-1 connected
(II) NOUVEAU(0): Using fuzzy aspect match for initial modes
(II) NOUVEAU(0): Output DVI-I-2 using initial mode 1024x768
(II) NOUVEAU(0): Output TV-1 using initial mode 1024x768
cat /var/log/Xorg.0.log | grep connected If you see connected displays that are not currently physically connected, this is further verification. (I suspect that "fuzzy aspect match" thing is the culprit for those only experiencing poor color/resolution.
With the information gathered from the logs, explicitly set video parameters at the boot: prompt to disable any outputs that are not currently connected using multiple video= parameters.
Sample code: This command disables DVI-I-1 and TV-1. It also sets DVI-I-2 to 1280x1024 refresh rate 60 with depth 24.
boot: Linux video=DVI-I-1:d video=DVI-I-2:1280x1024:@60:-24 video=TV-1:d
The possible settings are: (Courtesy of this linked wiki.
The format is: video=<conn>:<xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd]
<conn>: Connector, e.g. DVI-I-1, see your kernel log.
<xres> x <yres>: resolution
M: compute a CVT mode?
R: reduced blanking?
-<bpp>: color depth
@<refresh>: refresh rate
i: interlaced (non-CVT mode)
e: output forced to on
d: output forced to off
D: digital output forced to on (e.g. DVI-I connector)
Note the difference between d - disable and D - digital. IE: D might be used if system detects DVI-I and your cable has a DVI connector on both ends.
Hopefully the system will boot to the GUI login now. To make this permanent and prevent typing the command each boot, search for "modify yaboot" or "yaboot.conf."Apparent Cause:
(My theory anyway.)
Nouveau KMS attempts to detect connected displays and set appropriate resolution settings when the system boots. For some hardware, it detects / sets connected displays that are not there and may set default display to output that is not physically connected . May also choose correct display but force resolution settings to lower values compatible with that detected device. One common denominator seems to be systems with a TV out or capability of external out. IE: ADC to TV adapter. Quirk
The refresh rate seems to get reset to display native when X starts. Enter terminal from GUI.
xrandr -r 75
to view and change refresh rate. I believe this can be made permanent by script.End
Worked for me. No xorg.conf file required.
Please post if it works for you, needs to be revised, or if you think I'm full of BS. Please let us know if you find one. I will update here confirmed cards with phantom ports so others can be spared the pain.
These nasty little buggers appear to move around. If the above procedure does not work, try swapping ports and repeat the process. reference
For those with DualLink port, it may be worth repeating test with append nouveau.duallink=0Confirmed Phantom ports and workaround
(port location is from facing the back)
G5 with Nvidia FX5200 plugged to left port (DVI-I-2) boot: Linux video=TV-1:d
G5 with Nvidia 6800 plugged to left port (DVI-I-2) boot: Linux video=TV-1:d video=TV-2:d
G5 with Nvidia 6600 plugged to left port (DVI-I-2) boot: Linux video=TV-1:d