Background

I’ve had the same notebook (an MSI GE60 0ND) for about 6 or 7 years, which had served me pretty well. Nothing ever broke and it’s still in pretty good shape, which you’d usually not expect with such devices. However, I finally decided that it was time for a upgrade, mainly because the old one’s battery only lasted for about an hour or two and because the fans were annoyingly loud under normal use. They probably always have been, but I’ve not been working in a quiet office environment as much before. The hardware also has become a little dated by now of course, but that didn’t bother me too much, except for some convenience features such as wireless display/miracast.

Either way I was looking for a new notebook that could handle software development workloads and some occasional gaming. Since hardware that satisfies these requirements can be put into pretty slim chassis these days I didn’t bother looking at anything other than thin & light gaming notebooks (or “content creator notebooks” as these seem to be called sometimes). It should have the latest hardware and connectors and be easy to upgrade or repair. I didn’t care how loud the fans can get under heavy stress testing or gaming as long as it supported some kind of quiet mode that minimizes noise to unnoticable levels, even if that meant underclocking the CPU and GPU a bit. It should also look a little professional and not like a toy with hundreds of LEDs and cool gamer decals and whatnot.

I’ve tried the “MSI GS65 Stealth Thin” at first, but I wasn’t happy with it. First of all, the fans, while they actually were pretty quiet, seemed to be defective as they produced a strange clicking noise in regular intervals as if they turned on and off every second for a short while. A reddit user seems to have had the same issue and recorded it, leading me to believe that this is either just how it is or MSI has some pretty bad QA, both of which I cannot excuse at such a price point (about 2300€). Another thing I disliked was the extraordinarily ugly font they used for the keyboard, which I really cannot comprehend as the rest of the notebook looked pretty good. It also didn’t have a numpad, although I could probably get used to that. Another downside is the fact that the mainboard is essentially upside-down (with the chips facing toward the keyboard), forcing you to take the whole thing apart to e.g. upgrade the SSD or RAM. Anyway, I returned it.

The best alternative seemed to be the Gigabyte AERO 15x v8 at that time, however I heard some bad things about its software side (no Linux support, buggy BIOS, bad Windows drivers/bloat) and airflow was also not as good, which kind of made me not want to get it. However, at Computex 2019 a few weeks prior, Gigabyte revealed a newer iteration of the AERO called just “Gigabyte AERO 15” again. It was marketed towards content creators rather than gamers this time, featuring an OLED display and a redesigned chassis with better airflow. I didn’t want an OLED display, but luckily they offered the same model with a 240Hz IPS screen. Hardware-wise this notebook seemed ideal and had pretty much everything I wanted from a modern high-end notebook, including one of the largest notebook batteries currently on the market. Since it wasn’t targeted at gamers I had hopes that they would have toned down the “gamer”-tier software a little. In the end I decided to give it the benefit of the doubt, waited for its release and ordered the “AERO 15-SA” with an i7-9750H and a GTX 1660Ti.

As there already are tons of reviews and benchmarks out there for this notebook and its CPU/GPU I won’t go into the performance details here. However, all games I tried had very good framerates and it didn’t get too hot, stuff like Visual Studio runs pretty well and the whole thing stays very silent when you tell it to. The battery really does last a long time (6 hours +), the screen looks very good, the chassis feels sturdy and looks nice, maintenance is not a problem as everything is easily accessible when you unscrew the bottom. They also “promised” to use Samsung DRAM and Intel SSD instead of whatever was the cheapest they could find that would fit the specs, both of which I can confirm. The Intel SSD isn’t really that great, however (e.g. it doesn’t seem to support hardware encryption, TCG Opal). The fingerprint reader is a neat gimmick, but not much more than that. It works as expected, though that’s probably not much of an achievement since these things have become ubiquitous in smartphones. It does “block” a small portion of the otherwise pretty decent touchpad, but that doesn’t bother me.

AeroCtl

The software however was still a train-wreck. The so-called “Gigabyte ControlCenter” has typos and Google-translated text all over the place. The “manual” button opens a PDF at a hardcoded location somewhere in C:\Users\…\Documents\, which simply ceases to work when you rename or delete the PDF and leads to the app closing with no feedback. It has 5 or 6 processes/services running in the background, wasting CPU even though nothing is happening. It needs Intel XTU installed and running or it will simply not start at all. Most of the functionality it provides is redudant since Windows already implements these options in a standardized way (such as display color profiles, power plan management, …). The fan controller UI is barely usable. It downloads driver/software updates over unsecured HTTP and runs them without verifying any kind of signature. I could probably go on but you get the idea. It also has this “AI” powered performance boost nonsense, whatever the hell that is supposed to be, but you can uninstall that at least.

One might think one could just uninstall it or remove it from autostart once the vendor-specific details have been configred. But since the manufacturer decided to use non-standard keyboard events for things such as display brightness controls, WLAN and touchpad toggle for apparently no reason whatsoever, you’d lose lots of convenient keyboard shortcuts. Things like fan control and keyboard RGB LEDs also depend on the ControlCenter.

I didn’t want to settle with this, so I started digging into the app and its virtually hundreds of DLLs and EXEs. Luckily, almost all of it was written for the .NET runtime, making reverse-engineering relatively simple as they didn’t bother obfuscating their horrible code. Most of the lower-level functionality, such as fan and battery controls, is provided through two WMI classes located at root\WMI\GB_WMIACPI_Get and root\WMI\GB_WMIACPI_Set, making it trivial to talk to this interface, as .NET already has a library (System.Management) that allows you to use WMI classes and methods. These appear to come from Windows’ wmiacpi driver and require a vendor-specific definition file/DLL to be installed. This is, as far as I can tell, the only thing you’d need to run AeroCtl on a completely clean installation of Windows 10. The DLL is located in C:\Windows\SysWOW64\acpimof.dll and needs a registry key to be properly detected, see “Installation” in this driver sample. I’m not sure what put the DLL there in the first place as I’m still on the pre-installed Windows, possibly the ControlCenter installer. Using this WMI interface I was able to reproduce pretty much all functionality without needing to have any of the ControlCenter programs and services running or having Intel XTU running (or even installed for that matter). The non-standard keyboard events can be handled by using Windows’ raw input API. For some reason, these keys don’t even send key-up events, but I believe that’s not something that can be changed, so you just have to live with that. The keyboard RGB controller can also be accessed by making use of Windows’ USB HID API. The protocol for things like changing LED colors or changing the brightness is pretty simple.

These efforts led to the creation of AeroCtl, which is a simple single-window WPF UI that serves as a drop-in replacement for the ControlCenter. It even offers some functionality not found in the ControlCenter, such as a software fan controller that is not limited to exactly 15 fan steps as the HW controller is. It uses an interpolated fan curve instead with configurable update interval and ramp up/down rates. However, the app is currently lacking a UI to edit the keyboard LEDs, as this would probably take a lot of effort to create but has very little use to me. I’ll happily accept pull requests though. Nonetheless, the RGB controller API/protocol itself is implemented, there are some samples in the git repository so one can create custom effects. For example, I’ve made a simple background process that changes colors of the individual lock keys (caps lock, num lock, scroll lock) dependending on their state, as the notebook does not have any indicator LEDs otherwise. AeroCtl also handles the Fn keys and shows notifications for actions (e.g. toggling Wi-Fi on/off). I even managed to get Windows’ default display brightness OSD to show up when you press the corresponding Fn keys, which is actually not even documented at all. It uses <0.01% CPU when minimized and not using the software fan controller, and about 0.03% with the software fan controller enabled.

This is how the thing currently looks:

Main Window

The fan curve editor looks like this (also supports the HW step fan thing):

Fan controls

Obviously this is just a hacked-together project based on reverse-engineering Taiwanese bloatware and making use of undocumented APIs. I cannot guarantee that it works for everyone and doesn’t make your notebook explode. A friend of mine tested this with his AERO 15x v8 which appears to differ a bit from the AERO 15-SA in terms of what the WMI API offers and how the RGB controller behaves. He made some changes to get it to work on that model. I’ve only ever tested this with my notebook. So anyway, use at your own risk.

Wrapping Up

With the ControlCenter out of the way, there really aren’t many bad things to say about the AERO 15. The lack of status LEDs is a little odd, but I’m not missing them, really. The speakers don’t sound too great, but it’s not like you would use these for anything serious - who doesn’t use a pair of good headphones to listen to music? Because of the thin bezels, the camera placement is possibly suboptimal (it’s below the screen as it was in previous AERO models), but I have never even used a notebook camera in my life. To be honest, I’d rather have no camera at all, but since these are probably a must-have for certain people, it’s a good compromise. You can even physically seal it off as it has a built in plastic thing you can slide in front of it. Might be interesting for paranoid people who’d usually put tape over it. I’ve not yet tried installing GNU/Linux, though I’m certain it will suffer from much of the same problems as Windows without the ControlCenter does, plus terrible NVIDIA and possible other device drivers. I would have preferred a normal Intel WiFi card instead of a rebranded “Killer” chip. But these are all rather minor nitpicks about what is otherwise a pretty solid machine. I sure hope it will last at least as long as my last notebook did.