Jump to content

BCM5722, BCM5754/M, BCM5755/M, BCM5787/M and BCM5906/M NIC driver (32/64-bit)


  • Please log in to reply
237 replies to this topic

#21
adlan

adlan

    InsanelyMac Protégé

  • Members
  • Pip
  • 8 posts
  • Gender:Male

In trying out the driver, I noticed that, no matter what I did, I could not get a 1000FD connection. Even if I forced it and my switch is advertising it, the PHY would only set to half-duplex. I would see this in the output of ifconfig:

media: autoselect (1000baseT <half-duplex>)

When forcing:

media: 1000baseT <full-duplex> (1000baseT <half-duplex>)

I took at look at the code and found spots in Register.h that look to have accidentally had HD and FD bits swapped according to the BCM5722 Programmer's Guide (I found some in 10, 100, and 1000 modes for advertisement and negotiation, as well as mode set), and the section of PHY.cpp that sets the PHY mode was setting 1000HD register bits for both 1000HD and 1000FD mode. I fixed those and added my network controller to the model list (0x1691). Upon testing the modifications, the card is recognized and model name is output in the system logs, and 1000FD appears to be set correctly.

media: autoselect (1000baseT <full-duplex>)

My switch also reports 1000baseT FDX operation.

I attached the modified files below in a zip.

Please feel free to double check any changes I made. I'm not really a programmer, but I know enough to be able to follow what's happening in source code, so hopefully I didn't break anything. But it appears to work correctly. Thanks so much for creating this driver! I was ripping my hair out trying to get my card to work in Lion with AppleBCM5701Ethernet to no avail, as the previously hex edited driver that worked in SL had unresolved symbol linking errors in Lion.


oh thanks! I've confirmed with the programmer's guide on those registers.
damn, silly mistakes, how could I get those things mixed,

I'll review the changes, and bring it in after testing it.
again, thanks for your time and effort on this :D

* p/s: I have less time for this right now and actually didn't boot osx for over 2 months now, sorry if it takes a long time for my reply, I do check the forum regularly though

#22
Blame73

Blame73

    InsanelyMac Protégé

  • Donators
  • 80 posts
  • Gender:Male
  • Location:Italy
Thank you so much, this kext works on my Acer Aspire 5685 (BCM5787M) on both Snow Leopard (10.6.8) and Lion GM(10.7.0)!

Good job!

#23
llauqsd

llauqsd

    InsanelyMac Geek

  • Donators
  • 137 posts
  • Gender:Male
  • Location:Canada
The driver works great for me in Lion GM with a 5754 [14e4:167a], except it disconnects after waking from sleep (says cable disconnected). Kextunload and then kextload allows me to regain network functionality.

I've also posted about the issue on the github.

Thanks!

#24
Stratus Fear

Stratus Fear

    InsanelyMac Protégé

  • Members
  • PipPip
  • 51 posts
  • Gender:Male

oh thanks! I've confirmed with the programmer's guide on those registers.
damn, silly mistakes, how could I get those things mixed,

I'll review the changes, and bring it in after testing it.
again, thanks for your time and effort on this :angel:

* p/s: I have less time for this right now and actually didn't boot osx for over 2 months now, sorry if it takes a long time for my reply, I do check the forum regularly though


The only other thing I noticed was a couple of register definitions that were using reserved bits, and one for powering down the device was using a bit that would require a PCI bus reset and not just a software command to power back up (PHY IDDQ, if my memory serves, it was off by only one bit, 20 vs 21 i think). If I was wrong in changing those, of course revert those changes :blink:

I also notice someone posted an issue in your repo re: ifconfig en0 down and ifconfig en0 up. When I do the first command, my machine actually KPs for some reason. I'll add the note to that issue.

#25
iGismo

iGismo

    InsanelyMac Protégé

  • Members
  • Pip
  • 19 posts
Hey, do you think you can add support for BCM5784 please?
Can't seem to find a working kext for it

Thanks!

#26
Stratus Fear

Stratus Fear

    InsanelyMac Protégé

  • Members
  • PipPip
  • 51 posts
  • Gender:Male
So I did notice that if I put a large amount of data through the card for ten minutes or so (say, Time Machine, for example) it simply stops sending and receiving data until I unload and reload the kext. I don't know if this issue is particular to my model or what. Nothing seems to be output in the logs about it, either. Hmm...

#27
amfbluffer

amfbluffer

    InsanelyMac Protégé

  • Members
  • Pip
  • 2 posts
adding that the Dell 580 MT has a broadcom onboard NIC w/ Device id of 1691

original how-to guide had link for BCM5701 which worked thru SL 10.6.7
upgraded to lion and would fail to load kext on boot.
had tried fixing with kext utility to reset permissions which did not work.

replaced with this one, modified info.plist to show 1691 , reset oermissions and worked on first try..

spent whole day looking for this..

thanks again..

#28
Bungo

Bungo

    InsanelyMac Sage

  • Coders
  • 308 posts
  • Gender:Male
Hi adlan,
Any chance for 57710 driver, especially Broadcom 57710 Single Port 10GbE NIC, Copper CAT6 PCIe-8 by Dell?

#29
valyno

valyno

    InsanelyMac Protégé

  • Members
  • Pip
  • 29 posts
  • Gender:Male
  • Location:France
Hi

Thank you for this great work!!
You saved my day!!!!

I am running a n680i mobo with NIC BRCM5754 (Dell XPS 720) and the kext is running perfectly with 10.6.4 and then with 10.6.8 combo update!!!!

#30
vjun

vjun

    InsanelyMac Protégé

  • Members
  • Pip
  • 4 posts
hello adlan,
i have tested the latest kext you gave and it works on my Lion 10.7 64 bit.
I can't copy/slow access to SMB servers before using your kext, but now it's all good.

Thanks!

#31
valyno

valyno

    InsanelyMac Protégé

  • Members
  • Pip
  • 29 posts
  • Gender:Male
  • Location:France

Hi

Thank you for this great work!!
You saved my day!!!!

I am running a n680i mobo with NIC BRCM5754 (Dell XPS 720) and the kext is running perfectly with 10.6.4 and then with 10.6.8 combo update!!!!

Hello,

I followed verdant's guide to prepare my sl10.6.8 running in the 32 bits mode to run in the 64 one.
My system is now 64 bit enabled, but it canno't connect to internet anymore!!!
I check:
- the kext is loaded
- I repaired the permissions with kext wizard

The card is detected, the mac address is correctly reported, but the dot stays on yellow...
In verbose mode, i have an error message telling me that the link canno't me maintained. I will report here the full message from the logs...
If i understand correctly kext wizard, the kext is 64 bits capable...
Any idea? Missing dependences?
I changed my bootloader from bootSL123sata for a custom cd made with bootcdmaker based on Chameleon RC5 and installing the kexts recommanded by verdant to run lion on nforce mobos...

#32
verleihnix

verleihnix

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 174 posts
  • Gender:Male
Hi adlan,
Thank you very much for your great work.

Where to get the kext with the latest fixes?

cheers
verleihnix

#33
Bense

Bense

    InsanelyMac Protégé

  • Members
  • Pip
  • 27 posts
  • Gender:Male
  • Location:South Carolina

So I did notice that if I put a large amount of data through the card for ten minutes or so (say, Time Machine, for example) it simply stops sending and receiving data until I unload and reload the kext. I don't know if this issue is particular to my model or what. Nothing seems to be output in the logs about it, either. Hmm...


I have noticed the exact same.

#34
madmatt

madmatt

    InsanelyMac Protégé

  • Members
  • PipPip
  • 60 posts
Hello guys,
just wanted to tell you that the driver is working also with a BCM5761e (Del M6400 Covet) by adding the pci id 14e4:1680 to the Info.plist

Working in Lion, haven't tested rellay big transfers (10GB at the moment), willl try to overload the nic and see what happens


Thanks and Regards

Mattia

#35
madmatt

madmatt

    InsanelyMac Protégé

  • Members
  • PipPip
  • 60 posts

Hello guys,
just wanted to tell you that the driver is working also with a BCM5761e (Del M6400 Covet) by adding the pci id 14e4:1680 to the Info.plist

Working in Lion, haven't tested rellay big transfers (10GB at the moment), willl try to overload the nic and see what happens


Thanks and Regards

Mattia


.. and I am happy to add also that my Broadcom BCM57780 (integrated on a Dell precision T1500 workstation motherboard) is working as well:

pci id: 14e4:1692
description: 02:00.0 Ethernet controller: Broadcom Corporation NetLink BCM57780 Gigabit Ethernet PCIe (rev 01)

This is a diff against the latest version of the driver:
git diff		  
diff --git a/BCM5722D.cpp b/BCM5722D.cpp
index 0f54763..f5afd66 100644
--- a/BCM5722D.cpp
+++ b/BCM5722D.cpp
@@ -37,6 +37,8 @@ static const struct SupportedDevice
   { DEVICEID_BCM5906,  "BCM5906 NetLink (TM) Fast Ethernet" },
   { DEVICEID_BCM5906M, "BCM5906M NetLink (TM) Fast Ethernet" },
   { DEVICEID_BCM57788, "BCM57788 NetLink (TM) Gigabit Ethernet" },
+  { DEVICEID_BCM57780, "BCM57780 NetLink (TM) Gigabit Ethernet" },
+  { DEVICEID_BCM5761E, "BCM5761E NetLink (TM) Gigabit Ethernet" },
   { 0, NULL }
 };
 
diff --git a/BCM5722D.xcodeproj/project.pbxproj b/BCM5722D.xcodeproj/project.pbxproj
index 257242b..819be7b 100644
--- a/BCM5722D.xcodeproj/project.pbxproj
+++ b/BCM5722D.xcodeproj/project.pbxproj
@@ -135,7 +135,6 @@
						isa = PBXProject;
						buildConfigurationList = 1DEB91DD08733DB10010E9CD /* Build configuration list for PBXProject "BCM5722D" */;
						compatibilityVersion = "Xcode 3.1";
-					   developmentRegion = English;
						hasScannedForEncodings = 1;
						knownRegions = (
								English,
diff --git a/Info.plist b/Info.plist
index cb15b33..2af72c6 100644
--- a/Info.plist
+++ b/Info.plist
@@ -44,6 +44,8 @@
								<string>pci14e4,1693</string>
								<string>pci14e4,1712</string>
								<string>pci14e4,1713</string>
+							   <string>pci14e4,1680</string>
+							   <string>pci14e4,1692</string>
						</array>
						<key>IOProviderClass</key>
						<string>IOPCIDevice</string>
diff --git a/Register.h b/Register.h
index d9b9e44..4dfff69 100644
--- a/Register.h
+++ b/Register.h
@@ -31,6 +31,8 @@
 #define DEVICEID_BCM5906				  0x1712
 #define DEVICEID_BCM5906M				 0x1713
 #define DEVICEID_BCM57788				 0x1691
+#define DEVICEID_BCM5761E				 0x1680
+#define DEVICEID_BCM57780				 0x1692
 
 #define PHYID_MODEL_5754_5787			 0x0E
 #define PHYID_MODEL_5755				  0x0C


Ps: I have tested the BCM5671E with sustained transfers of up to 100GB without any slow down or interruption, haven't tried waking up form sleep since sleep doesn't work with the M6400, multiple ifconfig up and down work without any issue so far.

I also tested the BCM57780 with 10GB+ of sustained transfer and so far it has worked without interruptions/slowdowns and transfer rates of around 60MB/sec :D

#36
jriker1

jriker1

    InsanelyMac Protégé

  • Members
  • Pip
  • 39 posts

Hello guys,
just wanted to tell you that the driver is working also with a BCM5761e (Del M6400 Covet) by adding the pci id 14e4:1680 to the Info.plist

Working in Lion, haven't tested rellay big transfers (10GB at the moment), willl try to overload the nic and see what happens


Thanks and Regards

Mattia


In addition to Mattia. I am in the same position however as he has mentioned to me in another thread, the network cable has to be connected on startup. When it boots you see the mac address applied and shows in the network config page and works. If it's not connected and you boot it loads with all zeros and won't get DHCP. If I do "sudo ifconfig en0 ether <mac address>" it then works but still shows zeros in the mac address in the network config. Either situation the card is detected just with a network cable connected on boot it's automatic without a cable plugged in you have to manually set the mac address to get it working. Had a driver or actually multiple drivers in Snow Leopard that always set it right.

JR

#37
valyno

valyno

    InsanelyMac Protégé

  • Members
  • Pip
  • 29 posts
  • Gender:Male
  • Location:France

Hello,

I followed verdant's guide to prepare my sl10.6.8 running in the 32 bits mode to run in the 64 one.
My system is now 64 bit enabled, but it canno't connect to internet anymore!!!
I check:
- the kext is loaded
- I repaired the permissions with kext wizard

The card is detected, the mac address is correctly reported, but the dot stays on yellow...
In verbose mode, i have an error message telling me that the link canno't me maintained. I will report here the full message from the logs...
If i understand correctly kext wizard, the kext is 64 bits capable...
Any idea? Missing dependences?
I changed my bootloader from bootSL123sata for a custom cd made with bootcdmaker based on Chameleon RC5 and installing the kexts recommanded by verdant to run lion on nforce mobos...


Update !
I followed Verdant's advice: I removed my pci wifi card, and my pci Audigy card. connection was back with my NIC card.
Next step: Lion install!!!!

#38
Edward J

Edward J

    InsanelyMac Protégé

  • Members
  • Pip
  • 13 posts
How did you get it to work? Anything not mentioned here? Did you add PCI flags to a plist somewhere?

EDIT: D'oh, yep, I added the 1691 flag to Info.plist and it worked with the standard Apple driver. If I need to use this one I'm sure it'll be just as easy to get working...

Works great on 10.7 64-bit with a BCM57788 (14e4:1691). Thanks!



#39
slingo

slingo

    InsanelyMac Protégé

  • Members
  • Pip
  • 1 posts
Thanks!
Precision M6300 Broadcom Netxtreme 5756M works by adding pci id 14e4,1674 to the Info.plist file of your kext, however it appears that it attempts to connect even without a network cable plugged in and so it needs to be disabled and re-enabled upon plugging a cable in.
Tested on 10.7.1 Lion

#40
m4f1050

m4f1050

    InsanelyMac Protégé

  • Members
  • Pip
  • 29 posts
DELL Workstation 390 works. 14E4-167A





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy