Jump to content

Help: Fixing Lenovo Y510p Nvidia GT 755M on OS X Yosemite 10.10.2


ahmed_ais
 Share

169 posts in this topic

Recommended Posts

And that's where the fun ends  :(

That is very bad to hear. Are you really sure? I didn't used those @Notten .rom files. However after this I have problems with graphics. My navbar is showing weird colors etc.. I tried to use same config.plist as I used before but still those colors. If I change my SMBIOS I can't boot into OSX, it shows Apple logo and then reboots. Weird things happening with me.

Link to comment
Share on other sites

That is very bad to hear. Are you really sure? I didn't used those @Notten .rom files. However after this I have problems with graphics. My navbar is showing weird colors etc.. I tried to use same config.plist as I used before but still those colors. If I change my SMBIOS I can't boot into OSX, it shows Apple logo and then reboots. Weird things happening with me.

Well, the other laptop that was mentioned used the VBIOSes to make the graphics work. Can you try using the VBIOSes with your 7mb RAM config, and see if that fixes it (should say 2048MB after)? It would be really helpful. I couldn't get back to the configuration where it showed 7MB for me. Also, I have the NVIDIA OS X Web Driver installed. Have you installed that?

What I am sure of is that I have been through this before and it was a no go. See posts #34 and #35 for more details.

Well, he didn't even install the driver or the VBIOS ROM files. Why would you think that's the end?

Link to comment
Share on other sites

Well, he didn't even install the driver or the VBIOS ROM files. Why would you think that's the end?

 

When you install OS X Yosemite on Y510p using IGPU you usually get 7MB of VRAM with VISA driver. This is what you are chasing to boot with Nvidia GPU and 7MB, isn't it? Then you want to inject the VBIOS and install Nvidia Web Driver to escape from VISA to full QE/CI like what we do with IGPU when we fake OS X to load the driver of another model so we escape VISA to full QE/CI. However, even when working with IGPU and VISA driver OS X will still see the display as Built-in. On the other hand, booting with Nvidia and 0MB or 7MB will still show the display as external as in post #35.

 

Untitled.png

 

Now what does this mean? from my understanding OS X will only detect a display as Built-in if the detected GPU is connected directly to that display which is the case when using IGPU. If, however, the detected GPU is not connected directly to the display things will be different. Now let's see how Nvidia Optimus Technology works as shown in the figure below: 

 

NVDA_Optimus_Overview.jpg

 

As you can see, only IGPU is connected directly to the display and all the processing in Nvidia GPU is routed through IGPU. If the Nvidia GPU is absent (disabled as we do with Hackintosh), IGPU will still be connected to the display and no problem with OS X. However, attempting to use only the Nvidia GPU and ignoring the existence of IGPU can only work if there is a direct route from Nvidia GPU to the display at least in OS X which is not the case in our hardware configuration. The other models that have Nvidia SLI where the VBIOS trick works may have the main Nvidia GPU connected directly to the display but that's not the case here.

 

Once we plug in the second Nvidia GPU, the IGPU fades with regard to any graphics processing and the CPU is freed from that burden. Then whatever is processed on Nvidia GPU is not sent directly to the display but through IGPU gate (pipe). Windows and Linux seems able to handle that and have sense of what the gate leeds to (the other end of the pipe) but it seems OS X does not have this intelligence built in the graphic drivers. So what OS X see in this case is the gate that can accept GPU output and it think it is some sort of display and dub it as external. So here is the thing: if we want to make this happen either to make sure Nvidia GPU is connected directly to the display or that it can look behind the IGPU pipe in between. I don't want this to sound disappointing but this is how I see the situation now and I could be wrong of course (I hope to be).

 

I also want to add that GeForce GT 755m can support working in dedicated or Optimus mode depending on the hardware configuration and it seem the one we have is configured as Optimus with Intel and dedicated without it provided the driver can look behind the pipe connecting to display. 

 

Finally and the most important: I will never want to turn anybody down on this. I started this thread and really wanted it to work and still do. But over the time we all learn more and the most important lesson I learnt from this community is that things will rarely work if you just try this and that without reading and reading more. We have to gain a lot of knowledge and understanding of how things work to know why they don't work and what we should attempt to make them work. That's not to say you and other should stop trying but to say we need to understand more about the problem in hand.

Link to comment
Share on other sites

Just one more thing I found, GPU-Z 0.8.3 shows that the built-in Nvidia GPU VBIOS does not embed a UEFI module so booting with Legacy support will be required. I'm not sure why Windows and Linux boots fine with this GPU as primary while in SLI mode and Legacy Support is disabled. UNLESS, IGPU is there for the rescue and all the graphics is routed through IGPU which embeds a UEFI module already. And this conclusion comply with what I said earlier.

Link to comment
Share on other sites

  • 2 weeks later...

So, I got this to the point where both cards are loading with the correct VBIOS. However, I can only boot with a fake PCI ID for the primary card. This boots with both cards showing, VBIOS correct for both cards, the secondary card has 2048MB of VRAM, the primary has 0MB of VRAM, and the NVIDIA driver messages in dmesg only show once. If I remove the fake PCI ID and boot with nv_disable=1 removed, then the NVIDIA driver messages show twice, as if it's trying to initialize both the NVIDIA cards, but then it stops before graphics boot. I think maybe playing around with the fake PCI IDs might yield some results. I seriously doubt Linux is aware of any Intel video pass-through, and it boots with the dual NVIDIAs plugged in and recognizes them both.

Link to comment
Share on other sites

So, I got this to the point where both cards are loading with the correct VBIOS. However, I can only boot with a fake PCI ID for the primary card. This boots with both cards showing, VBIOS correct for both cards, the secondary card has 2048MB of VRAM, the primary has 0MB of VRAM, and the NVIDIA driver messages in dmesg only show once. If I remove the fake PCI ID and boot with nv_disable=1 removed, then the NVIDIA driver messages show twice, as if it's trying to initialize both the NVIDIA cards, but then it stops before graphics boot. I think maybe playing around with the fake PCI IDs might yield some results.

So I don't see any advantage of using the extracted VBIOS as everything you explained is achievable without it. The other thing is about using Fake ID for the Nvidia GT755m as I can't see any reason behind this. This card is officially supported by Apple and already available in iMac (27-inch, Late 2013) and you should only use the correct SMBIOS without faking ID of another GPU.

 

I seriously doubt Linux is aware of any Intel video pass-through, and it boots with the dual NVIDIAs plugged in and recognizes them both.

Yes Linux boots with dual Nvidia GPU and recognize both of them but so do OS X. On the other hand, Linux drivers, somehow, can see the built-in display in this case while OS X cannot. This may have other explanation if we know how the hardware is configured inside but since we don't know I will have to go with how Optimus GPU is designed. No ability for OS X to detect built-in display with presence of Optimus GPU and no IGPU is a known behavior and reported many times so we should be aware of that. 

 

Update:

The correct SMBIOS for iMac (Late 2013) that have Nvidia GT 755m is iMac14,2 according to this.

Link to comment
Share on other sites

  • 2 months later...

I know that probably all of you have given up trying to get that damn GPU to boot up properly but will exracted VBIOS for primary GPU help? If this is going to help I can provide extracted VBIOS for primary GPU that I have extracted from BIOS. 

 

https://copy.com/9RzX1j6449vUs2J0

 

It is original unmodified VBIOS from primary GPU.  

 

Will dissasembled BIOS help you somehow guys? I am not very good at Hackintoshing myself but I did some bios modifications for myself on y510p.

Link to comment
Share on other sites

I know that probably all of you have given up trying to get that damn GPU to boot up properly but will exracted VBIOS for primary GPU help? If this is going to help I can provide extracted VBIOS for primary GPU that I have extracted from BIOS. 

 

https://copy.com/9RzX1j6449vUs2J0

 

It is original unmodified VBIOS from primary GPU.  

 

Will dissasembled BIOS help you somehow guys? I am not very good at Hackintoshing myself but I did some bios modifications for myself on y510p.

Hi. Thanks for attempting help but we already have all what you offer and these did not help proceeding.  :(

Link to comment
Share on other sites

  • 2 weeks later...

Yosemite report monitor as external one right? It will probably always show that monitor as external one. Y510Ps display is connected via DisplayPort connection on motherboard and as far as I remember  older Macbooks used DisplayPort to connect external monitor instead of HDMI. Maybe thats why Hacintosh detects monitor as external. Correct me if I am wrong.

  • Like 1
Link to comment
Share on other sites

I'm fairly certain Mac versions of mobile NVIDIA GPUs have different device IDs than the PC counterparts. GeForce GT 755M "Mac Edition" has a device ID of 10DE:0FEA; your GT 755M has a device ID of 10DE:0FCD, although I doubt it will make a difference in this situation.

 

This may make the whole difference. I will try this at some point soon. Maybe this weekend.

 

Yosemite report monitor as external one right? It will probably always show that monitor as external one. Y510Ps display is connected via DisplayPort connection on motherboard and as far as I remember  older Macbooks used DisplayPort to connect external monitor instead of HDMI. Maybe thats why Hacintosh detects monitor as external. Correct me if I am wrong.

 

This is also useful. Maybe we can override the way it is detected using SSDT/DSDT? Maybe we can track down the detection code and binary patch / runtime patch the drivers to always return the display as internal? Maybe we can use the HDMI output at first? Although, I've tried several boots with the HDMI connected to no avail.

Link to comment
Share on other sites

I know that this post may not be here but, maybe if we cant work out how to fix running VGA with its full potential this way, what if we try to run OS X via KVM. I dont know if our nVidia card is able to handle GPU passthrough but it may be easier to make it work in dual GPU models of our laptop as we can assign only one GPU while blacklisting other directly by using virtualization. What I mean we can use linux as base for launching virtualized OS X while allowing GPU passthrough to VM. We can use for example Ubuntu or Arch Linux without Desktop Enviroment as base because we only need it for initializing VM. I have seen some successful  attempts running OS X via KVM but I do not know how does it play with GPU passthrough.

Link to comment
Share on other sites

  • 3 months later...

Hmm I think the problem is that Intel HD is connected to GFX0 but Internal Nvidia is connected to PEG0.PEGP. For Asus notebooks where Intel HD card is disabled by default there are patches for Nvidia Cards, but in this case they are connected to GFX0. I think it is the main reason why whe can't get it working.

There is nothing routed through Intel HD card. If you flash custom BIOS/EFI you can see option to switch graphics cards but it is restored to default after reboot.

I think we should try with DSDT patches for Nvidia connected PEG0.PEGP.

This is what you can see in device manager about Nvidia card. This is not changed after plugging/unplugging second card.

PCIROOT(0)#PCI(0100)#PCI(0000)
ACPI(_SB_)#ACPI(PCI0)#ACPI(PEG0)#ACPI(PEGP)
Link to comment
Share on other sites

  • 3 months later...

I have one of these dual 755s with El Capitain running, the 4600 just isn't cutting it for me, how are any of you guys getting it to boot with the 755? Every time it hangs on my machine halfway through loading OSX.

Link to comment
Share on other sites

I have one of these dual 755s with El Capitain running, the 4600 just isn't cutting it for me, how are any of you guys getting it to boot with the 755? Every time it hangs on my machine halfway through loading OSX.

The progress is halted as there is not enough interest in the community especially since such hybrid notebooks are rare.

Link to comment
Share on other sites

Okay I found that the correct way to get it to boot at all was to disable the DSDT stuff, use custom EDID, and inject Nvidia, with custom ID would get it to at least boot but not be detected. I found the nvidia web driver that supports the imac 755m along with other nvidia cards and installed it. 

Now when booting in verbose if I don't use a custom device ID I can see the nvidia driver initializing both the graphics cards, then I see it say it successfully loaded them(something like that) before it then freezes. If I inject the custom ID it only shows the nvidia driver initializing the ultra bay GPU, and it seems the nvidia driver either cant find or doesn't load onto the main GPU but it successfully boots (No QE/CI). The nvidia driver then can see the ultrabay card from within OSX but not the other car (its clearly acting very strange) it seems odd that clover doesn't recognize the second nvidia card ever also.

 

I probably actually have access to a late 2013 iMac with a real 755m and might be able to dump the bios for it if it could get this to work... 

 

How come in previous messages people were told to make the bios file 10de_0fce.rom ??? Isn't the native device ID 0fcd0fe9 so it should be 0fcd_0fe9.rom??? Also I think the clover folder to put the roms in must have changed, I tried booting with all the different bios, each time it seems to get me father into booting (booting without entering in a fakeID but it still eventually freezes). Using fake ID always takes me into mac with no QECI and its never detected by the web driver and this leads me to my next point.

 

What the heck is the fake ID part of clover for? If I don't use fake ID it ALWAYS freezes at some point (so far anyway) but the Nvidia driver ALWAYS recognizes both of the 755ms. If I use fake ID it ALWAYS only sees the ultrabay 755M, and NEVER sees the built in 755M. This works this way even if I use the real ID as the fake ID. WTF? I really don't understand fake ID or how it can not boot without but it boots with real ID as fake ID....

 

I think to get it to work it needs to be booted without using FakeID. This must be possible as windows XP, or linux can be installed on this laptop without Optimus and works perfectly granted only using 1 755m. 

Link to comment
Share on other sites

  • 3 weeks later...

So the gt755m that Apple uses in their MBP 2013 has a different device ID than the one released for the PC. That's why we use the fake PCI ID and name the VBIOS files with the fake ID also. I got as far as booting with the fake VBIOSes and the Fake PCI ID, and the VBIOSes showed up in the "About This Mac" window, but I never got acceleration. Looking at the kernel logs, it looks like the cards are both initialized, but the display isn't found. However, we clearly see that Linux will boot with both cards in, and use the on-board NVIDIA card to output accelerated graphics. Maybe someone else with this configuration can get their Linux box to show how the display is connected. However, there are very few options (nearly none) for the Mac NVIDIA Web driver, so I don't know how we can configure it in any way. Maybe someone has more information on this? 

 

Also in this thread there is a link to another Laptop with dual NVIDIA graphics (I think 860Ms), and they boot into OS X and use 3D accelerated NVIDIA graphics. That's where we got the idea of loading the dumped VBIOSes. I also linked to a file upload site with dumped VBIOSes from both the cards. Using the standard VBIOS dump method doesn't work. I used another tool (mentioned in the thread) to dump all the VBIOSes that are packaged in the regular BIOS, and then found the NVIDIA VBIOS for the on-board card. That's how you have to do it. The UltraBay card can be dumped using the regular dump method.

 

I think we're very close to getting this working. It would be nice if someone at NVIDIA gave us a driver with debug output, and we could run the boot-up and send them a log to see if they can help us fix the problem. This should really be fixable. However, so far we've had no luck. I think we might have more luck if we can identify the two cards differently (which is hard because they have the same PCI ID) by maybe using their PCI device location on the bus, and suppressing the UltraBay one from even loading by maybe forcing it to show a different PCI vendor ID so the driver doesn't try to load. Then, maybe we can use that to load only the onboard NVIDIA card.

 

It looks like the Intel on-chip video is completely gone when both NVIDIA cards are in, but maybe we need to do some minor display initialization somewhere. I'm not 100% sure how this would work.

 

Another thing that's been tried is using the hacked up BIOSes from TechInferno (I think, some guy slv7 or so), and using the graphics options there to set the graphics type, etc. Apparently these settings don't save and some of them cause the Y510P to black screen and you have to restore the BIOS blind. However, this might be a really good option for getting the NVIDIA card to be recognized, especially if we can change how the display is connected to the main card. However, the defaults seem to work fine for Windows and Linux.

 

Again, because the defaults seem to work fine for Windows and Linux, I believe that we should be able to work with SSDT/DSDT and Clover config and maybe some driver options to get the cards to work. They are detected just fine, and it seems that we can even boot into OS X with them recognized. However, we can't get the VRAM to show 2048MB (it's either 0MB or 7MB), and we can't get the display to be properly detected. I would even be able to deal with changing the BIOS setting every time I boot, but so far I don't think anyone has tried setting the display connection there and then booting with VBIOS/fake ID/SSDT or DSDT overrides/NVIDIA injected. Maybe someone can try this combo with the hacked BIOS.

 

Anyone want to start a fundraiser to get some Hackintosh expert to figure this out? These laptops are getting cheap ($600 on Ebay), and make a really good Hackintosh. If we could get the NVIDIA cards to work and you swap out your WiFi card for a working one, this laptop would be the perfect triple boot/quad boot machine. I'm trying to get Solaris working on it now.

 

EDIT: I also found this link that includes a boot.plist or something like that which seems to have some options for the NVIDIA driver albeit for an older version, and the options seem to be used to override which card is the boot card and which display is used. Maybe we can use this to set the onboard card to be the boot video card, and set the correct path to the display for that card. Can anyone who knows a little bit more about this try the following link and see if you can get it to work?

 

http://aquamac.proboards.com/thread/569/gfx-strings-dual-cards?page=26

 

If this works, it would be so huge..

Link to comment
Share on other sites

Thanks, @notten
 
I have also came across this option in Clover while I was attempting to fix our Nvidia issue last week:
 

Rev 3224
Implemented NvidiaSingle
If you have two cards Nvidia and wants to inject only first one :rofl:   then you can set this parameter.

		<key>NvidiaSingle</key>
		<false/>

 

It did not work with me but it can be of help along side other things to do.

Link to comment
Share on other sites

+ what is kind of your display connector eDP or LVDS ?

It's an eDP. 

 

+do you try disable ultrabay card by DSDT/SSDT ? 

Nope, never tried that before. I will look into that although it is tricky as both Nvidia GPUs share the same SSDT.

 

Thanks.

Link to comment
Share on other sites

@DuongTHVN

 

I just checked the mentioned SSDT and I compared both versions of that SSDT in the cases:

  1. Ultrabay GPU is OUT (Intel + Optimus)
  2. Ultrabay GPU is IN (Nvidia built-in + Nvidia External)

And here's what I found so far:

  • The SSDT is totally different between the cases (209 differences between the dsl files)
  • While the SSDT in the first case (Optimus) have a _OFF method which we call in _INI to disable the built-in Nvidia GPU and work only with Intel GPU, that is not the case for the dual Nvidia GPU setup. The SSDT in the second case does not have _OFF method at all and not only that, I thought maybe another SSDT have _OFF in this setup but I did not found any. In short, for the dual Nvidia GPU case there is no way to disable either GPUs by means of calling an _OFF method.
Link to comment
Share on other sites

A tiny bit of information:

 

Although it have been stated before in this thread, I re-confirm that the built-in Nvidia GPU is the one connected to display in the case of having the ultrabay Nvidia GPU in. There are hints across the system that can conclude that statement but I made sure by disabling one of the two Nvidia GPUs in Windows (the second one in device manager which was actually the ultrabay one). The system continued to work just fine with only the built-in GPU. I then ran some GPU benchmark software looking to sense where would the heat come from (left: main fan denotes built-in GPU, right: ultrabay GPU fan). The right fan remained cool all the way so all the tests were performed on the built-in GPU which prove that the built-in GPU DOES work independently and IS connected to the main display and DOES NOT work like Optimus.

Link to comment
Share on other sites

It's an eDP. 

 

Nope, never tried that before. I will look into that although it is tricky as both Nvidia GPUs share the same SSDT.

 

Thanks.

 

 

 

@DuongTHVN

 

I just checked the mentioned SSDT and I compared both versions of that SSDT in the cases:

  1. Ultrabay GPU is OUT (Intel + Optimus)
  2. Ultrabay GPU is IN (Nvidia built-in + Nvidia External)

And here's what I found so far:

  • The SSDT is totally different between the cases (209 differences between the dsl files)
  • While the SSDT in the first case (Optimus) have a _OFF method which we call in _INI to disable the built-in Nvidia GPU and work only with Intel GPU, that is not the case for the dual Nvidia GPU setup. The SSDT in the second case does not have _OFF method at all and not only that, I thought maybe another SSDT have _OFF in this setup but I did not found any. In short, for the dual Nvidia GPU case there is no way to disable either GPUs by means of calling an _OFF method.

 

 

 

A tiny bit of information:

 

Although it have been stated before in this thread, I re-confirm that the built-in Nvidia GPU is the one connected to display in the case of having the ultrabay Nvidia GPU in. There are hints across the system that can conclude that statement but I made sure by disabling one of the two Nvidia GPUs in Windows (the second one in device manager which was actually the ultrabay one). The system continued to work just fine with only the built-in GPU. I then ran some GPU benchmark software looking to sense where would the heat come from (left: main fan denotes built-in GPU, right: ultrabay GPU fan). The right fan remained cool all the way so all the tests were performed on the built-in GPU which prove that the built-in GPU DOES work independently and IS connected to the main display and DOES NOT work like Optimus.

 

eDP + nVidia is hard very hard same on my system.

your issue is eDP with nVidia , not about SLi nVidia.

if your system is LVDS i think it work perfect. dGPU for internal Display, untrabay GPU for external display.

Link to comment
Share on other sites

 Share

×
×
  • Create New...