Jump to content

[HOW TO] Fix second stage boot logo and loading bar for some dedicated desktop video cards


arsradu
 Share

391 posts in this topic

Recommended Posts

Because I can't stop messing with stuff...

 

When I extracted the device properties earlier, my graphics was being injected via SSDT. Although I hadn't set it in the SSDT, when I extracted the properties both ports had a display-cfg value (0x00030103 for port 0 and 0x0100ffff for port 1).

 

When I removed the display-cfg values a little while ago from my device properties and injected the resulting hex string I got a brief flash going from first to second stage. Checking the IOReg both values were ffffffff.

 

So maybe the key to having no flash between stages (for nVidia anyway) is to have display-cfg set?

  • Like 1
Link to comment
Share on other sites

Because I can't stop messing with stuff...

 

When I extracted the device properties earlier, my graphics was being injected via SSDT. Although I hadn't set it in the SSDT, when I extracted the properties both ports had a display-cfg value (0x00030103 for port 0 and 0x0100ffff for port 1).

 

When I removed the display-cfg values a little while ago from my device properties and injected the resulting hex string I got a brief flash going from first to second stage. Checking the IOReg both values were ffffffff.

 

So maybe the key to having no flash between stages (for nVidia anyway) is to have display-cfg set?

 

It's itching, huh? :P

 

How can one know which value should be added for display-cfg? Ok, it's 0x00030103 for port 0 and 0x0100ffff for port 1. But what about other posts? I'll try the one for port 1 and come back with updates.

 

Update: it doesn't seem to affect that gap in any way. At least in my case. Are you using stock or proprietary Nvidia drivers? 

 

arsradu,

you were right I was mistaken for a Real Mac

where it is possible to notice the mouse cursor in the upper left corner

look at this video.

the flash reason is because of course I am

almost 100% sure of that.

Interesting... :)

 

Ok, I didn't get this:

 

the flash reason is because of course I am

almost 100% sure of that.

 

Uhm....what? :)) And can it really be the cause for that gap between the two stages? Also, isn't that a MacBOOK? Meaning a laptop? I thought we were talking about desktop graphics here. :P

 

 

270X

Ok. Added as 270X. Thank you.

Still, could you please, add a bit more about what exactly did you do to get it to work on your card? And can this be achieved without DSDT editing? I'm thinking about Clover DSDT patches only.

4096 MB (4 GB)  0x100000000 not working VBIOS. It show 0MB in About This Mac

As Mirone said, this is most likely only cosmetic.

 

However the value should be correct... But maybe I missed something.

 

Guys, can anyone confirm the VRAM hex values from the first post? They look ok to me. But I would like a second opinion on that.

Link to comment
Share on other sites

Uhm....what? :)) And can it really be the cause for that gap between the two stages? Also, isn't that a MacBOOK? Meaning a laptop? I thought we were talking about desktop graphics here. :P

 

 

the above video posted by cecekPawon
It shows a boot equal to a macbook.
Link to comment
Share on other sites

@arsradu: I'm using the stock El Capitan kexts.

 

I'm not sure whether those display-cfg values were injected by Clover or OS X (as I said, I didn't define them in the SSDT). They were extracted by IOReg when creating the device properties xml file. I just noticed that removing them caused a brief flash which wasn't there before.

  • Like 1
Link to comment
Share on other sites

 

the above video posted by cecekPawon
It shows a boot equal to a macbook.

 

Oh, I see now.

 

There is still a gap there. But..yes, the cursor is present on the second stage boot.

@arsradu: I'm using the stock El Capitan kexts.

 

I'm not sure whether those display-cfg values were injected by Clover or OS X (as I said, I didn't define them in the SSDT). They were extracted by IOReg when creating the device properties xml file. I just noticed that removing them caused a brief flash which wasn't there before.

 

I didn't define anything in either Clover, or SSDT.... At least not manually. But I'll take a look at my IOreg tonight and see if the values I get (if I get any such values) are different in comparison to what you got. Anyway, so far, it doesn't seem to affect that gap in any way.

Link to comment
Share on other sites

in iMac late 2014:

That's a beautiful machine. Still, that display, from that angle... :)) Not the best example. I'm sure it probably looks better in person. But still. :))

 

Anyway, so this one is gap-less. And it's a "desktop". Then what the hell is the cause for that gap?

Link to comment
Share on other sites

have you tried clover devices arbitrary inject with new rehabman fix? sample here ..

I'm not sure the question was for me... Probably not. :))

 

Anyway, I did see that before. However I just noticed a little bug in that example (of course, it's just an example, and Slice also mentions it's not perfect). But I'm not sure if I got the implementation correctly.

 

So, under Devices, we add a new Array called Arbitrary

<key>Arbitrary</key>     
<array>     
</array>

In which we add this?

<dict>                
<key>PciAddr</key>                
<string>01:00.00</string>                
<key>Comment</key>                
<string>Nvidia Geforce card in PCIe slot</string>                
<key>CustomProperties</key>                
<array>                    
<dict>                        
<key>Key</key>                        
<string>model</string>                        
<key>Value</key>                        
<string>Gigabyte GeForce 7300 LE</string>                    
</dict>                    
<dict>                        
<key>Key</key>                        
<string>AAPL,boot-device</string> //I suppose this should become @1,APPL,boot-display. Right?                        
<key>Value</key>                        
<data>AQAAAA==</data> // I never knew where did this "data" come from. I know it's Base64. But Base64 of what? Can we add a string here? Like <string>0x00000001</string> ?                    
</dict>                
</array>            
</dict>
Link to comment
Share on other sites

@arsradu: I'm using the stock El Capitan kexts.

 

I'm not sure whether those display-cfg values were injected by Clover or OS X (as I said, I didn't define them in the SSDT). They were extracted by IOReg when creating the device properties xml file. I just noticed that removing them caused a brief flash which wasn't there before.

 

Display-cfg value in IOreg (without injecting/specifying anything) is ffffffff, as you said. However, using the value you mentioned above for port @1 (0x0100ffff), I had the same behavior as without it (flashing between the two stages). Maybe there are different values for different cards and not just for different ports? Just saying.

Link to comment
Share on other sites

Maybe try 0x00030103. IIRC 0x0100ffff was on my unused port. When I googled both values I found references to them which suggests they may be somewhat generic.

 

Wanna hear something funny? The injected value in Clover doesn't actually get injected (IOreg still says FFFFFFFF). Result? Well, same issue, of course.

Link to comment
Share on other sites

Out of curiosity I checked my macbook pro to see if there was any reason why it didn't have the flash and why my hackintosh does.  Only thing I could find different was this key under iGPU.  Not sure if this is it or if setting display-cfg will do it.  If I knew what to set display-cfg to I would try it, but haven't quite figured that out.

        <key>StartupDisplay</key>
        <data>
        R04CAAAAAAAACgAAQAYAACD8ABAAAAAAAAoAAEAGAACgAAAAAAAAAAAAAAAu
        AAAAAAAAAAAAAAAwAAAAIAAAAAMAAAAGAAAAAAAAAAAAAAAAAAABAAAAAAAA
        AACtCw3wAQAAAAAAAAAACgAAQAYAACD8ABAAAAAAAAoAAEAGAACgAAAAAAAA
        AAAAAAAuAAAAAAAAAAAAAAAwAAAAIAAAAAMAAAAGAAAAAAAAAAAAAAA=
        </data>
Link to comment
Share on other sites

Wanna hear something funny? The injected value in Clover doesn't actually get injected (IOreg still says FFFFFFFF). Result? Well, same issue, of course.

 

I'm injecting the values as part of the device properties, not via Clover. Here's how my device properties look:

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PciRoot(0x0)/Pci(0x2,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>@0,AAPL,boot-display</key>
<string>0x00000001</string>
<key>@0,compatible</key>
<string>NVDA,NVMac</string>
<key>@0,connector-type</key>
<string>0x00000800</string>
<key>@0,device_type</key>
<string>display</string>
<key>@0,display-cfg</key>
<string>0x00030103</string>
<key>@0,name</key>
<string>NVDA,Display-A</string>
<key>@1,compatible</key>
<string>NVDA,NVMac</string>
<key>@1,connector-type</key>
<string>0x00000800</string>
<key>@1,device_type</key>
<string>display</string>
<key>@1,display-cfg</key>
<string>0x0100ffff</string>
<key>@1,name</key>
<string>NVDA,Display-B</string>
<key>NVCAP</key>
<data>
BAAAAAAAAwAIAAAAAAAABwAAAAA=
</data>
<key>VRAM,totalsize</key>
<string>0x40000000</string>
<key>device_type</key>
<string>NVDA,Parent</string>
<key>model</key>
<string>NVIDIA GeForce 210</string>
<key>rom-revision</key>
<string>70.18.5F.00.06</string>
</dict>
</dict>
</plist>
 

 

 

 

The NVCAP value is extracted from my card BIOS with NVCAP Maker. It's not the generic one that Clover etc uses.

  • Like 1
Link to comment
Share on other sites

I'm injecting the values as part of the device properties, not via Clover. Here's how my device properties look:

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PciRoot(0x0)/Pci(0x2,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>@0,AAPL,boot-display</key>
<string>0x00000001</string>
<key>@0,compatible</key>
<string>NVDA,NVMac</string>
<key>@0,connector-type</key>
<string>0x00000800</string>
<key>@0,device_type</key>
<string>display</string>
<key>@0,display-cfg</key>
<string>0x00030103</string>
<key>@0,name</key>
<string>NVDA,Display-A</string>
<key>@1,compatible</key>
<string>NVDA,NVMac</string>
<key>@1,connector-type</key>
<string>0x00000800</string>
<key>@1,device_type</key>
<string>display</string>
<key>@1,display-cfg</key>
<string>0x0100ffff</string>
<key>@1,name</key>
<string>NVDA,Display-B</string>
<key>NVCAP</key>
<data>
BAAAAAAAAwAIAAAAAAAABwAAAAA=
</data>
<key>VRAM,totalsize</key>
<string>0x40000000</string>
<key>device_type</key>
<string>NVDA,Parent</string>
<key>model</key>
<string>NVIDIA GeForce 210</string>
<key>rom-revision</key>
<string>70.18.5F.00.06</string>
</dict>
</dict>
</plist>
 

 

 

The NVCAP value is extracted from my card BIOS with NVCAP Maker. It's not the generic one that Clover etc uses.

 

 

Cool! Thank you. I'll give that a try in a little while.

 

What exactly does that NVCAP value do? What's it for?

 

Also, I suppose the data you injected is Base64 encode for something like this: 0400000000002100000000000000000700000000 ?

Link to comment
Share on other sites

Yeah it was plain text when I pasted it into PlistEdit. But it shows up as Base64 when I read it out in TextEdit for pasting here.

 

As far as I know NVCAP is for setting up the video ports. I'm not sure if it has any effect but I've always tended to use my card's value when injecting.

Link to comment
Share on other sites

Yeah it was plain text when I pasted it into PlistEdit. But it shows up as Base64 when I read it out in TextEdit for pasting here.

 

As far as I know NVCAP is for setting up the video ports. I'm not sure if it has any effect but I've always tended to use my card's value when injecting.

 

Ok, cause I tried encoding that string with an online Base64 encoder (I hope it's the same thing...) and it resulted in something like this: MDQwMDAwMDAwMDAwMjEwMDAwMDAwMDAwMDAwMDAwMDcwMDAwMDAwMA==

 

Pretty creepy looking, if you ask me. :)) Anyway, I added 0x00030103 to my port nr 1, since that's the one that I'm using.

And, if you want, you can take a look at my xml output below.

 

I didn't add connector-type data since I have no such thing in IOreg, and no idea where did you get those from. :))

 

 

 

	<key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
	<dict>
		<!-- Primary display -->
		<key>@1,AAPL,boot-display</key>
		<string>0x00000001</string>
		
		<!-- Port: DVI-D -->
		<key>@0,compatible</key>
			<string>NVDA,NVMac</string>
		<key>@0,device_type</key>
			<string>display</string>
		<key>@0,name</key>
			<string>NVDA,Display-A</string>
		
		<!-- Port: VGA -->
		<key>@1,compatible</key>
			<string>NVDA,NVMac</string>
		<key>@1,device_type</key>
			<string>display</string>
		<key>@1,name</key>
			<string>NVDA,Display-B</string>
		<key>@1,display-cfg</key>
			<string>0x00030103</string>
		
		<!-- Port: HDMI -->
		<key>@2,compatible</key>
			<string>NVDA,NVMac</string>
		<key>@2,device_type</key>
			<string>display</string>
		<key>@2,name</key>
			<string>NVDA,Display-C</string>

		<!-- start: regular values -->
		<key>NVCAP</key>
			<data>MDQwMDAwMDAwMDAwMjEwMDAwMDAwMDAwMDAwMDAwMDcwMDAwMDAwMA==</data>
		<key>VRAM,totalsize</key>
			<string>0x80000000</string>
		<key>device_type</key>
			<string>NVDA,Parent</string>
		<key>model</key>
			<string>MSi GeForce GTX 650</string>
		<key>rom-revision</key>
			<string>80.07.35.00.04</string>
		<!-- end: regular values -->
	</dict>

 

 

 

Anyway, if that looks ok, it didn't make any difference to the actual gap... It's still there. However, adding display-cfg this way DID make a difference in the IOreg output. It does now read that value (0x00030103), assuming it's the correct one, for port @1.

Link to comment
Share on other sites

I think the connector data is supposed to help define whether the port is DVI/VGA etc. Although you'll see that in most DSDT fixes it's set as 0x00000800 for each port. There's a lot of stuff like that in nVidia injection that seems to be technically "wrong" but somehow makes little to no difference for my desktop cards at least. Same with NVCAP. But my needs are simple so as long as I have working DVI I'm happy.

 

There must be more to getting no flash then. It was worth a try anyway.

  • Like 1
Link to comment
Share on other sites

I think the connector data is supposed to help define whether the port is DVI/VGA etc. Although you'll see that in most DSDT fixes it's set as 0x00000800 for each port. There's a lot of stuff like that in nVidia injection that seems to be technically "wrong" but somehow makes little to no difference for my desktop cards at least. Same with NVCAP. But my needs are simple so as long as I have working DVI I'm happy.

 

There must be more to getting no flash then. It was worth a try anyway.

 

And I thank you very much for that! :)

 

I also don't need much. And since my current monitor doesn't have DVI, I had to stick to VGA for now. :( Oh well. I hope it won't be for much longer. Anyway, I don't really mind that flashing. I came a long way from the way it used to look. So I'm pretty happy with what I've got right now. Of course, if it can get better, I would love to try it. But I'm just saying, I don't mind it that much.

 

Again, big thanks for sharing your thoughts over here.

Link to comment
Share on other sites

I have this problem since Yosemite

 

https://www.youtube.com/watch?v=CUPcUl5upP0

 

I'm using Asus z97 Pro Gamer, Asus GTX strix 970 with GOP UEFI supported and dell P2715Q.

 

After try disable CSM in bios, I get 4k at clover bootloader. But problem still remain, the loading bar at left bottom left. Try to use your patch but can't pass step 2.

Here are result after run script in step 2:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PciRoot(0x0)/Pci(0x14,0x0)</key>
	<dict>
		<key>AAPL,clock-id</key>
		<string>0x00</string>
		<key>AAPL,current-available</key>
		<string>0x04b0</string>
		<key>AAPL,current-extra</key>
		<string>0x02bc</string>
		<key>AAPL,current-in-sleep</key>
		<string>0x03e8</string>
		<key>built-in</key>
		<string>0x00</string>
		<key>device_type</key>
		<string>0x49434858</string>
	</dict>
	<key>PciRoot(0x0)/Pci(0x19,0x0)</key>
	<dict>
		<key>built-in</key>
		<string>0x01</string>
		<key>device_type</key>
		<data>
		RXRoZXJuZXQA
		</data>
	</dict>
	<key>PciRoot(0x0)/Pci(0x1a,0x0)</key>
	<dict>
		<key>AAPL,clock-id</key>
		<string>0x01</string>
		<key>AAPL,current-available</key>
		<string>0x04b0</string>
		<key>AAPL,current-extra</key>
		<string>0x02bc</string>
		<key>AAPL,current-in-sleep</key>
		<string>0x03e8</string>
		<key>built-in</key>
		<string>0x00</string>
		<key>device_type</key>
		<string>0x49434845</string>
	</dict>
	<key>PciRoot(0x0)/Pci(0x1b,0x0)</key>
	<dict>
		<key>MaximumBootBeepVolume</key>
		<string>0x00</string>
		<key>PinConfigurations</key>
		<string>0x00</string>
		<key>layout-id</key>
		<string>0x00000001</string>
	</dict>
	<key>PciRoot(0x0)/Pci(0x1d,0x0)</key>
	<dict>
		<key>AAPL,clock-id</key>
		<string>0x02</string>
		<key>AAPL,current-available</key>
		<string>0x04b0</string>
		<key>AAPL,current-extra</key>
		<string>0x02bc</string>
		<key>AAPL,current-in-sleep</key>
		<string>0x03e8</string>
		<key>built-in</key>
		<string>0x00</string>
		<key>device_type</key>
		<string>0x49434845</string>
	</dict>
</dict>
</plist>

I couldn't find any where to setup VRAM...

Link to comment
Share on other sites

I have this problem since Yosemite

 

https://www.youtube.com/watch?v=CUPcUl5upP0

 

I'm using Asus z97 Pro Gamer, Asus GTX strix 970 with GOP UEFI supported and dell P2715Q.

 

After try disable CSM in bios, I get 4k at clover bootloader. But problem still remain, the loading bar at left bottom left. Try to use your patch but can't pass step 2.

Here are result after run script in step 2:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PciRoot(0x0)/Pci(0x14,0x0)</key>
	<dict>
		<key>AAPL,clock-id</key>
		<string>0x00</string>
		<key>AAPL,current-available</key>
		<string>0x04b0</string>
		<key>AAPL,current-extra</key>
		<string>0x02bc</string>
		<key>AAPL,current-in-sleep</key>
		<string>0x03e8</string>
		<key>built-in</key>
		<string>0x00</string>
		<key>device_type</key>
		<string>0x49434858</string>
	</dict>
	<key>PciRoot(0x0)/Pci(0x19,0x0)</key>
	<dict>
		<key>built-in</key>
		<string>0x01</string>
		<key>device_type</key>
		<data>
		RXRoZXJuZXQA
		</data>
	</dict>
	<key>PciRoot(0x0)/Pci(0x1a,0x0)</key>
	<dict>
		<key>AAPL,clock-id</key>
		<string>0x01</string>
		<key>AAPL,current-available</key>
		<string>0x04b0</string>
		<key>AAPL,current-extra</key>
		<string>0x02bc</string>
		<key>AAPL,current-in-sleep</key>
		<string>0x03e8</string>
		<key>built-in</key>
		<string>0x00</string>
		<key>device_type</key>
		<string>0x49434845</string>
	</dict>
	<key>PciRoot(0x0)/Pci(0x1b,0x0)</key>
	<dict>
		<key>MaximumBootBeepVolume</key>
		<string>0x00</string>
		<key>PinConfigurations</key>
		<string>0x00</string>
		<key>layout-id</key>
		<string>0x00000001</string>
	</dict>
	<key>PciRoot(0x0)/Pci(0x1d,0x0)</key>
	<dict>
		<key>AAPL,clock-id</key>
		<string>0x02</string>
		<key>AAPL,current-available</key>
		<string>0x04b0</string>
		<key>AAPL,current-extra</key>
		<string>0x02bc</string>
		<key>AAPL,current-in-sleep</key>
		<string>0x03e8</string>
		<key>built-in</key>
		<string>0x00</string>
		<key>device_type</key>
		<string>0x49434845</string>
	</dict>
</dict>
</plist>

I couldn't find any where to setup VRAM...

 

Ok, why can't you pass step 2? I don't get it. This is the untouched xml. Now you have to edit it for your needs. When you will start editing it, and ADDING all the information you need, you will find the place to add your VRAM value, as well.

By the way, the selected part in the screenshot is not for design. :P That's the part that you need to add and change, according to your card and port.

 

Also, if you want me to take a look at this issue, I will need your IOreg (config.plist would be nice too). To see which port are you using and apply the patch accordingly.

  • Like 1
Link to comment
Share on other sites

Thank you, I was able to center the loading bar. But the apple logo is missing. I have tried with patch vbios and inject edid in clover config. When I try with my custom Edid (extracted from windows), I lost clover GUI, It's auto boot into mac disk (I give it 5 second countdown to select os), so I got only stage 2.

Link to comment
Share on other sites

Thank you, I was able to center the loading bar. But the apple logo is missing. I have tried with patch vbios and inject edid in clover config. When I try with my custom Edid (extracted from windows), I lost clover guide, It's auto boot into mac disk (I give it 5 second countdown to select os), so I got only stage 2.

 

Try enabling CSM in Bios. Then Patch VBios. I don't think you need to Inject EDID or use your custom one (should be the same either way). Try without it first. I have no issues without adding/injecting EDID. Works just fine with or without it.

 

Anyway, don't use both Clover Inject EDID and a custom EDID. Use only one of them. Or, for testing, try without any EDID whatsoever. See if it makes any difference.

 

I'm assuming you mean Clover GUI, not guide. :) And you shouldn't lose first stage boot logo for that. In your video, I can see first stage boot just fine. You can try posting your config. Maybe something is wrong in there.

Link to comment
Share on other sites

 Share

×
×
  • Create New...