Normal view

There are new articles available, click to refresh the page.
Before yesterdayMain stream

NVRAM in Apple silicon Macs

By: hoakley
30 July 2024 at 14:30

Although both Intel and Apple silicon Macs store persistent settings in non-volatile memory (NVRAM, formerly PRAM), its use has changed significantly. In the past, users have been able to change values in NVRAM to customise the behaviour of their Macs, including setting whether the startup chime is sounded, and what happens when you open the lid of a notebook. In the event that went wrong, NVRAM has been readily reset to its original state, allowing the Mac to return to normal function.

NVRAM is more extensive in Apple silicon Macs than that in Intel models and stored in NOR Flash memory. Much of it is now protected, and it’s not intended to be meddled with by the user. The Asahi Linux project has documented much of the contents of NVRAM in early Apple silicon Macs, and the Appendix at the end of this article updates that using listings from more recent models running current macOS.

Contents

The only settings that appear to have been changed by users are auto-boot and AutoBoot, its predecessor in Intel Macs, in attempts to modify lid-up behaviour in notebooks. Neither appears to prevent the MacBook Air or Pro from automatically starting up when the lid is raised, and in some models changing auto-boot has been reported as causing boot failure.

Values for keys containing the term breadcrumbs are of particular interest, as they’re written during early stages of the boot process, either by LLB (first stage) or iBoot (second stage) in lieu of a log. Attempts to decipher and understand their contents have so far been unsuccessful.

The aht-results value is normally displayed in the Diagnostics section of System Information, when hardware diagnostics have been run. Similarly, the battery-health value is reported in Battery settings, LocationServicesEnabled in Location Services settings, prev-lang:kbd in Keyboard settings, and SystemAudioVolume in Sound settings, where they’re also controlled.

Resetting NVRAM

Trying to reset NVRAM using the traditional key combination for Intel Macs does absolutely nothing to an Apple silicon Mac.

The only known way to set it back to factory condition is to perform a full restore in DFU mode, which also wipes the entire contents of the internal SSD and returns the whole Mac back to factory condition. Some users report that performing Erase All Content and Settings (EACAS) resets unprotected contents including their attempts to customise settings. However, that too is non-trivial and causes considerable work to restore that Mac to its former state.

Conclusions

In Apple silicon Macs, NVRAM settings aren’t intended to be changed directly by the user. As resetting them requires lengthy procedures, the prudent user shouldn’t even think of trying to change them unless advised to do so by Apple.

Appendix: Current NVRAM Settings in Apple silicon Macs

  • aht-results* – last Diagnostics result, if they have been run.
  • auto-boot – whether to boot automatically. Changing this can cause boot failure on some models.
  • backlight-nits – display backlight strength.
  • battery-health* – given for notebooks.
  • bluetoothExternalDongleFailed
  • BluetoothInfo
  • bluetoothInternalControllerInfo*
  • BluetoothUHEDevices
  • boot-breadcrumbs* – codes from ‘firmware’ stored during last boot.
  • boot-note
  • boot-picker-bringup-reason*
  • boot-volume – default boot volume.
  • bootdelay
  • display-crossbar0
  • fmm-computer-name – computer name.
  • fmm-mobileme-token-FMM
  • fmm-mobileme-token-FMM-BridgeHasAccount
  • guid-var-trans*
  • IDInstallerDataV2
  • LocationServicesEnabled
  • lts-persistance*
  • ota-updateType* – type of updates to install.
  • panicmedic-timestamps*
  • policy-nonce-digests*
  • prev-lang-diags:kbd – keyboard layout in Diagnostics.
  • prev-lang:kbd – keyboard layout.
  • skip-language-setup – whether to run or skip language setup.
  • SystemAudioVolume
  • SystemAudioVolumeExtension
  • upgrade-boot-volume
  • usb,version,rid0 up to rid5*
  • usbcfwflasherResult
  • wlancprops*

* = may not be present.

❌
❌