A couple of months ago I went looking for a new laptop to replace my old Thinkpad T450s. I’ve been a Thinkpad fan for years, but I was very disappointed when I looked at the current offerings from Lenovo.

My main requirements from a laptop historically have been the following ones:

  • Good and durable build quality (which means, no consumer laptops)
  • IPS matte screen (non-touch)
  • User-replaceable hardware components
  • Good amount of I/O ports
  • Good Linux support

Additionally as we are in 2023, I really wanted a Ryzen cpu.

Thinkpads used to meet all these requirements, but as of 2023 this is no longer the case:

  • The Thinkpad T14 Gen 3 AMD has LPDDR5 soldered RAM.
  • The Thinkpad T14s Gen 3 AMD has LPDDR5 soldered RAM and doesn’t even have an Ethernet port.

The motivation for soldering the RAM is that the SODIMM standard is too old and bulky and cannot reach the faster speeds of DDR5. But going with an anti-consumer choice such as soldering the RAM is not a proper solution. Hopefully the CAMM modules introduced by Dell will solve this problem, but for now I was so pissed by this that I decided for the first time to consider alternative brands.

The choice was basically between Dell and HP business laptops, since Ryzen CPUs are still quite hard to find in the “prosumer” laptop market.

So, after going again through my list of requirements, the choice was actually quite simple: the HP Elitebook 645 G9 was the only one left…

Here’s a picture of the laptop from the back:

Back of the HP Elitebook 645 G9 laptop

I’ve never had an HP laptop before. In my mind HP had a bad reputation because of terrible consumer laptops, but their Probook/Elitebook lines of business laptops are supposed to have better quality and should be comparable to Thinkpads. But what really convinced me was this video released by HP itself, where basically they show how you can replace pretty much everything in this laptop. I was very impressed.

In this review, I’ll show how this laptop actually has almost all the features that Thinkpad laptops (used to) have!

Hardware Specifications and Price

In the Italian market there is currently only one available model to buy (with part number 5Y3J1EA#ABZ) and you cannot configure it at all, so this is what I bought. On the HP website it’s currently listed at 889€, but third-party online stores sell it for much less. I got mine for 630€, shipping costs included.

Fortunately this model has the Ryzen 7 5875U, which is the best Ryzen variant that the 645 G9 can have.

Here you can find the full hardware specifications:

  • CPU: Ryzen 7 5875U (Zen 3/Barcelo, 7nm, 8c/16t).
  • RAM: 2 DDR4-3200 SODIMM slots, supporting up to 64 GB of RAM (came with one 8GB DDR4 stick).
  • Main SSD: 1 NVMe M.2 2280 slot (came with a low-tier Samsung 256GB SSD).
  • 1 WWAN slot: supports NVMe M.2 2242 M-keyed SSDs (came empty).
  • 1 WLAN slot (came with Realtek RTL8852BE).
  • Display: 14’’ 1920x1080 IPS matte screen, 250 nits, 45% NTSC color gamut coverage.
  • Webcam 720p with hardware shutter.
  • Keyboard: backlit with Italian layout. HP claims it’s spill resistant.
  • Battery: internal only, 42.75 Wh, 3 cells.

The following picture shows the default hardware components that came with the laptop:

Default hardware components in the 5Y3J1EA#ABZ model

I replaced the OEM 8GB DDR4 stick with 2x16GB Crucial DDR4 sticks, the OEM Samsung 256GB SSD with a Samsung 970 Evo Plus 1TB, and the (crappy) Realtek RTL8852BE with an Intel AX200. The WWAN slot was empty and I don’t use WWAN connectivity anyway, so I bought a Western Digital SN520 M.2 2242 SSD for this slot. Unfortunately it seems that WD stopped manufacturing these SSDs, so I was only able to buy one with 256GB capacity.

The AMD Barcelo platform only supports PCIe Gen 3, so it was pointless to buy a faster PCIe Gen4 SSD for the main SSD slot. PCIe Gen 3 is fast enough for my needs though.

After these hardware upgrades, the laptop internal looks like this:

Upgraded hardware components

The only complaint I have about hardware maintenance on this laptop is that closing the base enclosure is very difficult, you will need a lot of pressure to put the plastic clips back in place.

I/O Connectivity

On the laptop left side, there is a Kensington lock, an Ethernet port (which is becoming a rarity even on more expensive laptops), a full-size USB 3.2 Gen 1 port, and a Smartcard reader:

Left side of the HP Elitebook 645 G9 laptop

Here’s a closer look to the Ethernet port in action:

Ethernet port on the HP Elitebook 645 G9 laptop

On the right side, there is a proprietary charging port, a USB Type-C Power Delivery port with DisplayPort 1.4, another two full size USB 3.2 Gen 1 ports, an HDMI 2.1 port, a 3.5mm audio port, and an external SIM card slot. The SIM card slot looks sealed off and I haven’t bothered to check whether you can open it by removing the top enclosure of the laptop, as I won’t ever use it.

Right side of the HP Elitebook 645 G9 laptop

The laptop came with a 45W charger with proprietary barrell connector, but fortunately the laptop can also be charged through the USB C port using any USB Power Delivery charger. It can also be charged while connected to a monitor that supports USB C Power Delivery.

USB Power Delivery on the HP Elitebook 645 G9 laptop

Overall the connectivity is great. Basically the only thing missing is a SD card reader, which is a bit annoying but not a deal breaker.

Linux support

The laptop came with Windows 10 and can be upgraded to Windows 11. I did an even better upgrade by installing Archlinux on the fresh Samsung 970 Evo SDD.

Archlinux on the HP Elitebook 645 G9 laptop

I had no idea about the quality of the Linux support for this laptop, but I was quite confident that at least the basic things would work. Turns out that almost everything worked out of the box! In fact, the only hardware feature that did not work at all was the tiny LED on the mute/micmute function buttons. After digging around for a while, I realized that it was necessary to add an hack in the Linux kernel. So I did it and I submitted my first patch against the Linux kernel! Whooa!

There was an annoying 1 minute system freeze after resuming from suspend. After finding a similar issue in the Linux kernel bugzilla, I added a comment in that bug report and Mario Limonciello from AMD was able to adapt the fix also for this laptop.

Finally, another issue was that the WD SN 520 SSD was not “visible” to the kernel, but this was easily fixed with the nvme_core.default_ps_max_latency_us=5500 kernel parameter (credits to: 1, 2).

Another thing to note is that the smartcard reader does work, but it gets powered only when you actually insert a smartcard inside it (so I was initially fooled into thinking that it was not being recognized by Linux).

Keyboard

The keyboard feels ok. The arrow keys have a weird size, but this allows a full-size PageUp/Down keys on the right edge, which is quite good actually. Key travel is shorter than Thinkpad’s keyboards, but you get used to it.

Keyboard and touchpad on the HP Elitebook 645 G9 laptop

Below the keyboard there is something that looks like a fingerprint reader, but since I don’t see one neither in the BIOS nor in the OS, I suppose it is only a cover. HP itself specifies that the fingerprint reader is an optional addon. Since I don’t need to use it, I haven’t bothered to remove the top enclosure to check what is actually there and what could be added later if desired.

The keyboard backlit has three levels of brightness and can be configured in the BIOS to shut-down after a period of time of inactivity, which is a nice feature. There are 5 status LEDs on the keyboard: one on the Power button, two on the mute/micmute buttons, one on the Caps-lock button and one the FN lock button. I noticed that the LEDs on Caps-lock and FN-lock gets powered-off whenever the backlit is powered-off by the inactivity timer, while they are always on (as expected) if you shutdown the keyboard backlit. This feels like a bug but I haven’t bothered to investigate it yet.

I did not dare to test the spill-resistant feature claimed by HP.

The touchpad is decent enough, even though I’m not a fan of the category in general. There is no trackpoint, but trackpoints on non-Thinkpad laptops usually suck anyway, so probably not a big loss.

Display and webcam

The display’s brightness is only 250 nits and the manufacturer is AOC which doesn’t seem to have a good reputation, but honestly the display looks good enough for my needs. Here’s a picture of the display at full brightness:

Display of the HP Elitebook 645 G9 laptop

The display hinge opens (almost) at 180 degrees, which is one of the most beloved Thinkpad features.

Hinge of the HP Elitebook 645 G9 laptop

Unfortunately the display is only 16:9. HP offers 16:10 displays on the bigger brother Elitebook 845 G9, but keep in mind that the 845 G9 does not have an Ethernet port.

The top bezel hosts the webcam and two microphones on the sides. There is also an “IR Camera” that I believe is used by the Windows Hello “feature”. The webcam has a physical shutter ando also a LED that powers up whenever it’s active.

Webcam of the HP Elitebook 645 G9 laptop

Performance, noise and temperatures

The Ryzen 5875U is awesome. It runs so quiet at idle you basically can’t hear it. Under heavy loads, it stays between 80 and 90 celsius degrees, which is to be expected. The double-heatsink design used by HP, which you can see from the above pictures, does the job pretty well.

As for the actual performance, it can handle almost everything you throw at it, including videogames. It even beats my Ryzen 5 3600 desktop CPU in the Blender benchmark!

Blender benchmark result by Elitebook 645 G9 laptop

Battery Life

HP claims “Up to 17 hours and 30 minutes with 42whr battery” but I doubt that’s really possible even on Windows. The KDE Plasma battery applet tells me I have around 6/7 hours left at 100% charging level, and that sounds more realistic.

The battery doesn’t support charging thresholds set by Linux, unlike on Thinkpads. There is a similar feature that can be enabled from the BIOS, but it’s only an On/Off toggle that hardcodes a 80% charging threshold and doesn’t allow further fine-tunings. If you enable this feature, Linux would still see the battery as if it had a full 100% charging level available, which is quite confusing, so I decided to turn it off.

The bad news about battery life is that there is quite a significant battery drain while the laptop is suspended. We are talking about 1.5% battery discharge per hour, on average. HP has been disabling (or at least, hiding from the BIOS/ACPI) the old S3 sleep mode in favor of the modern S0 sleep, so it’s not possible to enable S3 from the BIOS. It seems that most vendors have been doing the same thing in the last couple years, as the argument is that maintaining both S3 and S0 is too much work for them and on paper a properly implemented S0 sleep should consume even less energy than the old S3. In the S3 world it was the firmware that ensured a proper sleep state. With S0 instead, the OS is entirely responsible of putting all the hardware in the correct sleep state. This is not an easy task and not even Windows gets it right. After a bit of googling, I found this commit which should improve things and should land in Linux 6.3, so I’ll do further battery draining tests once I get on that kernel.

BIOS

HP doesn’t support BIOS updates through fwupdmgr, but according to this blog post it should be possible to manually update the BIOS even without Windows installed.

The (UEFI) BIOS on this laptop is quite minimal but I believe at least the essential options should be available. I can launch Linux from the built-in UEFI bootloader via EFISTUB, and that alone is enough for me.

Conclusions

The Elitebook 645 G9 was quite a welcomed surprise. For a very cheap price you get very good hardware, the upgradability is excellent and Linux support is also good. In this price range (< 700€) I don’t think there is anything better on the market right now.