Arch Linux on HP Omen
When buying HP Omen 15, I was interested in how Linux works on it, especially Arch Linux since that is the OS I was planning to use as my main OS.
I did not find any information on the internet (probably because it has not been on the market for long time yet) but I bought it anyway, so I decided to write down my own experiences!
TL;DR -> take a look at the summary.
Specs
Short specs for my HP Omen 15:
- i7-4710HQ
- Nvidia GeForce GTX 860 and Intel® HD Graphics 4600
- fullHD IPS touch screen
- HDMI and DP
- 16GB RAM
- 256GB SSD (I wish it was 512GB!)
- OS: Win8
Initial state and making space for Arch
Omen came with Windows 8 preinstalled, so my first task was to create space on disk for Arch, while keeping Windows.
I logged in to Windows and inspected current state of the disk, and was surprised that it had five partitions! Two of them were Windows partition and UEFI partition (I wanted to keep those), while other three were recovery partitions -> they are used to reinstall Windows with all HP tools on it, and also make some of HP diagnostic tools available on boot.
Since my Omen had only 256GB SSD I decided this partitions were taking too much space, and decided to delete them! However, there is one important fact: HP does not give you serial key for Windows, instead you have to restore them from recovery partition when you want to reinstall them. In order to be able to reinstall Windows in future, you either have to keep the recovery partition on disk, or you can save it to external media, like USB, using HP Recovery Manager, which is already installed on Windows. I used it to save recovery partition to USB (it took 13GB of space), and then I deleted all partitions except for Windows and UEFI.
I moved UEFI to start of the disk (and resized it to 512MB as recommended by ArchWiki) and moved Windows to the end of the disk (and resized them to 80GB). This way I can put my ArchLinux partition right after UEFI, and if I will need more space for it in the future I can expand it on the behalf of Windows partition. For all this fiddling with partitions I used MiniTool Partition Wizard, which is really easy to use (in order to resize and move UEFI, disable “secure something” option).
Installing Arch
Nothing special happened here, I created a bootable USB as explained by ArchWiki and booted from it (Enter boot setup with F10 and under Boot order set usb as first). You have to be aware of SecureBoot: you can either disable it in BIOS setup or tell it that your USB is ok, as explained here. I used existing UEFI partition, and GRUB as boot loader.
Problem #1: Arch not booting (SOLVED)
When I started Omen for first time after installation, I was expecting it to start GRUB, where I will be able to choose if I want Arch or Windows. However, that did not happen, and machine booted directly into Windows, and same thing was happening on every boot.
After some investigation on internet, I found out that HP violates UEFI standard and directly loads Windows by running EFI/Microsoft/Boot/bootmgfw.efi
(EFI
is path to your UEFI partition), instead of running EFI/Boot/bootx64.efi
, which is standard UEFI entry point (and boot loaders use that fact to start first on boot).
Great post about it can be found here.
Solution to this is to move EFI/Microsoft/Boot/bootmgfw.efi
to EFI/Microsoft/Boot/bootmgfw-original.efi
(to preserve it just in case) and then copy EFI/GRUB/grubx64.efi
(or whatever is your efi file that you want to run on boot) to EFI/Microsoft/Boot/bootmgfw.efi
(don’t move it, copy it, so you also keep the original file). I did this moving and copying from Arch, where I have EFI partition mounted under /efi
. This is it, HP Omen will start GRUB first!
Often when Windows update they write again to EFI/Microsoft/Boot/bootmgfw.efi
so this process needs to be repeated then.
However, now there is no way to run Windows. For that, we need to add extra entry point to GRUB. Based on this link I created following entry (don’t copy paste this, create it based on the link I provided):
menuentry 'Windows' {
insmod part_gpt
insmod fat
insmod chain
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt1' --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 E6A9-4AA0
chainloader /EFI/Boot/bootx64.efi
}
I put this entry in /etc/grub.d/40_custom
.
Of course, regenerate grub.cfg
after adding this entry!
Notice here that I point Windows entry toward /EFI/Boot/bootx64.efi
and not /EFI/Microsoft/Boot/bootmgfw-original.efi
. While latter sounds like a reasonable way to do it, it just does not work, I think bootmgfw-original.efi
is not happy that I renamed it. On the other hand, Windows also writes its loader to /EFI/Boot/bootx64.efi
, so that works.
NOTE: If you get into problem and are really really not able to get GRUB Windows entry to work, one option is always to press F9 when laptop is booting up, then choosing “pick EFI file” and then manually choosing appropriate Windows EFI file (in this case that would be EFI/Microsoft/Boot/bootmgfw-original.efi
).
Problem #2: Wifi is not working (SOLVED)
I had following problem with wifi: almost always it was hard locked on boot, and I was not able to unlock it (pressing fn + f12 did not work), thus wifi was not working. Interesting fact: on rare occasions wifi was working after boot, but if I pressed fn + f12 it would hard lock and I could not unlock it!
You can check that it is hardlocked using rfkill list
, it will say “Hard blocked: yes” for your wifi interface, and you want to get that thing to be “no”.
I tried different solutions found on web, and one that worked for me was to blacklist acer_wmi module (thanks Felix)!
Details about how to blacklist a module can be found here, and I will also write short instructions here:
- add line
blacklist acer_wmi
to/etc/modprobe.d/modprobe.conf
- make sure that
/etc/mkinitcpio.conf
has the file above listed underFILES
. That line looks like this on my machine:FILES="/etc/modprobe.d/modprobe.conf"
- finally, rebuild initramfs by running
mkinitcpio -P
and reboot your machine
Multiple screens
One of the reasons why I chose HP Omen 15 is because it does not have only HDMI port (most of other laptops in same category have only HMDI port) but also a display port (DP).
Why was this important for me? I usually work with two external displays plugged into my laptop (with laptop lid closed), and I wanted my laptop to support that. Most of other laptops in the same category as Omen have only HDMI port and no other video ports. This is not a problem on Windows because modern laptops come with USB3.0 ports, so you can plug in second external display using VGA/DVI/DP to USB3.0 adapter. However, on Linux this is a problem because all such adapters have DisplayLink chips, and DisplayLink did not release any drivers for Linux yet (and they are not interested in working on any so soon)! Therefore, it was important for me to have two video ports on my laptop.
I had no problem configuring multiple screens, I used arandr
to set them up and that was it!
EDIT: Later I used Gnome instead of xfce and it was even simpler, Gnome took care of monitors completely on its own.
Touchscreen
Suprisingly for me, touch screen was working (mostly) out of the box! One thing I noticed that does not work is buttons on window bar: they did not react to touch. There may be some other problems, but I did not test it thoroughly, and there is a possibility that they can be fixed. NOTE: I use xfce as my desktop environment.
Graphics
I had no problems with video: I installed Bumblebee with Intel/Nvidia and it worked fine as far as I could tell.
To confirm it works ok I tried unigine-heaven
test and it gave good results, very similar to results on Arch Wiki for Asus N550JV (which also has GTX 860).
I also managed to get games over Steam working ok! Games that I tried are Counter-Strike GO and DotA 2, and they work great. Initially I had some problems (I was getting crappy performance), but I managed to solve the problems by following instructions from arch wiki for Steam (I removed Steam’s special libraries, so Steam will use libraries from Arch). Also, to get Steam to run the games with discrete GPU, I run them with optirun -b primus %command%
(you can set it in Steam, under properties of specific game, at launch options).
Keyboard
HP Omen has backlit keyboard, where you can choose color for each of 6 different sections. However, there are no drivers for Linux (as expected), so there is no way to choose colors (but you can toggle lights on/off with fn + f5). Another thing that does not work are special gaming buttons on the left: each of them is recognized as button to its right (P1 as escape, P3 as tab, and so on). I asked HP support for some information about how to control keyboard lighting or use special buttons, but got no useful response so far.
Other
Camera and sound worked fine out of the box!
Intel Turbo Boost
In second year of having Omen, I encountered very often down-throttling of my CPU. Tracking metrics like CPU temperature, it was obvious that CPU was achieving pretty high temperatures on higher load and therefore hardware down-throttling was occuring, causing that feeling of stutter, like everything froze for half a second. After some time this became such a problem that I could not play a single game without this occuring every 20 seconds, making them unplayable. I don’t play games often so I just disregarded the problem for long time, however then I also started having problems with battery (low capacity, system restarting if on high load and on battery while reporting that battery is empty although it is full).
All this was happening on both Arch Linux and Windows so I concluded it has to do with hardware, and maybe battery is connected with the CPU? I took it to repair shop, they changed thermal paste and replaced the battery, but the problem continued! Now the battery was behaving ok, but the problem with the CPU was still there! \ Finally, I found out about Intel Turbo Boost. It is a feature of CPU that causes it to overclock on demand, often when process is using only one core, and it is turned on by default on HP Omen. It should be a non-invasive feature and enable your CPU to give more when it is safely under its limits, however in my case for some reason it was almost always turned on and going over the limits just like that, causing too big temperatures and so on.
I am not sure if there is something wrong with how Turbo Boost is configured on HP Omen or there is some problem with temperature sensors or there is a problem with cooling (but I have new thermal paste and fans work ok, all clean, so why would it have problem with cooling?), but after turning off Turbo Boost problem stopped appearing and CPU stopped going over the maximum allowed temperature!
In HP Omen there is no option in BIOS to turn off the Turbo Boost unfortunately. I turned it off in Windows by using trick that I found online: I set maximum CPU performance to 99% in my power mode settings. On Linux, I have actually not managed to turn off the Turbo Boost yet as none of the nice/clean proposed methods worked for me and I did not want to go with hacky ones, but I will post here when I figure out how to do it.
Summary
Stuff that did not work out of the box but I was able to fix it:
- wifi
- booting into anything other then Windows
Stuff that did not work out of the box and I was not able to fix it so far:
- control of keyboard lighting and special gaming buttons (no support from HP)
Everything else works really fine, including switching from integrated to discrete GPU, playing games, two external monitors, touchscreen (partially), mousepad, camera and sound!