Experimental AMD FirePro M6100 2GB (AMD R9 M380)
View attachment 1876272
This thread will chronicle my efforts to get the
AMD FirePro M6100 MXM 3.0 card working on a 2009/2010 iMac. I've been working on it for several months. I will concentrate on the older iMacs as the 2011 iMacs have an issue with the "wake" cycle not recognizing the GPU and make this card nearly unusable.
This card is used internally in a iMac (Retina 5K, 27-inch, Late 2015), model Identifier: iMac17,1
SSH Access:
Code:
Adapter 0 SEG=0000, BN=01, DN=00, PCIID=66401002, SSID=00000000)
Asic Family : Bonaire
Flash Type : M25P10/c (128 KB)
Product Name : Dell / Compal Brooks Saturn XT C60001 A1 GDDR5 2GB 300e/150m <-- card recognized!
Bios Config File : BR44933.001
Bios P/N : P/N Not Available
Bios Version : 015.040.000.001.044933
Bios Date : 10/02/13,10:35:3
ROM Image Type : Hybrid Images
ROM Image Details :
Image[0]: Size(65024 Bytes), Type(Legacy Image) <-- legacy vbios recognized!
Image[1]: Size(61440 Bytes), Type(EFI Image) <-- PCI option ROM/UEFI recognized!
MacOS integration:
This card uses the AMD8000Controller.kext and the AMDBonaireGraphicsAcccelerator - RadeonX4000.kext which also natively runs in MacOS. The AMDMTLBronzeDriver is used to initialize its Metal capability. The default framebuffer is in use: RadeonFrameBuffer.
You will like need to apply the same Device Properties as previously stated in other
posts <@Ausdauersportler> here recently.
Mods:
- I modified the OBJ table to work with our current iMac models: eDP:
14, EncoderID:
21, I2CID:
92, SenseID:
03.
- I used the IM17,1 Header to trick AppleGraphicsPolicy into accepting it as native
- I used an IM17,1 VGA bootloader firmware instead of the stock Dell one and adjusted the pointer to the parser-fall-call in the TVdispout table to point to the correct area in the patched bootloader.
- I used a PC UEFI GOP to communicate with OC and/or OCLP, so you will not get a native MacOS boot picker screen, but instead the OC one.
-
GPIO_Pin_LUT has 6 pin assignments for Dell ROM, there are 8 defined in the Apple ROM. This was patched.
- In EFI 1.x systems, the INT 10H and the VESA BIOS Extensions (VBE) are replaced by the EFI UGA protocol. In the more widely used UEFI 2.x systems, the INT10H and the VBE are replaced by the UEFI GOP which is what we are using here to communicate with OpenCore or OCLP using device properties.
The card is recognized as an 'HD8xxx', but that doesn't matter. With the proper OperCore config file, it should be recognized appropriately. I have only tested with High Sierra and Catalina:
View attachment 1876252
View attachment 1876257
Thermal IC chip:
The
SMC "0" SMBus Connections on the iMac uses a write address of: 0x98 for the 8-bit SMC slave address. This is equivalent to a 0x4C 7-bit slave address:
Code:
0x98 = 1001 1000
0x4C = 0100 1100 (you can see that the 7-bit address is just bit-shifted to the right by 1)
So a GPU card with a
ADM1032 thermal IC with a part marking "
T1J" seems to work because it communicates on the 0x4C SMC address and will not cause an address collision with other thermal ICs on the logic board. In contrast, an ADM1032 chip with a part marking "T1C" is internally connected to 0x4D and therefore will not communicate with the imac SMC. An EMC1402-1 chip has a slave address of 1001_100 (corresponding to 7-bit 0x4C) and theoretically should also work, but there could be other interactions that are interfering with this. More investigation is necessary.
10/25/2021 addendum:
@dfranetic has pointed out correctly that the SMC information is not being read correctly by this chip, ADM1032. It appears that Mac Fan Control queries the thermal IC directly and not the SMC lane. So back to the drawing board! Sometimes sounds theories don't turn out as we expect in reality
Here is Macs Fan Control:
View attachment 1876141
Let's take a closer look at this IC:
View attachment 1876140
You can see here, that it uses 2 Jumper resistors (lime green) to connect the SCL and SDA lines to the GPU. The pull up resistors are right next to them, both are 100KOhm I believe. I will as an experiment remove these 0 Ohm resistors and see what happens to the GPU temp read out, stay tuned. More research here is necessary.
Benchmark:
View attachment 1876142
Other members have been working on variants of this card, but be warned, these are experimental in nature and still have a lot of troubleshooting to get them working appropriately. They are painful to recover from a bad flash. It's been a long frustrating road with these class of cards, but nevertheless, it has always been
insanely great!
Enjoy.
**** change notes:
M6100_Elpida.rom - This is for M6100 cards with Elpida VRAM.
11-20-2022 - GPIO_Pin_LUT as pointed out by @dfranetic is incorrectly set to Apple, switching back to original. New rom, (M6100_iMacGOP_r2.rom) & (M6100_Elipda_r2.rom), reflecting changes.