thebristolsound / G15Manager

An open source alternative to manage your ROG Zephyrus G15: Supports changing Fan Profile, rebind most keys (including ROG Key), and changing Windows' Power Options

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

G15Manager: An open source replacement to manage your Asus Zephyrus G15

Build Release

Disclaimer

Work in progress. This may void your warranty, proceed at your own risk.

Current Status

The project is currently under development. Most of the current features come from the original G14Manager

The application can be used without a client but for more advanced configurations, you will need to use one.

Current Features:

  • Toggle microphone mute/unmute
  • Toggle touchpad
  • Keyboard brightness adjustment
  • Thermal profile switching
  • Fan curve control
  • On-screen display
  • Web Socket API
  • Web UI
  • De-Noising AI (Armoury Crate files are required)

Note: Currently, the default profiles expect Power Plans "High Performance" and "Balanced" to be available. If your installation of Windows does not have those Power Plans, G15Manager may refuse to start. This will be fixed when customizable config is released.

Web UI

When the G15 Manager is first launched it will automatically download the latest client from it's repository

You can open the Web UI by pressing the ROG Key only once (by default), or by going to http://localhost:34453/.

From there you can easily change any setting you want.

Bug Report

If your encounter an issue with using G15Manager (e.g. does not start, functionalities not working, etc), please download the debug build G15Manager.debug.exe, and run the binary in a Terminal with Administrator Privileges, then submit an issue with the full logs.

Requirements

  • A Zephyrus G15 😏
  • Asus Optimization installed

Asus Optimization provides the necessary drivers (aka atkwmiacpi64). You may check and see if C:\Windows\System32\DriverStore\FileRepository\asussci2.inf_amd64_xxxxxxxxxxxxxxxx exists.

G15Manager will most probably not work on other Zephyrus variants. If you have a G14 use this manager instead.

Tested Zephyrus G15 Models:

  • G503QR

Asus Optimization (the service) cannot be running, otherwise G15Manager and Asus Optimization will be fighting over control. We only need Asus Optimization (the driver) to be installed so Windows will load atkwmiacpi64.sys, and thus expose a \\.\ATKACPI device to be used.

You do not need any other software from Asus (e.g. Armoury Crate and its cousins, etc) running to use G15Manager; you can safely uninstall them from your system. However, some software (e.g. Asus Optimization) are installed as Windows Services, and you should disable them in Services as they would not provide any value:

Running Services

In order to use the De-Noising AI, you must keep the folder DenoiseAIPlugin from Armoury Crate, then point the G15Manager to the executable ArmouryCrate.DenoiseAI.exe inside that folder.

Technical Notes

"ASUS System Control Interface V2" exists as a placeholder so Asus Optimization can have a device "attached" to it, and loads atkwmiacpi64.sys. The hardware for ASCI is a stud in the DSDT table.

"Armoury Crate Control Interface" also exists as a placeholder (stud in the DSDT table), and I'm not sure what purpose does this serve. Strictly speaking, you may disable this in Device Manager and suffer no ill side effects.

Only two pieces of hardware are useful for taking full control of your G14: "Microsoft ACPI-Compliant Embedded Controller" (this stores the configuration, including your fan curves), and "Microsoft Windows Management Interface for ACPI" (this interacts with the embedded controller in the firmware). Since they are ACPI functions, user-space applications cannot invoke those methods (unless we run WinRing0). Therefore, atkwmiacpi64.sys exists solely to create a kernel mode device (\\.\ATKACPI), and an user-space device (\\DosDevices\ATKACPI) so user-space applications and interface with the firmware (including controlling the fan curve, among other devious things).


Optionally, disable ASUS System Analysis Driver with sc.exe config "ASUSSAIO" start=disabled in a Terminal with Administrator privileges, if you do not plan to use MyASUS.

It is recommend to run G15Manager.exe on startup using Task Scheduler, don't forget to check "Run with highest privileges".

Install

In order to install this app:

  • Download the latest release
  • Drop the desired executable in a folder (Ex. C:\Programs\G15Manager)
  • Run the executable as an Administrator
  • (Optional) Setup Task Scheduler to automatically run the program

After the initial run the G15 Manager will automatically create a folder called "data". This folder will be used to store stuff like the Web UI and temporal files.

Changing the Fan Curves

You can change the fan curves for any given profile by using the Web UI.

Using the Fn + F5 key combo you can cycle through all the "Fast Switch" profiles. By default: Quiet -> Balanced -> Performance -> Turbo.

Change Refresh Rate

For battery saving, you can switch the display refresh rate to 60Hz while you are on battery. Use the Fn + F12 key combo to toggle between 60Hz/165Hz refresh rate on the internal display. You can also do so from the Web UI.

Battery Charge Limit

By default, G15Manager will set the battery limit charge to 60%.

This can be changed using the Web UI.

How to Build

  1. Install golang 1.14+ if you don't have it already
  2. Install mingw x86_64 for gcc.exe
  3. Install rsrc: go get github.com/akavel/rsrc
  4. Generate syso file: \path\to\rsrc.exe -arch amd64 -manifest G15Manager.exe.manifest -ico go.ico -o G15Manager.exe.syso
  5. Build the binary: .\scripts\build.ps1

Developing

Use .\scripts\run.ps1.

Most keycodes can be found in reverse_eng/codes.txt, and the repo contains USB and API calls captures for reference.

References

Credits

zllovesuki for the original G14 Manager.

"Go" logo licensed under unsplash license: https://blog.golang.org/go-brand

"Dead computer" logo licensed under Creative Commons: https://thenounproject.com/term/dead-computer/98571/

About

An open source alternative to manage your ROG Zephyrus G15: Supports changing Fan Profile, rebind most keys (including ROG Key), and changing Windows' Power Options

License:GNU General Public License v3.0


Languages

Language:Go 82.7%Language:C++ 13.7%Language:PowerShell 2.8%Language:C 0.5%Language:Shell 0.2%