Leap 15.6 – upgrade from Leap 15.5 on laptop with Optimus architecture

The last 4 months I was primarily occupied with physics. I got a bit sloppy regarding upgrades of my Linux systems. An upgrade of an rather old laptop to Leap 15.6 was overdue. This laptop had an Optimus configuration: To display graphics one can use either the dedicated Nvidia card or a CPU-integrated Intel graphics or both via an “offload” option for certain applications.

General steps to perform the upgrade

I just list up some elementary steps for the upgrade of an Opensuse Leap system – without going into details or potential error handling:

Step 1: Make a backup of the present installation
You can, for example, create images of the partitions or LVM volumes that contain your Leap-installation and transfer them to an external disk. Details depend of course on whether and how you have distributed system files over partitions or (LVM) volumes. In the simple case of just one partition, you may simply boot a rescue system, mount an external disk to /mnt and then use the “dd”-command;

# dd status=progress if=/dev/YOUR_PARTITION of=/mnt/bup_leap155.img  bs=4M 

Step 2: Update the installed packages of the present Leap installation
Perform an update of (all) installed packages – if newer versions are available. Check that your system runs flawlessly afterwards.

Step 3: Change the addresses of repositories to use the ${releasever} variable
You can e.g. use YaST to change the release number in the definition of your repositories’ addresses to the variable ${releasever}. The name of the SLES repository may then look like “https://download.opensuse.org/update/leap/${releasever}/sle/”.

Step 4: Refresh the repositories to use information for Leap 15.6 packages
The following CLI-command (executed by root, e.g. in a root-terminal window) will refresh basic repository data to reflect available packages for Leap 15.6:

mytux:~ # zypper --releasever=15.6 refresh 

In case of problems you may have to deactivate some repositories.

Step 5: Download 15.6 packages without installing them
You can download the new packages ahead of installing them. This is done by the following command:

mytux:~ # zypper --releasever=15.5 dup --download-only --allow-vendor-change

Do not forget the option “–allow-vendor-change” for obvious reasons.

Step 6: Installation of 15.6 packages on a TTY
Change to a TTY outside your graphical environment (e.g. to TTY1 by pressing Ctrl-Alt-F1). On the command line there first shut down your graphical environment and then perform the upgrade:

mytux:~ # init 3
mytux:~ # zypper --no-refresh --releasever=15.5 dup --allow-vendor-change  

Step 7: Reboot

In my case this sequence worked without major problems. I just had to accept the elimination of some files of minor importance for which there was no direct replacement. The whole upgrade included a direct upgrade of Nvidia drivers from the Nvidia community repository

https://download.nvidia.com/opensuse/leap/${releasever}/   

First impression after reboot

The transition from Leap 15.5 to Leap 15.6 on my laptop was a smooth one. KDE Plasma is still of main version 5. The important applications for daily use like e.g. Libreoffice, Kmail, Kate, Gimp, Opera, Firefox, Chromium simply worked. Sound based applications worked as before and as expected (still based in my case on some Pulseaudio components – as the Ladspa-equalizer). Codecs and video components (basically from the Packman repository) did their service.

However, to get the Optimus architecture to work as before I had to perform a few additional steps. See below. Afterward, I could use Suse’s “prime-select” scripts to control which of the available graphics card is active after boot. A switch between the cards just requires a log out of a graphics session followed by a new login.

I have not yet tested Wayland thoroughly on the laptop. But a first impression was a relatively good one. At least for the Intel graphics card active (i915 driver) and the Nvidia card deactivated completely. A problem is still that some opened applications and desktop configurations are still not remembered on KDE Plasma between different consecutive sessions with Wayland. There may be users who can not live with this.

A transition to the StandBy mode worked perfectly with the graphics card integrated in the CPU, with and without Wayland. It also appears to work with the Nvidia card (with and without Wayland).

Reconfigure your repositories without using the Opensuse CDN service

I do not like the automatic clattering of the repositories by the CDN service. I neither like the reference to “http”-addresses instead of “https”. I want to configure my repositories and the addresses manually.

To achieve this one has to delete the CDN service as described here: https://forums.opensuse.org/t/how-to-disable-cnd-repo-in-leap15-6/181830
Before you do that keep a copy of the list of your repositories somewhere. After the deletion of the service you may have to add very important repositories manually. Elementary and important repositories are

  https://download.opensuse.org/distribution/leap/${releasever}/repo/oss/
  https://download.opensuse.org/update/leap/${releasever}/oss
  https://download.opensuse.org/update/leap/${releasever}/sle/
  https://download.opensuse.org/update/leap/${releasever}/backports/
  https://ftp.fau.de/packman/suse/openSUSE_Leap_${releasever}/
  https://download.opensuse.org/distribution/leap/${releasever}/repo/non-oss/
  https://download.opensuse.org/update/leap/${releasever}/non-oss
  https://download.opensuse.org/repositories/security/${releasever}/
  https://download.nvidia.com/opensuse/leap/${releasever}/

Check and potentially reconfigure your Python and PHP environments

Just some remarks. Leap 15.6 offers Python3.11 aside 3.6. You may want change your virtual Python environments to the 3.11 interpreter – if you have not done this before – and control your Python modules for 3.11 with “pip”. Details are beyond the limits of this post. But let me assure you – it works. PHP is now available at version 8.2 – and can e.g. be used in the Apache-server. Eclipse based PHP and PyDEV IDEs work with the named versions of PHP and Pyhon3.

Controlling the Optimus environment

In my previous Leap 15.5 installation I had used the “prime-select” command to switch between an active Intel or the dedicated Nvidia card for a graphical desktop session (in my case with KDE). This was easy and convenient. In a root terminal you just execute either

mytux:~ # prime-select intel

or

mytux:~ # prime-select nvidia

and afterward logout and login again to your graphical desktop environment, which gets started on the right graphics card

The status before the upgrade to Lap 15.6 was one that the laptop booted with the Intel graphics card active, i915 driver loaded and the Nvidia card having been switched off (via an execution of bbswitch).

After the upgrade the laptop booted into a state with the Intel card being active, i915 driver loaded and used to display graphics on the screen, but the Nvidia card also being powered on, but with no Nvidia driver loaded. This means that the Nvidia card consumes power unnecessarily.

The unusual point was that with Leap 15.5 the Nvidia card got automatically deactivated, after I had used the command “prime-select intel” and restarted a graphical session or rebooted afterward. So, what was defunct?

The first thing to note is that the packages of suse-prime are of version 0.8.14. You find respective information how to deal with these packages at Github:
https://github.com/ openSUSE/ SUSEPrime
and within the Release Notes of Leap 15.6:
https://doc.opensuse.org/ release-notes/ x86_64/ openSUSE/ Leap/15.6/
Search for “prime” there.

We find the following information in the Release Notes:

Deprecated Packages
Removed packages are not shipped as part of the distribution anymore.
The following packages were all superseded by NVIDIA SUSE Prime. Also see Section 4.1, “Removal of Bumblebee packages. bbswitch / bumblebee / bumblebee-status / primus

Removal of Bumblebee packages
Packages maintained as part of X11:Bumblebee project were succeeded by NVIDIA SUSE Prime. Bumblebee packages will no longer be part of the standard distribution. See details in the drop feature request tracker.

This means – among other things – that the RPM for “bbswitch” no longer is included in the main repository for Leap 15.6. This is, in my opinion, a mistake. Which you will understand in a minute.

How to witch off the Nvidia card when using Intel graphics only?

One reason is that the information in the Release Notes and at Github is a bit misleading:

The statement on a “super-seeded SUSE PRIME” in the Release Notes and the section on “NVIDIA power off support since 435.xxx driver …” gives you the impression that one can deactivate (= power off) the Nvidia GPU by some other means than “bbswitch”. This is not the case. See the issue “Use manual remove for PCI device instead of Bbswitch?” at Github and also the source codes there.

Furthermore the commands in the section “NVIDIA power off support since 435.xxx driver …” do not specify where the files, which have to be copied into certain directories reside after a Leap15.6 upgrade. Instead of the first and the third command you may actually have to use

test -s /etc/modprobe.d/09-nvidia-modprobe-pm-G05.conf || \
   cp /lib/modeprobe.d/09-nvidia-modprobe-pm-G05.conf /etc/modprobe.d

test -s /etc/udev/rules.d/90-nvidia-udev-pm-G05.rules || \
   cp /usr/lib/udev/rules.d/90-nvidia-udev-pm-G05.rules /etc/udev/rules.d/

The file “90-nvidia-dracut-G05.conf” should already be in /etc/dracut.conf.d.

Afterwards check the directories /etc/modprobe.d/, /etc/dracut.conf.d/ and also /etc/dracut.conf.d/ for the necessary files.

The most important step is, however, that you must install “bbswitch” if you want to deactivate the Nvidia card completely. I.e., whenever you want to use the Intel graphics only.

You need the “Bumblebee” repository to get the respective RPM. The repo’s address is:

https://download.opensuse.org/repositories/X11:/Bumblebee/15.6/   

Just install “bbswitch”. Afterward, you can use the following commands to switch the Nvidia card off, when you use the Intel graphics and when only the i915 driver module is loaded.

mytux:~ # tee /proc/acpi/bbswitch <<< OFF

But according to the commands in the shell scripts this should happen automatically when you switch between graphics cards via the command “prime-select” and a logout/login sequence from/to the graphical desktop. In my case this worked perfectly. At least with X11.

I should also say the following:

With an active Nvidia card for graphics you can use dynamic power management. You can configure it e.g. with the “nvidia-settings” application.

Offload

With an active Intel graphics for the desktop and switched on Nvidia card you can even run certain applications on the Nvidia card. To configure this you need to select the option

mytux:~ # prime-select offload

Furthermore you need to create a script “prime-run” with the following contents:

!/bin/bash
__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia "$@"

Details can be found here. You must make the script executable and put it in your PATH. Afterward, you can call applications with “prime-run”, e.g. “prime-run gimp”.

mytux:~> # prime-run gimp

Have fun with Leap 15.6!

 

Opensuse Leap 15.4 – Problems with Optimus and prime-select after updates of SW packages

Presently, I work a lot on an old laptop which has a so called Optimus combination of a dedicated Nvidia GPU and an Intel GPU coming with the main CPU-processor. “prime-select” is a tool which Opensuse includes with Leap 15.4 to provide an efficient way of controlling which GPU shall be used. As good as prime-select has worked for me on Leap 15.3 and also some time with Leap 15.4 recent updates of a variety of SW packages lead into trouble.

I had the Nvidia card active before the SW updates. After a cold restart of the system it did no longer start the SDDM display manager on the default systemd target. This happened even when the updates did not directly affect the kernel or the Nvidia kernel modules.

The problem always had to do with bbswitch turning off the Nvidia device when the system switched to the default graphical target. And with a turned off Nvidia graphics device the Nvidia drivers can not be loaded.

So some SW updates lead to a change of the configuration prime-select had set up before the updates. The stupid thing is that it is not quite so simple to get things back to work. To try to us “init 3” to go to a console interface on a non-graphical target and then use “prime-select nvidia” plus a subsequent “init 5” on the command line does not work. You do not change the wrong bbswitch actions that way. You can also turn bbswitch off by “tee /proc/acpi/bbswitch <<< OFF". And then load the Nvidia driver successfully. But trying to afterward switch to the standard graphical target invokes bbswitch again in the wrong way. It is a bit of a mess. The following steps seem to work to get back to normal operation again:

  • Step 1: Use “init 3” on a console terminal.
  • Step 2: Use the command “prime-select intel”.
  • Step 3: Restart your system. It should boot now into the graphical target based on the i915 intel GPU driver.
  • Step 4: Ignore any information from a prime-select icon. It shows you a plainly wrong info that you are using Nvidia.
  • Step 5: Log in as root on a root terminal window. Switch bbswitch off (e.g. by the command given above). Load the Nvidia module by “modprobe nvidia”. Check via lsmod that it is successfully loaded.
  • Step 6: Type in “prime-select nvidia”.
  • Step 7: Log out from your graphical interface.
  • Step 8: Check that SDDM or whatever display manager is started with bbswitch not shutting down the Nvidia card. Log inn with the Nvidia card active.
  • Step 9: Check that the Nvidia driver is still loaded on a root terminal window. Then issue “mkinitrd” and restart your Leap 15.4 system.

Afterward using the “prime-select intel” or “prime-select nvidia” commands at the command line of a root terminal window, a logout from the graphical desktop and a login again via the restarted graphical display manager switches correctly between the cards.

However, the prime-select applet gives you wrong information when the intel card is active. And it does not give you the chance to switch back to the Nvidia card again. Its stupid, but no major problem as long as the basic prime-select command does its job on the command line.

Hope this helps people having to work with Opensuse on an Optimus system.

 

Switching between Intel and Nvidia graphics cards on an Optimus laptop with Leap 15.3

At my present location an old laptop with an Optimus system still provides me with good services. Recently, I installed Opensuse Leap 15.3 on it. Since then I have tried almost all I can think of to get Bumblebee running smoothly on it. In the end I gave up – sometimes “primusrun” worked, sometimes not – especially with more complex applications like Blender. And even if “primusrun” worked – “optirun” most often did not.

So, I had a look at “prime-select” installed by the packet “suse-prime” of Opensuse. Again I had mixed experiences: This worked sometimes from the command line and sometimes not. There were multiple things which were somehow interwoven:

  • bbswitch intervened or was used by prime-select when switching to Intel – and when it did and turned the nvidia card off, you could activate it again, but afterward the Nvidia device it was not recognized by the native Nvida driver or by prime-select. Most often I had to reboot.<
  • When I was lucky and after reboots got a configuration where the Nvidia driver was loaded in parallel to the i915 for Intel and used “prime-select” together with an init 3 / init 5 sequence the display manager sddm did not come up. Others had this problem, too.
  • To switch between the graphics cards it was absolutely necessary to login into my graphical KDE desktop, use a root terminal and switch to the Nvidia card with prime-select from there. Then I had to log out and if I was lucky the display manager came up and the Nvidia card was really active.

But do not ask me, what I had to do in which order to get the aspired result. All in all the behavior of “prime-select” was a bit unpredictable. Then after updating a lot of packets yesterday I could no longer get prime-select to do the right things any more. Most often I got the message:

ERROR: Unable to query GPU information

Or : No such device found.

Solution Part 1: Deinstallation of unrequired RPMs and reinstallation of required RPMs

In the end I deinstalled Bumblebee (as recommended by posts in Suse forums) and also bbswitch. Afterward I reinstalled the packets “suse-prime” and “plasma5-applet-suse-prime” from the Leap 15.3 Update-repository (i.e. the Update repo for the Enterprise system) and the Nvidia-drivers from Opensuse’s Nvidia repository. I rebooted and my “sddm” display-manager came up – with the Intel driver active – but the Nvidia driver was loaded already nevertheless. Checked with lsmod.

Later, I found that all files in “/etc/prime” had been rewritten. I suspect that I had something in there which was no longer compatible with the latest drivers and prime-versions. In addition the file “90-nvidia.conf” has been replaced in “/etc/X11/xorg.conf.d“.

Solution Part 2: Use the “Suse Prime Selector” applet!

Then I used the applet in the KDE Plasma desktop to switch to Nvidia. This seemed to work and led to no errors. I just had to log out of my KDE Plasma session and in again to work with KDE on a running Nvidia card. (Ignore the message that you have to reboot).
Afterward I also tested switching by using the command “prime-select” as root in a terminal window of the KDE desktop. Worked perfectly, too.

Conclusion

I am not sure what the ultimate reason was to get prime-select running. The deinstallation of Bumblebee and bbswitch? The new Prime and Nvidia configuration files? Or a new udev during other updates?

Anyway – using the Suse Prime Selector applet or just using the command “prime-select” as root in a terminal window inside KDE Plasma has become a very stable way on my Leap 15.3 laptop with KDE to switch between graphics cards reliably. I still have to log in and log out again of the KDE session – but so far I have never experienced any problems with the display-manager again.

Just for information: I am using the following Nvidia drivers packages:

The prime-select packet version is:

Links

https://www.reddit.com/ r/ openSUSE/ comments/ ib9buv/ opensuse_kde_suse_ prime_selector_ applet_for/
https://forums.developer.nvidia.com/ t/ kubuntu-18-04-gives-black-screen-when-sddm-starts-no-login/ 61034/11
https://wiki.archlinux.org/ title/ PRIME# Configure_applications_%20 to_render_using_GPU
https://www.opensuse-forum.de/ thread/ 63871-suse-prime-error-unable-to-query-gpu-information/
https://opensuse.github.io/ openSUSE-docs-revamped-temp/hybrid_graphics/

Ceterum censeo: The worst living fascist and war criminal, who must be isolated, denazified and imprisoned, is the Putler.