-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Correction for AMD RX550 GPU OSX Support #129
Comments
Thank you so much for compiling all this information, been busy over the holidays so haven't had much time to look at issues or PRs. I added it here with full credit, thanks again for the help! |
Which card is this? |
Hello @cat2devnull ! Do you think this GPU is supported? https://www.powercolor.com/product?id=1639643037 I am asking because Memory clock is 1500Mhz (should work), stream processor is 512 (shouldn't work) and reference clock (engine clock) is 1071Mhz (should work). Thank you for giving us this info! |
Yes, so this is all very frustrating and makes it difficult to tell what is what. I have never had any luck finding anything useful such as data sheets to be able to check for sure. Most vendors seem to have very confused websites with regards to memory clocks but they do seem to get the SP count correct so I would use that as my guide for purchasing. You will usually find that the Baffin cards are V2 models of an existing card that is often still being sold. I hope this helps. |
Thank you very much for your help! |
@Danie Can you confirm that the PowerColor RX550 2GB and 4GB Low Profile models are macOS compatible? |
I don't believe so but it is hard to say for sure. They claim to be 512 stream processors which would be Lexa but their memory clocks are for Baffin. Several vendors seem to mix these details up on their websites. I would recommend contacting them directly to clarify. |
Someone on ebay who sells this specific gpu send me a GPU-Z Screenshot. Aparaently the card is not compatible because the software says Lexa. |
That appears to be the case. The screenshot also shows the vendor code to be 0x699f which is definitely Lexa. It seems that the RAM speeds are not a reliable distinguishing factor. The number of SPs and the chip codes what you should use to make a decision. |
That screenshot looks fairly similar to the screenshot from #264, which is confirmed working. The source GPU from that issue was an OEM model from a prebuilt so I don't have much information, but there's a strong indication Lexa works now. |
I'm not convinced (yet)... I'm using unraid so from the linux command line using lspci:
|
@danieldeicide |
@quyenvsp @tristan-k Haven't bought the card after all. Once I do, I'll update you guys 😄 |
I want to purchase ASUS PH-RX550-4G-EVO. But before moving forward for the purchase, i would like know if it’s a baffin core(polaris11) or a lexa core(polaris12). |
It looks like the PH-RX550-4G-EVO is a Lexa core as it is quoted to have 512SP. The only two ASUS cards that appear to be Baffin are the PH-RX550-4G-M7 and AREZ-PH-RX550-2G. Both of these are stated to have 640SPs. |
Thankyou.🙏🏼 |
@tristan-k @cat2devnull --- EDIT 09 Aug 2022: Added SSDT patching info --- In my case I had something like this: PCI0@0 -> SF0@1E -> pci-bridge@1 -> GFX0@1B Unfortunately the pci-bridge devices doesn't have an acpi-path and so also the gpu attached to it doesn't have one. So in order to get it working I had to "rename" the pci-bridge@1 to PBR1 using this SSDT:
NOTE 1: Edit the "External" and "Device" path according to your specific path Now I can use a common patch like many others found online. This is the one I am currently using (remember to replace the paths and _ADR):
|
When you say you got it to work, I believe you mean Metal (HW) and video coded acceleration? |
@anirudhra Yes! If you want I can run some tests |
Thanks, this is good news. Opens up Lexa - more low power GPUs! Quite confusing with many saying it doesn't work no matter what. Perhaps only certain models work... |
just got the powercolor 2gb variant from amazon for $79.99 looking forward to test it. |
Hi, I'm trying to repeat your scenario, however, I can't reach to the point where GFX0 is sitting on the pci bridge. Could you, please, share you proxmox vm config as well as your oc config and acpi folder in macos vm. |
Unfortunately I am not using it anymore and I don't have that files. However, your gpu should appear somewhere in IORegistryExplorer. Otherwise it means that you are not passing the right pcie device |
Yes. it does. Depending on what ostype I'm using it sits here:
if ostype: win10
if ostype: other This is the reason why I'm trying to find a way to put GFX0 on the bridge, as you were able to spoof device-id in that case. |
If you don't see the GPU in a bridge it should be easier because it should be directly accessible. If I remember correctly I think that you could directly use my second SSDT replacing every occurrence of |
Thank you, I'll try tomorrow morning and post the results here |
I've just checked it. Doesn't work. device-id is not changing with ssdt injection. I attached an archive with ioreg dump with and without ssdt injection. Also there are my proxmox vm config, oc config, acpi folder, acpi tables dump at oc boot prompt and oc boot log. If you can take a look at it and make some comments, it would be very much appreciated |
Unfortunately I don't have a mac anymore so I can't read your ioreg dump. However you left the address I used for my gpu ( |
Your ssdt seems correct. I don't know what's wrong. In your IIRC I tried to rename sections of the acpi-path until I got it right. To test if your path is correct you could try to rename
I don't remember if it did work at all, but if your
These tests won't make your GPU work, but will tell us if your path is correct . Remember to delete these ssdts after your tests or you will have wrong acpi-paths.
I tried that method too, but I had the same problem as you. I don't know why it didn't work at all. |
Seems that your ssdt is not working at all. I don't know and unfortunately I don't remember much more... However I do remember that acpi-path was missing for the GPU until I renamed the pcie-bridge. I found the solution after some research in the forums. IIRC I read this post: https://www.tonymacx86.com/threads/radeon-rx-6950-xt.320302/post-2352873 that explained well the problem. However reading that page again I probably found a mistake. Could you try to edit the previous "renaming patches" changing TEST in PBR1 (ACPI values must be made of 4 letters but I don't know if it is required to have at least one number) |
Tested with PBR1 instead of TEST. Nothing changed. SE0 sits on the same address and no PBR1 inside the ioreg. |
For those who like me is struggling with no acpi-path in GFX0. I managed to make the card work properly. For me changing oc to clover solved the problem. With just default clover config, acpi-path of GFX0 has appeared and spoofing device-id via config/device/properties became available. And with adding whatevergreen.kext I’ve been able to make the card fully functional. The problem that is still unresolved is hdmi audio. I passed through the amd audio deive and everything works fine in windows running in this vm, however macos does not see any output audio devices. Any idea how to fix this? |
fast forward-like watching can be fixed in proxmox by adding in args -cpu +invtsc |
@rdmitry0911 - I have the same path with opencore on proxmox (Ventura 13.2.1)
changed a bit @DavideFioravanti AML code above and it worked `DefinitionBlock ("", "SSDT", 1, "AMD", "GPU", 0x00000000)
}` |
Thanks for sharing this. With this from your dsl file
my compiler produces an error
It compiles normally, however, it doesn't substitute anything. All remains the same as earlier. Can you share here your oc config.plist file and tell which version of q35 machine you are using? Thank you, dmitry |
sure using latest q35 on 6.1 kernel (I have 7950x with 2x W5700) |
Ok, thank you. As far as we have different platforms, I only took from your config your aml file and boot-args: tlbto_us=0 vti=9 And now the system works as expected. Forgot to mention earlier, I managed to get a working sound. I just needed to passthrough all functions (all together and not one by one separately) In this case sound works automatically and no patching is required. One more thing. With clover and big sur I've got periodic gpu freezing which then leaded to proxmox stuck and only power switching of the box helped. Reset button didn't work strangely enough. This happened in photoshop after some time and in ungine valley test. I noticed, that the time to crash depends on version of q35 machine used. The most stable q35 version is 7.2. With this version ungine valley run 2 days and didn't crash the system in the end and photoshop run for couple of hours. Have you experienced such a problem in your system? |
Good to hear that your gpu is up and running correctly. |
Yes, without the -radcodec everything's works fine . However, I decided to add this argument to boot-args, as I would like to mimic as much as possible the config, that doesn't have problems with system crashes. As for the Metal “supported” issue, all GPU tests, including screensavers that I run didn't complain about lacking of metal or some other resources. So, I conclude that graphic acceleration is available in full. |
The system is running fine so far, no problems at all with it. I upgraded macos to 13.3.1 and now I'm using the latest q35 machine type. However there is one annoying thing. To start macos, a secondary standard vga adapter has to be added to the proxmox machine configuration. With just a single amd rx550 and without this secondary vga adapter the oc just doesn't start the macos. I collected the log of oc boot process of a system with a single rx550 card Log collected via serial port attached to the machine config
As you can see at 12:707 00:017 oc aborted booting and returned to the menu. vbios dump via #AMD_ROM_Info
Is there anybody here who has managed to boot macos in proxmox with a single rx550 card? And if such could you, please, share here a proxmox config for that machine as well as the details of the gpu (exact model and bios version) and tricks applied if any :)? |
It turned out that if I change my LG TV, connected to the AMD GPU via DP2HDMI cable to a HP monitor connected via the same cable to the same GPU port than OVMF recognizes this monitor and OC started the macos without vga in guest config. For me this means, that OVMF just does not detect my TV. Now question is if it's possible to make ovmf to detect my TV and if this is not an option, another question how to make OC to boot macos headless? |
Dear Dmitry, thank you for sharing your ideas and outcomes in this topics. This means you are still work with clover not with opencore. That means nobody mange a successful device-id spoof with opencore and MacOS VM on Proxmox. Right? Best Tim |
No, I'm running OC 0.9.1 (there are references in my earlier posts). And device-id spoofing works fine with the above acpi patch. I have no more problems with gpu. |
Ok, thank you I will try it. |
Finally I’ve made my gpu to work with the tv. Ther problem was deep color hdmi settings in the tv. It was set to “optimize for 4k”. I set it to “off” and now gop detects the tv at bootup. Thou it is still unclear to me how to boot macos if tv or monitor is switched off? For example just to share resources over the network. It turned out no way. |
Hey guys, quick update, I was able to get my Lexa 550 Polaris working via SSDT patch on KVM / QEMU based Macos on Monterey on a Manjaro host. For my setup, I enabled GPU passthrough via IOMMU, configured my grub to pass the GPU to IOMMU, rebuilt my initramfs for getting VFIO enabled, then once in Macos, patched the SSTD using MaciASL and a super basic dsl. Super important: set your primary GPU as the IGPU, not the PCI GPU, to avoid linux initializing the GPU. Also, important: do no use q35 as the default machine for QEMU, since 7.2 (latest) doesn't boot. I used 3.1 or 5.1, both works. Basically what I had to do is get a proper ACPI path, renaming my PCIX/SE8/display@0 to GFX0, then the patching can be done via OC device properties or directly in the SSDT patch. I used hackintool to check the ACPI path. One thing to note is I can only get output on the display port of my card, but I don't care since I use it headless via VNC. This is how my SSDT patch looks: https://github.com/moqsien/hackintosh_p310s_b360_i5_10400f_rx550_lexa/blob/main/files/GPU-SPOOF-ORIGINAL.dsl CPU: Intel i9 |
I've got an old device-id renaming problem again after m/b change and stuck there. Nothing more has been changed.
The same ssdt for rename device-id SSDT-550-SPOOF.aml.zip |
Hi DavideFioravanti, you're the only person I was able to find anywhere who is running a similar setup and had some solution. I was hoping you could give me a hand with this. I am running Monterey in Proxmox, trying to passthrough a MSI RX 560 Aero; device id: 0x67ff so should be baffin core. I attached the gpu to an arch linux VM, and got the following: I modified your SSDT file, as such: These are my proxmox .conf files and my config.plist, and these are possibly relevant args: possibly relevant images from OCAuxillaryTools: And finally, this is from IORegistryExplorer: Things I've attempted:
Any help would be greatly appreciated! I bought this GPU so it would easily work OOB compared to an Nvidia K5000 I am using on another rig, but this has been more difficult to get working than the Nvidia card unfortunately. |
RX560 does not need to be spoofed. It should work natively. Have you tried some other SMIBOS like MacPro7,1 that only supports dGPU? Also, you may want to mask the serial number in your About Mac screenshot. |
I finally got it to work! In case anyone else has a similar issue: I noticed that the arch VM would stutter and have tearing at 144hz when the rx 560 was passed through. Also, when installing the gpu, my bios showed an odd result of my main gpu running at 1.0 x16. mobo is z690 ud ax ddr4. I figured it may have been an issue with my bios or mobo then. I first plugged the rx 560 into another proxmox host running a macOS (catalina) VM w/ a K5000. With no config changes, the macOS booted right up with the RX 560. This confirmed it was either a pcie lane or mobo issue. I updated my bios (still showed 1.0 x16 for main), flicked pcie bifurcation on (showed 3.0 x8) and off, and my main gpu started showing as 3.0 x16. Then, I plugged the rx 560 back in, and changed everything back to stock on the VM (removed all patches/kexts and config args added trying to fix the issue). It booted up flawlessly. Ventura did crash, so I'm sticking with Monterey for now. |
I have a Dell OEM model RX 640 4GB - GPU Device ID 0x6987 - its also Lexa core. Any ideas on getting it to work? |
Guide: AMD GPU
https://dortania.github.io/GPU-Buyers-Guide/modern-gpus/amd-gpu.html#polaris-10-and-20-series
The page lists the RX550 as unsupported due to being based on the Lexa core.
I know there is a lot of confusion around the RX550 so I hope this will help.
There are two versions of the RX550 one using Lexa (Polaris 12) and the other using Baffin (Polaris 11) core.
It seems that in 2018 (one year after the Lexa release) AMD and several of their partners started making RX550 cards using Baffin chips with several compute units (CU) disabled.
More details here;
https://hexus.net/tech/news/graphics/114857-some-sapphire-radeon-rx-550-models-now-include-640-sps/
https://linustechtips.com/topic/893799-sapphire-introduces-new-radeon-rx-550-with-25-more-cus-using-polaris-21-instead-of-polaris-12/
The way to work out the difference is down to speeds and SPs;
Old Lexa Core (incompatible)
Newer Baffin Core (compatible)
If the card has the device ID of 0x67ff then it will work OTB. https://devicehunt.com/view/type/pci/vendor/1002/device/67FF
Device ID 0x699f = RX 550 512SP
Device ID 0x67ff Rev FF = RX 550 640SP
Device ID 0x67ff Rev CF = RX 560
Here are some models which are Baffin
Yeston RX550-4G LP D5 http://www.yeston.net/product/details/234/272
Gigabyte RX 550 D5 2G (rev. 2.0) https://www.gigabyte.com/Graphics-Card/GV-RX550D5-2GD-rev-20#kf
Sapphire PULSE RX 550 4G G5 640SP https://www.sapphiretech.com/en/consumer/pulse-rx-550-4g-g5-1
Sapphire PULSE RX 550 2G G5 640SP https://www.sapphiretech.com/en/consumer/pulse-rx-550-2g-g5-1
ASUS AREZ-PH-RX550-2G https://www.asus.com/Motherboards-Components/Graphics-Cards/All-series/AREZ-PH-RX550-2G
ASUS PH-RX550-4G-M7 https://www.asus.com/Motherboards-Components/Graphics-Cards/All-series/PH-RX550-4G-M7
MSI - Looks like all are Lexa.
There may be others but this is what I am aware of.
I thought it was important to raise this issue as there are very few low power, low cost, modern GPUs available with support for HDMI 2.0, DP 1.4, 4K@60Hz, H264/H265 Hardware encode/decode, HDR, etc all in <50 watts.
Since your site is the definitive source for GPU compatibility, I didn't want this great option dismissed by mistake.
Here are the details from my own server with the Yeston installed.
The text was updated successfully, but these errors were encountered: