Jump to content

Broadcom Ethernet BCM57781 kext needed for 10.9 DP2


29 posts in this topic

Recommended Posts

Hello everybody.

I need someone who can patch IONetworkingFamily.kext/Contents/PlugIns/AppleBCM5701Ethernet.kext for my Ethernet Broadcom BCM57781on Mavericks DP2. The patched one for ML 10.8.4 no longer works. Any ideas?

ASRock Z77E ITX

Intel i7 3770S

Everything else is working (besides iMessage, FeceTime)

Link to comment
Share on other sites

Hi Giovanni,

try this, http://www.insanelymac.com/forum/files/file/79-bcm5722d/

See description and see if Dev-id corresponds to your

Good Hack

Thanks Marco, but unfortunately I've already tried that with no success. I posted my results yesterday here. As Mieze told me, it will be necessary a patch from the original 10.9 DP2 kext. I'm definitely not the right guy for that, but I'll keep on trying.

Link to comment
Share on other sites

Well, it seems ethernet is connected, but I have to set manually DHCP address. Green light appears, then, but the internet browser doesn't work. Nevertheless, it allowed me to log into iMessage and FaceTime. Now, with WiFi I can get everything!

BTW: In Mavericks DP 1/2 Power Management and HDMI audio (via DisplayPort in Apple Cinema Display) work without ssdt, dsdt or patched kexts. Added patched AppleHDA.kext for Internal Audio.

Link to comment
Share on other sites

Well, it seems ethernet is connected, but I have to set manually DHCP address. Green light appears, then, but the internet browser doesn't work. Nevertheless, it allowed me to log into iMessage and FaceTime. Now, with WiFi I can get everything!

BTW: In Mavericks DP 1/2 Power Management and HDMI audio (via DisplayPort in Apple Cinema Display) work without ssdt, dsdt or patched kexts. Added patched AppleHDA.kext for Internal Audio.

It is hard enough. But I will try to help you..

First of all make bin patch b416->b116 in all places and show me kernel.log after.

Link to comment
Share on other sites

It is hard enough. But I will try to help you..

First of all make bin patch b416->b116 in all places and show me kernel.log after.

Well thanks, really, but I'm a little short of knowledge about bin patch. Kernel log is about 

sudo dmesg

 right?

Besides, Device ID is already 0x16b1

 

post-799111-0-75958600-1372242595_thumb.png

Link to comment
Share on other sites

Use 

 

Well thanks, really, but I'm a little short of knowledge about bin patch. Kernel log is about 

sudo dmesg

 right?

Try this one.(Made bin patch) I think it won't work because we must to disassemble driver and get to know what stoppes driver.

Before it was getAdapterInfo

Now I don't know. Console must show it.

After open console -> all messages-> and find everything which is connected to 5701.

For example

 

post-974387-0-63171300-1372242847_thumb.png

 


Don't forget to  add your id to the plist. Or more exactly replace 16b4 to 16b1

AppleBCM5701Ethernet.kext.zip

Link to comment
Share on other sites

Nope! Yesterday Mieze wrote me this, maybe it says something to you

These are the instructions to patch the 10.8.3 kext. As the corresponding instructions will be at different locations in the code you need to locate them first in the disassembled code. Basic knowledge of x86 assembler is required.

Change

7a8b:    ba 2c 00 00 00     mov $0x2c,%edx
7a90:    e8 bb 90 ff ff         callq b50 <kmod_info-0x36138>
7a95:    66 89 83 92 04 00 00     mov %ax,0x492(%rbx)

Into

7a8b:    ba 2c 00 00 00     mov $0x2c,%edx
7a90:    b8 e4 14 00 00     mov $0x14e4,%eax            <--- Move the subsystem-vendor-id into AX
7a95:    66 89 83 92 04 00 00     mov %ax,0x492(%rbx)


Change

7aa6:    ba 2e 00 00 00     mov $0x2e,%edx
7aab:    e8 a0 90 ff ff         callq b50 <kmod_info-0x36138>
7ab0:    66 89 83 94 04 00 00     mov %ax,0x494(%rbx)

Into

7aa6:    ba 2e 00 00 00     mov $0x2e,%edx
7aab:    b8 b4 16 00 00     mov $0x16b4,%eax            <--- Move the subsystem-id into AX
7ab0:    66 89 83 94 04 00 00     mov %ax,0x494(%rbx)


Change

7b24:    ba 02 00 00 00     mov $0x2,%edx
7b29:    e8 22 90 ff ff         callq b50 <kmod_info-0x36138>
7b2e:    66 89 83 90 04 00 00     mov %ax,0x490(%rbx)

Into

7b24:    ba 02 00 00 00     mov $0x2,%edx
7b29:    b8 b4 16 00 00     mov $0x16b4,%eax            <--- Move the device-id into AX
7b2e:    66 89 83 90 04 00 00     mov %ax,0x490(%rbx)

The routine callq is calling will be at a different location in the code so that the instruction code in hex will be different too. First you'll have to get a copy of GNU binutils, build from source, install and use objdump to disassemble the code. Then you can start searching the sequences.

 

A simple binary match won't work. Without basic x86 assembler knowledge you'll have a hard time doing the patch because you need to understand what the routines are doing.

 

The last mov instruction, which stores the values in variables will write to different locations too

 

Hope this helps you to help me  ;)

I attach my original Mavericks DP2 IONetworkingFamily.kext

IONetworkingFamily.kext.zip

Link to comment
Share on other sites

  • 2 weeks later...

This patched binary may work (if it does, credits to Mieze; if not, then all blame is mine) for you.

this is working with my bcm57781, 16b1

just replace it and add the device id to info.plist

AppleBCM5701Ethernet: [1000001ed, ethernet]        0        0 ReadInRom: no 2nd code header found
Ethernet [AppleBCM5701Ethernet]: Link up on en0, 100-Megabit, Full-duplex, Symmetric flow-control, Debug [796d,0301,0de1,0300,45e1,0000]

DHCP also works

 

thanks a lot

 

the only problem i can't open system information in dp2

it always crashed, so i can't give any screenshot of it

Link to comment
Share on other sites

Oh, great, glad to hear it :)

 

I take it you have QE/CI working? Pressing System Report (in Safe Mode as it was the only way I could boot then) would kick me back to the login screen before I figured out why my HD 3000 device properties weren't being inserted and when I fixed that, I could see the System Report again in 10.9 DP1

Link to comment
Share on other sites

  • 2 weeks later...

Hi there,

 

 I replaced AppleBCM5701Ethernet in "/System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleBCM5701Ethernet.kext/Contents/MacOS" with your patched binary (Mavericks DP3)

 

 I then edited /System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleBCM5701Ethernet.kext/Contents/Info.plist and added:

 

  <key>IONameMatch</key>

  <array>

         <string>pci14e4,16b1</string>

          ....

  </array>

 

But get the following error messages in the console log:

 

7/20/13 11:43:50.000 AM kernel[0]: Kext com.apple.iokit.AppleBCM5701Ethernet - library kext com.apple.driver.mDNSOffloadUserClient not found.
7/20/13 11:43:50.000 AM kernel[0]: Can't load kext com.apple.iokit.AppleBCM5701Ethernet - failed to resolve library dependencies.
7/20/13 11:43:50.000 AM kernel[0]: Kext com.apple.iokit.AppleBCM5701Ethernet failed to load (0xdc00800e).
7/20/13 11:43:50.000 AM kernel[0]: Failed to load kext com.apple.iokit.AppleBCM5701Ethernet (error 0xdc00800e).
7/20/13 11:43:50.000 AM kernel[0]: Couldn't alloc class "BCM5701Enet"
 
 
 
Any ideas?
 
Thanks!
 

 

 

 

Oh, great, glad to hear it :)

 

I take it you have QE/CI working? Pressing System Report (in Safe Mode as it was the only way I could boot then) would kick me back to the login screen before I figured out why my HD 3000 device properties weren't being inserted and when I fixed that, I could see the System Report again in 10.9 DP1

Link to comment
Share on other sites

It's probably because I'm running Mavericks DP3, not DP2.   Also, with just my WiFi I can't log into the app store.. tried everything... anyone have any ideas, or can someone patch the DP3 version so the BCM57781 works?

 

thanks!

 

 

EDIT: I reverted back to DP2, no luck.. still get the same errors as above:

 

7/20/13 11:43:50.000 AM kernel[0]: Kext com.apple.iokit.AppleBCM5701Ethernet - library kext com.apple.driver.mDNSOffloadUserClient not found.
7/20/13 11:43:50.000 AM kernel[0]: Can't load kext com.apple.iokit.AppleBCM5701Ethernet - failed to resolve library dependencies.
7/20/13 11:43:50.000 AM kernel[0]: Kext com.apple.iokit.AppleBCM5701Ethernet failed to load (0xdc00800e).
7/20/13 11:43:50.000 AM kernel[0]: Failed to load kext com.apple.iokit.AppleBCM5701Ethernet (error 0xdc00800e).
7/20/13 11:43:50.000 AM kernel[0]: Couldn't alloc class "BCM5701Enet"
Link to comment
Share on other sites

  • 4 weeks later...

It's probably because I'm running Mavericks DP3, not DP2.   Also, with just my WiFi I can't log into the app store.. tried everything... anyone have any ideas, or can someone patch the DP3 version so the BCM57781 works?

 

thanks!

 

 

EDIT: I reverted back to DP2, no luck.. still get the same errors as above:

 

 

 

7/20/13 11:43:50.000 AM kernel[0]: Kext com.apple.iokit.AppleBCM5701Ethernet - library kext com.apple.driver.mDNSOffloadUserClient not found.
7/20/13 11:43:50.000 AM kernel[0]: Can't load kext com.apple.iokit.AppleBCM5701Ethernet - failed to resolve library dependencies.
7/20/13 11:43:50.000 AM kernel[0]: Kext com.apple.iokit.AppleBCM5701Ethernet failed to load (0xdc00800e).
7/20/13 11:43:50.000 AM kernel[0]: Failed to load kext com.apple.iokit.AppleBCM5701Ethernet (error 0xdc00800e).
7/20/13 11:43:50.000 AM kernel[0]: Couldn't alloc class "BCM5701Enet"
Did you try this solution. Theoretically it should be better as it doesn't stop during an active traffic and continue working after sleep.

http://www.insanelymac.com/forum/files/file/79-bcm5722d/

Link to comment
Share on other sites

Did you try this solution. Theoretically it should be better as it doesn't stop during an active traffic and continue working after sleep.

http://www.insanelymac.com/forum/files/file/79-bcm5722d/

 

Hi Alex!  Thanks for the response.  I did try your driver.. the good news is it now sees the ethernet chip and I can get an en0 assignment (which lets iCloud work with wifi).. unfortunately I cannot assign a DHCP address, it "self assigns".. so i cannot use the onboard ethernet at the moment, but I do have WiFi working and at least have iCloud now.  Any suggestions?

 

thanks!

 

Jim

Link to comment
Share on other sites

Try to reestablish the connection. Minus after plus

post-974387-0-34315300-1376838667_thumb.png

Also you can try to use EthernetBuitIn=Yes or patch of DSDT

http://www.insanelymac.com/forum/topic/247470-bcm5722-bcm5754m-bcm5755m-bcm5787m-and-bcm5906m-nic-driver-3264-bit/?p=1918594

Perhaps driver must be adapted for your model.

Give a response after these actions at the topic of BCM5722D


I forgot to say if it wouldn't work after these actions. Go to about this Mac->more info-> and show us "Ethernet Cards" and "PCI Cards".

Also make full DarwinDumper and show kernel log as well. Type "5722" and it  will find necessary information on its own.

Link to comment
Share on other sites

Thanks to the great work (as always) by Mieze, we now have a working Mavericks 10.9 BCM57781 driver.

 

A binary patch is needed to the AppleBCM5701Ethernet.kext, as follows.  Three changes are required to replace the NICs PCI configuration check.

   613b:	ba 2c 00 00 00       	mov    $0x2c,%edx
   6140:	e8 89 ad ff ff       	callq  ece <__ZN11BCM5701Enet10superClassE-0x1f20a>
   6145:	66 89 83 d2 04 00 00 	mov    %ax,0x4d2(%rbx)

into

   613b:	ba 2c 00 00 00       	mov    $0x2c,%edx
   6140:	b8 e4 14 00 00       	mov    $0x14e4,%eax
   6145:	66 89 83 d2 04 00 00 	mov    %ax,0x4d2(%rbx)

and

   6156:	ba 2e 00 00 00       	mov    $0x2e,%edx
   615b:	e8 6e ad ff ff       	callq  ece <__ZN11BCM5701Enet10superClassE-0x1f20a>
   6160:	66 89 83 d4 04 00 00 	mov    %ax,0x4d4(%rbx)

into

   6156:	ba 2e 00 00 00       	mov    $0x2e,%edx
   615b:	b8 b4 16 00 00       	mov    $0x16b4,%eax
   6160:	66 89 83 d4 04 00 00 	mov    %ax,0x4d4(%rbx)

as well as

   605f:	ba 02 00 00 00       	mov    $0x2,%edx
   6064:	e8 65 ae ff ff       	callq  ece <__ZN11BCM5701Enet10superClassE-0x1f20a>
   6069:	66 89 83 d0 04 00 00 	mov    %ax,0x4d0(%rbx)

into

   605f:	ba 02 00 00 00       	mov    $0x2,%edx
   6064:	b8 b4 16 00 00       	mov    $0x16b4,%eax
   6069:	66 89 83 d0 04 00 00 	mov    %ax,0x4d0(%rbx)

In addition, be sure to add the card's ID pci14e4,16b1 into info.plist.

 <key>IONameMatch</key>
                        <array>
                                <string>pci14e4,1684</string>
                                <string>pci14e4,16b0</string>
                                <string>pci14e4,16b4</string>
                                <string>pci14e4,1682</string>
                                <string>pci14e4,1686</string>
                                <string>pci14e4,16b1</string>
                        </array>

Please feel free to PM me for help.  All thanks belong to Mieze!

Link to comment
Share on other sites

 Share

×
×
  • Create New...