Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.
The point here is that it is important which OS you had installed previously before going to Mojave.
I think I've clean install of Mojave
I have a clone of my Mojave installation drive, I can install High Sierra on my principal drive to update firmware maybe?
 
  • Like
Reactions: TimothyR734
Before you did a clean install there was some OS installed previously. Did you just found your MacBook in a rubbish bin without a hard drive that you don't know anything about it's history?
I have installed all the versions of OSX and MacOS (Mojave, High Sierra, Sierra, El Capitan, Yosemite and Mavericks)
 
  • Like
Reactions: TimothyR734
I wish to thank all the great people here who have made this possible. Mac Pro 3,1 running 19A487l with original (non-APFS) firmware, non-EFI metal graphics card.
 

Attachments

  • cata.png
    cata.png
    662.5 KB · Views: 516
I would like to share some insights about the current light mode patch and hopefully some talented people here could help us to get us some new input.
A brief recap about the current process:

- SystemAppereance.car contains everything for the basic "look" of macOS, like colors, UI-Elements and materials
- these materials are embedded in SystemAppereance.car as single caar files (be careful with car and caar, this are binary plist-files, starting with "bplist00..." if inspected by a Hex-Editor and could be extracted e.g. with an app called ThemeEngine)
- these caar files contain the layers of the individual materials. months ago @pkouame and I spend some time to search common parameters of broken materials in this caar files. We even built them by hand in Xcode, and as far as I remember they worked correctly there. You could also inspect a caar file with the app Kite, and also there they work properly with transparency. So we didn't find something really interesting.
And we shouldn't find anything, as I think the caar files are totally right. The common parameter is inside the header (as I call it) you could see here
Bildschirmfoto 2019-06-23 um 12.09.40.png

It is some information ahead of the caar file itself. Even ThemeEngine doesn't show this information as far as I remember. And if you export the caar file, of course this additional header is not included. It is also clear, that if you swap the whole .car(!) file with the one from DarkMode it works almost properly (excluding text rendering), as inside the DarkMode .car file this header refers to UltrathickDark for example, instead of UltrathickLight. Also taking a .car file from older macOS versions shouldn't work at all or at least could not fix the broken areas because as we have seen earlier the old "headers" refer to the old descriptions for example Ultralight (no ..Light or ..Dark at the end).
- these descriptions/"base materials" are definitely the common ground of broken areas and are processed by SkyLight. They are individual for light and dark mode and only some of the Light ones are broken. If replaced by a working one, it fixes all materials from SystemAppereance.car with this specific descriptions in the header. Another reason that shows, that CoreUI patches worked indeed, but weren't in the right place.
This is the current light mode patch implementation in SkyLight:
Original
Code:
void ___get_available_materials_dictionary_block_invoke(void * _block) {
    rax = CFDictionaryCreateMutable(0x0, 0x0, *_kCFTypeDictionaryKeyCallBacks, *_kCFTypeDictionaryValueCallBacks);
    *_get_available_materials_dictionary.materials = rax;
    _SLCFDictionarySetInteger(rax, @"UltrathinLight", 0x1);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThinLight", 0x2);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MediumLight", 0x3);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThickLight", 0x4);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathickLight", 0x5);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathinDark", 0x6);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThinDark", 0x7);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MediumDark", 0x8);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThickDark", 0x9);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathickDark", 0xa);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ToolbarLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ToolbarDark", 0xc);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedLight", 0xd);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedDark", 0xe);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedGraphiteLight", 0x11);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedGraphiteDark", 0x12);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UnfocusedLight", 0x13);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UnfocusedDark", 0x14);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"SelectionSystemLight", 0xf);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"SelectionSystemDark", 0x10);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarLight", 0x15);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarInactiveLight", 0x16);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarDark", 0x17);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarInactiveDark", 0x18);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"Clear", 0x19);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"Mimic", 0x1a);
    return;
}
patched
Code:
void ___get_available_materials_dictionary_block_invoke(void * _block) {
    rax = CFDictionaryCreateMutable(0x0, 0x0, *_kCFTypeDictionaryKeyCallBacks, *_kCFTypeDictionaryValueCallBacks);
    *_get_available_materials_dictionary.materials = rax;
    _SLCFDictionarySetInteger(rax, @"UltrathinLight", 0x1);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThinLight", 0x2);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MediumLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThickLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathickLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathinDark", 0x6);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThinDark", 0x7);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MediumDark", 0x8);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThickDark", 0x9);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathickDark", 0xa);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ToolbarLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ToolbarDark", 0xc);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedLight", 0xd);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedDark", 0xe);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedGraphiteLight", 0x11);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedGraphiteDark", 0x12);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UnfocusedLight", 0xf);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UnfocusedDark", 0x14);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"SelectionSystemLight", 0xf);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"SelectionSystemDark", 0x10);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarLight", 0x15);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarInactiveLight", 0x16);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarDark", 0x17);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarInactiveDark", 0x18);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"Clear", 0x19);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"Mimic", 0x1a);
    return;
}
- unfortunately MenuBar is rendered different, maybe in SkyLight but many things point to HIToolbox

It would be great, if someone could figure out, how these materials (UltrathickLight, ThickLight, ...) are processed by SkyLight and where there is the difference with the dark mode ones.
I think with the discovery of these materials inside SkyLight we are way more closer to the "core problem". We could also discuss this topic on Discord if you guy would like to do so, or want to share some results.
(Use Hopper Disassembler to get the pseudocode representation, even possible with the free version)

EDIT: Be careful with SkyLight modification, if it's broken every app would crash. So just keep a copy of the original file and you're fine. Don't reboot after every patch, just don't close Terminal app to undo changes ;)
 
Last edited:
Maybe a problem with this command? sudo nvram boot-args="-no_compat_check"
Can I apply this command after installation?

I believe this command is only to bypass a prohibited sign. If I was you I would just wait for an official release with a comprehensive patcher bundled with a youtube instructional video and a comprehensive instructions. In fact I will do so myself even though I managed to successfully install Catalina on a MacBook5,1 using different approaches. I just did it to challenge myself and learn a few things along the way.
I believe in order to really get something out of Catalina you need a Metal GPU(upgraded MacPro's, iMac's). Realistically I doubt that Catalina will ever perform better than Mojave on my late 2008 unibody MacBook. I really hope to be proven wrong.
 
  • Like
Reactions: TimothyR734
I would like to share some insights about the current light mode patch and hopefully some talented people here could help us to get us some new input.
A brief recap about the current process:

- SystemAppereance.car contains everything for the basic "look" of macOS, like colors, UI-Elements and materials
- these materials are embedded in SystemAppereance.car as single caar files (be careful with car and caar, this are binary plist-files, starting with "bplist00..." if inspected by a Hex-Editor and could be extracted e.g. with an app called ThemeEngine)
- these caar files contain the layers of the individual materials. months ago @pkouame and I spend some time to search common parameters of broken materials in this caar files. We even built them by hand in Xcode, and as far as I remember they worked correctly there. You could also inspect a caar file with the app Kite, and also there they work properly with transparency. So we didn't find something really interesting.
And we shouldn't find anything, as I think the caar files are totally right. The common parameter is inside the header (as I call it) you could see here
View attachment 844719
It is some information ahead of the caar file itself. Even ThemeEngine doesn't show this information as far as I remember. And if you export the caar file, of course this additional header is not included. It is also clear, that if you swap the whole .car(!) file with the one from DarkMode it works almost properly (excluding text rendering), as inside the DarkMode .car file this header refers to UltrathickDark for example, instead of UltrathickLight. Also taking a .car file from older macOS versions shouldn't work at all or at least could not fix the broken areas because as we have seen earlier the old "headers" refer to the old descriptions for example Ultralight (no ..Light or ..Dark at the end).
- these descriptions/"base materials" are definitely the common ground of broken areas and are processed by SkyLight. They are individual for light and dark mode and only some of the Light ones are broken. If replaced by a working one, it fixes all materials from SystemAppereance.car with this specific descriptions in the header. Another reason that shows, that CoreUI patches worked indeed, but weren't in the right place.
This is the current light mode patch implementation in SkyLight:
Original
Code:
void ___get_available_materials_dictionary_block_invoke(void * _block) {
    rax = CFDictionaryCreateMutable(0x0, 0x0, *_kCFTypeDictionaryKeyCallBacks, *_kCFTypeDictionaryValueCallBacks);
    *_get_available_materials_dictionary.materials = rax;
    _SLCFDictionarySetInteger(rax, @"UltrathinLight", 0x1);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThinLight", 0x2);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MediumLight", 0x3);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThickLight", 0x4);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathickLight", 0x5);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathinDark", 0x6);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThinDark", 0x7);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MediumDark", 0x8);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThickDark", 0x9);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathickDark", 0xa);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ToolbarLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ToolbarDark", 0xc);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedLight", 0xd);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedDark", 0xe);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedGraphiteLight", 0x11);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedGraphiteDark", 0x12);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UnfocusedLight", 0x13);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UnfocusedDark", 0x14);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"SelectionSystemLight", 0xf);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"SelectionSystemDark", 0x10);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarLight", 0x15);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarInactiveLight", 0x16);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarDark", 0x17);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarInactiveDark", 0x18);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"Clear", 0x19);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"Mimic", 0x1a);
    return;
}
patched
Code:
void ___get_available_materials_dictionary_block_invoke(void * _block) {
    rax = CFDictionaryCreateMutable(0x0, 0x0, *_kCFTypeDictionaryKeyCallBacks, *_kCFTypeDictionaryValueCallBacks);
    *_get_available_materials_dictionary.materials = rax;
    _SLCFDictionarySetInteger(rax, @"UltrathinLight", 0x1);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThinLight", 0x2);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MediumLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThickLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathickLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathinDark", 0x6);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThinDark", 0x7);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MediumDark", 0x8);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThickDark", 0x9);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathickDark", 0xa);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ToolbarLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ToolbarDark", 0xc);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedLight", 0xd);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedDark", 0xe);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedGraphiteLight", 0x11);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedGraphiteDark", 0x12);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UnfocusedLight", 0xf);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UnfocusedDark", 0x14);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"SelectionSystemLight", 0xf);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"SelectionSystemDark", 0x10);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarLight", 0x15);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarInactiveLight", 0x16);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarDark", 0x17);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarInactiveDark", 0x18);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"Clear", 0x19);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"Mimic", 0x1a);
    return;
}
- unfortunately MenuBar is rendered different, maybe in SkyLight but many things point to HIToolbox

It would be great, if someone could figure out, how these materials (UltrathickLight, ThickLight, ...) are processed by SkyLight and where there is the difference with the dark mode ones.
I think with the discovery of these materials inside SkyLight we are way more closer to the "core problem". We could also discuss this topic on Discord if you guy would like to do so, or want to share some results.
(Use Hopper Disassembler to get the pseudocode representation, even possible with the free version)

EDIT: Be careful with SkyLight modification, if it's broken every app would crash. So just keep a copy of the original file and you're fine. Don't reboot after every patch, just don't close Terminal app to undo changes ;)

What if do you check with a decompiler this Catalina unix exec:

/System/Library/CoreServices/SystemAppearance.bundle/Contents/MacOS/SystemAppearance

or maybe

/System/Library/CoreServices/Finder.app/Contents/MacOS/Finder

/System/Library/CoreServices/Finder.app/Contents/Resources/Assets.car

do you think they are completely unrelated ?
 
  • Like
Reactions: Appleak
I guess I've patched the Catalina AirDrop to use AirDrop without a BT 4.0 usb dongle.

I've re-enabled the AirDrop legacy feature "Don't see who you're looking for?" and "Search for an Older Mac" that from Catalina was dropped.

"Older Macs" in AirDrop are considered by apple all the machines without a BT 4.0 internal device, so those with a BT 2.1 internal device.


Here are the steps from Catalina Terminal:

sudo mount -uw / ; killall Finder

open /System/Library/CoreServices/Finder.app/Contents/Resources/Base.lproj/

Ovewrite the file AirDropInfoView.nib attached with the one inside that path.

After replace no need to reboot just from Catalina Terminal: killall Finder

The only file attached is suffice in my case (probably because of my previous manual patch on the
Brcm4360 driver used) to allow using the BT 2.1 , but consider that some very legacy machines may need to replace from Mojave the entire folder attached, the Mojave AirDrop.app should be re-placed inside the /Catalina/System/Library/CoreServices/Finder.app/Contents/Applications/


On the picture attached both the machines use their default Bluetooth 2.1+EDR internal device, the other one is MacBook7,1 with HighSierra installed, and the HS one can detect this Catalina MacBookPro6,2 .

Next picture I unplug this Catalina USB SSD external and plug to the MacBook7,1 and from MacBookPro6,2 I run a Mojave, lets check it out.

In both cases it's bidirectional working.

I've tried also from a MacBook7,1 Mavericks AirDrop to discover and be discovered from Catalina and it's totally working.

My AirDrop "Search for an Older Mac" method works also on Catalina supported Macs, that are not allowed to discover and be discovered from legacy machines, since apple dropped the "Search for an Older Mac" function from Catalina.

Instead replacing on a supported Catalina this AirDropInfoView.nib brings back that function, AirDrop will work and allow to discover/discovered also very legacy Macs (I guess until 10.7 OSX Lion when AirDrop was introduced by apple).
 

Attachments

  • Legacy AirDropInfoView.nib.zip
    11.5 KB · Views: 1,236
  • Screenshot 2019-06-24 at 11.26.44.png
    Screenshot 2019-06-24 at 11.26.44.png
    1.6 MB · Views: 1,725
  • AirDrop Mojave.zip
    173.6 KB · Views: 971
  • Screenshot 2019-06-24 at 11.58.33.png
    Screenshot 2019-06-24 at 11.58.33.png
    1.2 MB · Views: 1,138
  • Screenshot 2019-06-24 at 12.11.23.png
    Screenshot 2019-06-24 at 12.11.23.png
    1.6 MB · Views: 1,067
Last edited:
Any hope for my iMac8,1 with ATI 2600 Pro ?
Did you receive any replies to your question?

I managed to install Catalina on the following iMac early 2008:
iMac8,1 2.66 GHz Core 2 Duo (E8335) with 20” display and ATI Radeon HD 2600 Pro graphics card.

Used Dosdude1's APFS ROM patcher, as described on page 64 and his PartialPatcher from page 70.

Not everything works yet, but it would be worth a try to see if your model is supported. According to the graphics card, it would appear to be a 24".
 
I guess I've patched the Catalina AirDrop to use AirDrop without a BT 4.0 usb dongle.

I've re-enabled the AirDrop legacy feature "Don't see who you're looking for?" and "Search for an Older Mac" that from Catalina was dropped.

"Older Macs" in AirDrop are considered by apple all the machines without a BT 4.0 internal device, so those with a BT 2.1 internal device.


Here are the steps from Catalina Terminal:

sudo mount -uw / ; killall Finder

open /System/Library/CoreServices/Finder.app/Contents/Resources/Base.lproj/

Ovewrite the file AirDropInfoView.nib attached with the one inside that path.

After replace no need to reboot just from Catalina Terminal: killall Finder

The only file attached is suffice in my case (probably because of my previous manual patch on the
Brcm4360 driver used) to allow using the BT 2.1 , but consider that some very legacy machines may need to replace from Mojave the entire folder attached, the Mojave AirDrop.app should be re-placed inside the /Catalina/System/Library/CoreServices/Finder.app/Contents/Applications/


On the picture attached both the machines use their default Bluetooth 2.1+EDR internal device, the other one is MacBook7,1 with HighSierra installed, and the HS one can detect this Catalina MacBookPro6,2 .

Next picture I unplug this Catalina USB SSD external and plug to the MacBook7,1 and from MacBookPro6,2 I run a Mojave, lets check it out.

In both cases it's bidirectional working.

I've tried also from a MacBook7,1 Mavericks AirDrop to discover and be discovered from Catalina and it's totally working.

My AirDrop "Search for an Older Mac" method works also on Catalina supported Macs, that are not allowed to discover and be discovered from legacy machines, since apple dropped the "Search for an Older Mac" function from Catalina.

Instead replacing on a supported Catalina this AirDropInfoView.nib brings back that function, AirDrop will work and allow to discover/discovered also very legacy Macs (I guess until 10.7 OSX Lion when AirDrop was introduced by apple).

Actually, Finder crashed after rebooting...

Screen Shot 2019-06-24 at 5.49.02 PM.png
 
  • Like
Reactions: TimothyR734
It appears on reboots after the initial install. Not urgent b/c this machine is just for testing. I'll wait a few beta iterations and try again nearer the GM.
Another non-standard feature of this MP 3,1 is that it has a BT4 LE/WiFi card from an iMac 14.1 that was fully supported in Mojave.
Incidentally Airdrop is working fine too.

So you have an official Apple installed BCM94360CD transplanted into a MacPro 3,1? If so, it would be interesting to know if the stock Catalina IO80211Family*.kext recognize that card or if you have to drop it back to the Mojave copies? If it isn't recognized, it would be really interesting to know if it was transplanted back into the original iMac 14,1 whether it becomes recognized by the stock Catalina IO80211Family*.kext.
 
I would like to share some insights about the current light mode patch and hopefully some talented people here could help us to get us some new input.
A brief recap about the current process:

- SystemAppereance.car contains everything for the basic "look" of macOS, like colors, UI-Elements and materials
- these materials are embedded in SystemAppereance.car as single caar files (be careful with car and caar, this are binary plist-files, starting with "bplist00..." if inspected by a Hex-Editor and could be extracted e.g. with an app called ThemeEngine)
- these caar files contain the layers of the individual materials. months ago @pkouame and I spend some time to search common parameters of broken materials in this caar files. We even built them by hand in Xcode, and as far as I remember they worked correctly there. You could also inspect a caar file with the app Kite, and also there they work properly with transparency. So we didn't find something really interesting.
And we shouldn't find anything, as I think the caar files are totally right. The common parameter is inside the header (as I call it) you could see here
View attachment 844719
It is some information ahead of the caar file itself. Even ThemeEngine doesn't show this information as far as I remember. And if you export the caar file, of course this additional header is not included. It is also clear, that if you swap the whole .car(!) file with the one from DarkMode it works almost properly (excluding text rendering), as inside the DarkMode .car file this header refers to UltrathickDark for example, instead of UltrathickLight. Also taking a .car file from older macOS versions shouldn't work at all or at least could not fix the broken areas because as we have seen earlier the old "headers" refer to the old descriptions for example Ultralight (no ..Light or ..Dark at the end).
- these descriptions/"base materials" are definitely the common ground of broken areas and are processed by SkyLight. They are individual for light and dark mode and only some of the Light ones are broken. If replaced by a working one, it fixes all materials from SystemAppereance.car with this specific descriptions in the header. Another reason that shows, that CoreUI patches worked indeed, but weren't in the right place.
This is the current light mode patch implementation in SkyLight:
Original
Code:
void ___get_available_materials_dictionary_block_invoke(void * _block) {
    rax = CFDictionaryCreateMutable(0x0, 0x0, *_kCFTypeDictionaryKeyCallBacks, *_kCFTypeDictionaryValueCallBacks);
    *_get_available_materials_dictionary.materials = rax;
    _SLCFDictionarySetInteger(rax, @"UltrathinLight", 0x1);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThinLight", 0x2);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MediumLight", 0x3);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThickLight", 0x4);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathickLight", 0x5);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathinDark", 0x6);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThinDark", 0x7);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MediumDark", 0x8);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThickDark", 0x9);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathickDark", 0xa);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ToolbarLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ToolbarDark", 0xc);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedLight", 0xd);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedDark", 0xe);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedGraphiteLight", 0x11);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedGraphiteDark", 0x12);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UnfocusedLight", 0x13);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UnfocusedDark", 0x14);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"SelectionSystemLight", 0xf);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"SelectionSystemDark", 0x10);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarLight", 0x15);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarInactiveLight", 0x16);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarDark", 0x17);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarInactiveDark", 0x18);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"Clear", 0x19);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"Mimic", 0x1a);
    return;
}
patched
Code:
void ___get_available_materials_dictionary_block_invoke(void * _block) {
    rax = CFDictionaryCreateMutable(0x0, 0x0, *_kCFTypeDictionaryKeyCallBacks, *_kCFTypeDictionaryValueCallBacks);
    *_get_available_materials_dictionary.materials = rax;
    _SLCFDictionarySetInteger(rax, @"UltrathinLight", 0x1);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThinLight", 0x2);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MediumLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThickLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathickLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathinDark", 0x6);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThinDark", 0x7);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MediumDark", 0x8);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ThickDark", 0x9);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UltrathickDark", 0xa);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ToolbarLight", 0xb);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"ToolbarDark", 0xc);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedLight", 0xd);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedDark", 0xe);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedGraphiteLight", 0x11);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"FocusedGraphiteDark", 0x12);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UnfocusedLight", 0xf);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"UnfocusedDark", 0x14);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"SelectionSystemLight", 0xf);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"SelectionSystemDark", 0x10);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarLight", 0x15);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarInactiveLight", 0x16);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarDark", 0x17);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"MenuBarInactiveDark", 0x18);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"Clear", 0x19);
    _SLCFDictionarySetInteger(*_get_available_materials_dictionary.materials, @"Mimic", 0x1a);
    return;
}
- unfortunately MenuBar is rendered different, maybe in SkyLight but many things point to HIToolbox

It would be great, if someone could figure out, how these materials (UltrathickLight, ThickLight, ...) are processed by SkyLight and where there is the difference with the dark mode ones.
I think with the discovery of these materials inside SkyLight we are way more closer to the "core problem". We could also discuss this topic on Discord if you guy would like to do so, or want to share some results.
(Use Hopper Disassembler to get the pseudocode representation, even possible with the free version)

EDIT: Be careful with SkyLight modification, if it's broken every app would crash. So just keep a copy of the original file and you're fine. Don't reboot after every patch, just don't close Terminal app to undo changes ;)
So, with this new SkyLight patch, are the light mode issues still solved by swapping materials or have you gotten the original materials working? I’m asking this because the material swapping method doesn’t really produce the best results and I’m curious about the method. Discord is better for discussion but I think this forum is a great place to post status updates.
 
Actually, Finder crashed after rebooting...

View attachment 844732

To have that AirDrop icon with no name, you don't used my previous method (the 4360 driver) but should have used other scripts before for example this:

defaults write com.apple.NetworkBrowser BrowseAllInterfaces 1

That on Catalina doesn't work more.

But maybe you should open SystemReport on Wifi tab and check which Broadcom AirPort do you have 0x14E4

probably some different or older Broadcom Wifi can't enable this AirDrop menu.

My method has been tested and is totally working on 0x14E4 , 0x9* and later Broadcom AirPort Wifi cards and even on supported Catalina Mac.
 
To have that AirDrop icon with no name, you don't used my previous method (the 4360 driver) but should have used other scripts before for example this:

defaults write com.apple.NetworkBrowser BrowseAllInterfaces 1

That on Catalina doesn't work more.

But maybe you should open SystemReport on Wifi tab and check which Broadcom AirPort do you have 0x14E4

probably some different or older Broadcom Wifi can't enable this AirDrop menu.

My method has been tested and is totally working on 0x14E4 , 0x9* and later Broadcom AirPort Wifi cards and even on supported Catalina Mac.

Mine is 0x14E4, 0x8D
 
  • Like
Reactions: TimothyR734
Mine is 0x14E4, 0x8D

Then I guess that's reason , I tested and working on 0x14E4, 0x9* (or later Broadcom AirPort Wifi cards example 0x14E4, 0XF* or 0xD* and so on) and on a Catalina supported Mac too.

You may try to find your "PCI Match ID" and add it the Info.plist 4360 driver, from Catalina Terminal to detect it:

ioreg -r -n ARPT | grep IOName

These should be the AirDrop supported machine (at the bottom): https://support.apple.com/en-us/HT203106
 

Attachments

  • Screenshot 2019-06-24 at 14.25.46.png
    Screenshot 2019-06-24 at 14.25.46.png
    484.4 KB · Views: 628
Last edited:
As the webpage says, "This only works on machines that support APFS booting natively". So, on that machine, you'll need to apply APFS ROM Patcher in order to install Catalina at this time.

I was wondering, is it maybe already a little more safe to use the APFS rom patcher on Nvidia chipset based mac's ?
or still better only use it on intel chipset based mac's.. ?
 
  • Like
Reactions: TimothyR734
So, with this new SkyLight patch, are the light mode issues still solved by swapping materials or have you gotten the original materials working? I’m asking this because the material swapping method doesn’t really produce the best results and I’m curious about the method. Discord is better for discussion but I think this forum is a great place to post status updates.
The fix is still achieved by swapping materials, as you could see by comparing the two functions (before and after). BUT this time dark mode is completely UNTOUCHED by this patch. It ONLY modifies light mode, as only there the broken areas appear. So I think it's better than the previous hybrid patch, as this time all the people how prefer dark mode still could apply the patch, without taking any disadvantage.
 
This comes right after the installer has booted. I can not get to the actual installation.

____

Das kommt direkt nachdem der Installer gebootet hat. Ich komme gar nicht zu der eigentlichen Installation.
 
  • Like
Reactions: TimothyR734
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.