acidanthera / bugtracker

Acidanthera Bugtracker
385 stars 44 forks source link

Mac boot chime only works after NVRAM reset. #1012

Closed mrgooge closed 4 years ago

mrgooge commented 4 years ago

Boot chime issue ? Opencore DEBUG 0.6.0

If I reset NVRAM, my Boot Chime works (chimes).

After I reboot and until I reset NVRAM, Boot Chime does not work (no chime).

My DEBUG log shows this after NVRAM reset:

07:832 00:004 OCAU: System volume is 98 (calculated from 70) - Success 07:836 00:003 OCAU: Matching PciRoot(0x0)/Pci(0x1F,0x3)/VenMsg(A9003FEB-D806-41DB-A491-5405FEEF46C3,00000000)... 07:840 00:004 OCAU: 1/3 PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x1)/VenMsg(A9003FEB-D806-41DB-A491-5405FEEF46C3,00000000) (6 outputs) - Success 07:844 00:003 OCAU: 2/3 PciRoot(0x0)/Pci(0x1F,0x3)/VenMsg(A9003FEB-D806-41DB-A491-5405FEEF46C3,00000000) (5 outputs) - Success 07:848 00:004 OCAU: Setting language to en-US:0 07:852 00:003 OCAU: Language for audio en-US:0 - Success 07:856 00:003 OC: Starting to play chime... 07:860 00:004 OC: Wave Resources\Audio\OCEFIAudio_VoiceOver_Boot.wav was requested 07:867 00:006 OCAU: File 59 for lang 7 is 32 2 2 (440576) - Success

On the next reboot (and and reboot until NVRAM reset) My DEBUG log shows this:

07:807 00:007 OCAU: System volume is 0 (calculated from 0) - Success 07:814 00:007 OCAU: Matching PciRoot(0x0)/Pci(0x1F,0x3)/VenMsg(A9003FEB-D806-41DB-A491-5405FEEF46C3,00000000)... 07:818 00:004 OCAU: 1/3 PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x1)/VenMsg(A9003FEB-D806-41DB-A491-5405FEEF46C3,00000000) (6 outputs) - Success 07:822 00:004 OCAU: 2/3 PciRoot(0x0)/Pci(0x1F,0x3)/VenMsg(A9003FEB-D806-41DB-A491-5405FEEF46C3,00000000) (5 outputs) - Success 07:827 00:004 OCAU: Setting language to en:0 07:831 00:004 OCAU: Language for audio en:0 - Success

icedterminal commented 4 years ago

Are you using native or emulated NVRAM? By default, OC sample configs and the dortania guide have users use native. If using native, you should try using emulated after an NVRAM reset. See if the problem persists.

My experience with this feature was the same as yours until I switched to emulated. Native NVRAM for my board was not without issue.

mrgooge commented 4 years ago

Using native NVRAM. I set up emulated per the Dortania guides, and the boot chime problem persists using emulated or native. After NVRAM reset it chimes, after any reboot no chime. Same thing in the OC DEBUG log, "System volume is 0" after reboot.. I using a z370 series logic board btw.

vit9696 commented 4 years ago

According to your log it is your operating system that sets the value of SystemAudioVolume variable to 0, which results in disabled boot chime. Works as designed (the way it does on Macs) in my opinion, do not mute the volume in your operating system, and it will work fine. Let me know if there is any detail I missed.

mrgooge commented 4 years ago

Yes, then something is broken with my operating system after restarting. I understand the volume for boot chime is set while booted, and yes, I made sure it was not muted before rebooting. I guess something is corrupt and muting it after a restart... If you have any idea where I could look, I'd appreciate it. Thank you for your time!

vit9696 commented 4 years ago

Well, you can use nvram -x SystemAudioVolume | grep -vE '[<>]' | base64 --decode | xxd -i command to inspect the saved NVRAM volume level. Otherwise I do not know. Do you use AppleHDA or VoodooHDA? This might matter.

mrgooge commented 4 years ago

Using AppleHDA. nvram -x SystemAudioVolume | grep -vE '[<>]' | base64 --decode | xxd -i 0x46

vit9696 commented 4 years ago

What about next reboot (when there is no chime).

mrgooge commented 4 years ago

I get the same as above when there's no chime, the only place I see System volume is 0 is the OC DEBUG log... I used the same EFI and booted to my clone drive after a NVRAM reset, chime good, rebooted again to clone drive chime good again... So something corrupts or makes OC think the System volume is 0 , only when rebooting on my main disk.

Not to get to far off the path, but is it possible the /preboot partition could be corrupt and have this effect...?

If needed, I can send you a full Before and After OC DEBUG logs if you'd like? I don't want to bug you too much about this... Thanks again.

vit9696 commented 4 years ago

That something can only be your NVRAM. Could you provide full OpenCore log and config.plist? I am worried if you might be overriding your SystemAudioVolume variable with some scripts or alike. Is that an old device? Might it have NVRAM issues?

mrgooge commented 4 years ago

Not too old, 2018 hardware. OS X Catalina 10.15.5. Attaching logs and config.plist. Thanks. request_files.zip

vit9696 commented 4 years ago

You have SystemAudioVolume set in config.plist. I believe it might confuse macOS. Try removing it.

mrgooge commented 4 years ago

I removed SystemAudioVolume set, still the same issue persists, no boot chime after reboot, only boot chime after NVRAM reset.

I did notice a new message pop up on boot, I don't know if it has anything to do with this: " NVRAM log size exceeded, cannot log! "

I also enabled bootstrap, it made no difference.

Thanks again.

vit9696 commented 4 years ago

Oh, lol. You are using NVRAM logging. Please disable it in Target. E.g. replace 81 with 65.

mrgooge commented 4 years ago

Set it at 65, that fixed the log size errors...

But, still no chime after reboot.

Still something is there.

vit9696 commented 4 years ago

Did you reset NVRAM and then boot to macOS afterwards? Also, could you provide the log after this change?

mrgooge commented 4 years ago

Yes.

Attached is the log from last boot: new_resuest_files.zip

vit9696 commented 4 years ago

Please post current NVRAM variables by executing dmpstore -all > file.txt in UEFI Shell and attaching the file here.

mrgooge commented 4 years ago

ok, here you go: file.txt.zip

vit9696 commented 4 years ago
Variable NV+RT+BS '7C436110-AB2A-4BBB-A880-FE41995C9F82:SystemAudioVolume' DataSize = 0x01
  00000000: 80                                               *.*
Variable NV+RT+BS '7C436110-AB2A-4BBB-A880-FE41995C9F82:SystemAudioVolumeSaved' DataSize = 0x01
  00000000: 46                                               *F*
Variable NV+RT+BS '7C436110-AB2A-4BBB-A880-FE41995C9F82:SystemAudioVolumeDB' DataSize = 0x01
  00000000: 00 

Your macOS version intentionally disables the volume in UEFI. 80 value is muted, and 46 value in Saved says restore this value after booting the operating system. You may have set some setting in the operating system to disable bootchime or have some tool. Please retry with the clean macOS installation.

mrgooge commented 4 years ago

So I think I've tested the same scenario as a clean installation:

When booting using this EFI, then select my external Clone drive, or a different internal Mac volume SSD drive. The boot chime works after reset NVRAM and works after reboots (chime plays).

I got that, do you have any idea /how/who/what/why/where that some setting in my current OS would be, that can disable the bootchime and make those parameters in my NVRAM? does that make sense..?!?

mrgooge commented 4 years ago

I mean what else can set value 80 in my UEFI?

vit9696 commented 4 years ago

Well, I am not sure, but Apple disabled this on newer Macs at the very least. See: https://www.macrumors.com/how-to/enable-classic-startup-chime-on-newer-macs/. In Big Sur you can also configure that in preferences: https://www.macrumors.com/2020/06/23/macos-big-sur-brings-back-startup-chime/.

mrgooge commented 4 years ago

Yes, thanks for that information. I appreciate your help with this. I re-installed Catalina using the Recovery partition, and that made no change with the boot chime. I don't want to deal with a clean install as I have over 900GB's of data to push around...

One last question, can you explain actually where the NVRAM variables are stored on my system?

Thanks.

vit9696 commented 4 years ago

The NVRAM variables are stored in your BIOS flash memory. You can use Delete interface in OpenCore configuration override SystemAudioVolume variable. Another thing to try is like I said you could enable boot chime as done in macs as shown above on macrumors. But otherwise, yes, it is more like your operating system, and reinstalling the same operating system will obviously not help.

mrgooge commented 4 years ago

Final rambling... I restored my drive from a clone backup from 6/19. The bootchime plays after a NVRAM reset and any subsequent reboot, so the chime is working normally now!

I may never know what I did to break the bootchime in my NVRAM, But, I hope I never do it again...

Thanks for your time, keep up the great work on Opencore and all of your software!

antonioclb commented 4 years ago

Hello to everybody! Just a further comment to consolidate this issue in order to mark it as [SOLVED]. Today I was just dealing with this issue on my HP Z620 Hackintosh (MacPro7,1 system model, Catalina 10.15.7, OpenCore 0.6.2). After following Dortania's guide, the same behaviour as mrgooge's first post happened to me (boot chime only first time after NVRAM reset). Digging into OC bootlog, I've found the following line:

00:610 00:021 OC: Setting NVRAM 7C436110-AB2A-4BBB-A880-FE41995C9F82:SystemAudioVolume - ignored, exists

The only thing I needed to do was adding a key in the "delete" section for this NVRAM variable in order to delete the macOS zero volume setting and force the 0x46 value entered in the "add" section.

Boot chime is now loudly played from my internal speaker (AudioOut 1) on every boot!

Thanks for your awesome work on OpenCore folks! Have fun! AC

burrows1980 commented 3 years ago

Hello to everybody! Just a further comment to consolidate this issue in order to mark it as [SOLVED]. Today I was just dealing with this issue on my HP Z620 Hackintosh (MacPro7,1 system model, Catalina 10.15.7, OpenCore 0.6.2). After following Dortania's guide, the same behaviour as mrgooge's first post happened to me (boot chime only first time after NVRAM reset). Digging into OC bootlog, I've found the following line:

00:610 00:021 OC: Setting NVRAM 7C436110-AB2A-4BBB-A880-FE41995C9F82:SystemAudioVolume - ignored, exists

The only thing I needed to do was adding a key in the "delete" section for this NVRAM variable in order to delete the macOS zero volume setting and force the 0x46 value entered in the "add" section.

Boot chime is now loudly played from my internal speaker (AudioOut 1) on every boot!

Thanks for your awesome work on OpenCore folks! Have fun! AC

Ace this worked for me! Thank you

liaojack8 commented 3 years ago

Hello to everybody! Just a further comment to consolidate this issue in order to mark it as [SOLVED]. Today I was just dealing with this issue on my HP Z620 Hackintosh (MacPro7,1 system model, Catalina 10.15.7, OpenCore 0.6.2). After following Dortania's guide, the same behaviour as mrgooge's first post happened to me (boot chime only first time after NVRAM reset). Digging into OC bootlog, I've found the following line:

00:610 00:021 OC: Setting NVRAM 7C436110-AB2A-4BBB-A880-FE41995C9F82:SystemAudioVolume - ignored, exists

The only thing I needed to do was adding a key in the "delete" section for this NVRAM variable in order to delete the macOS zero volume setting and force the 0x46 value entered in the "add" section.

Boot chime is now loudly played from my internal speaker (AudioOut 1) on every boot!

Thanks for your awesome work on OpenCore folks! Have fun! AC

Awesome! this way worked for me too.

sandaruwan786 commented 3 years ago

Thanks man!!! worked for me too, you saved my day…

freetextmike commented 3 years ago

What exactly did you add in the NVRAM->delete->7C436110-AB2A-4BBB-A880-FE41995C9F82?

cause i tried NVRAM->delete->7C436110-AB2A-4BBB-A880-FE41995C9F82->SystemAudioVolume=0 but it is not working SystemAudioVolume is Data variable

Ok so adding 7C436110-AB2A-4BBB-A880-FE41995C9F82 as Array inside the Delete variable and adding a child named 0 which data type is string with a value of SystemAudioVolume did the job

sorry im just hacking like 1 week hope this help for the other people

antonioclb commented 3 years ago

Ok so adding 7C436110-AB2A-4BBB-A880-FE41995C9F82 as Array inside the Delete variable and adding a child named 0 which data type is string with a value of SystemAudioVolume did the job

sorry im just hacking like 1 week hope this help for the other people

Awesome! Thanks for the clarification!

Best regards. AC

Human79 commented 3 years ago

Can anybody share a screenshot of the changes? Thanks.

mikebeaton commented 3 years ago

Look at how NVRAM Add and Delete is done correctly by looking in https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Sample.plist

Human79 commented 3 years ago

Thank you @mikebeaton! I figured it out!

adrianyujs commented 2 months ago

image

its work!!!!

Reminder guys, after done it, remember must NVRAM Reset.

Thanks everybody!