Jump to content
559 posts in this topic

Recommended Posts

[N.B. library is in continue developement]

 

Developer from all over the world, are you ready?  Still needs some patches to my fully working RPL-P laptop but... it's open to developer now.
No more IOPCIPrimaryMatch, we work on IOResource so just put your kexts (+ bundle) in /Library/Extensions folder or use /System/Library/Extensions kext

https://github.com/sgiammori/NootedGreen

 

"-ngwegcoex" Is Key with !isrealTGL ???

 

Boot args advised for testing (Hookcase in /Library/Extensions/ too) 

-v keepsyms=1 debug=0x100 IGLogLevel=8 -ngreentglfb -NGreenDebug liludump=250 msgbuf=725288 liludbuf=725288 ngreen-dmc=adlp -ngreenv189
-v keepsyms=1 debug=0x100 IGLogLevel=8 -ngreentglwithgfx -NGreenDebug liludump=250 msgbuf=725288 liludbuf=725288 ngreen-dmc=adlp -ngreenv189 -allow3d -disablegfxfirmware -ngreenfullmtlcore

where

// Boot-arg "ngreen-dmc":
//   not set or "skip" → safe fallback: passthrough original + AUX only (proven working)
//   "tgl"             → load TGL DMC v2.12 blob + TGL display engine registers
//                       + ICL/TGL combo PHY signal levels (PHY_A eDP, PHY_B DP)
//   "adlp"            → load ADL-P DMC v2.16 blob + ADL-P display engine registers
//                       + combo PHY signal levels (PHY_A eDP)
//   "icl"             → passthrough original ICL DMC load + ICL combo PHY signal levels

 

IOResources solving now is done like this for TGL kexts or IcL ketxts : first look at LE kexts and if any kexts is found than fallback to find in SLE kexts * framebuffer for fb * + * graphics for gpu * + * bundle for metal *

 

they need permissions (also Hookcase) fix so before move to /L/E do in some random folder, check below

IOPCIPrimarymatch must be set in both *TGLGraphics* kexts in /Library/Extensiona

GPU bundles goes to  /Library/GPUBundles

Workflow for kexts (fb+Graphics+Hookcase in LE)

- sudo chmod -R 755 Apple*
- sudo chown -R root:wheel Apple*
- move the files to /L/E
- delete /Library/KernelCollections/AuxiliaryKernelExtensions.kc
- redo sudo chown -R root:wheel /Library/Extensions/Apple*
- sudo kextcache -i /
(if System asks you permissions, just allow and restart before to test)

(maybe necessary this below also)

sudo kmutil load -p /Library/Extensions/AppleIntelTGLGraphics.kext 2>&1
sudo kextcache -i /

 

Here our forks also STILL in development... but we are very close to FULL implementation.
Thanks to @shl628, @jalavoui, developer of NootedBlue, Claude Sonnet, Claude Opus github copilot interpretes..

(Here you can find important kexts...Just use double kexts each time (*Framebuffer* + *Graphics* + * bundle for metal *)

 

Compatibility status check (tested and progress done in Sonoma..)

[ICL] = 90% probability

[TGL] = 90% probability

[ADL] = unknown

[RPL] = still work in progress [infrastructure at 75% ready)

Cross-Platform Detection (V52)

NootedGreen uses inline CPUID (EAX=1) at load time to read the real CPU model — no config.plist or device-ID spoofing can fake this. The result sets isRealTGL:

CPU Model isRealTGL
Tiger Lake-U (i7-1165G7, etc.) 0x8C true
Tiger Lake-H (i7-11800H, etc.) 0x8D true
Raptor Lake-P (i7-13700H, etc.) 0xBA false
Raptor Lake-S 0xBF false
Raptor Lake-HX 0xB7 false
Alder Lake-P 0x9A false
Alder Lake-S 0x97 false

Driver path resolution and fallback order

NootedGreen keeps a strict load-path policy for Gen11/Gen12 bring-up:

  • Primary (preferred): TGL from /Library/Extensions
    • AppleIntelTGLGraphicsFramebuffer.kext
    • AppleIntelTGLGraphics.kext
  • Fallback: ICL from /System/Library/Extensions
    • AppleIntelICLLPGraphicsFramebuffer.kext
    • AppleIntelICLGraphics.kext

Runtime guards enforce this behavior:

  • If TGL framebuffer loads, ICL framebuffer processing is skipped.
  • If TGL accelerator loads, ICL accelerator processing is skipped.

For Metal bundle discovery, DYLD patching still prioritizes /Library/Extensions first (via gpu_bundle_find_trusted path rewrite), with /System/Library/Extensions retained as fallback.

 

Hookcase (change AppleInteePortHal and AppleIntelPortHal implementation) :

// Register selection by platform:
//   ICL  (AppleIntelFramebufferController path): 0xC4030 (ICL_SHOTPLUG_CTL_DDI)
//   TGL:                                         0x44470
//   ADL-P / RPL-P:                               0x1638a0
uint32_t registerValue = callback->readReg32(0x1638a0); // ADL-P/RPL-P

 

For SMBIOS https://github.com/corpnewt/GenSMBIOS

 

USEFUL LOGS TO DEBUG

need your logs.. without them I cannot do anything...
so you must boot with - for example an empty nblue - inside the system and get previous lilulog and logs related THAT boot.

 

  • log show --style syslog --predicate 'processID == 0' --last 15m --info --debug > /tmp/x.log
  • grep "\[IGFB\]" /tmp/x.log > /tmp/fb.log
  • grep "V401\|V405" /var/log/Lilu_1.7.2_23.6.txt > /tmp/lilu.log
  • Add liludump=N to let Lilu DEBUG version dump log to /var/log/Lilu_VERSION_KERN_MAJOR.KERN_MINOR.txt after N seconds
  • e.g. % grep "ngreen" /private/var/log/Lilu_1.7.2_23.6.txt > /tmp/ngreen_only.txt
  • kp or windowsserver stall logs..

 

Lilu.kext.zip

WhateverGreen.kext.zip

 

- Attached config-FBonly.plist and config-FB+HW.plist are just an example of well structured config files

- This dummy nootedblue kext attached is the one that i use to develop, using it without IOPCIPrimarymatch i boot in the system without fb and gfx and I use it like a clean old stub :D (there is also a dummy not well structured config.plist attached)

- Lilu and weg are the enhanced versions already built i'm actually using.. u can find sources along this thread..

Dummy.zip

config-FB+HW.plist

config-FBonly.plist

Edited by Stezza88
  • Like 4
  • Thanks 1
Posted (edited)

Changed Requirements in readme

Requirements

  • Lilu 1.7.2+
  • macOS Sonoma 14.x (Gen11/Gen12 targets) or macOS 10.12–14.x (legacy NootedBlue targets)
  • Supported Intel iGPU (see Compatibility below)
  • Discrete GPU disabled via disable-gpu on its PCI path (if present)

 

Compatibility

NootedBlue legacy support (fully preserved):

  • Haswell (10.12+)
  • Broadwell / Braswell (10.14+)
  • Gemini Lake (10.14+)

NootedGreen (Gen11/Gen12 — TGL driver spoofing):

  • Tiger Lake (macOS Sonoma 14.x) — reported working
  • Raptor Lake-P (macOS Sonoma 14.x) — work in progress
  • Ice Lake — untested, may work
  • Rocket Lake — untested, may work
  • Alder Lake — untested, may work
Edited by Stezza88
up
test it and give me details to expand compatibility!
The original AppleIntelTGLGraphics.kext meant for Library/Extensions have signature issues and some linking issues.

Would unsealing and installing the tglfb & tglgraphics into System/Library/Extensions and relinking it in the NootedGreen be better?

Also what about the gpubundles, tglMTL, tglVAME etc, are those no longer needed?

Also is hookcase not needed anymore? How do you capture dyld calls?
Posted (edited)

I am using le folder at the moment (Library/Extension) of TGL and for ICL the SLE drivers already presents in Sonoma


IOResources solving now is done like this for TGL kexts or IcL ketxts : first look at LE kexts and if any kexts is found than fallback to find in SLE kexts

Edited by Stezza88
Posted (edited)
1 hour ago, Mastachief said:

The original AppleIntelTGLGraphics.kext meant for Library/Extensions have signature issues and some linking issues.

Would unsealing and installing the tglfb & tglgraphics into System/Library/Extensions and relinking it in the NootedGreen be better?

Also what about the gpubundles, tglMTL, tglVAME etc, are those no longer needed?

Also is hookcase not needed anymore? How do you capture dyld calls?


And for Hookcase should be this situation

 

// Register selection by platform:

        //   ICL  (AppleIntelFramebufferController path): 0xC4030 (ICL_SHOTPLUG_CTL_DDI)

        //   TGL:                                         0x44470

        //   ADL-P / RPL-P:                               0x1638a0

 

 

Library is on fire now. Updated every minutes.

Should be accelerator solved in every TGL at the actual state...

Edited by Stezza88

In latest version of NootedGreen, there is no attaching of the tgl kexts that are in LE, i will share my boot config and all in a bit after a bit of testing.

I'll have BatGPT verify the code and logs I currently have and the changes I made and share it.

Currently the kext loads but does not attach.

8 minutes ago, Mastachief said:

In latest version of NootedGreen, there is no attaching of the tgl kexts that are in LE, i will share my boot config and all in a bit after a bit of testing.

I'll have BatGPT verify the code and logs I currently have and the changes I made and share it.

Currently the kext loads but does not attach.


// ICL FB — com.apple (in kernel collection)
static const char *pathsICLFB[] = {
"/Library/Extensions/AppleIntelICLLPGraphicsFramebuffer.kext/Contents/MacOS/AppleIntelICLLPGraphicsFramebuffer",
"/System/Library/Extensions/AppleIntelICLLPGraphicsFramebuffer.kext/Contents/MacOS/AppleIntelICLLPGraphicsFramebuffer",
};
static KernelPatcher::KextInfo kextG11FB {"com.apple.driver.AppleIntelICLLPGraphicsFramebuffer", pathsICLFB, 2, {}, {},
KernelPatcher::KextInfo::Unloaded};
 
// ICL HW — com.apple (in kernel collection)
static const char *pathsICLHW[] = {
"/Library/Extensions/AppleIntelICLGraphics.kext/Contents/MacOS/AppleIntelICLGraphics",
"/System/Library/Extensions/AppleIntelICLGraphics.kext/Contents/MacOS/AppleIntelICLGraphics",
};
static KernelPatcher::KextInfo kextG11HW {"com.apple.driver.AppleIntelICLGraphics", pathsICLHW, 2, {}, {},
KernelPatcher::KextInfo::Unloaded};
 
// TGL FB — com.xxxxx (loaded from /Library/Extensions/)
static const char *pathsTGLFB[] = {
"/Library/Extensions/AppleIntelTGLGraphicsFramebuffer.kext/Contents/MacOS/AppleIntelTGLGraphicsFramebuffer",
"/System/Library/Extensions/AppleIntelTGLGraphicsFramebuffer.kext/Contents/MacOS/AppleIntelTGLGraphicsFramebuffer",
};
static KernelPatcher::KextInfo kextG11FBT {"com.xxxxx.driver.AppleIntelTGLGraphicsFramebuffer", pathsTGLFB, 2,
{false, false, false, true}, {},
KernelPatcher::KextInfo::Unloaded};
 
// TGL HW — com.xxxxx (loaded from /Library/Extensions/)
static const char *pathsTGLHW[] = {
"/Library/Extensions/AppleIntelTGLGraphics.kext/Contents/MacOS/AppleIntelTGLGraphics",
"/System/Library/Extensions/AppleIntelTGLGraphics.kext/Contents/MacOS/AppleIntelTGLGraphics",
};
static KernelPatcher::KextInfo kextG11HWT {"com.xxxxx.driver.AppleIntelTGLGraphics", pathsTGLHW, 2,
{false, false, false, true}, {},
KernelPatcher::KextInfo::Unloaded};
Posted (edited)
20 minutes ago, Mastachief said:

In latest version of NootedGreen, there is no attaching of the tgl kexts that are in LE, i will share my boot config and all in a bit after a bit of testing.

I'll have BatGPT verify the code and logs I currently have and the changes I made and share it.

Currently the kext loads but does not attach.


And remember you need a couple not only one per time like crazy NootedBlue did .. * framebuffer for fb * + * graphics for gpu * ...

 

to be sure if they are already loaded use mine lilu fork! It is patched to load forcely those crazy kexts..

Edited by Stezza88

And remember you need a couple not only one per time like crazy NootedBlue did .. * framebuffer for fb * + * graphics for gpu * ...
 
to be sure if they are already loaded use mine lilu fork! It is patched to load forcely those crazy kexts..
Okay, because using latest Lilu does this, so I'll test yours

Oops, my fault, just read the panic, error, I have 1.6.9 on the test USB EFI, I'll update and test again

4cf016d82b556316d0e75e9cf8286216.jpgabe1bb4e2535594dc08e170da2f275e0.jpg
  • Like 1
8 minutes ago, Mastachief said:

Okay, because using latest Lilu does this, so I'll test yours

Oops, my fault, just read the panic, error, I have 1.6.9 on the test USB EFI, I'll update and test again

4cf016d82b556316d0e75e9cf8286216.jpgabe1bb4e2535594dc08e170da2f275e0.jpg

 

which kexts are you trying? TGL or ICL?

Posted (edited)

send me photos (of panic, etc..) or txt because i can patch it better to preserve maximum compatibility!

 

And please system info like cpu, gpu.. and lilu logs if presents (-liludbg liludump=60)

Edited by Stezza88
33 minutes ago, Mastachief said:
34 minutes ago, Stezza88 said:
send me photos (of panic, etc..) or txt because i can patch it better to preserve maximum compatibility!

I'll send you the text, I built and used your Lilu, I still get a KP


Build the release not the debug version

What is the minimum boot flags that I should add to NVRAM to ensure proper testing of NGreen?

Currently I use lilu debug and not release, should I build nootedgreen release version then? Which version should I use for each? Do I have to use your Lilu?

The boot halts before it loads lilu so there is no proper Panic dump, just the pics I sent. Will send proper info when I come back from eating.

  • Like 1
Posted (edited)

I think this to stay Vanilla and if you want logs (that we need) 

-v keepsyms=1 debug=0x100 IGLogLevel=8 -NGreenDebug -liludbg liludump=60 ngreen-dmc=skip -allow3d -disablegfxfirmware
 
6 hours ago, Mastachief said:

What is the minimum boot flags that I should add to NVRAM to ensure proper testing of NGreen?

Currently I use lilu debug and not release, should I build nootedgreen release version then? Which version should I use for each? Do I have to use your Lilu?

The boot halts before it loads lilu so there is no proper Panic dump, just the pics I sent. Will send proper info when I come back from eating.


I think it just need of Lilu release and not debug version..

Edited by Stezza88
  • Like 1
×
×
  • Create New...