Contribute
Register

<< Solved >> AMD WX4170 dGPU on ZBook G5 17 Laptop

Status
Not open for further replies.
I need to get back to work, but next I'll try to figure out which of these differences in the ROM headers are offsets and which are important and could be the missing link.

Left=Pegatron=Works in Catalina
Right=Vaughn=Not working in Catalina
Both same device-id E867

Cyan=Checksum (we can ignore the difference)
Magenta=Text Information (may not be important)
Green=Diff

Screen Shot 2021-05-17 at 1.55.56 PM.png
 
well well well....
I installed Catalina and voila... stuck on Apple logo after verbose))))

Hmm... but I feel like this is not small problem but is much wider)))

But I accidentally noticed one thing: after hard reset, my laptop start send wrong colors to hdmi display. The same thing I noticed when I was patching framebuffers. I added some photos earlier with wrong colors.
FAF331B4-CEFD-4BB7-B7C9-24A15A32ED3B.jpeg

So hypothetically: Apple not updated their vbios roms for laptops or iMacs before or after release of Catalina. So it may not be a vbios problem.

Do you have thunderbolt egpu?
 
well well well....
I installed Catalina and voila... stuck on Apple logo after verbose))))

Hmm... but I feel like this is not small problem but is much wider)))
I think so too, but very few of us have dualGPU laptop unicorns

-Try the RX560 or the Pegatron Rom (may need to edit the connectors) but in your case it should work and give you the same performance once the ROM is patched.

But I accidentally noticed one thing: after hard reset, my laptop start send wrong colors to hdmi display. The same thing I noticed when I was patching framebuffers. I added some photos earlier with wrong colors.
Weird, I had a similar thing happen and only an EC reset or removing the battery fixed it, my guess is something in the MXM card is corrupt. Can't boot to windows either.
Do you have thunderbolt egpu?
I don't

Here's my decoding effort so far:

Screen Shot 2021-05-17 at 4.53.20 PM.png
 
Last edited:
There's an interesting difference in the MasterCommandTable, so it could be just offsets for a couple of the commands, or the cards do have some basic difference in some functions and one of those could be the one that the driver is waiting for a response from the card. In one version the command goes through and the driver gets a reply and the driver loads, and in the other the card never responds and the driver waits forever without an error or timeout...

Screen Shot 2021-05-17 at 5.11.10 PM.png
 
Posibly this info may be related to our problem:
1. Unsuported GPU
2. Problem vBIOS

Screen Shot 2021-05-18 at 20.00.48.png
 
Posibly this info may be related to our problem:
1. Unsuported GPU
2. Problem vBIOS
I agree, and the best evidence of this are the 2 "working" Roms.

The problem that remains by using these Roms is that discrete mode almost bricks my laptop, so there must be a better way.

You also have to keep in mind that we do have a working GPU on a couple of MacOS versions, and that blanket "Unsuported GPU or Problem vBIOS" statement is not necessarily true. The problem is that they stopped being supported in the newer MacOs', and that is not the same as "were never supported".

That's why I believe this can be patched to work on the OS side
 
Last edited:
I agree, and the best evidence of this are the 2 "working" Roms.

The problem that remains by using these Roms is that discrete mode almost bricks my laptop, so there must be a better way.
No. You have working roms because you’re have bios based recovery rom. I tried wx4150 from G5 rom, and no post, system halt. Tried replacing g5 vram timing and Samsung ids and laptop boots, but only to hp logo. System won’t work forward. And I get same symptoms as in Catalina: usb working, everything seems to be fine, but even under auto mode, system won’t start bootloader...

After this I resolder spi second time and try mbp 13.3, 14.3 vbioses which related to my ram.
2021-05-18 23.48.24.jpg2021-05-18 23.47.53.jpg

And got no driver support under Windows and kernel Panic on High Sierra and Catalina. Ubuntu also won’t boot so I decided to flash my stable rom on Windows, but system freezes and I resolder spi rom again and flash it with ch341a backup stable rom, solder back, but accidentally one of spi foots was not solder to pcb. This pin is MISO.
MISO: Master In Slave Out (data output from slave)
GPU rom is slave

2021-05-18 23.47.40.jpg
I boot Windows and was shocked. As I understand, this pin represents out signal from spi. So chipset ask rom, but rom can’t send data back. Somehow the wx4150 even recognized by the Windows. And Gpu-z show really interesting information.
2021-05-18 23.48.33.jpg2021-05-18 23.48.30.jpg
How GPU-Z Recognize Subvendor if rom is not reading? Where this info can be stored?



So if rom is not supported by the hp laptop bios, I will always get problems and solder process((( with m2000m quadro, was much easier, because faulty rom was fast replaced by its internal default, so I even not meet solder spi process problem. The Windows and Ubuntu was fast injected internal default rom. But under MacOS I get exactly what was on mxm spi!


Later I will add images in right location, I am on phone and it is not easy))


UPD1.:
I want to try ssdt vbios injection or Whatevergreen aty bin image. As clover vbios injection working only with amd injection, which can conflict with Whatevergreen

UPD2.
The possible reason why your fake rom is working, is partial missmatch of important info.
 
Last edited:
No. You have working roms because you’re have bios based recovery rom. I tried wx4150 from G5 rom, and no post, system halt. Tried replacing g5 vram timing and Samsung ids and laptop boots, but only to hp logo. System won’t work forward. And I get same symptoms as in Catalina: usb working, everything seems to be fine, but even under auto mode, system won’t start bootloader...

After this I resolder sip second time and try mbp 13.3, 14.3 vbioses which related to my ram. And got no driver support under Windows and kernel Panic on High Sierra and Catalina. Ubuntu also won’t boot so I decided to flash my stable rom on Windows, but system freezes and I resolder spi rom again and flash it with ch341a backup stable rom, solder back, but accidentally one of spi foots was not solder to pcb. This pin is MISO. I boot Windows and was shocked. As I understand, this pin represents out signal from spi. So chipset ask rom, but rom can’t send data back. Somehow the wx4150 even recognized by the Windows. And Gpu-z show really interesting information.

So if rom is not supported by the hp laptop bios, I will always get problems and solder process((( with m2000m quadro, was much easier, because faulty rom was fast replaced by its internal default, so I even not meet solder spi process problem. The Windows and Ubuntu was fast injected internal default rom. But under MacOS I get exactly what was on mxm spi!
Do they have the correct outputs?
GOP?
Hybrid Mode?

Like I said before in discrete mode I get the same no post, but if IGPU handles the LCD and DGPU is started only by drivers and not by BIOS, then it kinda works.
It's not Bios recovery mode at all, actually the only way I've been able to get that working was by force flashing a Ellesmere Rom, which obviously the card rejected, but then provided no Rom to Bios and then Bios provided it's own version for Windows.
UPD1.:
I want to try ssdt vbios injection or Whatevergreen aty bin image. As clover vbios injection working only with amd injection, which can conflict with Whatevergreen
Doesn't work, I've tried so many different ways, and they all inject the properties and vbios and IOReg shows all the injected stuff, but for Catalina, the driver speaks directly to the mxm card, regardless of what is injected.
That threw me off for a while, I get a rom that boots, then flash back to my good rom, then inject the other one, and in mojave I can see all the injected stuff right, but Catalina stalls on boot just the same.

You can fake a device-id injection, but if the Rom is not loading because of our mystery "something", then it's no go.
 
How GPU-Z Recognize Subvendor if rom is not reading? Where this info can be stored?
That is interesting, but could be a driver cache in windows, you would have to completely remove the drivers using:
UPD2.
The possible reason why your fake rom is working, is partial missmatch of important info.
This is also very possible
 
That is interesting, but could be a driver cache in windows, you would have to completely remove the drivers using:

This is also very possible
Another vision. Could you send the stable mojave vbios and two or three fake which is working on Catalina.

Possibly you will need to make screen shots in gpuz of first and second tab and generate hwinfo64 report for stable rom and fake roms.


Explain why:
1.
When I flash wx4150 g5 vbios with native vram parameters, the bios won’t work, because the vram was not responsible and actually the gpu processor get freeze. But when I patch my vram section, the gpu chip was succed with timing, but the core instructions was optimized to work with non Samsung vram, so there was no connection between gpu core and vram. The ram bridge fails to initialize. But what is important is the bios boot get same symptoms as I have in Catalina, also as you.
2. So when your fake vbios working on Catalina it wouldn’t be work on Windows. Comparing data from gpuz and hwinfo64 will help to understand which instructions was or wasn’t initialized.
3. Every vbios build with (my understending):
- preboot: hardware components initializing (vram, vrm, mossfet configs)
- preboot: operation bus instructions: Gpu core hub, vram Bridge, pci bridge, l2c, jtag, SMBus
- Boot: gop, connectors, port transmitters basic efi drivers
- Boot: Instructions supported(like intels sse, and other could be found in pc bios): this instructions making components to operate, core operate and actually starting the whole gpu system work, comunicate with motherboard and chipset, cpu (some kind of microcodes)
- Boot: final stage diagnostics, and send message “all is ok, ready to operate” to chipset) and now post is complete.
- OS (instructions via pci bridge to non based driver(amd or other preinstalled)) so OS is getting boot with basic efi driver and switch to extended, user installed. Windows and Ubuntu flashing screen few short times and enhanced graphics are working now.
- The os based driver is now operating with instructions like OpenGL, cuda, Vulcan and other.

So theoretically:
We have different parts of vbios stages (non os dependency):

- early components communication
- hardware communication
- Basic operating instructions
- Basic video driver

Os based dependency:
- acceleration instructions
- Video drivers
- Port mappings

That’s why when inject vbios, it only affects to os part of vbios, because the other part is already working and is not responsible to high level operations (my friend has r9 270x gpu with a small hole in gpu chip. This happens because of overheating, the transistors became bigger and as the distance between them decreased, a breakdown of the current occurred. So part of gpu related to accelerating just blow up. But gpu is still working on base driver). So low level and high vbios stages have no dependency.

So with low level initializing, the hardware components are unstable and doing wrong communications with high level. So that’s why hardware part of vbios is fake, but acceleration is the same as in other amd gpu. And that’s why Mac OS driver is working, because it can’t operate with hardware components but good with high level.

If you are using the stable vbios, macOS will operate fully with hardware which already initialized on early stage of boot.

If you want to know is Catalina or any other OS X communicate with mxm rom, you will be supraised if you will inject 64 or 65 kB vbios with clover or OpenCore. So if you will replace gpu ascii name in rom, correct checksum, and after injection will dump with any way, you will dump injected rom)))

Any rom 64 or 65 (I can’t remember)is injected by efi bootloader! so that’s all))

Problem is in driver, because even without Whatevergreen and lilu. The os wont start final stage.

Waiting for your gpuz an hwinfo64 reports for comparison.



UPD1. Why we see HP vendor in GPUZ?
2021-05-18 23.48.33.jpg2021-05-18 23.48.30.jpg
How GPU-Z Recognize Subvendor if rom is not reading? Where this info can be stored?
I think if vbios cant be read, pci still can read GPU core. And gpu core have integrated DeviceID, and as you see, OpenGL is supported even without vbios. The driver trying to start by identification of device and vendor IDs. But why we see HP subvendor? this subvendor can be even found if I replace stable vbios with apple 13,3 rom. But GPU core can`t be flashed by firmware...



UPD2.
Just for fun. I found Intel Vbios in mine bios rom
The file with name
LegacyVideoRom_00D3
Attached file (Skylake HD530 mobile)

UPD3.
I deleted different AMD kexts related to ioregistry associations with GFX0 and get gpu working without acceleration. So something in one of this kexts have some ask or search command related to preloaded video rom, and if it returns with wrong value it will stop windowsserver. The Windowsserver are related to Appledevicepolicy.kext. So fake rom possibly prevent return of some unknown value. So to find out this dependency we need to look on your reports. Then find what kext is actually related to this action, reverse engineering this path, make patch kext with return success. Or it’s simple whitelist.
 

Attachments

  • LegacyVideoRom_00D3.zip
    39 KB · Views: 26
Last edited:
Status
Not open for further replies.
Back
Top