Jump to content

Patch of AppleBCM5701Ethernet for ML, Mavericks.


Alex009988
 Share

18 posts in this topic

Recommended Posts

Hello. I decided to create a new topic in order to check and compare how well will it work with the native driver.

Many users have problems with BCM57781. And even the BCM5722D(2.3.5) doesn't help for them. For me, BCM5722D works excellently, but I am also keenly interested to try the novelty out.

To fix this in BCM5722D.kext you must have wide experience in programming so as to study datasheets and to make necessary changes in code. Having patched the native driver, it should be easier.

 

As was previously started, I think patches are different a little. So I'm gonna write it for each card soon and suggest methods of patches. You know, modern Duet-bootloaders such as Clover, XPC, bareBoot can do patches. Also, we can patch info.plist of its drive if we do create a special kext.(Just as for AppleHDA, and AGMP, for instance). In short, I wanna gather all of necessary information to the one message.

I hope it will work well.

 

Patches

 

BCM57780(pci14e4,1692)

 

 

 

BCM57781(pci14e4,16b1)

 

 

 

This messages will be always updated after we come to know the exact particulars of it.

  • Like 4
Link to comment
Share on other sites

The patching method I described in http://www.insanelymac.com/forum/topic/292117-broadcom-bcm57781-how-do-i-patch-the-kext-for-ml-1085/ should work for all members of the BCM57785 family. The only thing you'll have to keep in mind is that you need to add the chip's name to the match list in Info.plist, for example "pci14e4,16b5" for the BCM57785.

 

Mieze

  • Like 1
Link to comment
Share on other sites

The patching method I described in http://www.insanelymac.com/forum/topic/292117-broadcom-bcm57781-how-do-i-patch-the-kext-for-ml-1085/ should work for all members of the BCM57785 family. The only thing you'll have to keep in mind is that you need to add the chip's name to the match list in Info.plist, for example "pci14e4,16b5" for the BCM57785.

 

Mieze

Thank you very much. Look forward to try it out when I get home.
Link to comment
Share on other sites

Unfortunately, for some reason, I couldn't find this stuff in my kext.

e8 89 ad ff ff

e8 6e ad ff ff

e8 65 ae ff ff

I attached the driver where I was trying to find it in.

What Do I do wrong?

 

Although the version number is still 3.6.9 you are using a newer build so that the instructions to patch have changed:

    706b:	ba 2c 00 00 00       	mov    $0x2c,%edx
    7070:	e8 7b a8 ff ff       	callq  18f0 <__ZN11BCM5701Enet10superClassE-0x1f7e8>
    7075:	66 89 83 1a 05 00 00 	mov    %ax,0x51a(%rbx)


    7086:	ba 2e 00 00 00       	mov    $0x2e,%edx
    708b:	e8 60 a8 ff ff       	callq  18f0 <__ZN11BCM5701Enet10superClassE-0x1f7e8>
    7090:	66 89 83 1c 05 00 00 	mov    %ax,0x51c(%rbx)


    6f8f:	ba 02 00 00 00       	mov    $0x2,%edx
    6f94:	e8 57 a9 ff ff       	callq  18f0 <__ZN11BCM5701Enet10superClassE-0x1f7e8>
    6f99:	66 89 83 18 05 00 00 	mov    %ax,0x518(%rbx)

Mieze

  • Like 1
Link to comment
Share on other sites

Thank you for your answer, but unfortunately it still doesn't work for me.

Here what I've done.

Added this line to the plist

<string>pci14e4,1692</string> 

Looked at

Broadcom NetLink BCM57780 Gigabit Ethernet Controller:

 

  Name:                               ethernet

  Type:                                ethernet

  Bus:                                  PCI

  Slot:                                  Built In

  Vendor ID:                       0x14e4

  Device ID:                        0x1692

  Subsystem Vendor ID:   0x1025

  Subsystem ID:                 0x0308

  Revision ID:                     0x0001

  Link Width:                      x1

  BSD name:                       en0

  Kext name:                      BCM5722D.kext

  Location:                         /System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/BCM5722D.kext

  Version:       2.3.5

And did so

Patches

1) subsystem-vendor-id

from

e8 7b a8 ff ff

to

b8 25 10 00 00

2) subsystem-id

from

e8 60 a8 ff ff

to

b8 08 03 00 00

3) device-id

from

e8 57 a9 ff ff

to

b8 92 16 00 00

---------

After I fixed permissoins and rebooted my laptop

At "Ethernet cards" I saw

This computer does not appear to have any PCI Ethernet cards installed.

At console

26/09/13 19:35:05,582 com.apple.kextd[14]: WARNING - Invalid signature -67030 0xFFFFFFFFFFFEFA2A for kext "/System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleBCM5701Ethernet.kext"
26/09/13 19:35:13,000 kernel[0]: AppleBCM5701Ethernet [1000001e6, LAN0]:        0     1692 initConfig - unknown chip
26/09/13 19:35:13,000 kernel[0]: AppleBCM5701Ethernet [1000001e6, LAN0]:      1fe       80 initConfig - configuration error - RX descriptor count > RX receive count
26/09/13 19:35:13,000 kernel[0]: AppleBCM5701Ethernet [1000001e6, LAN0]:        0        0 getAdaptorInfo - error setting up configuration data
26/09/13 19:35:13,000 kernel[0]: AppleBCM5701Ethernet [1000001e6, LAN0]:        0        0 start - getAdapterInfo failed, giving up

It seems to be a famous mistake with getAdapterInfo.

Some information is written at this article, but unfortunately it's enoght old for my case.

http://translate.google.ru/translate?hl=ru&sl=ru&tl=en&u=http%3A%2F%2Fwww.applelife.ru%2Fthreads%2Fpatching-applebcm5701ethernet-kext.27866%2F

Unfortunately, I still don't gain an understanding of what to change.

I would really apreciate it if you could give me a hint for it.

I also attached my patched driver.

Thanks in advance!

Patched_AppleBCM5701Ethernet.kext.zip

Link to comment
Share on other sites

I will analyze your patched kext tonight when I have more time but the fact that you get that "unknown chip" error messages shows that you made a mistake while patching it. In case of success your NIC would be reported as BCM57765.

 

Mieze

 


Thank you for your answer, but unfortunately it still doesn't work for me.

Here what I've done.

 

3) device-id

from

e8 57 a9 ff ff

to

b8 92 16 00 00

---------

 

This is wrong, it should be

b8 b4 16 00 00       	mov    $0x16b4,%eax

in order to fake a BCM57765 which is natively supported.

 

Mieze

  • Like 1
Link to comment
Share on other sites

Thank you. It still doesn't work but card is detected.

Ethernet Cards

Broadcom 57765-A0:

  Name:	ethernet
  Type:	ethernet
  Bus:	PCI
  Slot:	Built In
  Vendor ID:	0x14e4
  Device ID:	0x1692
  Subsystem Vendor ID:	0x1025
  Subsystem ID:	0x0308
  Revision ID:	0x0001
  Link Width:	x1
  BSD name:	en0
  Kext name:	AppleBCM5701Ethernet.kext
  Location:	/System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleBCM5701Ethernet.kext
  mDNS offload capable:	00:26:9e:b9:14:96
  Version:	3.6.9b9 

PCI Cards

Broadcom 57765-A0:

  Name:	ethernet
  Type:	ethernet
  Driver Installed:	Yes
  MSI:	Yes
  Bus:	PCI
  Slot:	Built In
  Vendor ID:	0x14e4
  Device ID:	0x1692
  Subsystem Vendor ID:	0x1025
  Subsystem ID:	0x0308
  Revision ID:	0x0001
  Link Width:	x1
  Link Speed:	2.5 GT/s 

Console

26/09/13 21:13:40,407 com.apple.kextd[14]: WARNING - Invalid signature -67030 0xFFFFFFFFFFFEFA2A for kext "/System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleBCM5701Ethernet.kext"
26/09/13 21:13:44,000 kernel[0]: AppleBCM5701Ethernet [1000001e6, LAN0]:        0 ffffffff ReadInRom: no 2nd code header found

But it says that my card is unplugged every time even if I put it out and plug it up again.

post-974387-0-49278600-1380216328_thumb.png

When I had switched off my wifi in order to watch if the driver would transmit any pockets, I did make sure that it got totally stuck.

Zero packets.

post-974387-0-88253700-1380216735_thumb.png

I attached the kext with the correction of mistake.


EDIT1

I forgot to add.

            Device (RP06)
            {
                Name (_ADR, 0x001C0005)  // _ADR: Address
                OperationRegion (PXCS, PCI_Config, 0x40, 0xC0)
                Field (PXCS, AnyAcc, NoLock, WriteAsZeros)
                {
                    Offset (0x12), 
                        ,   13, 
                    LASX,   1, 
                    Offset (0x1A), 
                    ABPX,   1, 
                        ,   2, 
                    PDCX,   1, 
                        ,   2, 
                    PDSX,   1, 
                    Offset (0x1B), 
                    LSCX,   1, 
                    Offset (0x20), 
                    Offset (0x22), 
                    PSPX,   1, 
                    Offset (0x98), 
                        ,   30, 
                    HPEX,   1, 
                    PMEX,   1, 
                        ,   30, 
                    HPSX,   1, 
                    PMSX,   1
                }

                Device (LAN0)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x0A)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x09)
                                {
                                    "Built In"
                                }, 

                                "model", 
                                Buffer (0x36)
                                {
                                    "Broadcom NetLink BCM57780 Gigabit Ethernet Controller"
                                }, 

                                "built-in", 
                                Buffer (One)
                                {
                                     0x01
                                }, 

                                "location", 
                                Buffer (0x02)
                                {
                                    "1"
                                }, 

                                "device-type", 
                                Buffer (0x09)
                                {
                                    "Ethernet"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

                    Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                    {
                        0x09, 
                        0x05
                    })
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (PICM)
                    {
                        Return (AR09)
                    }

                    Return (PR09)
                }
            }

This is my part of DSDT which was working perfectly with BCM5722D. I said about it just in case if it could help.

V2Patched_AppleBCM5701Ethernet.kext.zip

Link to comment
Share on other sites

The subsystem-vendor-id, which should be 0x14e4, and the subsystem-id, which should be 0x16b4, are still incorrect. They need to be valid or the driver will reject the device.

 

Mieze

Link to comment
Share on other sites

The subsystem-vendor-id, which should be 0x14e4, and the subsystem-id, which should be 0x16b4, are still incorrect. They need to be valid or the driver will reject the device.

 

Mieze

Unfortunately, still doesn't work.

26/09/13 21:54:20,000 kernel[0]: AppleBCM5701Ethernet [1000001e6, LAN0]:        0 ffffffff ReadInRom: no 2nd code header found
 

The information about driver is the same  as in eighth message.

My patch

1) subsystem-vendor-id

from

e8 7b a8 ff ff

to

b8 e4 14 00 00

2) subsystem-id

from

e8 60 a8 ff ff

to

b8 b4 16 00 00

3) device-id

from

e8 57 a9 ff ff

to

b8 b4 16 00 00

V3PatchAppleBCM5701Ethernet.kext.zip

Link to comment
Share on other sites

26/09/13 21:54:20,000 kernel[0]: AppleBCM5701Ethernet [1000001e6, LAN0]:        0 ffffffff ReadInRom: no 2nd code header found
 

 

The members of the BCM57785 family use an internal or external flash memory to load configuration data and firmware. According to the error message the content of this memory is not as expected by the driver. As the patch is confirmed to work for Asrock boards with the BCM57781(I received positive reports for ML and Mavericks beta.) I don't know if the problem is related to the different NIC or an inappropriate firmware in the flash memory. Which board do you use?

 

Mieze

Link to comment
Share on other sites

Good morning.

I have laptop.  Boards for each laptop are different. 

	Motherboard Properties:
Motherboard ID  	<DMI>
Motherboard Name  	Acer Aspire 8942G

I also attached IOReg with BCM5701Enet and report from AIDA. Maybe it will help.

Just for your information, some old AppleBCM5701Ethernet worked for me. But I refused from it as it often stopped and didn't work after sleep.

I can't find that kext to show you as it was on OSX86 but they changed their site and all of the links disappeared.

 

IOReg.zip

Report8942.htm.zip

Link to comment
Share on other sites

  • 2 weeks later...

Hi guys. I have an Asrock Z77 Extreme4 board, and I just updated from ML to Mavericks. Everything seems to be working except ethernet. I have the BCM57781, and the old kext does not seem to work anymore. I have searched extensively and found this thread as well as the previous. Consequently, I have attempted to patch the AppleBCM5701Ethernet.kext file as explained, but I still cannot see any devices listed in System Report. I did make sure to add the info to the Info.plist as well, so that shouldn't be the problem.

 

When I look at Console, I seem to be getting errors regarding "no compatible dependency" with com.apple.iokit.IOEthernetAVBController. I'm not sure exactly what this means.

 

Any help would be much appreciated. I have attached my current patch. It's version 3.6.9b9, I believe. I also opened it in disassembler, and the calls seem to be patched as described.

 

Thank you!

AppleBCM5701.zip

Link to comment
Share on other sites

 

Nevermind, got it working. See post at http://www.insanelymac.com/forum/topic/292388-109-gm-released/?p=1951276. Thanks!

 

Thanks, it worked with my BCM57785, I only had to add the dev-id to the info.plist, although is 3.6.9b2 it works awesome

 

EDIT: Looks like the driver losses connection when doing heavy activity ( Wi-Fi tethering, torrent downloads, etc)

Link to comment
Share on other sites

Thanks, it worked with my BCM57785, I only had to add the dev-id to the info.plist, although is 3.6.9b2 it works awesome

 

EDIT: Looks like the driver losses connection when doing heavy activity ( Wi-Fi tethering, torrent downloads, etc)

Also it should not work after sleep? I afraid it is almost impossible to solve. Did you try this driver if you want not to lost the connecting during the heavy traffic.

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

Link to comment
Share on other sites

Also it should not work after sleep? I afraid it is almost impossible to solve. Did you try this driver if you want not to lost the connecting during the heavy traffic.

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

Well, it's a known weakness of Apple's Broadcom driver after wakeup. Even my 2011 iMac is affected. At least it recovers the connection after 5 seconds. I'm not sure if this is a hardware problem or related to the driver.

 

Mieze

Link to comment
Share on other sites

Well, it's a known weakness of Apple's Broadcom driver after wakeup. Even my 2011 iMac is affected. At least it recovers the connection after 5 seconds. I'm not sure if this is a hardware problem or related to the driver.

 

Mieze

It seems that I've solved the problem, I manually configured the interface so I disabled AVB/EAV mode and selected the other parameters to 100baseTX and duplex, it solved the problem for me and after sleep it continued working fine, and I tested this on the internet connection of my university campus (100mbps upload and download)

 

Hope this helps, and thanks for the driver! :D

Link to comment
Share on other sites

 Share

×
×
  • Create New...