reducing intel skylake coil whine / buzzing noise (DELL XPS 13 9350, Ubuntu 16.04)

I recently bought the new, skylake DELL XPS 13 9350 and I found out it suffers from a buzzing noise coming from the left-top part of the keyboard. DELL tried to help with 1 motherboard replacement and 1 swap with a brand new computer with no success, hence I suppose that basically all the machines suffer from this problem, some more and some less.

This post explains how to sensibly reduce the coil whine / buzzing noise on Ubuntu 16.04 (and other distros relying on the i915_bpo driver) at the price of battery-life and screen resolution. It is not a proper solution, but some kind of hack-fix.

Apparently, this is related to the Intel HD integrated graphic card and the C-states of the skylake processor (see https://www.reddit.com/r/Dell/comments/4atex3/new_dell_xps_13_9350_i7_6560u_coil_whine_issue/ or https://www.reddit.com/r/Dell/comments/47g46m/lets_investigate_the_xps_1315_coil_whine_hardware/). In fact:

  • you can hear the buzzing when there are “moving graphical elements on the screen”, i.e. when you scroll a web-page or when the start-menu boxes of Windows 10 perform an animation
  • with the out-of-the-box Windows 10 installation, there was no noise but also no Intel HD graphic driver installed: as soon as I update the machine and the driver gets installed, the noise appears
  • by disabling the Intel HD graphic card in Windows 10 Device Manager, the noise disappears (ofc this is NOT a good solution).

I read some forums here and there and I found that also other ultrabooks relying on the new Intel Skylake processors may be affected by this problem (i.e., ASUS ux303ua?).

Because I work on Ubuntu 16.04, here are the steps I took to drastically reduce the noise for this OS. I suppose that similar steps can be taken in other distros relying on the i915_bpo driver (possibly also for the less recent i915) and in Windows (try with https://secretundergroundla.ir/how-to-fix-coil-whine-problem-on-xps-13-9350-temporarily/ ). First, let’s disable the C-states in both the BIOS and the OS:

  1. On the BIOS settings (press F2 when the DELL logo appears on startup), disable the C-states (Settings >> Performance >> C-states control);
  2. In Ubuntu, edit the grub configuration file to disable the rc6 option of the skylake driver (i915_bpo, not sure if this works also with the previous i915):
    • run sudo nano /etc/default/ grub   (ofc you can use gedit or any other text editor instead of nano);
    • replace the line
      GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
      with
      GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915_bpo.enable_rc6=0" (possibly the same works for the previous driver i915, used in previous versions of Ubuntu);
    • run sudo update-grub;
  3. Reboot your system.

At this point the buzzing noise should be extremely low, but mind that also the battery-life has been lowered because the C-states are no longer active. (I did not really test how much it changes, I still have more than 6 hours of battery so it’s fine for me.)
However, I could still hear a different, perpetual coil whine whistle coming from under the R key. To reduce this noise, I’ve seen that lowering the screen resolution helps. I therefore changed my resolution to the previous 16:9 level. For me this kinda works, since I don’t really do design work and also because many Linux Desktop Environments have poor scaling options, so a lower resolution can just help the user experience (bigger icons, bigger fonts in documents and web browsers).

Hope this helps.
Feel free to share your experience!

Leave a Reply

Your email address will not be published. Required fields are marked *

Captcha * Time limit is exhausted. Please reload the CAPTCHA.