NVRAM, formerly Parameter Random-Access Memory or PRAM, stores key settings which your Mac cannot obtain from disk during startup. Variables vary according to the model, version of macOS, and EFI firmware in use. Included among these are the following:
aht-results
– details of the last run of Apple Hardware Test or Diagnostics as an array of dictionaries, containing the datestamp and the result code.ALS_Data
.AutoBoot
– an integer determining boot behaviour when opening the case.backlight-level
– the backlight level, e.g. %a9%00.bluetoothActiveControllerInfo
– Bluetooth active controller information.bluetoothInternalControllerInfo
– Bluetooth internal controller information.boot-args
– arguments used when booting the kernel, e.g.-no32exec
to prevent the use of 32-bit software.BootAudio
– a boolean indicating whether the startup chime is to be played.csr-active-config/csr-data
third-party kernel extension policy (High Sierra and later).display-config
– display resolution and settings.EFIBluetoothDelay
– time allowed for a wireless keyboard to connect during startup.efi-apple-payload0
– an array of dictionaries, containing the volume, UUID and the EFI path to the ThorUtil.efi file, a Thunderbolt utility for EFI.efi-apple-payload0-data
– the EFI path to the ThorUtil.efi file, a Thunderbolt utility for EFI.efi-apple-payload1
– an array of dictionaries, containing a volume, UUID and an EFI path to a multiupdate binary.efi-apple-payload1-data
– an EFI path to a multiupdate binary.efi-apple-payload2
– an array of dictionaries, containing a volume, UUID and an EFI path to a multiupdate binary.efi-apple-recovery
– EFI recovery information as an array of dictionaries, containing the volume, UUID and EFI firmware details.efi-backup-boot-device
– an array of dictionaries, containing the volume, UUID and the path to the boot.efi file, complete with its UUID directory. This may be identical to efi-boot-device.efi-backup-boot-device-data
– an array of dictionaries, containing the volume, UUID and the path to the boot.efi file, complete with its UUID directory. This may be identical to efi-backup-boot-device and efi-boot-device.efi-backup-boot-device-data-data
– the path to the boot.efi file, complete with its UUID directory.efi-boot-device
– an array of dictionaries, containing the volume, UUID and the path to the boot.efi file, complete with its UUID directory.efi-boot-device-data
– the path to the boot.efi file, complete with its UUID directory.eos-fdr-cache-uuid
– a UUID.fmm-computer-name
– the computer name.gpu-policy
– whether the GPU is active.HW_BOOT_DATA
.LocationServicesEnabled
– whether Location Services are enabled, e.g. %01 for enabled.multiupdater-0
– information about ThorUtil.efi fileprevious-system-uuid
– UUID of the last system used to boot.prev-lang:kbd
– the initial keyboard language, typicallyen:0
(US),en:2
(British external), oren-GB:2
(British internal).SystemAudioVolume
– audio output volume; set this to %01 in non-mute Macs to silence their startup chime.SystemAudioVolumeDB
– audio output volume (alternative), e.g. %f8.ThorUpdateResult
.variable name not identified
any recent kernel panic, to enable a kernel panic log to be constructed. Once that has been generated and saved, this variable is removed.
In general, the X-data version contains the much of the same information as the X version, expressed as raw data rather than as an array of dictionaries.
Examining values in NVRAM
Use the shell command
nvram -p
or nvram -xp
to list all the accessible variables which are stored in your Mac’s NVRAM; some are deemed inaccessible and won’t be listed. The output will be formatted slightly differently according to model, and you may find it best to try both, to work out which is more meaningful.
Changing values in NVRAM
You can alter the value of any variable in NVRAM using the nvram
command in Terminal; for most if not all variables this requires that you assume root privileges using the sudo
command, so you are best prefacing each command with sudo
. Thus, the command
sudo nvram BootAudio=%01
sets that variable to true, and enables the startup chime on an otherwise mute 2016 MacBook Pro. Turn it off again with
sudo nvram BootAudio=%00
However, this doesn’t work with 2017 MacBook Pros, which have lost the startup chime for good.
The AutoBoot variable, which determines whether a 2016 MacBook Pro starts up automatically when its case is opened, is not a simple boolean value. To turn AutoBoot off, use the command
sudo nvram AutoBoot=%00
but to return it to the default behaviour, use
sudo nvram AutoBoot=%03
The % sign indicates that the next two characters are given in hexadecimal, which is the default format; if you are really smart, you can use XML format with the -x option to nvram
, but that gets more complex. If you’re changing a variable which normally contains a string, you should use a command of the form
sudo nvram fmm-computer-name="Howard%e2%80%99s iMac"
New 64-bit test mode
When running macOS 10.13.4 or later, restart in Recovery mode, open Terminal there, and enable the 64-bit testing mode by entering the following command:
nvram boot-args="-no32exec"
Then restart your Mac.
This prevents all 32-bit software from even launching. If you try to run a 32-bit app in this mode, you will be told that it cannot be opened, but other 32-bit components will fail in silence. If things do go horribly wrong, you should be able to restore order in an emergency by resetting your NVRAM.
To return your Mac to normal mode in a more orderly way, restart in Recovery mode again, open Terminal there, and enter the command
nvram boot-args=""
When you restart, your Mac should have returned to normal.
A quicker alternative to these is to enter single-user mode in Recovery mode by holding down Command-S-R at startup, which should enable you to enter the command directly, then restart.
If you come across other current NVRAM variables, particularly with examples of their values, please add them as a comment so that I can correct, expand, and maintain this list.
[Last updated 24 August 2018.]