Jump to content
RehabMan

Mac App Store access with NullEthernet.kext

136 posts in this topic

Recommended Posts

If you don't have working "built-in" Ethernet (or your computer has no Ethernet at all) and do not have a supported PCIe WiFi card, then chances are you're using USB WiFi for internet access. The problem, of course, is that you have no access to the Mac App Store in that scenario.

On a whim, I created NullEthernet.kext to solve this problem. It is a "fake" Ethernet kext that will never actually work. That is, it will not ever provide network access, but it can be made to look "built-in" and solves the issue of Mac App Store access.

For Source/README/download, see here: https://github.com/RehabMan/OS-X-Null-Ethernet

It is now confirmed working in at least two laptops where there is no Ethernet port, and the WiFi is unsupported (and not replaceable).

Update 2014-01-23

A new build is up. This version can be attached to a PCIe device as well as a fake ACPI device (as in the first version). This allows you to load the driver against an actual non-working PCIe device if that is your scenario. It also avoids a DSDT patch as all customization is done in an injector kext by modifying its Info.plist for your device. The injector/PCIe technique is not relevant in the scenario where you have no Ethernet device at all, for that case you must use the fake ACPI device. See the README.md for details.


Update 2016-12-16

A new build is up. This version can be installed without any tweaks to ACPI, and even without a PCI device to attach to. Simply i install NullEthernetForce.kext along with NullEthernet.kext. Read the README for further details.

 

NOT WORKING YET.  REMOVED.

Share this post


Link to post
Share on other sites
Advertisement

hi..

any other way to make the kext load ,instead patch DSDT.'cause I do not use DSDT...

c.frio

It is easy to patch your DSDT with MaciASL. In addition to loading the driver, you need the DSDT to inject properties to make the Ethernet look "built-in."

Share this post


Link to post
Share on other sites

hi..

tks RehabMan...I'll try on desktop as I use only wifi dongle, the computer far away from router

c.frio

Share this post


Link to post
Share on other sites

hi..

tks RehabMan...I'll try on desktop as I use only wifi dongle, the computer far away from router

c.frio

FYI: It would be possible to use an SSDT:

 

DefinitionBlock("ssdt.aml", "SSDT", 2, "RehabMan", "RMNE", 0x00001000)
{
    Device (RMNE)
    {
        Name (_ADR, Zero)
        // The NullEthernet kext matches on this HID
        Name (_HID, "NULE0000")
        // This is the MAC address returned by the kext. Modify if necessary.
        Name (MAC, Buffer() { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 })
        Method (_DSM, 4, NotSerialized)
        {
            If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
            Return (Package()
            {
                "built-in", Buffer() { 0x00 },
                "IOName", "ethernet",
                "name", Buffer() { "ethernet" },
                "model", Buffer() { "RM-NullEthernet-1001" },
                "device_type", Buffer() { "ethernet" },
            })
        }
    }
}

Share this post


Link to post
Share on other sites

Thanks Rehabman

 

Is it also possible to build a kext that patches on-the fly like Clover's KextToPatch?

I'm not sure I understand the question. This is a kext you install, it is not a kext patch.

 

I get the question now, but it is off-topic for here. Question is: Can you do Clover style kext patching from within a kext instead of in the bootloader? Answer: No. The potential kexts you would want to patch are already running by the time a kext starts. Kext patching must be done on disk or in the code responsible for loading the kext (eg. bootloader).

Share this post


Link to post
Share on other sites

FYI: It would be possible to use an SSDT:

 

DefinitionBlock("ssdt.aml", "SSDT", 2, "RehabMan", "RMNE", 0x00001000)
{
    Device (RMNE)
    {
        Name (_ADR, Zero)
        // The NullEthernet kext matches on this HID
        Name (_HID, "NULE0000")
        // This is the MAC address returned by the kext. Modify if necessary.
        Name (MAC, Buffer() { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 })
        Method (_DSM, 4, NotSerialized)
        {
            If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
            Return (Package()
            {
                "built-in", Buffer() { 0x00 },
                "IOName", "ethernet",
                "name", Buffer() { "ethernet" },
                "model", Buffer() { "RM-NullEthernet-1001" },
                "device_type", Buffer() { "ethernet" },
            })
        }
    }
}

Hi Reahbman..

 

thank you..if I go, I prefer to play with DSDT...as I don't use SSDTs either.... ;)

Share this post


Link to post
Share on other sites

DSDT/SSDT + (Random MAC Adress) + Kext + Deleted and re-added Networks = Working! :-)

Yust how you describe it in your Readme :-)

 

Awesome! Have now working App Store :-)

 

Thank you Rehab :-)

 

Cheers :-)

Share this post


Link to post
Share on other sites

Hi Reahbman..

 

thank you..if I go, I prefer to play with DSDT...as I don't use SSDTs either.... ;)

OK...

 

If you have a non-working PCIe Ethernet, you can also use the second technique (injector onto PCIe device). See README for more information.

Share this post


Link to post
Share on other sites

Hi RehabMan,

 

i've added references and links on the guide for the surface pro,

the only extra thing i had to do was looking for a proper smbios serial via clover configurator and apple support site.

 

a question, do you suggest to always update the kext to the latest version even if icloud access is actually working?

thanks

Share this post


Link to post
Share on other sites

Hi RehabMan,

 

i've added references and links on the guide for the surface pro,

the only extra thing i had to do was looking for a proper smbios serial via clover configurator and apple support site.

 

a question, do you suggest to always update the kext to the latest version even if icloud access is actually working?

thanks

 

I think I'm done with updates for a while on the kext.  Unless someone reports a bug.  I had it on my list to allow it to attach to a PCI device, but before I did that, I wanted to make sure it was working (having no way to test it for myself)... thus the 0.1.0 version followed shortly by 1.0.0 with a few extra features.  You should be able to update without issue.

 

The only feature/idea I have on my list is a random MAC generator, stored in nvram to be re-used on subsequent boots (override with fixed MAC would still be supported as we have now).  But I think I'm going to wait and see how important having a unique MAC turns out to be before putting forth the effort.

Share this post


Link to post
Share on other sites

Awesomeness... Thanks a bunch !!

Share this post


Link to post
Share on other sites

@RehabMan,

 

Would you kindly review my report regarding App Store verification problem in the following link:

http://www.insanelymac.com/forum/topic/273504-app-store-your-device-or-computer-could-not-be-verified/page-4

 

Do you think your Null Ethernet kext has good chance may work in my situation?

If your issue is that you have no working built-in Ethernet (only USB WiFi), this solution should work.

Share this post


Link to post
Share on other sites

Thanks for your reply. 

In the same computer, ML 10.8.5 worked with the airport card without a hitch. In Mavericks, weird stuff happened. I tried importing my ML Networking Interface into Mavericks with proper terminal commands from eep. It installed correctly but it shuts off Wi-Fi function. In Mavericks, I can only have either Wi-Fi or Marvell Yukon Lan. If Both kexts are loaded, only LAN works and Wi-Fi showed up in network setting and I could not turn it on through network setting. Going through my DSDT.aml, I could not locate the Airpot Atheros 9380 at all. Yet, it clearly displayed in the IORegistry. I was hoping that if it showed up in DSDT.aml, maybe some patch might work. WOuld changing SMBios to MacPro 3.1 make a difference? 

 

If I try your NullEthernet Kext with SSDT, if it does not work, can I just uninstall the kext and delete the SSDT and back to square one? I am desperate to try anything as long as it does not give me serious KP that I cannot fix it myself. 

Share this post


Link to post
Share on other sites

Thanks for your reply. 

In the same computer, ML 10.8.5 worked with the airport card without a hitch. In Mavericks, weird stuff happened. I tried importing my ML Networking Interface into Mavericks with proper terminal commands from eep.

ML and Mavericks have the same support for WiFi cards. I don't know what you mean by "importing my ML Networking Interface into Mavericks," but it doesn't sound a like a good idea.

 

It installed correctly but it shuts off Wi-Fi function. In Mavericks, I can only have either Wi-Fi or Marvell Yukon Lan. If Both kexts are loaded, only LAN works and Wi-Fi showed up in network setting and I could not turn it on through network setting.

Key is not messing with the system kexts IO80211Family.kext or IONetworkingFamily.kext as it is unnecessary to replace/patch these kexts and doing so just leads to problems.

 

Going through my DSDT.aml, I could not locate the Airpot Atheros 9380 at all. Yet, it clearly displayed in the IORegistry. I was hoping that if it showed up in DSDT.aml, maybe some patch might work.

Use the information in the ioreg to find it in your DSDT (eg. node in ioreg corresponds to node in DSDT).

 

WOuld changing SMBios to MacPro 3.1 make a difference?

I don't think smbios matters for your case.

 

If I try your NullEthernet Kext with SSDT, if it does not work, can I just uninstall the kext and delete the SSDT and back to square one? I am desperate to try anything as long as it does not give me serious KP that I cannot fix it myself.

Yes. And BTW, there is no such thing as a "serious KP" that cannot be fixed provided you know what you changed to cause it.

Share this post


Link to post
Share on other sites

@ RehabMan,

 

You just hit the nail's head right on. I truly believed in my case, the Atheros Airport card registered under IEEE80211 and Marvell Yukon Kext is installed through modified IONetworking family kext. Somehow it messed up there. 

Is there a way to fix this? I will try your Null Ethernet with SSDT and report back to you. I am sure there won't be any serious KP that cannot be fix as I am not doing something crazy here. 

 

Thanks and have a nice weekend! Congrats to Seahawks winning the Super Bowl.

Share this post


Link to post
Share on other sites

@ RehabMan,

 

You just hit the nail's head right on. I truly believed in my case, the Atheros Airport card registered under IEEE80211 and Marvell Yukon Kext is installed through modified IONetworking family kext. Somehow it messed up there. 

Is there a way to fix this?

No need to install a replacement IONetworkingFamily.kext to install support for a network driver. You can fix it by restoring to vanilla (you made a backup, right?).

 

Thanks and have a nice weekend! Congrats to Seahawks winning the Super Bowl.

Go Hawks!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By valueimagery
      Hello,
      I have almost succesfully converted from Clover to OpenCore 0.5.4 following this Vanilla Guide by khronokernel
      https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/
       
      Just an issue with the ethernet intelmausiethernet.kext injecting...
      SOLVED - the sample plist default kernel entry for Ethernet BOOLEAN is NO.  I changed to the kext name correctly, but oversaw to make the simple change to YES!
       
      OC 0.5.4
      OSX 10.15.2
      ASUS Rog Maximus X Code Bios v2203 (uses Intel® I219V)
      i7 8700k w/ AMD RX 580 Sapphire Nitro+ SE
       
      The latest kext is in my EFI/OC/Kexts folder with the other latest kexts that have loaded properly.  It seems to be entered correctly in the config.plist like the other latest kexts.  But the service is inactive and there is no Ethernet connection.  Airport works fine.
       
      I ran kextstat in terminal and could confirm that the kext was not loaded. Nor did en0 report anything with IoRegistryExplorer
      The only way I was able to get ethernet to work was by manually installing the kext into the L/E/ folder via ##### and after reboot.
      I can confirm ethernet is now working and reports as loaded with kextstat, and the device populates in IoRegistryExplorer.
      I know ##### sn't the proper way to install kexts so reaching out for some advice if I've done anything wrong with my config.plist
      Possibly an issue with OC version 0.5.4? I know everything is still BETA.
      Attached is my EFI folder with serial removed
      EFI.zip
    • By Hervé
      Recompiled v2.3.6 sources in fat-binary mode (Xcode 3.2.6, SDK 10.6, Target OS X 10.6). Fully supported in 32bit and/or 64bit mode under all OS X/macOS versions from Snow Leopard 10.6 to Catalina 10.15.
       
      Edits:
      Nov 16th, 2018: updated description to confirm support up to Mojave 10.14 Jan 11th, 2019: updated description to confirm support up to Catalina 10.15  
    • By Gabigeek
      Hi everybody,
      First this is my first post on this forum so I hope Im creating a topic at the right place 
      Im french, so sorry for my bad english 
       
      So I recently made a Hackintosh Laptop (on a ROG GL553VD-DM078T )
      This laptop is based on a i7 7700HQ and a GTX1050.
      I installed MacOS Sierra using the Clover bootloader and succesfully installed  the kexts needed but one of them is causing trouble.
       
      I Broke my internal ethernet Port so I must use a USB-C ethernet dongle in order to acces the internet ( The Integrated Wifi chipset isn't compatible so that's my only way to connect.)
      Without the UsbInjectAll.kext everything works exept my laptop keyboard wich use USB (yes, the internal ASUS Aura keyboard use USB interface, not PS2 or IC2 ).
      But if I load the UsbInjectAll kext the keyboard works, but the USB-C ethernet dongle is no more recognized at all ( not even in the system report menu)
      The weird thing is that if I plug a USB stick in the USB-C port, it works, but the ethernet dongle won't.
       
      So now I have 2 options :
      -or I load the UsbInjectAll kext and I get my keyboard to work
      -or I disable the UsbInjectAll kext so i can get back my ethernet USB-C dongle to work, but no more keyboard....
       
      Can someone explain why do this happen ? Is there a way to get both The Ethernet dongle and my internal keyboard to work at the same time ?
      If Needed, I can provide more information about the hardware Used etc.
       
      Have a good Day/night 
    • By k.panic
      Hi to all!

      I've installed Yosemite on:
      - i5 4690
      - ASRock H87M Pro4 (with intel ethernet I219-V) (IntelMausiEthernet, AppleIntelE1000 and RehabMan for I219V kexts)
      - 8gb ddr3 RAM
      - 1tb hard disk
       
      If I disable I219-V from BIOS, when I shutdown it, don't reboots (tested with all kexts)
      If I enable I219-V from BIOS, when I shutdown it, the system reboots.
       
      How can I fix this? Thanks!
    • By RogerDodger93
      Salve a tutti ragazzi,
      Mi sono appena iscritto e innanzi tutto vorrei esprimere la mia gratitudine per l'aiuto offerto. Il mio problema come da titolo riguarda il mio Pavilion Power 15 più precisamente il modello cb015nl. Ho notato che c'era un altro topic su un modello simile ma immagino che anche se i modelli sono simili non è detto che siano compatibili quindi ne ho creato uno per il mio modello. Per arrivare al dunque, sono riuscito ad installare con successo Mojave 10.14 ma ho riscontrato diversi problemi una volta avviato l'OS. Quello che non riesco a far funzionare è l'indicatore della batteria, il power managment (Stop non funziona e la luminosità), la porta ethernet e credo che la scheda wifi sia incompatibile, le gesture del trackpad, e l'audio che con una scheda audio esterna funziona a meraviglia e l'ultimo grosso problema è che non riesco a far partire clover senza la usb di installazione, ho installato clover bootoader sull'hd dove ho mojave ma niente senza la usb mi parte il bootloader di hp/windows. Premetto che sono partito con una copia di mojave scaricata dall'appstore. Vi allego il report di HackInfo sperando che possa essere d'aiuto per il troubleshooting
      HackInfo_Report.zip
×