NullEthernet.kext是星辰云资源搜集到的一款可以解决无法加载内建网卡带来的无法登陆App Store问题,无法登陆App Store一般都是网卡内建的问题,一般用于解决USB无线网卡、USB有线网卡无法内建,请尝试使用虚拟有线网卡驱动(NullEthernet.kext)以获取内建状态。

最新版本的附件中包含了NullEthernet.kext,DSDT patch与ssdt-rmne.aml

警告:我不知道这是否有效。我没有USB WiFi可以测试。我确实知道我能够将其加载为IOBuiltIn = Yes,bsdname en0。我将真实的以太网驱动程序重命名为EthernetBuiltIn = No,并且未安装PCIe WiFi卡,进行了测试。您将需要在真实场景中进行测试。

如何安装(DSDT / SSDT方法):

使用Kext向导或您最喜欢的kext安装程序安装kext本身,即NullEthernet.kext。Release版本应用于常规安装。使用调试版本进行故障排除。

为了加载kext,您需要应用patch.txt中提供的DSDT补丁。它添加了仿冒的设备“ RMNE”,驱动程序将附加到该设备。

您也可以使用提供的SSDT-RMNE.aml作为引导加载程序加载的额外SSDT,以代替实施DSDT补丁。

要安装SSDT:

变色龙:放置在/Extra/ssdt.aml或/Extra/ssdt-1.aml、/Extra/ssdt-2.aml中,这取决于已安装的SSDT。

clover:放在/EFI/CLOVER/ACPI/patched/ssdt-X.aml中,其中“ X”是您尚未用于SSDT的数字。

如何安装(PCIe /注入器方法)

如果您的PCIe以太网设备不受支持或驱动程序不起作用,则此方法最合适。kext可以直接连接到PCI设备,而无需在DSDT中创建特殊设备。如上所述,使用Kext向导或您最喜欢的kext安装程序安装kext,NullEthernet.kext。

代替DSDT修补,您将创建一个自定义NullEthernetInjector。为此,请在NullEthernetInjector.kext / Contents / Info.plist中修改Info.plist。更改IOPCIMatch以适合您的设备。另外,适当地更改MAC地址属性(默认为12:34:56:78:ab:cd)。然后像安装任何kext一样安装自定义NullEthernetInjector.kext。当主NullEthernet.kext发生更新时,无需重复此步骤。

如何安装(NullEthernetForce方法)

注意:尚无法使用。NullEthernetForce.kext目前已删除。

在1.0.4版之前(例如1.0.3及更低版本),需要ACPI或PCI设备注入器来提供以加载NullEthernet.kext。

从1.0.4版开始,提供了NullEthernetForce.kext,以便您可以在没有匹配的PCI设备且没有任何ACPI的情况下加载kext。这样,可以在无法修补ACPI且没有合适的PCI设备来连接kext的情况下使用kext(例如,具有无法正常工作的WiFi的Mac)。

要使用此方法,请将NullEthernet.kext和NullEthernetForce.kext安装到系统卷中。

您可以通过修改NullEthernetForce.kext / Contents / Info.plist中的Info.plist来自定义MAC地址。

在所有情况下,此方法也是最简单的安装方法。

提供MAC地址:

显然,kext无法从设备提供真实的MAC地址。而是只报告您提供的MAC地址。从此kext提供给系统的MAC地址确定如下:

  • 默认MAC地址为01:02:03:04:05:06
  • 如果NullEthernet.kext / Contents / Info.plist中提供了MAC地址属性(或者,如果使用注入器,则在NullEthernetInjector.kext / Contents / Info.plist中提供),则使用该属性。默认情况下,在NullEthernet.kext / Contents / Info.plist中没有指定MAC地址。
  • 如果从ACPI(DSDT补丁)加载,则称为MAC的方法可以提供MAC地址。返回值必须是正好为6个字节的缓冲区。patch.txt中的默认值为11:22:33:44:55:66
  • 最后,提供者(kext的父对象)可以提供MAC地址作为名为“ RM,MAC-address”的属性。通常通过DSDT中的_DSM方法设置此属性。例如,这是一个示例示例,该补丁可在HP ProBook上为其内置的以太网设备工作:
into method label _DSM parent_label NIC parent_label RP06 remove_entry;
into device label NIC parent_label RP06 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
        "RM,MAC-address", Buffer() { 0x11, 0x22, 0x33, 0x66, 0x55, 0x44 },\n
    })\n
}\n
end;

您甚至可以在使用内置属性时对其进行设置:

into method label _DSM parent_label NIC parent_label RP06 remove_entry;
into device label NIC parent_label RP06 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
        "RM,MAC-address", Buffer() { 0x11, 0x22, 0x33, 0x66, 0x55, 0x44 },\n
        "built-in", Buffer() { 0x00 },\n
        "device_type", Buffer() { "ethernet" },\n
    })\n
}\n
end;

重置网络接口

为了能够访问Mac App Store,必须将NullEthernet分配为’en0’。

如果以前已经设置了网络接口(例如,不是全新安装),则可能需要删除所有网络接口,然后重新设置它们。为此,进入SysPrefs-> Network并删除所有接口,应用,然后删除/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist。重新启动,然后从NullEthernet开始重新添加所有网络接口。

DSDT补丁

# DSDT patch to enable NullEthernet.kext

into device label RMNE remove_entry;
into definitionblock code_regex . insert
begin
Device (RMNE)\n
{\n
    Name (_ADR, Zero)\n
    // The NullEthernet kext matches on this HID\n
    Name (_HID, "NULE0000")\n
    // This is the MAC address returned by the kext. Modify if necessary.\n
    Name (MAC, Buffer() { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 })\n
    Method (_DSM, 4, NotSerialized)\n
    {\n
        If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
        Return (Package()\n
        {\n
            "built-in", Buffer() { 0x00 },\n
            "IOName", "ethernet",\n
            "name", Buffer() { "ethernet" },\n
            "model", Buffer() { "RM-NullEthernet-1001" },\n
            "device_type", Buffer() { "ethernet" },\n
        })\n
    }\n
}\n
end;

SSDT补丁

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20161210-64(RM)
 * Copyright (c) 2000 - 2016 Intel Corporation
 * 
 * Disassembling to non-symbolic legacy ASL operators
 *
 * Disassembly of iASLRsgXoc.aml, Sat Mar 20 19:19:23 2021
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x000000D4 (212)
 *     Revision         0x02
 *     Checksum         0xF3
 *     OEM ID           "RehabM"
 *     OEM Table ID     "RMNE"
 *     OEM Revision     0x00001000 (4096)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20160422 (538313762)
 */
DefinitionBlock ("", "SSDT", 2, "RehabM", "RMNE", 0x00001000)
{
    Device (RMNE)
    {
        Name (_ADR, Zero)  // _ADR: Address
        Name (_HID, "NULE0000")  // _HID: Hardware ID
        Name (MAC, Buffer (0x06)
        {
             0x11, 0x22, 0x33, 0x44, 0x55, 0x66             
        })
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If (LEqual (Arg2, Zero))
            {
                Return (Buffer (One)
                {
                     0x03                                           
                })
            }

            Return (Package (0x0A)
            {
                "built-in", 
                Buffer (One)
                {
                     0x00                                           
                }, 

                "IOName", 
                "ethernet", 
                "name", 
                Buffer (0x09)
                {
                    "ethernet"
                }, 

                "model", 
                Buffer (0x15)
                {
                    "RM-NullEthernet-1001"
                }, 

                "device_type", 
                Buffer (0x09)
                {
                    "ethernet"
                }
            })
        }
    }
}

下载地址

隐藏内容
本内容需权限查看
  • 普通: 9.9星币
  • 会员: 免费
  • 终身会员: 免费
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。