I have Nvidia GeForce 9500 GT video card and two monitors (one connected to the VGA socket and one connected to the DVI socket) that have always worked fine for years with different Linux versions. Since I upgraded to kernel 6.8.0-51 with Nouveau driver, only one monitor works (the second monitor stops being detected as soon as kernel gets loaded). If I boot with older Kernel version (6.5.0-44-generic) both monitors work fine.
I understand Nvidia GeForce 9500 GT is an old video card that now probably is not fully supported by recent Kernel and Nouveau driver.
I have some questions:
Can I fix the problem by installing original Nvidia drivers (in case which version?)
Do I need to change video card and buy a more recent one? In case which card would work with more monitors? I have already tested GeForce GTX 1070 with no success, still one monitor only being detected.
Thanks for suggestions.
The fact that it still acts up on the 1070 tells me it’s not because the card is old. Trying running xrandr
to see if it’s picking up second monitor being connected at all? Do you have any setup that might be interfering, ie; cat /usr/share/sddm/scripts/Xsetup
or whatever Gnome/gdm uses, turning off a monitor?
This is the output of xrand a following cat /usr/share/sddm/scripts/Xsetup
~ $ xrandr
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 8192 x 8192
DVI-I-1 disconnected (normal left inverted right x axis y axis)
VGA-1 connected primary 1280x1024+0+0 (normal left inverted right x axis y axis) 128mm x 102mm
1280x1024 60.02*+ 75.02
1600x1200 60.02 60.00
1680x1050 59.95 60.02
1400x1050 60.02
1600x900 60.02
1400x900 60.02
1280x960 60.02 60.00
1440x810 60.02
1368x768 60.02
1280x800 60.02
1152x864 75.00 69.97 60.02
1280x720 60.02
1024x768 75.03 70.07 60.02 60.00
960x720 60.02
928x696 60.02
896x672 60.02
1024x576 60.02
960x600 60.02
832x624 74.55 60.02
960x540 60.02
800x600 72.19 75.00 60.32 60.02 56.25
840x525 60.02
864x486 60.02
700x525 60.02
800x450 60.02
640x512 60.02
700x450 60.02
640x480 75.00 72.81 66.67 60.02 59.94
720x405 60.02
720x400 70.08
684x384 60.02
576x432 60.02
640x360 60.02
512x384 60.02
512x288 60.02
416x312 60.02
480x270 60.02
400x300 60.02
432x243 60.02
320x240 60.02
360x202 60.02
320x180 60.01
~ $ cat /usr/share/sddm/scripts/Xsetup
#!/bin/bash
Xsetup - run as root before the login dialog appears
if [ -e /sbin/prime-offload ]; then
echo running NVIDIA Prime setup /sbin/prime-offload
/sbin/prime-offload
fi
Organize screens and avoid inset
_logLineFn () {
declare _elapsed_int;
_elapsed_int=“$(date +%s%3N)”;
(( _elapsed_int -= _startTimeInt ));
IFS=$‘\n’;
_debugList+=( “$(printf ‘[%05d] %s\n’ “${_elapsed_int}” “$“)” );
}
_calcDisplaySetListFn () {
declare _bit_list _raw_str _raw_list _x_int _line _solve_line;
_raw_str=“$(xrandr --listmonitors)”;
_logLineFn ‘Pre-adjust xrandr monitor output:’ “${_raw_str}”;
IFS=$‘\n’ read -r -d ‘’ -a _raw_list < <(
grep -vi '^\smonitors.[0-9]+’ <<<“${_raw_str}” |
sed 's/^\s[0-9]+\s*:\s*+[]//g’ |
sed -E ‘s|/[0-9]+[x+]| |g’ |
sed ‘s|+| |g’;
);
_x_int=0;
for _line in “${_raw_list[@]}”; do
IFS=’ ’ read -r -a _bit_list <<< “${_line}”;
# Only change display if x offset does not match calculated
if [ “${_x_int}” != “${_bit_list[3]}” ]; then
_solve_line=”${_bit_list[0]}|${_bit_list[1]}|${_bit_list[2]}”;
_displaySetList+=( “${_solve_line}|${_x_int}|0” );
fi
(( _x_int += _bit_list[1] ));
done
_logLineFn ‘SetList created:’ “${_displaySetList[@]}”;
}
_setupDisplaysFn () {
declare _idx _display_line _bit_list _cmd_list;
if [ “${_userId}” != ‘0’ ]; then
_logLineFn “Run as non-root |${_userId}|. Skip display set”;
return;
fi
_idx=0;
for _display_line in “${_displaySetList[@]}”; do
IFS=‘|’ read -r -a _bit_list <<< “${_display_line}”;
_cmd_list=( ‘xrandr’ ‘–output’ “${_bit_list[0]}”
‘–mode’ “${_bit_list[1]}x${_bit_list[2]}”
‘–pos’ “${_bit_list[3]}x${_bit_list[4]}”
);
if [ “${_idx}” = ‘0’ ]; then _cmd_list+=(‘–primary’); fi
if [ “${_userId}” = ‘0’ ]; then “${_cmd_list[@]}”; fi
(( _idx++ ))
done
_logLineFn ‘SetList applied’;
_logLineFn ‘Post-adjust xrandr monitor output:’ “$(xrandr --listmonitors)”
}
_mainFn () {
_logLineFn ‘BEGIN report’;
_calcDisplaySetListFn;
_setupDisplaysFn;
echo ‘=====’;
echo “${_debugList[*]}”;
echo ‘=====’;
echo;
_logLineFn ‘. END report’;
}
_debugList=();
_displaySetList=();
_startTimeInt=“$(date +%s%3N)”;
_userId=“$(id -u)”;
_debugFile=“/tmp/debug-sddm-setup-${_userId}.txt”;
if [[ “${BASH_SOURCE[0]}” == “${0}” ]]; then
_binName=“$( readlink -f “$0” )” || exit 101;
_binDir=“$( dirname “${_binName}” )” || exit 101;
_baseDir=“$( dirname “${_binDir}” )” || exit 101;
_baseName=“$( basename “${_binName}” )” || exit 101;
_mainFn “$@”;
fi
I am using Kubuntu-22.04. I’ve also tried to boot from a USB pen drive with Kubuntu 24.04.1 LTS amd64 and the problem was still there. I did the test only with GeForce 9500 GT video card.
Xsetup looks fine, I just mentioned it because sometimes people have commands in there to disable a monitor for sddm, and for whatever reason it sticks.
You probably shouldn’t use the proprietary driver, it looks like the last one that supported that card was ~340, and the last kernel that supported was 5.8.
Sorry if this doesn’t work out, it’s difficult to diagnose from a distance, but some things you may want to try.
Your using Kubuntu so go into KDE settings and make sure there isn’t some weird monitor config. Sometime it just decides to turn a monitor off.
Try resetting the connection (if using x11) xrandr --output DVI-I-1 --off
then xrandr --output DVI-I-1 --auto
. Probably won’t do anything but worth a shot.
Make sure you don’t have anything weird in your xorg.conf (if it exists) cat /etc/X11/xorg.conf
or any files in /etc/X11/xorg.conf.d/
.
You can watch dmesg while unplugging/plugging back in the monitor. Don’t know how helpful that will be but it’s at least a bit more info if it’s seeing it. sudo dmesg -W
Try a live usb from a different distro with a newer kernel (maybe EndeavorOS?) just to make sure a slightly different version doesn’t lead to different results.
If I go into KDE settings I see one monitor only. It is like the second one doesn’t exist at all.
Anyway thank you very much for the detailed suggestions. I’ll do some tests and will come back with results in few days.
I just had this issue on Fedora. I got around it by: setting options nvidia-drm modeset=1
in /etc/modprobe.d/nvidia.conf
According to chatgpt, this puts the kernel in charge of starting up the display instead of X or Wayland.??
I have an extra unknown monitor showing up now which is another issue, but my actual existing monitors are set up.
I don’t have nvidia.conf file. I am using non proprietary “nouveau” driver.
Today I’ve solved my problem after replacing the old Nvidia GeForce 9500 GT card with a second hand NVIDIA GP107GL - Quadro P1000 bought on eBay. The P1000 works fine with kernel 6.8.0-51 and the “nouveau” driver. Both monitors are now recognized and working.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.