Jump to content
InsanelyMac Forum
Sign in to follow this  
salado

BCM4318 (AirForce One 54g) IOBuiltin=false && IOPrimaryInterface=fase

Recommended Posts

Folks,

 

I've been struggling on this issue for couple of days already. I have BCM4318 (AirForce One 54g) 802.11g wireless PCI card.

Changed many options and still can't get the system to enable "IOBuiltin=true" from IORegistryExplorer.

 

I don't know anything about patch DSDT. That's the only area I didn't touch. I just use DPCIManager to extract the DSDT.aml.

Can anybody help out here?

 

1. My machine is Dell XPS 420. On-board LAN NIC has been disabled from BIOS.

2. The Wireless card talk to WIFI router without any problem.

3. Can't login to iCloud, Facetime and iMessage.

4. The card works out of box on 10.8.2. The device/vendor ID (pci14e4,4318) is natively supported in IO80211Family.kext.

5. All the regular settings in the org.chameleon.Boot.plist are as the following:

 

<key>EthernetBuiltIn</key>
<string>Yes</string>
<key>Kernel Flags</key>
<string>npci=0x2000</string>
<key>PCIRootUID</key>
<string>0</string>
<key>PciRoot(0x4)/Pci(0x19,0x0)</key>
<dict>
<key>built-in</key>
<string>0x01</string>
</dict>
<key>device-properties</key>
<string>450000000100000001000000390000000100000002010c00d041030a040000000101060000197fff0400160000006200750069006c0074002d0069006e0000000500000001</string>

 

6. I can see from NetworkInterface.plist the "IOBuiltin" is "true". But from IORegistryExplorer both "IOBuiltin" and "IOPrimaryInterface" are reported "false".

 

 

	| |   |   |   +-o en0  <class AirPort_Brcm43224Interface, id 0x1000001dc, registered, matched, active, busy 0 (2 ms), retain 10>
| |   |   |	 | {
| |   |   |	 |   "IOMaxTransferUnit" = 1500
| |   |   |	 |   "IOInterfaceState" = 3
| |   |   |	 |   "IOPrimaryInterface" = No
| |   |   |	 |   "IONetworkData" = {"IOOutputQueueStatsKey"={"Size"=44,"Data"=<0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000>,"Access Types"=9},"IONetworkStatsKey"={"Size"=20,"Data"=<0c260000000000001c2400000000000000000000>,"Access Types"=9},"IOEthernetStatsKey"={"Size"=216,"Data"=<000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000>,"Access Types"=9}}
| |   |   |	 |   "IOControllerEnabled" = Yes
| |   |   |	 |   "IO80211Channel" = 11
| |   |   |	 |   "IO80211Band" = "2.4 GHz"
| |   |   |	 |   "IO80211SSID" = "promising.panda"
| |   |   |	 |   "IO80211BSSID" = <20c9d0a84532>
| |   |   |	 |   "IOActivePacketFilters" = {"IONetworkFilterGroup"=19,"IOEthernetWakeOnLANFilterGroup"=0}
| |   |   |	 |   "IO80211DriverVersion" = "Broadcom BCM43xx 1.0 (5.10.131.36.16)"
| |   |   |	 |   "IORequiredPacketFilters" = {"IONetworkFilterGroup"=19,"IOEthernetWakeOnLANFilterGroup"=0}
| |   |   |	 |   "IOMediaAddressLength" = 6
| |   |   |	 |   "IOInterfaceUnit" = 0
| |   |   |	 |   "IO80211Locale" = "FCC"
| |   |   |	 |   "IOInterfaceFlags" = 34915
| |   |   |	 |   "IOMACAddress" = <001d60be3306>
| |   |   |	 |   "IOInterfaceType" = 6
| |   |   |	 |   "IOMediaHeaderLength" = 14
| |   |   |	 |   "IOInterfaceExtraFlags" = 2099264
| |   |   |	 |   "IOBuiltin" = No
| |   |   |	 |   "IOMulticastAddressList" = <01005e0000fb01005e0000013333000000fb3333834d4df93333000000013333ffbe3306010393df0b92>
| |   |   |	 |   "IO80211CountryCode" = "US"
| |   |   |	 |   "BSD Name" = "en0"
| |   |   |	 |   "IO80211HardwareVersion" = "vendorid: 0x14e4

I've attached all the necessary for getting help here.

 

Thanks in advance....

ioreg-lw0.txt

DSDT.aml.zip

smbios.plist.zip

post-52590-0-00637100-1361674389_thumb.png

post-52590-0-22213000-1361674437_thumb.png

org.chameleon.Boot.plist.zip

Share this post


Link to post
Share on other sites
Advertisement

Just by adding the ARPT Device (AirPort) to the DSDT (in the correct address of course) is enough for to work fine. That's why it can't be injected as built-in (integrated), because is missing in the DSDT, I mean the system do not have the PCI entry in the tree according to your wifi card right now.

 

Re-Edited: No, is because you are trying the wrong address from device-properties injection, see my other post.

 

And from I know, the Ethernet (LAN) should be built-in for proper functionality of AppStore, iCloud and FaceTime.

Share this post


Link to post
Share on other sites

Thanks and waiting.

 

You are right. I could make the Intel1000e NIC working IOBuiltin=true with only device-properties injection.

For the BCM with DSDT modification, do I still need device-properties injection?

Share this post


Link to post
Share on other sites

Please see than you are typing the wrong address in device-properties injection. find the correct address in ioreg: "pcidebug" = "4:5:0".

 

Furthermore, with DSDT injection is not necessary device-properties injection anymore.

 

Ethernet (LAN) is recommended to be installed and working (driver + built-in) for proper functionality of AppStore, iCloud and FaceTime.

 

Anyway, try it the file dsdt.aml from /Extra and restart. Then, take a look in System Profiler - PCI cards.

 

dsdt.dsl is for future modifications. See references /* commentaries */ about what I did to your dsdt.

 

Image of the ARPT addition and injection:

Captura de pantalla 2013-02-24 a la(s) 01.14.21.png

IORegistryExplorer for more easy way to search and find full information of the Devices in DSDT. Please "save a copy as" after restart and upload into .zip file, I want to see the results of AirPort injection. Good Luck.

 

P.D. More information for you:

http://www.insanelym...me-not-working/

http://www.insanelym...286-icloud-fix/

dsdt-Airport-salado.zip

Share this post


Link to post
Share on other sites

Tested first thing in the morning.

 

1. It works! For the BCM4318, IOBuiltin and IOPrimaryInterface both turned to "True".

2. iCloud, Facetime and iMessage all works (Using Chimera v2.0.1 for iMessage).

3. After applying the new DSDT with BCM4318 injection, it has KP during boot-up and caused by AppleGraphicsControl/ApplePolicyControl. I removed AppPolicyControl and it can boot up normally. Could you help me understand what does AppleGraphicsControl/ApplePolicyControl do? Is this KP related to my incorrect device properties?

 

One more question is about your comment for the current device properties. How to correct it?

 

 

My current one:
<key>device-properties</key>
<string>450000000100000001000000390000000100000002010c00d041030a040000000101060000197fff0400160000006200750069006c0074002d0069006e0000000500000001</string>

 

Do I still need the following section in my /Extra/org.chameleon.Boot.plist?

 

 

<key>PCIRootUID</key>
<string>0</string>
<key>PciRoot(0x4)/Pci(0x19,0x0)</key>
<dict>
<key>built-in</key>
<string>0x01</string>
</dict>

 

The IORegistryExplorer export is attached.

 

Thanks juanerson!

salado-ioregistry.zip

Share this post


Link to post
Share on other sites

Please sorry my confusion about device properties, this is what you don't need anymore:

<key>PciRoot(0x4)/Pci(0x19,0x0)</key>
<dict>
<key>built-in</key>
<string>0x01</string>
</dict>

 

And I don't know about AppleGraphics/PolicyControl.

 

Please check your DSDT, is missing some important devices like Graphic (normally called GFX0), SATA, Ethernet (GIGE), Sound (HDEF), USB ports, etc... I think you need to add it all of them. Your factory DSDT is a disaster, and need work. Are you sure is the DSDT from YOUR OWN PC? Anyway, the point of start can be by adding those missing devices, just names, with the right addresses (ADR), and in the right place. The idea is "at least" by this basic way:

Device (WXYZ)
{
Name (_ADR, 0x001F0002) /* for example this is the address for SATA see ioreg */
Method (_DSM, 4, NotSerialized) /* basic injection */
{
Store (Package (0x02)
{
"built-in",
Buffer (One)
{
0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
} /* end of injection */
} /* end of wxyz device */

 

 

More specific example for graphic device, I will call GFX0 (if there is no other device with such name of course). See information in your ioreg:

Device (PCI1) /* PCI which have attached the graphic card, see ioreg address @1 */
{
Method (_S1D, 0, NotSerialized)
{
Return (One)
}

Method (_S3D, 0, NotSerialized)
/* ... */
/* ... bla bla bla keep intact the original code inside. And just before the last breaker of PCI1 add the graphic device: */
/* ... */

Device (GFX0)
{
Name (_ADR, Zero) /* his address is 0x00 see display@0 in ioreg */
Name (_SUN, One) /* port PCI1 for System Profiler figuration */
Method (_DSM, 4, NotSerialized) /* some sample injection */
{
Store (Package (0x04)
{
"built-in",
Buffer (One)
{
0x00
},

"model",
Buffer (0x1A)
{
"AMD Radeon HD 5700 Series"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
} /* end of injection */
} /* end of GFX0 */
} /* last breaker of PCI1 */

Good Luck.

Share this post


Link to post
Share on other sites

I really like your comment "Your factory DSDT is a disaster". :worried_anim: LOL. Thanks!

 

1. The DSDT.aml was extracted by DCPIManager on this computer. So I assume it is for this machine.

2. I think there is a lot more to learn about DSDT. You gave me a very good starting point.

3. I still don't quite understand your comment below. Could you help me understand better?

 

Please see than you are typing the wrong address in device-properties injection. find the correct address in ioreg: "pcidebug" = "4:5:0".

 

Thanks!

Share this post


Link to post
Share on other sites

Forget it, for wifi card I was confused between device-properties injection and the bootloader flag (PciRoot blablabla)

 

So, if I am working in device-properties language to inject the wifi card, then the PCI address is 4:5:0 (pcidebug in ioreg), equivalent to: PciRoot(0x4)/Pci(0x5,0x0)/Pci(0x0,0x0) in decimal, for convert to EFI String (which is you see in device-properties) hexadecimal. Information here.

 

Where:

4 = is the PCI port attached.

5 = the address of the wifi card.

0 = nothing in this place.

Share this post


Link to post
Share on other sites

Got it. I will try to play it a little and report back. So far with DSDT injection (and removal of AppleGraphicsControl/ApplePolicyControl), everything works well.

I will try to play with the device-properties to see if it can replace the DSDT injection.

 

Thanks again juanerson!

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
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×