home > linux > firmware > dsdt > firmware-bug-acpi-no-bqc-method-cannot-determine-initial-brightness

Firmware Bug: ACPI: No _BQC method, cannot determine initial brightness

33 | 12 Nov 2016

ACPI: No _BQC method

This following error is printed out on boot when no _BQC method is declaired. Th is will mean that no initial brightness will be set and the display will default to maximum brightness.

[    0.607708] [Firmware Bug]: ACPI: No _BQC method, cannot determine initial brightness

This can be resolved by decompiling the DSDT, adding the _BQC method and overriding the DSDT with the new one.

Creating a _BQC method

The _BQC method takes no arguments and returns a decimal value for the current desired brightness. The method can be added to the DSDT directly next to the _BCM methods.

    Method (_BQC, 0, NotSerialized)  // _BQC: Brightness Query Current
    {
        //Return (0x1E) // =30%
        Return (0x26) // =38%
    }

Sample locations of _BCM methods:

    Scope (_SB)
    {
        Device (PCI0)
        {
            Device (VGA)
            {
                Device (LCD)
                {
                    Method (_BCM, 1, NotSerialized)  // _BCM: Brightness Control Method


    Scope (_SB)
    {
        Device (PCI0)
        {
            Device (GFX0)
            {
                Device (VGA)
                {
                    Device (LCD)
                    {
                        Method (_BCM, 1, NotSerialized)  // _BCM: Brightness Control Method

Finding a default value to use

The values that can be defined in _BQC can be found in _BCL.

    Method (_BCL, 0, NotSerialized)  // _BCL: Brightness Control Levels
    {
        Return (BCLB) /* _SB_.PCI0.VGA_.LCD_.BCLB */
    }

We can see _BCL returns BCLB:

    Name (BCLB, Package (0x34)
    {
        0x5A, // 90
        0x3C, // 60
        0x02, // 2
        0x04, // 4
        0x06, // 6
        0x08, // 8
        0x0A, // 10
        0x0C, // 12
        0x0E, // 14
        0x10, // 16
        0x12, // 18
        0x14, // 20
        0x16, // 22
        0x18, // 24
        0x1A, // 26
        0x1C, // 28
        0x1E, // 30
        0x20, // 32
        0x22, // 34
        0x24, // 36
        0x26, // 38
        0x28, // 40
        0x2A, // 42
        0x2C, // 44
        0x2E, // 46
        0x30, // 48
        0x32, // 50
        0x34, // 52
        0x36, // 54
        0x38, // 56
        0x3A, // 58
        0x3C, // 60
        0x3E, // 62
        0x40, // 64
        0x42, // 66
        0x44, // 68
        0x46, // 70
        0x48, // 72
        0x4A, // 74
        0x4C, // 76
        0x4E, // 78
        0x50, // 80
        0x52, // 82
        0x54, // 84
        0x56, // 86
        0x58, // 88
        0x5A, // 90
        0x5C, // 92
        0x5E, // 94
        0x60, // 96
        0x62, // 98
        0x64 // 100
    })

Any of the values declaired here can be used, most websites seem to have copied in "0x1E" a decimal value of 30, these are percentage values.

ACPI Documentation

B.5.4 _BQC (Brightness Query Current level)
This  optional method returns the current brightness level of a built-in display output device. If present, it must be set by the platform for initial brightness.

Arguments:
None

Return Value:
An Integer containing the current brightness level (must be one of the values returned from the _BCL method)

References

http://www.acpi.info/DOWNLOADS/ACPI_5_Errata%20A.pdf

Post a Comment