GSG-8 monitor resolution bug and workaround

ISSUE SYNOPSIS

After waiting for a GSG-8 to boot up, the monitor resolution automatically negotiates 640x480 and cannot be easily fixed. Restarting the system may resolve the issue.

ISSUE RESOLUTION AND TECH NOTES

After investigating this issue in multiple production GSG-8 units and customer units, we believe the cause of this issue is ultimately an issue with the Linux operating system. In Linux environments, a system service called the “X server” communicates with the kernel and device drivers to provide users with a graphical user interface. When this issue occurs, the X server logs show that the system is using a generic video driver instead of the NVIDIA GPU drivers, which is why the monitor resolution is negotiated incorrectly. We believe this happening because the NVIDIA drivers have not finished loading into memory at the time the X server is started. Based on this hypothesis, we have come up with the following steps to quickly workaround and subsequently prevent this situation from occurring.

To quickly recover from this issue, press Alt-F2 or open a terminal window and run the command sudo killall -9 Xorg. This should cause the X server to restart and prompt you to login once it has finished starting back up. Because the NVIDIA drivers finish loading soon after the X server starts up, restarting the service results in the correct drivers being used and the resolution being detected correctly. In a small number of systems, this workaround will not work exactly as written. In those environments, you will need to close Skydel, then open a terminal window and run the command ps aux | grep Xorg. The output of that command will start with the word “root” followed by a group of numbers (e.g. 1038). Those numbers are the process identifier for the X service. To restart it, use the command sudo kill -9 <process identifier>.

Once the resolution is corrected, subsequent steps can be taken to prevent this from occurring again. To do this, small modifications to the system configuration are made to add the NVIDIA drivers to a small image file called an “initial ramdisk” that is loaded first during the startup process so the drivers are already in memory when the X server starts. The following command can be used to quickly make the necessary modifications.

sudo su -c 'echo -e "nvidia\nnvidia_drm\nnvme\nnvme_core" >> /etc/initramfs-tools/modules && update-initramfs -u'

Ultimately, the following modules need to be included in the initial ramdisk:

nvidia
nvidia_drm
nvme
nvme_core

This can be performed on Ubuntu-based operating systems by listing these modules in /etc/initramfs-tools/modules and regenerating the initial ramdisk: update-initramfs -u. This issue has not been reproduced in systems that have had these configuration changes applied.

5 Likes