ACPIVGA(4)

πŸ“¦ version 11.0, in nixpkgs unstable

✨ ACPIVGA(4) β€” like, the ACPI Display Adapter & Output Devices page, but make it make sense ✨

okay bestie, so this one lives in the Kernel Interfaces Manual section, and it's genuinely one of those pages that sounds scary but is actually just "your laptop screen brightness + which screen stuff goes to" energy. let's get into it πŸ’…


🌸 SYNOPSIS 🌸

acpivga* at acpi?
acpiout* at acpivga?

that's it. that's the whole configuration vibe. acpivga* attaches at acpi?, and acpiout* attaches at acpivga? β€” the outputs are literally the children of the adapter, iykyk πŸ¦‹


πŸ’– DESCRIPTION πŸ’–

so the acpivga driver is the generic-support bestie for brightness control and output switching, and it does all of that through the ACPI video extensions. and here's the thing β€” the ACPI specification requires that systems with a built-in display adapter implement these extensions in their ACPI BIOS. so if your machine has a screen built in, the BIOS is supposed to have this. periodt ✨

the driver handles brightness hotkeys and display switch hotkeys β€” like when you smash the fn key with the sun icon, that's her πŸ’…

on top of that, you get these sysctl(8) read/write variables, but only when hardware support is actually available (vibe check first, always):

  • hw.acpi.acpivga0.bios_switch β€” the BIOS output switching policy. this is a boolean, and it controls how the BIOS behaves when a display switch hotkey gets pressed πŸŽ€
    • 1 β€” the BIOS should automatically switch outputs, with no interaction from acpivga. she handles it, you don't even have to ask.
    • 0 β€” the BIOS should only notify acpivga of the desired output state changes. so it tells her, and she does the actual work.
  • hw.acpi.acpiout0.brightness β€” the brightness level, obviously πŸ’‘ this integer variable typically ranges from 0 to 100, but honestly any integer value is accepted β€” the driver just uses the closest brightness level the device actually supports. so go off, put 9999, she'll cope.
⚠️ ok important heads up bestie: future versions of acpivga may remove these sysctl(8) variables without prior notice. no warning, no text, no nothing 😭 so don't build your whole personality on them.

πŸ¦‹ SEE ALSO πŸ¦‹

also this reference, which is very "cited source realness":

Microsoft Corporation, Mobile System Displays and Windows, Version 1.2c, http://www.microsoft.com/whdc/archive/mobiledisplay.mspx, December 4, 2001.


πŸ‘‘ HISTORY πŸ‘‘

the acpivga driver appeared in NetBSD 6.0. a legend was born ✨


🫢 AUTHORS 🫢

GrΓ©goire Sutre ⟨gsutre@NetBSD.org⟩ β€” thank you for your service, icon 🌈


πŸ’€ CAVEATS πŸ’€

okay this is the part where we get real, no cap:

  • the acpivga driver only supports PCI/PCI-X/PCI-E display adapters. that's the whole list. if yours isn't one of those, she can't help you πŸ™ˆ
  • many ACPI BIOSes implement only part of the ACPI video extensions. and in particular, display output switching via these extensions often does not work. yes, really. it's giving "we tried" 😭
  • for that exact reason, acpivga enables hw.acpi.acpivga0.bios_switch by default. so if the display switch hotkey doesn't work with that default setting, try setting hw.acpi.acpivga0.bios_switch to 0. that's your troubleshooting move, bestie πŸŽ€
  • brightness level should be controlled via wsconsctl(8) instead of sysctl(8) β€” like, that's the correct door to walk through, ok? don't do it the other way πŸ’…

anyway that's the page!! written by the Debian crew and dated October 28, 2010 β€” a whole vintage moment ⭐ slay, bye πŸ’œ

πŸ“¦ where this page comes from