i8042: No controller found (CentOS)

What happened: Typically, 'yum' update was ran to create a new kernel-header (i.e. accepting during shutdown prompt, performed from some online suggestion), your old NVIDIA driver (that manages your graphics cards), was compiled to the old kernel-header before you ran the 'yum' update, so now GUI will not load.

 Example of the new kernel you may have accidentally added

Referencing the image below, in most cases:

  • CentOS Linux (3.10.0-1160.42.2.el7.x86_64) 7 (Core) ← Your new default kernel-header after running yum update (NVIDIA driver NOT compiled to this kernel-header)
  • CentOS Linux (3.10.0-1160.31.1.el7.x86_64) 7 (Core) ← Previously working kernel with display (NVIDIA driver was properly installed and compiled to THIS kernel-header)
  • CentOS Linux (3.10.0-1160.11.1.el7.x86_64) 7 (Core)  ← Fresh install, after updates to setup for initial NVIDIA driver installation (disabling Nouveau) (NVIDIA driver was properly installed and compiled to THIS kernel-header)
  • CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core) ← Created during the initial CentOS installation (fresh install)
  • CentOS Linux (0-rescue-d7d3687fde2848c18c21b05a0cfe21cf) 7 (Core) ← Created during the initial CentOS installation

Disclaimer: Exxact is not responsible for troubleshooting or resolving issues arising from software updates made to the system after the system has shipped from Exxact. These include Operating system updates and application updates. Exxact may help with this on a best-effort basis at Exxact's discretion. 

This article mainly serves to help those who encounter this issue directly caused from running Linux OS update commands.

This would be 'best-effort'.

How to fix this issue

If you have SSH access to the system

'i8042: No controller found' still means that your OS loaded, it's just your GUI/Display that does not work. You can still SSH into the machine if you remember the SSH IP address.

## login as root
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/470.63.01/NVIDIA-Linux-x86_64-470.63.01.run
chmod +x NVIDIA-Linux-x86_64-470.63.01.run
init 3
./NVIDIA-Linux-x86_64-470.63.01.run

Mind you, this is the NVIDIA driver file that is latest for GeForce and Quadro graphics card at the time of writing this (9/17/21 - 470.63.01). NVIDIA driver versions change fairly often, but you don't need to be at the latest all the time.

 NVIDIA driver .run file installation

Pretty much hit 'no' to everything.

reboot

Fixed.

If you are local to the system

You're going to need to access your server's BIOS settings, and have access to a VGA monitor. If you're an end-user who doesn't know what BIOS settings are, or lacking a VGA cable/monitor, then I strongly advise you reach out to your site's Linux IT Administrator.

  1. Reboot system, get to BIOS settings by striking the 'del' key while the system boots up
  2. Change your BIOS setting to use ONBOARD as primary video display
  3. Save and Reset, and then switch to a VGA cable and monitor using the VGA port on your system while it reboots twice
  4. Your GUI/Display will load, log in, open a terminal, and then obtain and install the NVIDIA driver

    ## login as root
    wget https://us.download.nvidia.com/XFree86/Linux-x86_64/470.63.01/NVIDIA-Linux-x86_64-470.63.01.run
    chmod +x NVIDIA-Linux-x86_64-470.63.01.run
    init 3
    
    ## you are disabling display, and will be in 'text-mode' only to run the next command
    ./NVIDIA-Linux-x86_64-470.63.01.run
    
    reboot
     NVIDIA driver .run file installation

    Pretty much hit 'no' to everything.

    reboot

  5. Change your BIOS setting to use OFFBOARD as primary video display, the opposite of step 3
    • Why should I bother changing this setting back? If we setup your system to use OFFBOARD video display, your SW probably required GPU-accellerated local display. You may see disruptions (i.e. Relion/CyroSPARC) if you use your motherboard's ONBOARD VGA display to run these programs.

Fixed.

FAQ's

What happened:'yum' update command created a new kernel-header, your old NVIDIA driver (that manages your graphics cards), was compiled to the old kernel-header before you ran the 'yum' update, so now GUI will not load.

What is 'i8042: No controller found'?: This is the last system boot message you see. This means your GUI/display will not load through the offboard video channel. It will however boot to the onboard video channel.

What is ONBOARD/OFFBOARD display?: If you have a server motherboard, then it will typically have a display built onto the motherboard (ONBOARD), like a VGA plug on the front or back depending on your system. If you have your display cable plugged into the graphics card, then the system is using OFFBOARD channel. The OFFBOARD video channel also goes by 'PCI-e device' or 'External' in BIOS. Your OFFBOARD video channel is typically source from the graphics card, so here is the explanation again:

Your GNOME/GUI/Display, hosted from your graphics card will no longer work, because you updated your Linux OS kernel-header to a new one, which your NVIDIA driver is NOT compiled to.

How to fix this?: Simply, re-install the NVIDIA driver. Getting to a working terminal seems to be most people's issue. Usually those who have never touched server-hardware or BIOS settings will have the most difficulty with the 'local with system' steps.

How do I install the NVIDIA driver file?: Once you are at a working terminal, disable GUI processes (they still run even if after you ran the yum update commands) and then run the NVIDIA driver '.run' installation file. As of Ubuntu 18.04 and CentOS 7.x, it is 'init 3' to disable GUI processes. This is already instructed in the steps above.

Do I need to regularly run 'yum' updates?: Not necessarily. If you are unsure on what those updates do, then don't run them. If your system runs fine, but only needs a newer NVIDIA driver update, then just update the NVIDIA driver. If your system is really aged, then it may complain that you need to update your compilers (gcc, make, kernel-devel, epel-release).

If you work with/in anything high-security, then you should have a Linux/Network IT Administrator who should routinely controls updates and users so you wouldn't need to run into this issue.

How do I prevent this issue in the future?: A lot of people run into this the first time. Just 'wget' the latest NVIDIA '.run' file, make it executable, and then run it over your existing NVIDIA driver file. This article holds up well to show how to look for the NVIDIA driver file from NVIDIA's website: Reinstall NVIDIA drivers for CentOS 7.x

Why doesn't Exxact prevent people to run Linux OS updates?: Exxact build systems loaded with Linux Operating Systems, Software, Libraries, Frameworks, etc. that are all typically open-source; Exxact does not own them, nor do they develop it. These systems are configured to work out-of-box without restricting the user in any way. Restricting OS updates may conflict with routine system maintence handled by other facilities or administrators.