Next: GRUB image files, Previous: Using GRUB via a serial line, Up: GNU GRUB manual [Contents][Index]

## 10 Using GRUB with vendor power-on keys

Some laptop vendors provide an additional power-on button which boots another OS. GRUB supports such buttons with the ‘`GRUB_TIMEOUT_BUTTON`’, ‘`GRUB_TIMEOUT_STYLE_BUTTON`’, ‘`GRUB_DEFAULT_BUTTON`’, and ‘`GRUB_BUTTON_CMOS_ADDRESS`’ variables in default/grub (see Simple configuration handling). ‘`GRUB_TIMEOUT_BUTTON`’, ‘`GRUB_TIMEOUT_STYLE_BUTTON`’, and ‘`GRUB_DEFAULT_BUTTON`’ are used instead of the corresponding variables without the ‘`_BUTTON`’ suffix when powered on using the special button. ‘`GRUB_BUTTON_CMOS_ADDRESS`’ is vendor-specific and partially model-specific. Values known to the GRUB team are:

`Dell XPS M1330M`

  121:3

`Dell XPS M1530`

  85:3

`Dell Latitude E4300`

  85:3

`Asus EeePC 1005PE`

  84:1 (unconfirmed)

`LENOVO ThinkPad T410s (2912W1C)`

  101:3

To take full advantage of this function, install GRUB into the MBR (see Installing GRUB using grub-install).

If you have a laptop which has a similar feature and not in the above list could you figure your address and contribute? To discover the address do the following:

- boot normally

-     sudo modprobe nvram
      sudo cat /dev/nvram | xxd > normal_button.txt

- boot using vendor button

-     sudo modprobe nvram
      sudo cat /dev/nvram | xxd > normal_vendor.txt

Then compare these text files and find where a bit was toggled. E.g. in case of Dell XPS it was:

    byte 0x47: 20 --> 28

It’s a bit number 3 as seen from following table:

0 | 01
1 | 02
2 | 04
3 | 08
4 | 10
5 | 20
6 | 40
7 | 80

0x47 is decimal 71. Linux nvram implementation cuts first 14 bytes of CMOS. So the real byte address in CMOS is 71+14=85 So complete address is 85:3

Next: GRUB image files, Previous: Using GRUB via a serial line, Up: GNU GRUB manual [Contents][Index]