Goldfish64 / AudioPkg

Audio stack for UEFI. Currently supports HD audio controllers/codecs. WIP
54 stars 10 forks source link

Hang / Freeze at logo apple (without loading bar) #6

Closed andreszerocross closed 5 years ago

andreszerocross commented 5 years ago
  1. I use latest Clover r4842
  2. I use Built-in AudioDxe-64.efi from CLOVER Package Installer
  3. I use Built-in BootChimeCfg.efi from CLOVER package Installer
  4. I use BootChimeDxe.efi from your AudioPkg

Result :

  1. Audio from CLOVER Theme is working fine (Before GUI CLOVER)
  2. Audio when i press enter in macOS Partition is fine

Problem : After sound finish (when i press enter in macOS Partition), system is freeze. No loading bar, just apple logo. If i deleted bootchimedxe.efi. Then it will be fine. Can you check it?

Goldfish64 commented 5 years ago

Possibly an issue with the callback in BootChimeDxe. Can you test again using all binaries compiled from this repo and not from Clover?

D-an-W commented 5 years ago

I had the same problem, it seems you can only have one or the other working at once.

andreszerocross commented 5 years ago

Possibly an issue with the callback in BootChimeDxe. Can you test again using all binaries compiled from this repo and not from Clover?

Yes, it can go. But sound before GUI Theme of CLOVER is gone.

I check the log is about "No AudioIo found" if i use all AudioDxe.efi, BootChimeDxe.efi and BootChimeCfg.efi from your repo.

It's look i need to ask you to check Clover Code :D

i don't understand about C++

andreszerocross commented 5 years ago

Update :

Use all your 2 binary (BootChimeCfg.efi, and AudioDxe.efi").

  1. I try reset NVRAM (F11 in CLOVER GUI)
  2. Boot into Mac, then reboot
  3. I can hear audio before CLOVER GUI (Strange, without need to set bootchimecfg.efi in shell first),, and not sound after press enter in macOS Partition (ofcourse, there is no BootChimeDxe.efi here)
  4. Get into desktop and put your BootChimeDxe.efi
  5. Reboot,, get audio before CLOVER GUI,, then i can hear audio when press enter in macOS partition but FREEZE (No loading bar / progress)
andreszerocross commented 5 years ago

Update : I rebuild your AudioPkg 1 minute ago

Result :

  1. Audio From Clover is working
  2. Audio from BootChimeDxe Working too
  3. no Freeze.

Did you change file recently,, it's look you made change 17 hours ago. And my report before is from your repository 17 hours ago

Goldfish64 commented 5 years ago

I just tested on mine and with Clover's build of AudioDxe it does indeed freeze after playback of the startup sound.

andreszerocross commented 5 years ago

I just tested on mine and with Clover's build of AudioDxe it does indeed freeze after playback of the startup sound.

Yes i experienced it before.

My step is

  1. Reset Nvram (F11 in clover)
  2. Boot into mac
  3. Use your AudioDxe.efi + bootchimecfg.efi latest from repo (i built it recently)
  4. Don't use BootChimeDxe.efi
  5. Reboot,, (no need to set nvram for Audio, but strange i can still hear sound before CLOVER GUI)
  6. in desktop, i put your BootChimeDxe.efi in drivers64UEFI.
  7. All working good (But same step is fail before, i don't understand)

i just put "Sound.wav and sound_night.wav" in my Theme Folder.

Goldfish64 commented 5 years ago

I'm assuming "sound before CLOVER GUI" refers to the startup sound that Clover makes when it loads? How is that configured? I am not up to speed with the various changes as I only found out recently that Clover had incorporated my driver.

andreszerocross commented 5 years ago

I'm assuming "sound before CLOVER GUI" refers to the startup sound that Clover makes when it loads? How is that configured? I am not up to speed with the various changes as I only found out recently that Clover had incorporated my driver.

We just need to put "sound.wav" and "sound_night.wav" in theme folder name. Eg, my theme folder is "BGM_SVG" so i put both of wav files into it :D

andreszerocross commented 5 years ago

Please check this : https://www.insanelymac.com/forum/topic/304530-clover-change-explanations/?do=findComment&comment=2657187

andreszerocross commented 5 years ago

And this my video for the success, use all your binary. But i don't set bootchimecfg.efi yet. It's work normally without set it first. Is this normal???? https://youtu.be/WfaFOyFxf44

Goldfish64 commented 5 years ago

Yes BootChimeDxe will try to use a default device and max volume if the NVRAM variables do not exist.

cecekpawon commented 5 years ago

Hello @andreszerocross sorry for hijacking your ticket here ;))

@Goldfish64 Thanks for your great driver! I have made a driver days ago to work with your AudioDxe which also experiencing boot freezes. Already share it on IM Ozmosis thread. For me, my StartPlaybackAsync callback will never get called. Something like unfinished progress (or broken timer?). Freeze on: "Block 3 of 8 filled! ..." on ExitBS.

For your new interactive BootChimeCfg, i got immediately "EFI_DEVICE_ERROR" msg on program start right after showing the menu. I comment out "WaitForEvent" return check as below as temporary workaround.

diff --git a/Application/BootChimeCfg/BootChimeCfg.c b/Application/BootChimeCfg/BootChimeCfg.c
index 0138cdf..8983c70 100644
--- a/Application/BootChimeCfg/BootChimeCfg.c
+++ b/Application/BootChimeCfg/BootChimeCfg.c
@@ -66,9 +66,9 @@ WaitForKey(
         return EFI_INVALID_PARAMETER;

     // Wait for key.
-    Status = gBS->WaitForEvent(1, &(SimpleTextIn->WaitForKey), &EventIndex);
-    if (EFI_ERROR(Status))
-        return EFI_DEVICE_ERROR;
+    /*Status =*/ gBS->WaitForEvent(1, &(SimpleTextIn->WaitForKey), &EventIndex);
+    //if (EFI_ERROR(Status))
+    //    return EFI_DEVICE_ERROR;

     // Get key value.
     Status = SimpleTextIn->ReadKeyStroke(SimpleTextIn, &InputKey);

Also found duplicate guid here.

🍻

andreszerocross commented 5 years ago

Nice,, if someone like om Cecekpawon wes turun gunung. I think it will be easier to found the solution if both of Cecekpawon and GoldFish64 make a discussion :))

andreszerocross commented 5 years ago

But just for the information,, my sound is working now. Before and after GUI CLover is work perfectly.

  1. Use official release Clover r4842
  2. Use "sound.wav" and "sound_night.wav" ini themes folder
  3. Use 3 binary from GoldFish64 (BootchimeDxe.efi, BootChimeCfg.efi and AudioDxe.efi'

if you need another log or info, please ask me free. It's really amazing can hear sound before and after CLOVER GUI 👯‍♂️

Goldfish64 commented 5 years ago

@cecekpawon Did you compile AudioDxe.efi yourself? The same exact issue affects BootChimeDxe when used with AudioDxe from Clover: the callback is never called.

cecekpawon commented 5 years ago

Yes @Goldfish64, compiled by my self. I dont use Clover + have not test any Clovers AudioPkg binaries, so I cant compare it for you, sorry. BootChimeDxe will resulting boot freeze + ExitBootServices error msg (I will take a photo for you later sir).

Quick looking into Clover sources, their StartPlaybackAsync callback is NULL >>>

Attached when it run with mine.

x

EDIT: Forgot to mentioned, due callback is never called, the sound keep looping until before reaching the desktop.

Goldfish64 commented 5 years ago

Sounds like something is interrupting the driver during playback. Does sync playback work fine?

If the driver doesn't refill the HDA controller's buffer with new data, the controller will continue to loop the same data over and over.

andreszerocross commented 5 years ago

Just for update : image

I set this to my config.plist.. if PlayAsync=Yes then audio will laggy in GUI CLOVER. I don't know if this is useful information

cecekpawon commented 5 years ago

Does sync playback work fine?

Yes it does.

Attached BootChimeDxe ExitBS error with Aptiofix2 and AMF.

10 50 12 10 48 53

andreszerocross commented 5 years ago

Does sync playback work fine?

Yes it does.

Attached BootChimeDxe ExitBS error with Aptiofix2 and AMF.

  • What the strange is, its only happened on verbose boot on my machine. While @andreszerocross stuck on Apple logo without progress bar 🤣
  • Callback appear to be called on BootChimeDxe, while mine is (still) never. Already tried to override LoadImage and StartImage. Will keep trying ...

10 50 12 10 48 53

But now, it's working without problem. Use AudioDxe.efi, BootChimeDxe.efi and BootChimecfg.efi from GoldFish64 Repository, Clover r4844, and sound.wav + sound_night.wav ini Theme folder

cecekpawon commented 5 years ago

Argh @andreszerocross please close this issue then. I will reopen this issue If the problem still persist 🍻

cecekpawon commented 5 years ago

I finally managed to make it work by overriding ExitBS like BootChimeDxe did. Is there any other way besides those to catch our callback?

Also, is it true ControllerInfo->GetVendorId (>>>) is not implemented yet? Accidentally calling those prop for debugging resulting boot hang.

Thanks.