1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" dir=
"ltr">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Fixing the Linux black screen of death on machines with Intel HD video
</title>
7 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/vim.css" />
15 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
23 <div class=
"title">Fixing the Linux black screen of death on machines with Intel HD video
</div>
24 <div class=
"date">11th June
2013</div>
25 <div class=
"body"><p>When installing RedHat, Fedora, Debian and Ubuntu on some machines,
26 the screen just turn black when Linux boot, either during installation
27 or on first boot from the hard disk. I've seen it once in a while the
28 last few years, but only recently understood the cause. I've seen it
29 on HP laptops, and on my latest acquaintance the Packard Bell laptop.
30 The reason seem to be in the wiring of some laptops. The system to
31 control the screen background light is inverted, so when Linux try to
32 turn the brightness fully on, it end up turning it off instead. I do
33 not know which Linux drivers are affected, but this post is about the
34 i915 driver used by the
35 <a href=
"http://www.linlap.com/packard_bell_easynote_lv">Packard Bell
36 EasyNote LV
</a>, Thinkpad X40 and many other laptops.
</p>
38 <p>The problem can be worked around two ways. Either by adding
39 i915.invert_brightness=
1 as a kernel option, or by adding a file in
40 /etc/modprobe.d/ to tell modprobe to add the invert_brightness=
1
41 option when it load the i915 kernel module. On Debian and Ubuntu, it
42 can be done by running these commands as root:
</p>
45 echo options i915 invert_brightness=
1 | tee /etc/modprobe.d/i915.conf
46 update-initramfs -u -k all
49 <p>Since March
2012 there is
50 <a href=
"http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4dca20efb1a9c2efefc28ad2867e5d6c3f5e1955">a
51 mechanism in the Linux kernel
</a> to tell the i915 driver which
52 hardware have this problem, and get the driver to invert the
53 brightness setting automatically. To use it, one need to add a row in
54 <a href=
"http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/i915/intel_display.c">the
55 intel_quirks array
</a> in the driver source
56 <tt>drivers/gpu/drm/i915/intel_display.c
</tt> (look for "
<tt>static
57 struct intel_quirk intel_quirks
</tt>"), specifying the PCI device
58 number (vendor number 8086 is assumed) and subdevice vendor and device
61 <p>My Packard Bell EasyNote LV got this output from <tt>lspci
62 -vvnn</tt> for the video card in question:</p>
65 00:02.0 VGA compatible controller [0300]: Intel Corporation \
66 3rd Gen Core processor Graphics Controller [8086:0156] \
67 (rev 09) (prog-if 00 [VGA controller])
68 Subsystem: Acer Incorporated [ALI] Device [1025:0688]
69 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- \
70 ParErr- Stepping- SE RR- FastB2B- DisINTx+
71 Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- \
72 <TAbort- <MAbort->SERR- <PERR- INTx-
74 Interrupt: pin A routed to IRQ 42
75 Region 0: Memory at c2000000 (64-bit, non-prefetchable) [size=4M]
76 Region 2: Memory at b0000000 (64-bit, prefetchable) [size=256M]
77 Region 4: I/O ports at 4000 [size=64]
78 Expansion ROM at <unassigned> [disabled]
79 Capabilities: <access denied>
80 Kernel driver in use: i915
83 <p>The resulting intel_quirks entry would then look like this:</p>
86 struct intel_quirk intel_quirks[] = {
88 /* Packard Bell EasyNote LV11HC needs invert brightness quirk */
89 { 0x0156, 0x1025, 0x0688, quirk_invert_brightness },
94 <p>According to the kernel module instructions (as seen using
95 <tt>modinfo i915</tt>), information about hardware needing the
96 invert_brightness flag should be sent to the
97 <a href="http://lists.freedesktop.org/mailman/listinfo/dri-devel
">dri-devel
98 (at) lists.freedesktop.org</a> mailing list to reach the kernel
99 developers. But my email about the laptop sent 2013-06-03 have not
101 <a href="http://lists.freedesktop.org/archives/dri-devel/
2013-June/thread.html
">the
102 web archive for the mailing list</a>, so I suspect they do not accept
103 emails from non-subscribers. Because of this, I sent my patch also to
104 the Debian bug tracking system instead as
105 <a href="http://bugs.debian.org/
710938">BTS report #710938</a>, to make
106 sure the patch is not lost.</p>
108 <p>Unfortunately, it is not enough to fix the kernel to get Laptops
109 with this problem working properly with Linux. If you use Gnome, your
110 worries should be over at this point. But if you use KDE, there is
111 something in KDE ignoring the invert_brightness setting and turning on
112 the screen during login. I've reported it to Debian as
113 <a href="http://bugs.debian.org/
711237">BTS report #711237</a>, and
114 have no idea yet how to figure out exactly what subsystem is doing
115 this. Perhaps you can help? Perhaps you know what the Gnome
116 developers did to handle this, and this can give a clue to the KDE
117 developers? Or you know where in KDE the screen brightness is changed
118 during login? If so, please update the BTS report (or get in touch if
119 you do not know how to update BTS).</p>
121 <p>Update 2013-07-19: The correct fix for this machine seem to be
122 acpi_backlight=vendor, to disable ACPI backlight support completely,
123 as the ACPI information on the machine is trash and it is better to
124 leave it to the intel video driver to control the screen
128 <div class="tags
">Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>.</div>
146 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
01/
">January (11)</a></li>
148 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
02/
">February (9)</a></li>
150 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
03/
">March (9)</a></li>
152 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
04/
">April (6)</a></li>
154 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
05/
">May (9)</a></li>
156 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
06/
">June (10)</a></li>
158 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
07/
">July (7)</a></li>
160 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
08/
">August (3)</a></li>
162 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
09/
">September (5)</a></li>
164 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
10/
">October (7)</a></li>
166 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
11/
">November (6)</a></li>
173 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
01/
">January (7)</a></li>
175 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
02/
">February (10)</a></li>
177 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
03/
">March (17)</a></li>
179 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
04/
">April (12)</a></li>
181 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
05/
">May (12)</a></li>
183 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
06/
">June (20)</a></li>
185 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
07/
">July (17)</a></li>
187 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
08/
">August (6)</a></li>
189 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
09/
">September (9)</a></li>
191 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
10/
">October (17)</a></li>
193 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
11/
">November (10)</a></li>
195 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
12/
">December (7)</a></li>
202 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
01/
">January (16)</a></li>
204 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
02/
">February (6)</a></li>
206 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
03/
">March (6)</a></li>
208 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
04/
">April (7)</a></li>
210 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
05/
">May (3)</a></li>
212 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
06/
">June (2)</a></li>
214 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
07/
">July (7)</a></li>
216 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
08/
">August (6)</a></li>
218 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
09/
">September (4)</a></li>
220 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
10/
">October (2)</a></li>
222 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
11/
">November (3)</a></li>
224 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
12/
">December (1)</a></li>
231 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
01/
">January (2)</a></li>
233 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
02/
">February (1)</a></li>
235 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
03/
">March (3)</a></li>
237 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
04/
">April (3)</a></li>
239 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
05/
">May (9)</a></li>
241 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
06/
">June (14)</a></li>
243 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
07/
">July (12)</a></li>
245 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
08/
">August (13)</a></li>
247 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
09/
">September (7)</a></li>
249 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
10/
">October (9)</a></li>
251 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
11/
">November (13)</a></li>
253 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
12/
">December (12)</a></li>
260 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
01/
">January (8)</a></li>
262 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
02/
">February (8)</a></li>
264 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
03/
">March (12)</a></li>
266 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
04/
">April (10)</a></li>
268 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
05/
">May (9)</a></li>
270 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
06/
">June (3)</a></li>
272 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
07/
">July (4)</a></li>
274 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
08/
">August (3)</a></li>
276 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
09/
">September (1)</a></li>
278 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
10/
">October (2)</a></li>
280 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
11/
">November (3)</a></li>
282 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
12/
">December (3)</a></li>
289 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
11/
">November (5)</a></li>
291 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
12/
">December (7)</a></li>
302 <li><a href="http://people.skolelinux.org/pere/blog/tags/
3d-printer
">3d-printer (13)</a></li>
304 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga
">amiga (1)</a></li>
306 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros
">aros (1)</a></li>
308 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid
">bankid (4)</a></li>
310 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin
">bitcoin (7)</a></li>
312 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem (13)</a></li>
314 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa
">bsa (2)</a></li>
316 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian (90)</a></li>
318 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu (142)</a></li>
320 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan
">digistan (10)</a></li>
322 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook
">docbook (10)</a></li>
324 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser
">drivstoffpriser (4)</a></li>
326 <li><a href="http://people.skolelinux.org/pere/blog/tags/english
">english (228)</a></li>
328 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami
">fiksgatami (21)</a></li>
330 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling
">fildeling (12)</a></li>
332 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture
">freeculture (12)</a></li>
334 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox
">freedombox (5)</a></li>
336 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen
">frikanalen (11)</a></li>
338 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju
">intervju (37)</a></li>
340 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram
">isenkram (7)</a></li>
342 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart
">kart (18)</a></li>
344 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap
">ldap (8)</a></li>
346 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker
">lenker (6)</a></li>
348 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp
">ltsp (1)</a></li>
350 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network
">mesh network (5)</a></li>
352 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia
">multimedia (25)</a></li>
354 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk
">norsk (237)</a></li>
356 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug
">nuug (159)</a></li>
358 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn
">offentlig innsyn (9)</a></li>
360 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311
">open311 (2)</a></li>
362 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett
">opphavsrett (45)</a></li>
364 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern
">personvern (67)</a></li>
366 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid
">raid (1)</a></li>
368 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap
">reprap (11)</a></li>
370 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid
">rfid (2)</a></li>
372 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot
">robot (9)</a></li>
374 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss
">rss (1)</a></li>
376 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter
">ruter (4)</a></li>
378 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki
">scraperwiki (2)</a></li>
380 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet (33)</a></li>
382 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary
">sitesummary (4)</a></li>
384 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis
">skepsis (4)</a></li>
386 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard
">standard (43)</a></li>
388 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll
">stavekontroll (3)</a></li>
390 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget
">stortinget (9)</a></li>
392 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance
">surveillance (21)</a></li>
394 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin
">sysadmin (1)</a></li>
396 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg
">valg (8)</a></li>
398 <li><a href="http://people.skolelinux.org/pere/blog/tags/video
">video (39)</a></li>
400 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap
">vitenskap (4)</a></li>
402 <li><a href="http://people.skolelinux.org/pere/blog/tags/web
">web (28)</a></li>
408 <p style="text-align: right
">
409 Created by <a href="http://steve.org.uk/Software/chronicle
">Chronicle v4.6</a>