Jump to content

Clover Problems and Solutions


ErmaC
3,206 posts in this topic

Recommended Posts

The platform-feature changes in Clover are the cause of the memory tab disappearing. In your NoName dump, you were running r4173, which didn't inject a platform-feature value into SMBIOS table type 133. In your NoRAM dump, you were running r4182, which does inject a model-specific platform-feature value into SMBIOS table type 133 (this was enabled in r4175 by Sherlocks). MacBookPro13,3/14,3 use 0x1A (26) as the platform-feature value, which is responsible for the disappearance of the memory tab (which makes sense, as those models have soldered RAM).

 

I did some reversing of AppleSystemInfo.framework & SPMemoryReporter to confirm this. SPMemoryReporter (/System/Library/System Profiler/SPMemoryReporter.spreporter) is responsible for updating the memory section in System Information. In updateDictionary, it sets Upgradeable Memory (in System Information/Memory) to either Yes or No depending on a few factors.

//----- (0000000000001059) ----------------------------------------------------
// SPMemoryReporter - (id)updateDictionary:(id) 
id __cdecl -[SPMemoryReporter updateDictionary:](struct SPMemoryReporter *self, SEL a2, id a3)
{
  ...
  // Get the SMBIOS product name
  CFStringRef v4 = ASI_CopyComputerModelName(true);
  CFStringRef v5 = v4;
  // Check if begins with "MacBookAir" or "MacBookPro10"
  bool v6 = CFStringHasPrefix(v4, CFSTR("MacBookAir"));
  bool v7 = CFStringHasPrefix(v5, CFSTR("MacBookPro10,1"));
  CFRelease(v5);
  // True if platform feature 2 is disabled
  bool v221 = ASI_IsPlatformFeatureEnabled(2) == 0;
  // True if the SMBIOS product name doesn't begin with MacBookAir or MacBookPro10,1
  bool v196 = (v6 | v7) == 0;
 ...

  bool v197 = v221 && v196;
  ...

LABEL_149:
  v168 = v20(classRef_NSMutableDictionary, selRef_alloc);
  v169 = v20(v168, selRef_init);
  v20(v169, selRef_setObject_forKey_, v204, &cfstr__items);
  v20(v204, selRef_release);
  // Set "Upgradeable Memory" in System Information/Memory to "No"
  v170 = CFSTR("No");
  if ( v197 )
    // Set "Upgradeable Memory" in System Information/Memory to "Yes"
    v170 = CFSTR("Yes");
  v20(v169, selRef_setObject_forKey_, v170);
  ...
}

For reference, ASI_CopyComputerModelName(false) returns a CFStringRef of "MacBook Pro" (using localizations). ASI_CopyComputerModelName(true) returns a CFStringRef of the SMBIOS product name (in this case, "MacBookPro14,3").

 

As for ASI_IsPlatformFeatureEnabled, you can see a somewhat complete (excluding the platform override debug case) implementation here (partially reproduced below).

bool ASI_IsPlatformFeatureEnabled(int feature)
{
    int v2 = false;
    int v3 = 0;
    bool v4 = false;
    CFStringRef v5 = NULL;
    CFStringRef v6 = NULL;
    bool v7 = false;
    bool v8 = false;
    bool v9 = false;
    bool v10 = false;

    v3 = (unsigned int) feature & (unsigned int) GetIOPlatformFeature();
    v2 = (v3 == feature);
    v4 = (v3 != (unsigned int) feature);
    if (feature == 2 && v4)
    {
        v5 = ASI_CopyComputerModelName(true);
        v6 = v5;
        if (v5)
        {
            v7 = CFStringHasPrefix(v5, CFSTR("MacBookAir"));
            v8 = CFStringHasPrefix(v6, CFSTR("MacBookPro10"));
            CFRelease(v6);
            v9 = v7 != 0;
            v10 = v8 != 0;
        }
        else
        {
            v9 = false;
            v10 = false;
        }
        if (v9 || v10)
        {
            v2 = true;
        }
    }

    return v2;
}
 

For some feature values (such as feature 2), this is simple a bitwise AND (feature_num AND GetIOPlatformFeature()), with some exceptions (e.g. MacBookPro10,x/MacBookAirX,X). If ASI_IsPlatformFeatureEnabled(2) returns true, the system has soldered RAM (which isn't upgradeable by the user). Setting platform-feature to 0x18 (24, setting the second bit to 0) instead of 0x1A (26) should disable platform feature 2, restoring the memory tab in About This Mac. You could also not inject a platform feature value at all by setting config.plist/SMBIOS/PlatformFeature to 0xFFFF.

 

Edit: Some more info + RE'd implementations can be found in this repo: https://github.com/al3xtjames/AppleSystemInfo

  • Like 9
Link to comment
Share on other sites

The platform-feature changes in Clover are the cause of the memory tab disappearing. In your NoName dump, you were running r4173, which didn't inject a platform-feature value into SMBIOS table type 133. In your NoRAM dump, you were running r4182, which does inject a model-specific platform-feature value into SMBIOS table type 133 (this was enabled in r4175 by Sherlocks). MacBookPro13,3/14,3 use 0x1A (26) as the platform-feature value, which is responsible for the disappearance of the memory tab (which makes sense, as those models have soldered RAM).

 

I did some reversing of AppleSystemInfo.framework & SPMemoryReporter to confirm this. SPMemoryReporter (/System/Library/System Profiler/SPMemoryReporter.spreporter) is responsible for updating the memory section in System Information. In updateDictionary, it sets Upgradeable Memory (in System Information/Memory) to either Yes or No depending on a few factors.

//----- (0000000000001059) ----------------------------------------------------// SPMemoryReporter - (id)updateDictionary:(id) id __cdecl -[SPMemoryReporter updateDictionary:](struct SPMemoryReporter *self, SEL a2, id a3){  ...  // Get the SMBIOS product name  CFStringRef v4 = ASI_CopyComputerModelName(true);  CFStringRef v5 = v4;  // Check if begins with "MacBookAir" or "MacBookPro10"  bool v6 = CFStringHasPrefix(v4, CFSTR("MacBookAir"));  bool v7 = CFStringHasPrefix(v5, CFSTR("MacBookPro10,1"));  CFRelease(v5);  // True if platform feature 2 is disabled  bool v221 = ASI_IsPlatformFeatureEnabled(2) == 0;  // True if the SMBIOS product name doesn't begin with MacBookAir or MacBookPro10,1  bool v196 = (v6 | v7) == 0; ...  bool v197 = v221 && v196;  ...LABEL_149:  v168 = v20(classRef_NSMutableDictionary, selRef_alloc);  v169 = v20(v168, selRef_init);  v20(v169, selRef_setObject_forKey_, v204, &cfstr__items);  v20(v204, selRef_release);  // Set "Upgradeable Memory" in System Information/Memory to "No"  v170 = CFSTR("No");  if ( v197 )    // Set "Upgradeable Memory" in System Information/Memory to "Yes"    v170 = CFSTR("Yes");  v20(v169, selRef_setObject_forKey_, v170);  ...}
For reference, ASI_CopyComputerModelName(false) returns a CFStringRef of "MacBook Pro" (using localizations). ASI_CopyComputerModelName(true) returns a CFStringRef of the SMBIOS product name (in this case, "MacBookPro14,3").

 

As for ASI_IsPlatformFeatureEnabled, you can see a somewhat complete (excluding the platform override debug case) implementation here (partially reproduced below).

bool ASI_IsPlatformFeatureEnabled(int feature){    int v2 = false;    int v3 = 0;    bool v4 = false;    CFStringRef v5 = NULL;    CFStringRef v6 = NULL;    bool v7 = false;    bool v8 = false;    bool v9 = false;    bool v10 = false;    // skipped the platform override part    v3 = (unsigned int) feature & (unsigned int) GetIOPlatformFeature();    v2 = (v3 == feature);    v4 = (v3 != (unsigned int) feature);    if (feature == 2 && v4)    {        v5 = ASI_CopyComputerModelName(true);        v6 = v5;        if (v5)        {            v7 = CFStringHasPrefix(v5, CFSTR("MacBookAir"));            v8 = CFStringHasPrefix(v6, CFSTR("MacBookPro10"));            CFRelease(v6);            v9 = v7 != 0;            v10 = v8 != 0;        }        else        {            v9 = false;            v10 = false;        }        if (v9 || v10)        {            v2 = true;        }    }    return v2;}
In most cases, this is simple a bitwise AND (feature_num AND GetIOPlatformFeature()). If ASI_IsPlatformFeatureEnabled(2) returns true, the system has soldered RAM (which isn't upgradeable by the user). Setting platform-feature to 0x18 (24, setting the second bit to 0) instead of 0x1A (26) should disable platform feature 2, restoring the memory tab in About This Mac.

Hi TheRacerMaster.

Thank you for info. I just followed reference value from each models.

So need to change 0x1a to 0x18 for only macbook, macbookpro? Imac and other smbios model also consider other value?

 

I just wonder best way. Or return default 0xFFFF for all models? Thanks in advance

나의 LG-F800S 의 Tapatalk에서 보냄

 

EDIT1.

i checked 0x1a on macpro6,1, i lost ram tap. 

  • Like 1
Link to comment
Share on other sites

I would keep using the default values, at least for now. Your platform feature values in platformdata.c seem accurate (MacBook8,1+/MacBookPro10,1+/Macmini7,1+ all have soldered RAM).

 

okay. keep reference value.
i will add info from your info about ram tap.
 
sorry for my bad english.
 
thank you so much for clear platform feature define
  • Like 1
Link to comment
Share on other sites

okay. keep reference value.

i will add info from your info about ram tap.

 

sorry for my bad english.

 

thank you so much for clear platform feature define

I am also think keep value default.

 

your date in platformdata are correct so just keep the right value for the best performance.

 

Thanks for your work.

 

 

从我的 iPhone 发送,使用 Tapatalk

I would keep using the default values, at least for now. Your platform feature values in platformdata.c seem accurate (MacBook8,1+/MacBookPro10,1+/Macmini7,1+ all have soldered RAM).

Yes i ask some people who have MacBookPro 2016 or 2017 they also dont have RAM tab so i prefered keep the accurate data on platformdata.

 

And thanks for your patch to make the SK Hynix DDR4 Ram recognized correctly!

 

 

从我的 iPhone 发送,使用 Tapatalk

  • Like 1
Link to comment
Share on other sites

Since some revisions already, the USB icon is missing from Clover

Edit**

Only the HS usb icons is missing

**

After a few tests and checks, it seems that the USB volume APFS that is not visible

Link to comment
Share on other sites

board-id: Mac-DB15BD556843C820 – Model: iMac17,1 (Retina 5K, 27-inch, Late 2015) / Core i5 3.2GHz

board-id: Mac-B809C3757DA9BB8D – Model: iMac17,1 (Retina 5K, 27-inch, Late 2015) / Core i5 3.3GHz 

board-id: Mac-65CE76090165799A – Model: iMac17,1 (Retina 5K, 27-inch, Late 2015) / Core i7 4.0GHz 

 

 

thanks to pike for imac17,1 board list

 

i searched smc data according to board-id for our data accuracy when i'm updating platformdata

 

 

iMac17,1 (Mac-65CE76090165799A)

Model: iMac17,1, BootROM IM171.0105.B09, 4 processors, Intel Core i5, 3.2 GHz, 8 GB, SMC 2.33f10 Graphics: AMD Radeon R9 M380, AMD Radeon R9 M380, PCIe, 2048 MB

1.link

 

iMac17,1 (Mac-DB15BD556843C820)

Model: iMac17,1, BootROM IM171.0105.B08, 4 processors, Intel Core i5, 3.2 GHz, 16 GB, SMC 2.33f10 Graphics: AMD Radeon R9 M390, AMD Radeon R9 M390, PCIe, 2048 MB

1.link 2.link

 

iMac17,1 (Mac-B809C3757DA9BB8D)

Model: iMac17,1, BootROM IM171.0105.B26, 4 processors, Intel Core i7, 4 GHz, 24 GB, SMC 2.34f2 Graphics: AMD Radeon R9 M395, AMD Radeon R9 M395, PCIe, 2048 MB

1.link

 

 

now, clover default

Mac-B809C3757DA9BB8D

smc 2.33f10

 

@Slice

what is your default imac17,1 board-id? we need to match board-id and smc for clear data.

 

also i have a idea for two smc values

 

thanks in advance

Link to comment
Share on other sites

board-id: Mac-DB15BD556843C820 – Model: iMac17,1 (Retina 5K, 27-inch, Late 2015) / Core i5 3.2GHz

board-id: Mac-B809C3757DA9BB8D – Model: iMac17,1 (Retina 5K, 27-inch, Late 2015) / Core i5 3.3GHz 

board-id: Mac-65CE76090165799A – Model: iMac17,1 (Retina 5K, 27-inch, Late 2015) / Core i7 4.0GHz 

 

 

thanks to pike for imac17,1 board list

 

i searched smc data according to board-id for our data accuracy when i'm updating platformdata

 

 

iMac17,1 (Mac-65CE76090165799A)

Model: iMac17,1, BootROM IM171.0105.B09, 4 processors, Intel Core i5, 3.2 GHz, 8 GB, SMC 2.33f10 Graphics: AMD Radeon R9 M380, AMD Radeon R9 M380, PCIe, 2048 MB

1.link

 

iMac17,1 (Mac-DB15BD556843C820)

Model: iMac17,1, BootROM IM171.0105.B08, 4 processors, Intel Core i5, 3.2 GHz, 16 GB, SMC 2.33f10 Graphics: AMD Radeon R9 M390, AMD Radeon R9 M390, PCIe, 2048 MB

1.link 2.link

 

iMac17,1 (Mac-B809C3757DA9BB8D)

Model: iMac17,1, BootROM IM171.0105.B26, 4 processors, Intel Core i7, 4 GHz, 24 GB, SMC 2.34f2 Graphics: AMD Radeon R9 M395, AMD Radeon R9 M395, PCIe, 2048 MB

1.link

 

 

now, clover default

Mac-B809C3757DA9BB8D

smc 2.33f10

 

@Slice

what is your default imac17,1 board-id? we need to match board-id and smc for clear data.

 

also i have a idea for two smc values

 

thanks in advance

Currently I am using

iMac17,1 (Mac-B809C3757DA9BB8D)

Model: iMac17,1, BootROM IM171.0105.B26, 4 processors, Intel Core i7, 4 GHz, 24 GB, SMC 2.34f2 Graphics: AMD Radeon R9 M395, AMD Radeon R9 M395, PCIe, 2048 MB

1.

Although I have i5 skylake.

 

I think it is bad idea to change Clover everyday with new Mac updating. It should be better to allow users to customise those values including SMC.

  • Like 2
Link to comment
Share on other sites

Currently I am using

iMac17,1 (Mac-B809C3757DA9BB8D)

Model: iMac17,1, BootROM IM171.0105.B26, 4 processors, Intel Core i7, 4 GHz, 24 GB, SMC 2.34f2 Graphics: AMD Radeon R9 M395, AMD Radeon R9 M395, PCIe, 2048 MB

1.

Although I have i5 skylake.

 

I think it is bad idea to change Clover everyday with new Mac updating. It should be better to allow users to customise those values including SMC.

thanks. Does it mean smc option at config for smc part to avoid every update like BiosVersion?

 

Edit1. Why did you change smc 2.33f10 before on r4090?

 

Thanks in advance

 

나의 LG-F800S 의 Tapatalk에서 보냄

Link to comment
Share on other sites

thanks. Does it mean smc option at config for smc part to avoid every update like BiosVersion?

 

Edit1. Why did you change smc 2.33f10 before on r4090?

 

Thanks in advance

 

나의 LG-F800S 의 Tapatalk에서 보냄

I use Clover 4128 and SMC 2.33f10

  • Like 1
Link to comment
Share on other sites

I use Clover 4128 and SMC 2.33f10

I saw you changed imac17 2.34f2 to 2.33f10 on r4090 commit

 

Clover's default imac17.1 Board-ID is Mac-B809C3757DA9BB8D

Seems wrong smc value. Ofc its not big problem. Just checked yesterday and report it to you. Because you are using imac171 smbios.

 

iMac17,1 (Mac-B809C3757DA9BB8D)

Model: iMac17,1, BootROM IM171.0105.B26, 4 processors, Intel Core i7, 4 GHz, 24 GB, SMC 2.34f2

 

 

나의 LG-F800S 의 Tapatalk에서 보냄

Link to comment
Share on other sites

board-id: Mac-DB15BD556843C820 – Model: iMac17,1 (Retina 5K, 27-inch, Late 2015) / Core i5 3.2GHz

board-id: Mac-B809C3757DA9BB8D – Model: iMac17,1 (Retina 5K, 27-inch, Late 2015) / Core i5 3.3GHz 

board-id: Mac-65CE76090165799A – Model: iMac17,1 (Retina 5K, 27-inch, Late 2015) / Core i7 4.0GHz 

 

 

thanks to pike for imac17,1 board list

 

The Pike list is wrong. Real iMac17,1 w/ i7-6700K 4.0GHz uses board-id Mac-B809C3757DA9BB8D.

  • Like 1
Link to comment
Share on other sites

The Pike list is wrong. Real iMac17,1 w/ i7-6700K 4.0GHz uses board-id Mac-B809C3757DA9BB8D.

Okay one more check corrected info later. Thank you for info

 

EDIT1.

You are right. I added link for info. Shown corrected info about cpu. Pike's imac171 is wrong

 

EDIT2.

i just wonder that now clover is not match Boardid and smc value for imac17.1

What is choose one as default between i5 or i7 boardid and match smc value. Hmm. I dont use imac17.1

Slice uses imac17.1 smbios. So i wonder slice think. Then match smc value.

 

EDIT3.

or support smc key at config for user.

 

Thanks in advance

 

나의 LG-F800S 의 Tapatalk에서 보냄

  • Like 2
Link to comment
Share on other sites

Okay one more check corrected info later. Thank you for info

 

EDIT1.

You are right. I added link for info. Shown corrected info about cpu. Pike's imac171 is wrong

 

EDIT2.

i just wonder that now clover is not match Boardid and smc value for imac17.1

What is choose one as default between i5 or i7 boardid and match smc value. Hmm. I dont use imac17.1

Slice uses imac17.1 smbios. So i wonder slice think. Then match smc value.

 

Thanks in advance

 

나의 LG-F800S 의 Tapatalk에서 보냄

This is what my smbios looks like for iMac 17,1

<dict>
<key>BiosReleaseDate</key>
<string>08/08/2017</string>
<key>BiosVendor</key>
<string>Apple Inc.</string>
<key>BiosVersion</key>
<string>IM171.88Z.0110.B00.1708080012</string>
<key>Board-ID</key>
<string>Mac-B809C3757DA9BB8D</string>
<key>BoardManufacturer</key>
<string>Apple Inc.</string>
<key>BoardSerialNumber</key>
<string></string>
<key>BoardType</key>
<integer>10</integer>
<key>BoardVersion</key>
<string>iMac17,1</string>
<key>ChassisAssetTag</key>
<string>iMac-Aluminum</string>
<key>ChassisManufacturer</key>
<string>Apple Inc.</string>
<key>ChassisType</key>
<string>0x09</string>
<key>Family</key>
<string>iMac</string>
<key>LocationInChassis</key>
<string>Part Component</string>
<key>Manufacturer</key>
<string>Apple Inc.</string>
<key>ProductName</key>
<string>iMac17,1</string>
<key>SerialNumber</key>
<string></string>
<key>SmUUID</key>
<string></string>
<key>Trust</key>
<true/>
<key>Version</key>
<string>1.0</string>
</dict>
</plist>
Link to comment
Share on other sites

Okay one more check corrected info later. Thank you for info

 

EDIT1.

You are right. I added link for info. Shown corrected info about cpu. Pike's imac171 is wrong

 

EDIT2.

i just wonder that now clover is not match Boardid and smc value for imac17.1

What is choose one as default between i5 or i7 boardid and match smc value. Hmm. I dont use imac17.1

Slice uses imac17.1 smbios. So i wonder slice think. Then match smc value.

 

EDIT3.

or support smc key at config for user.

 

Thanks in advance

 

나의 LG-F800S 의 Tapatalk에서 보냄

 

I know Mac-B809C3757DA9BB8D should use SMC 2.34f2—if set below this version, system updates will attempt to install an update to 2.34f2 in /EFI/APPLE/UPDATERS/SMC. As for the other iMac17,1 board-id models, I'm not sure.

  • Like 1
Link to comment
Share on other sites

I know Mac-B809C3757DA9BB8D should use SMC 2.34f2—if set below this version, system updates will attempt to install an update to 2.34f2 in /EFI/APPLE/UPDATERS/SMC. As for the other iMac17,1 board-id models, I'm not sure.

Yes. You mentioned major point at each BoardID and SMC correctly match. But its not now for imac171 in clover.

So i wonder that r4090 commited for iMac171 SMC by Slice. He used i5 BoardID's SMC 2.33f10 with i7 BoardID Mac-B809C3757DA9BB8D.

I wonder it. If this is wrong, i want to correct this as original values. So before return values, i did question to Slice

 

Sorry for my bad english

 

나의 LG-F800S 의 Tapatalk에서 보냄

This is what my smbios looks like for iMac 17,1

<dict>
<key>BiosReleaseDate</key>
<string>08/08/2017</string>
<key>BiosVendor</key>
<string>Apple Inc.</string>
<key>BiosVersion</key>
<string>IM171.88Z.0110.B00.1708080012</string>
<key>Board-ID</key>
<string>Mac-B809C3757DA9BB8D</string>
<key>BoardManufacturer</key>
<string>Apple Inc.</string>
<key>BoardSerialNumber</key>
<string></string>
<key>BoardType</key>
<integer>10</integer>
<key>BoardVersion</key>
<string>iMac17,1</string>
<key>ChassisAssetTag</key>
<string>iMac-Aluminum</string>
<key>ChassisManufacturer</key>
<string>Apple Inc.</string>
<key>ChassisType</key>
<string>0x09</string>
<key>Family</key>
<string>iMac</string>
<key>LocationInChassis</key>
<string>Part Component</string>
<key>Manufacturer</key>
<string>Apple Inc.</string>
<key>ProductName</key>
<string>iMac17,1</string>
<key>SerialNumber</key>
<string></string>
<key>SmUUID</key>
<string></string>
<key>Trust</key>
<true/>
<key>Version</key>
<string>1.0</string>
</dict>
</plist>
No problem. Just recommend family iMac17,1

Its original values as realmac.

 

 

나의 LG-F800S 의 Tapatalk에서 보냄

  • Like 2
Link to comment
Share on other sites

The Pike list is wrong. Real iMac17,1 w/ i7-6700K 4.0GHz uses board-id Mac-B809C3757DA9BB8D.

iMacs still use socketed CPUs AFAIK, so the motherboard does not change based on the CPU selected. It's the GPU that determines that (it's soldered to the board since ~2012 iMacs). I would just keep one of the board IDs, I doubt there's a big difference between them.

  • Like 2
Link to comment
Share on other sites

I don't remember why 2.33 is better.

I think SMC rev must be in config.

And again. I think no sense to inflate Clover to elefant size to known hundreds configuration. Ten configs and customization will be quite enough.

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

Feature request. May be I will do this by myself but I have limited time.

The problem is very old and confusing codes for DeviceProperties protocol.

The better one is known from apple's sources presented by Download-Fritz on GitHub but they needed to be adapted for Clover.

 

Currently Inject, AddProperties, NoDefaultProperties, Arbitrary are conflicted with each other. The problem I encountered:

If I set Arbitrary for one device then I can't use AddProperties for other device. But making all devices Arbitary is not possible because of dynamic calculated values. I will resolve it asap as a workaround with other possible problems. Will be much better to implement real DeviceProperties protocol.

  • Like 2
Link to comment
Share on other sites

Feature request. May be I will do this by myself but I have limited time.

The problem is very old and confusing codes for DeviceProperties protocol.

The better one is known from apple's sources presented by Download-Fritz on GitHub but they needed to be adapted for Clover.

 

Currently Inject, AddProperties, NoDefaultProperties, Arbitrary are conflicted with each other. The problem I encountered:

If I set Arbitrary for one device then I can't use AddProperties for other device. But making all devices Arbitary is not possible because of dynamic calculated values. I will resolve it asap as a workaround with other possible problems. Will be much better to implement real DeviceProperties protocol.

I started working on this but I haven't had time to finish it.

 

Additional features:

- Match on any property using regular expressions (slot, name, path, class, id, bus, device, function, etc...). Maybe start with a simple string search first, then add regular expression method later.

- Match on any handle with a device path protocol - not just PCI devices. For example, ACPI devices such as UART.

- Allow more compact property specification <key>thekey</key><data>thedata</data> instead of silly <key>key</key><string>thekey</string><key>data</key><data>thedata</data>

- Allow all methods of setting properties to work with each other: Inject, AddProperties, NoDefaultProperties, Arbitrary, Properties.

- Reuse code for each method. Combine similar code into a single function. Create a device loop function that can be given different call-back functions.

- Code changes should not require changes to config.plist, unless config.plist expects silly side effects like where one method doesn't do anything when another method is specified. Because why would you enter info that you don't expect to be acted upon?

- Allow specify device path for devices that may not actually exist.

- Parse binary properties (<key>Properties</key>) if any other method of defining properties is used, so that conflicts can be reported. It shouldn't be necessary to parse binary properties otherwise but it may be useful for debugging.

- When adding a property, include a "Source" field which indicates what part of Clover is adding the property.

- Report an error if an attempt to add the same property to a device occurs, so user can know when Inject conflicts with AddProperties for example (using the Source field to report the origin of the original setting).

- The code will build a database of device path, property name/data information. The database is compiled into binary properties before booting into macOS.

- Before booting macOS, dump the list of device paths, properties and their Source to the log.

  • Like 5
Link to comment
Share on other sites

My fault. Commit 4196

+  AddMenuItem(SubScreen, 18, "Intel Max Backlight:", TAG_INPUT, TRUE); //gSettings.IntelMaxValue

should be

+  AddMenuItem(SubScreen, 112, "Intel Max Backlight:", TAG_INPUT, TRUE); //gSettings.IntelMaxValue
  • Like 2
Link to comment
Share on other sites

today, i checked FixHeaders_20000000 features.

still no luck.

i have two null oem table id files

here

 

tested cases

case1

only checked FixHeaders_20000000 without drop.

-no luck, get mach_reboot panic

 

case2

drop two acpi table

- can skip mach_reboot panic

 

thanks in advance

 

i bought i3 6100 to surely clear problem between skylake pentium and ix series.

this issue relate pentium problem about Symbol issue on HS.

as result, FixHeaders_20000000 is no problem.

  • Like 2
Link to comment
Share on other sites

One weird behavior with Clover is that Clover try to create misc folder(EFI\CLOVER\misc) per boot, there's generally two drawback of this behavior:

  • Perform I/O especially write per boot(slow, especially on HDD)
  • Undesirable if user remove misc intentionally but Clover persists creating it every time

More reasonable behavior should be egSave do a simple check to see if the directory exist or not(we may check each directories existence iteratively/recursively, but seems a bit slow?)

 

egSave has been improved in r4205, and misc will not be created each boot.

 

syscl

  • Like 2
Link to comment
Share on other sites

×
×
  • Create New...