1

I have dual boot setting (Ubuntu 16.04 + Windows 10) on my notebook (using nouveau driver). Originally there was no major issues.

But when I changed my BIOS configuration, my Ubuntu started to have screen flickering after boot in GRUB menu. All other things function properly in Ubuntu GUI, but the screen keeps flickering that I can hardly navigate. I encountered the same screen-flickering issue when booting in live USB. On windows side, everything is still fine and I can switch between integrated graphics card and my discrete graphics card.

I didn't find any similar situation as mine on my first attempt of internet search. Do anyone have any idea how to fix it?

Hardware Spec
- Lenovo Legion Y740
- Integrated Graphics Card: UHD Intel Graphics 630
- GeForce RTX 2070 Max-Q
- Both Ubuntu 16.04 and Windows installed in C:\

BIOS Configuration (Updated in 12/10/2019)
In my first dual boot attempt, I navigate to BIOS settings via "UEFI Firmware settings" in Windows "Advanced Startup" (attached below). The change I made on the BIOS configuration are the following:
- Secure Boot: Disabled (default is enabled)
- Storage mode: AHCI mode (default is RST mode)
- Graphics: default is "Discrete Graphics". I sticked with default "Discrete Graphics" in my first dual boot. No screen flickering appear on fresh installation. But when I set to "Switchable Graphics" after the installation, I was greeted with screen flickering in my Ubuntu side (everything is fine on Windows side)

UEFI Firmware Settings Screen-shot

[Update: 07/10/2019]
After a few study, I added "nomodeset" on grub configuration file and it temporarily settles the issue, but it is not desirable in the long run because such configuration disables brightness adjustment on screen and HDMI connection. I will keep looking for a more sustainable solution.

[Update: 12/10/2019 - 1]
I replaced Ubuntu 16.04 with Ubuntu 18.04. On fresh installation, screen flickering still existed but setting "nomodeset" in grub configuration file temporarily settles the issue. After I installed proprietary NVIDIA driver, screen flickering still persist and in this case setting "nomodeset" in grub config didn't solve the problem. But a good news is I finally escaped the black screen nightmare and infinite login loop nightmare this time. However, screen flickering is still an annoying issue to be settled.
I tried blacklist nouveau and setting nvidia_drm modeset = 1. But the issues still persist. I will keep trying different solutions to settle that.

[Update: 12/10/2019 - 2]
On Ubuntu side, my current state is that I have uninstalled proprietary nvidia driver by the following:

sudo apt-get purge nvidia  
sudo apt autoremove  
sudo apt autoclean  

I also blacklisted nouveau drive in /etc/modprobe.d/blacklist-nvidia-nouveau.conf with the following lines:

blacklist nouveau  
options nouveau modeset=0  

With such state, screen flickering issue existed and HDMI connection didn't work. And then, I followed David suggestion to set graphics mode back to default "Discrete Graphics" in BIOS configuration. Screen flickering issue disappear. I then proceed to install proprietary NVIDIA driver again by the following steps:
1. setting "Main Server" in software updates
2. execute sudo apt-get update (sudo add-apt-repository ppa:graphics-drivers/ppa has been executed a few days ago)
3. install proprietary nvidia driver 435 in "Additional Drivers" tab. (as shown below)

After the nvidia driver installation, I didn't encounter any screen flickering issue after ubuntu reboot, also HDMI connection seems working. HOWEVER, I got stuck in a purple screen after login page, as shown below. I can navigate to tty by Alt + Ctrl + F6. When I execute nvidia-smi, my GPU device can be detected (as shown below)

1. Additional Driver Tab (showing how I install nvidia driver)
2. After nvidia driver installation, I got stuck in purple screen after login, the picture also shows HDMI works after the installation
3. When I got stuck in purple screen, I tried to press Ctrl + Alt + F7, I then got into black screen
4. nvidia-smi can detect my GPU (in execute this in my tty mode)

[Update: 12/10/2019 - 3]
Stucking in post-login for a few times, I tried to install KDE desktop in tty mode (by sudo apt-get install kubuntu-desktop). After reboot I could finally get into desktop. But screen flickering problem came again when I got into KDE desktop. However, the screen flickering issue in KDE didn't appear as serious as the one in GNOME.
I tried changing a few configurations in System Setting > Hardware > Display and Monitor > Compositor. It is suggested from Flickering in KDE Plasma 5.4 . But it didn't help.

Pilot6
  • 92,041
alexwh
  • 113

4 Answers4

0

[Update: 14/10/2019]

After a week of struggling, I finally came to a partial progress. There are many issues coming along with screen flickering by the first time I installed Ubuntu on my Y740 (e.g. failure to wake up after suspend, HDMI not working, black screen crash ... etc.).

With a number of errors and trials, I finally came up with the following build that have less issues:

Ubuntu Configuration

  • Ubuntu version: 18.04
  • Kernel version: 5.0.13
  • Desktop: KDE Plasma

BIOS Configuration

  • Secure Boot: Disabled
  • Storage Mode: AHCI
  • Graphics Mode: "Discrete Graphics" (Keep at default!)

Problems that are fixed with the above build

  • HDMI connection works well
  • Can successfully wake up after suspend
  • Brightness control works (thanks to "Discrete Graphics" setting)
  • (screen flickering occurred less seriously and less frequently)

Problems that still persist and I am still actively look for a solution

  • screen flickering persists though with less seriousness


A few comments about the above build:

Among the many issues, the most annoying issues to me are screen flickering and failure to wake up after suspend, I do believe the main culprit of these issues are the version of the kernel. I tried different kernel versions (e.g. 5.0.33 and 5.3.2). They gave me more serious screen flickering issue and failure wake up after suspend. 5.0.13 is the kernel version that I found with relatively less issues.

Reference
Lenovo Community - Linux on Legion Y740 - no brightness/backlight control

alexwh
  • 113
0

[Update: 15/10/2019]
The screen flickering is magically gone by the time I booted the machine today! I didn't do anything special besides the configuration stated above.

I can't explain why it happened. I guess some new configuration(s) (maybe the kernel upgrade/ downgrade) requires a shutdown (instead of reboot) to come into effect.

Anyway, I would say the issue has been solved (at least temporarily, not sure if it will come back again suddenly)

alexwh
  • 113
0

I had the same problem: screen flickering and slow displays on pre-boot screens (bios password, grub selection prompt, disk encryption prompt) and on the Linux system. But if I booted on Windows everything worked (except pre-boot screens).
It came from the gpu configuration in Windows. On Asus laptops, Armoury Crate lets you chose a configuration profile between "Silent", "Moderate" and "Performance" which will regulate the performance of your GPU, CPU, cooling, ventilation noise, etc... . Changing this configuration must also change the GPU Power Saving options which are approximately the same as the ones presented before; and here's the problem. There is another profile option: "Windows" which is the equivalent of "no custom configuration" (I guess). So now when I boot on Linux, I have to make sure that this setting was left to "Windows" to avoid some conflicts between this kind of custom configurations on Windows or on Linux.

After doing this, it directly re-worked normally again.

I still don't know how those configurations can affect the other system installed, and I'm curious if you have an idea.

0

Seems like it's an issue with grub. Follow the below steps,

  1. Open the Grub configuration file: sudo vim /etc/default/grub
  2. Search for the line that says GRUB_CMDLINE_LINUX_DEFAULT
  3. Change it to GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=igfx_off"
  4. Do grub update: sudo update-grub
  5. Reboot your system.