Привет, это снова Егор Гаврилов. И сегодня я расскажу историю про то, как мне пришлось повозиться со своим Gigabyte Gaming A16 3VH, чтобы управлять ноутбуком без виндового GiMATE, под своим Arch Linux'ом.
Часть первая - NVIDIA и supergfxctl
Это самая лайтовая часть - однако я впервые юзаю ноутбуки с гибридной графикой, да ещё и с MUX Switch, поэтому пришлось изучать много чего. В частности, настроил PRIME (через switcheroo), а также supergfxctl для отключения/включении дискретки.
Вот что я сделал для настройки всего этого:
yay -S nvidia-open-dkms linux-headers # Использую DKMS-версию драйвера для совместимости с ALHP
yay -S nvidia-prime-rtd3pm # Энергосбережение в режиме "iGPU + dGPU"
yay -S switcheroo-control # Для интеграции PRIME с GNOME
yay -S nvidia-prime # Скрипт для ручного запуска программы в режиме PRIME в CLI
yay -S supergfxctl # Поддержка управления гибридной графикой
# Дальше ребутимся
sudo systemctl enable --now switcheroo-control # Включаем switcheroo
sudo systemctl enable --now supergfxd # Включаем supergfxctl
Пример использования:
# Запускаем Google Chrome в режиме PRIME
prime-run chrome
# Переключаем в режим "only iGPU"
supergfxctl -m "Integrated"
# Переключаем обратно в гибридный режим
supergfxctl -m "Hybrid"
# Проверяем текущий режим
supergfxctl -g
# Проверяем показатели температуры и нагрузки на dGPU
nvidia-smi
Часть вторая - управление EC-контроллером
Вот тут я изрядно помучался - думал, что надо использовать драйвера от Tuxedo, однако, как оказалось, именно эта модель оказалось не Clevo'вской, а исконно гигабайтовской, и поэтому пришлось юзать этот драйвер. Однако в нём есть ограничения по моделям, поэтому пришлось пилить свой форк этого самого драйвера.
А без этого драйвера (а если точнее - модуля ядра) нельзя было управлять системой охлаждения, и ставить ограничения на зарядку ноута.
Настройка выглядит так:
git clone --depth=1 https://github.com/oldzoomer-ru/gigabyte-laptop-wmi-without-locks.git
git apply gimate-fan-fix.patch # фиксим отображение оборотов наших кулеров
tar -czf driver.tar.gz Makefile aorus-laptop.c dkms.conf # упаковываем исходники в тарболл для dkms
sudo dkms ldtarball driver.tar.gz # добавляем исходники в dkms
sudo dkms autoinstall # собираем и устанавливаем
sudo sh -c 'echo "aorus-laptop" > /etc/modules-load.d/aorus-laptop.conf' # загрузка модуля автоматически
Пример использования:
# Ставим лимит зарядки на 80%
echo '1' | sudo tee /sys/devices/platform/aorus_laptop/charge_mode
echo '80' | sudo tee /sys/devices/platform/aorus_laptop/charge_limit
# Отключаем лимит зарядки
echo '0' | sudo tee /sys/devices/platform/aorus_laptop/charge_mode
# Включаем тихий режим кулера
echo '1' | sudo tee /sys/devices/platform/aorus_laptop/fan_mode
# Включаем "игровой" режим кулера
echo '2' | sudo tee /sys/devices/platform/aorus_laptop/fan_mode
# Включаем автоматический режим кулера
echo '4' | sudo tee /sys/devices/platform/aorus_laptop/fan_mode
Часть третья - подсветка клавиатуры
Вот тут надо бы использовать модуль/драйвер OpenGigabyte, но моя клавиатура не поддерживается, к сожалению. Такседовский модуль, разумеется, не работает с моей клавой.
Бонусная часть - клавиша Fn
Чтобы эта клавиша работала с моим ноутом именно как Fn, а не как MicMute, пришлось прописать эти правила в hwdb:
# Some Gigabyte laptops
evdev:input:b0003v0414p8104e0111*
KEYBOARD_KEY_7006f=fn
Итоги
С этим ноутом реально пришлось помучится. Зато я сейчас (почти) избавил его от зависимости к тяжеловесу под названием GiMATE, которая весит аж 6 гигабайт из за встроенного LLM Llama 3.2, которая типа должна как-то сама оптимизировать работу ноутбука автоматически.