2018. május 2.

NVIDIA GeForce 930MX driver update

I ran into this "little" problem with SweetHome3D that it says "Sweet Home 3D will exit now because of a fatal error in 3D rendering system". The SH3D FAQ suggests to upgrade to the lastet graphic card driver.

I did not have a dedicated graphic card in my laptop before so having to care for the driver is a new experience.

The card in my Dell Latitude 5480 is an NVIDIA GeForce 930MX.
I found that the driver can be downloaded from the official site.
Here's how to pick it out from the list.
Current version is 390.48; released on 2018.03.28. It needs to be run from terminal with root.

Then I tried to install it from the terminal by running the .ran file and got stuck on errors

First I got the error: "You do not appear to have an NVIDIA GPU supported..."
This is fixed by changing the PRIME Profile from Intel (Power Saving Mode) to NVIDIA (Performance Mode) in NVIDIA X Server Settings (screenshot) (in flashback: Applications --> System Tools --> Administration)
Then log out and log in again, and this error will be gone.
However this alone did not solve the SweetHome3D problem, in the contrary it got it worse, now the program crashes at startup with the mentioned error.
The next error was "You appear to be running an X server..."
To get rid of this, here's a handy step-by-step:
  1. Switch to terminal with Ctrl+Alt+F1
    (switch back with Ctrl+Alt+F7 if you need to)
  2. Stop X with sudo service lightdm stop
    (start it back up with sudo service lightdm start if you need to)
Now, the following error was "The distribution-provided pre-install script failed..."
When I searched for this I ran into a some promising askubuntu answers:

Then I acquired some more info on my hardware

First of all, I ran lspci -k | grep -EA2 'VGA|3D' to find out what I have on the machine:
00:02.0 VGA compatible controller: Intel Corporation Device 591b (rev 04)
 DeviceName:  Onboard IGD
 Subsystem: Dell Device 07d0
--
02:00.0 3D controller: NVIDIA Corporation Device 134e (rev a2)
 Subsystem: Dell Device 07d0
 Kernel driver in use: nvidia
With sudo lshw -numeric -C display | grep -E "(product|vendor)" we get a different but similar set of information:
product: NVIDIA Corporation [10DE:134E]
vendor: NVIDIA Corporation [10DE]
product: Intel Corporation [8086:591B]
vendor: Intel Corporation [8086]
To get the current nvidia driver version, run nvidia-smi from terminal.
This information is also available from the Software&Updates setting Additional Drivers tab. (screenshot here) and also from the NVIDIA X Server Settings mentioned before.
I'm running 384.111

Then I tried to install it from the ppa repository and succeeded

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt-get install nvidia-390
It said that there are recommended packages: libcuda1-390 nvidia-opencl-icd-390, so I installed those too:
sudo apt-get install libcuda1-390 nvidia-opencl-icd-390
I also did a sudo apt autoremove while I was at it.
Restarted the machine, and now I have the 390.48 version driver successfully installed. The procedure was pretty painless.

As for the SweetHome3D program, this unfortunately did not help.
However I succeeded with the next suggestion in the FAQ: running SH3D compiled with the older Java3D library (SweetHome3D-Java3D-1_5_2)