The Nostalgic MacOS Startup Chime

Reading time ~5 minutes

Image from https://commons.wikimedia.org

Something was Missing

The very first Apple laptop I’ve ever owned was the 2015 Macbook Air. This machine was great as a student and it provided me with everything I needed at the time. There were times when I would need to reboot the system, especially after a major update and I would be greeted by the startup chime. This is no longer present in the new Macbook lineup beyond 2016 (touchbar era).

This quick hack/fix can be found here by 9to5mac.

By saving you time, here’s the tl;dr. Open up terminal and enter the following:

sudo nvram StartupMute=%00

Assuming your audio isn’t muted, you’ll be once again greeted by the startup chime after your machine has been rebooted.

Digging Further

After the discovery of this command, there were no clear answers of how this came about. I initially began to investigate this by visiting the man page.

nvram(8)                                                                          nvram(8)



NAME
       nvram - manipulate firmware NVRAM variables

SYNOPSIS
       nvram [ -p ] [ -f filename ] [ -d name ] [ -c ] [ name [= value ]] ...

DESCRIPTION
       The  nvram command allows manipulation of firmware NVRAM variables.  It can be used
       to get or set a variable.  It can also be used to print all of the variables or set
       a  list  of  variables  from  a file.  Changes to NVRAM variables are only saved by
       clean restart or shutdown.

       In principle, name can be any  string.   In  practice,  not  all  strings  will  be
       accepted.   New World machines can create new variables as desired.  Some variables
       require administrator privilege to get or set.

       The given value must match the data type required for name.  Binary data can be set
       using  the  %xx  notation, where xx is the hex value of the byte.  The type for new
       variables is always binary data.

OPTIONS
       -d name
              Deletes the named firmware variable.

       -f filename
              Set firmware variables from a text file.  The file must be a list  of  "name
              value"  statements.  The first space on each line is taken to be the separa-
              tor between "name" and "value".  If the last character of a line is  \,  the
              value extends to the next line.

       -x     Use  XML format for reading and writing variables.  This option must be used
              before the -p or -f options, since arguments are processed in order.

       -c     Delete all of the firmware variables.

       -p     Print all of the firmware variables.

EXAMPLES
              example% nvram boot-args="-s rd=*hd:10"

       Set the boot-args variable to "-s rd=*hd:10".  This would specify single user  mode
       with the root device in hard drive partition 10.

              example% nvram my-variable="String One%00String Two%00%00"

       Create a new variable, my-variable, containing a list of two C-strings that is ter-
       minated by a NUL.

              example% nvram -d my-variable

       Deletes the variable named my-variable.



                                     October 28, 2003                             nvram(8)

As you can see, the man page was created a long time ago, 17 years from this post. This is the 8th section and there doesn’t seem to be other sections for the nvram command. The options that displayed the firmware variables only displayed variables currently in use by the EFI firmware.

This is what is displayed when I ran sudo nvram -p.

bluetoothInternalControllerInfo	%bluetooth%controller%info)
fmm-computer-name	MacBook Pro
bluetoothActiveControllerInfo	%active%bluetooth%controller%info)
backlight-level	D%01
gpu-policy	%01
StartupMute	%00     <-- THIS IS WHAT I RECENTLY ADDED TO ENABLE THE CHIME
HW_BOOT_DATA	%01%00%00%00%01%00%some%foobar%0000%00

I assume StartupMute used to be enabled in older versions of MacOS and was promptly extracted or hidden from the system and someone decided to re-enable it out of curiosity which fortunately still works in Catalina. I also assume most critical NVRAM variables are closed-source and are hidden away by Apple.

Happy Hacking Keyboard (HHKB) - An Overview

Sample post with a background image CSS override. Continue reading

Less is More

Published on January 03, 2020