Google Ads

July 4, 2017

Stop Ubuntu from freezing completely with Intel Bay Trail

Ubuntu and Linux kernel seem to suffer from a cpu state bug which completely freezes the system when doing graphics intensive tasks such as playing games or videos. Many processors suffer from this bug including the following Intel processors:

Celeron J1900

Celeron N2940
Celeron N2840
Celeron N2930
Pentium N3520 
Pentium N3530
Pentium N3540

To see whether you have one of the above processor put the following command in the terminal:


cat /proc/cpuinfo | grep 'model name'


This bug can easily be fixed by installing proper Microcode files and changing c-state flag for Linux kernel.


First step is to make sure you have Ubuntu microcode package installed by putting the following command in the terminal:


sudo apt-get install intel-microcode


Then, remove the existing microcode files by running the following command in the terminal as they are not recent:


sudo rm /lib/firmware/intel-ucode/*


After then, install Intel Microcode files by downloading Microcode package from the following site:


https://downloadcenter.intel.com/download/26798/Linux-Processor-Microcode-Data-File


Download the microcode*.tgz file and extract it in the Home folder. Now copy the extracted microcode files to system folder by opening a terminal in intel-ucode folder and running the following command:


sudo cp * /lib/firmware/intel-ucode/


Now edit the grub file to change c-state kernel flag by opening grub file in /etc folder by putting the following command:


sudo gedit /etc/default/grub


In the grub file under the line containing GRUB_CMDLINE_LINUX_DEFAULT=, add the following intel_idle.max_cstate=2, so the line should look like the following line:


GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_idle.max_cstate=2"


Now, save and close the grub file and put the following command in the terminal to update boot loader to reflect kernel flag:


sudo update-grub


Done! Now just reboot the system and check whether microcodes are loaded properly by running the following command in the terminal:


dmesg | grep microcode


You should be able to see something like following as output of above command:


[    3.168100] microcode: CPU0 sig=0x30678, pf=0x8, revision=0x829

[    3.168138] microcode: CPU1 sig=0x30678, pf=0x8, revision=0x829
[    3.168445] microcode: Microcode Update Driver: v2.01 <tigran@aivazian.fsnet.co.uk>, Peter Oruba

Cheers!

1 comment:

  1. sudo * /lib/firmware/intel-ucode/
    the correct command in the /intel-ucode folder is:
    sudo cp * /lib/firmware/intel-ucode/

    ReplyDelete