Ubuntu – Intel SkyLake Blank Screen on Ubuntu 16.10

displayintel graphicsmultiple-monitors

When I recently installed Ubuntu 16.10 on a new machine (ASRock Z170 Gaming-ITX/AC S1151 M-ITX Intel Motherboard with Intel Core Skylake Processor i5-6500/3.2 GHz Processor CPU), I got a blank screen on first boot.

After a lot of searching around on the web, I discovered I could boot correctly into Linux using nomodeset on the kernel command line. However, this limits my graphics options as xrandr -q only reports one monitor:

xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1024 x 768, current 1024 x 768, maximum 1024 x 768
default connected 1024x768+0+0 0mm x 0mm
   1024x768      76.00*

I've read lots of websites suggesting that this was a problem in earlier kernel versions (which need i915.preliminary_hw_support=1) and that with 4.3+ it should be fine, but I have:


Linux mypc 4.8.0-26-generic #28-Ubuntu SMP Tue Oct 18 14:39:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

So I think this shouldn't be a problem. Based on some websites I've read, I've tried all of the following kernel options (and a few combinations largely at random), but none have helped:

i915.preliminary_hw_support=1
i915.i915_enable_rc6=1
nolapic

In all cases, I removed quiet splash so that I could see what was happening. Depending on the option, the visible boot process gets to a different place. With nomodeset it gets all the way to the virtual console (I started with a server install so I could better choose the packages I wanted). Without nomodeset, it gets as far as:

[    5.088899] fb: switching to inteldrmfb from VESA VGA

With nolapic as the only addition, it gets a couple of lines further on (both related to SATA stuff I think). This might be relatively random though as I've tried this a few times and got to a different stage in the SATA stuff (but always within a 100th of a second or so after the fb: line)

With i915.i915_enable_rc6=1, I get a message saying:

i915: unknown parameter 'i915_enable_rc6' ignored`

So that's obviously not doing anything.

I've also tried adding i915 and nvme into /etc/modules, but again: no discernible effect.

All of the above came from various different forums (and this site), but I'm afraid I didn't keep note of all of the references – hence not linking to any of the original questions.

In the case of the empty kernel line (just the stuff added by the installer and no nomodeset), if I ssh into the machine and startx, I can run xrandr and see:

Screen 0: minimum 8 x 8, current 1280 x 1024, maximum 32767 x 32767
DP1 disconnected (normal left inverted right x axis y axis)
DP2 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024     60.02 +  75.02
   1920x1080     60.00    59.94
   1152x864      75.00
   1280x720      60.00    59.94
   1024x768      75.03    72.00    70.07    60.00
   800x600       72.19    75.00    60.32    56.25
   720x480       60.00    59.94
   640x480       75.00    72.81    60.00    59.94
   720x400       70.08
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     60.00 +  50.00    59.94    59.99
   1920x1080i    60.00    50.00    59.94
   1600x1200     60.00
   1680x1050     59.88
   1280x1024     75.02    60.02
   1440x900      59.90
   1280x960      60.00
   1366x768      59.79
   1152x864      75.00
   1280x720      60.00    50.00    59.94
   1024x768      75.03    70.07    60.00
   832x624       74.55
   800x600       72.19    75.00    60.32    56.25
   720x576       50.00
   720x480       60.00    59.94
   640x480       75.00    72.81    66.67    60.00    59.94
   720x400       70.08
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
  1280x1024 (0x4a) 540.000MHz +HSync +VSync
        h: width  1280 start 1328 end 1440 total 1688 skew    0 clock 319.91KHz
        v: height 1024 start 1025 end 1028 total 1066           clock 300.10Hz

… suggesting the driver is working to some degree, there's just nothing being drawn on the screen.

Can anyone offer any suggestions for what I'm doing wrong?

I can obviously add more information as required, but I'm not sure what to add at the moment.


Edit 1

This is my current grub configuration /etc/default/grub

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="nomodeset"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=1024x768

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

This is the bit of /boot/grub/grub.cfg that seems most relevant:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-c21835f3-4aaf-4880-b573-19a361a72db9' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd1,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1  c21835f3-4aaf-4880-b573-19a361a72db9
        else
          search --no-floppy --fs-uuid --set=root c21835f3-4aaf-4880-b573-19a361a72db9
        fi
        linux   /boot/vmlinuz-4.8.0-26-generic root=UUID=c21835f3-4aaf-4880-b573-19a361a72db9 ro  nomodeset
        initrd  /boot/initrd.img-4.8.0-26-generic
}

Edit 2

The Xorg.log is here: http://pastebin.com/nvNwTPj4

I've rebooted and (in the grub edit screen) removed nomodeset and also removed the gfxmode line (since I've had some comments about removing vga=, but haven't actually got vga= to remove). This resulted in the same blank screen as before.

I've also tried just having text on the boot line, but this got to the same place as without anything (switching to inteldrmfb etc as above).


Edit 3

Following a suggestion from @Mladen:

  • I've now tried installing the intel graphics drivers from https://01.org/linuxgraphics/intel-linux-graphics-firmwares – both Skylake ones – the GuC and DMC installed according to the instructions. I then rebooted without nomodeset on the boot line and the screen went blank at the same point as in the other tests. Interestingly though, it stated:

    W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
    W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

The output of ls -l /lib/firmware/i915 shows:

total 412
-rw-r--r-- 1 root root   8380 Aug 15 15:40 bxt_dmc_ver1_07.bin
lrwxrwxrwx 1 root root     19 Aug 15 15:40 bxt_dmc_ver1.bin -> bxt_dmc_ver1_07.bin
-rw-r--r-- 1 root root   8616 Aug 15 15:40 kbl_dmc_ver1_01.bin
lrwxrwxrwx 1 root root     19 Aug 15 15:40 kbl_dmc_ver1.bin -> kbl_dmc_ver1_01.bin
-rw-r--r-- 1 root root   8824 Sep 14 13:47 skl_dmc_ver1_23.bin
-rw-r--r-- 1 root root   8928 Nov 10 17:54 skl_dmc_ver1_26.bin
lrwxrwxrwx 1 root root     38 Nov 10 17:54 skl_dmc_ver1.bin -> /lib/firmware/i915/skl_dmc_ver1_26.bin
-rw-r--r-- 1 root root 109636 Aug 15 15:40 skl_guc_ver1.bin
-rw-r--r-- 1 root root 128320 Aug 15 15:40 skl_guc_ver4.bin
-rw-r--r-- 1 root root 129024 Nov 10 17:53 skl_guc_ver6_1.bin
lrwxrwxrwx 1 root root     37 Nov 10 17:53 skl_guc_ver6.bin -> /lib/firmware/i915/skl_guc_ver6_1.bin

which shows much earlier versions of firmware than the ones that initramfs seems to be expecting

  • Following this, I followed the instructions here to upgrade to kernel version 4.8.6 (this also reported the missing firmware lines as above). I then rebooted (again without nomodeset) and again it got to exactly the same place.

  • Since the error above had seemed to relate to firmware for Kabylake and Broxton processors (although I'm fairly sure I have a Skylake one), I downloaded the latest files for those two from here – this only seems to be DMC stuff though. Installing both of those produced the same messages regarding missing firmware (presumably since they were DMC files and the version numbers were different). Unsurprisingly, the result is exactly the same: without nomodeset, the screen freezes after fb: switching to inteldrmfb from VESA VGA.

From what I've read, these firmware files are related to unreleased processors, so it's unlikely to be relevant anyway, but I thought it was worth a try.


Edit 4

In case it helps, I've pasted a complete dmesg output from a nomodeset boot and a non-nomodeset, blank screen boot. There are some differences (including loading of the skl_dmc_ver1_26.bin file, but I'm not sure what to make of it all…


Edit 5

I've also now tried this with kernel 4.8.7, but the behaviour is the same as with 4.8.0 or 4.8.6. Installing the intel microcode version 3.20160714.1 also didn't make any noticeable difference.


Edit 6

In case this turns out to be a kernel bug related in some way to this one, I've raised a bug on the kernel bugzilla page – https://bugzilla.kernel.org/show_bug.cgi?id=187601

Best Answer

Are you using the display port ? I am also having troubles with skylake, kernel 4.8 and i915 drivers with Ubuntu 16.10 ==> Intel didn't release the latest graphics stack for 16.10 yet.

You could try to:

1) Switch back to Ubuntu 16.04 LTS (and kernel 4.4.x)

2) Use kernel 4.6.7: http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.6.7/

3) Use the latest drm-intel-nightly kernel: http://kernel.ubuntu.com/~kernel-ppa/mainline/drm-intel-nightly/ (but there is no amd64 successful build available anymore, last was 2016-10-19)

Related Question