HP NC107i NIC (BCM5723) NDIS drivers have failed



  • Hi All,

    this is my first post on this forum and I'm very newbie in PFSense and in FreeBSD at all.

    I just purchased HP ProLiant MicroServer (http://h10010.www1.hp.com/wwpc/us/en/sm/WF06a/15351-15351-4237916-4237918-4237917-4248009.html) to make it my primary PFSense based router.  Unfortunately, onboard NC107i Integrated PCI Express Gigabit Server Adapter (Broadcom NetXtreme BCM5723 Gigabit Ethernet PCIe) is not supported by PFSense.
    Furthemore, Broadcom do not provide FreeBSD drivers for BCM5723 (http://www.broadcom.com/support/ethernet_nic/netxtreme_server.php).

    I thought, that I will be able to emulate NDIS drivers using ndisgen tool. I downloaded the latest NDIS drivers from Broadcom home page and created FreeBSD 7.2 developer environment under VMware Player. Then, I used ndisgen tool to generate kernel module, however due to some errors, kernel module has bot been generated.

    Then, I found NC107i Integrated PCI Express Gigabit Server Adapter drivers for Windows 2003 (http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=en&cc=us&prodTypeId=329290&prodSeriesId=3811480&swItem=MTX-28d1c4f37afc496cab39d8fd24&prodNameId=3811481&swEnvOID=1005&swLang=8&taskId=135&mode=4&idx=2) and kernel module b57xp32_sys.ko was generated sucessfully without any error.
    Unfortunately, my joy was very short.

    I issued kldload ./b57xp32_sys.ko and kernel has crashed: "Fatal trap 12: page fault while in kernel mode".

    The same was under PFSense. Do you have any idea how to resolve this issue?



  • What version of pfSense did you try?  pfSense 2.0 BETA has the most up to date set of device drivers.



  • Indeed, pfSense 2.0 BETA5 recognized my NIC. However, I need to work on stable 1.2.3 pfSense release.

    Is there any way to extract NIC drivers from FreeBSD 8.1, compile them under FreeBSD 7.2 and to use in pfSense 1.2.3?

    My NIC was identified by pfSense 2.0 BETA5 during system boot:
    pcib3: <pcibios pci-pci="" bridge="">irq 10 at device 6.0 on pci0
    pci3: <pci bus="">on pcib3
    bge0: <hp nc107i="" pcie="" gigabit="" server="" adapter,="" asic="" rev.="" 0x5784100="">mem 0xfe9f0000-0xfe9fffff irq 10 at device 0.0 on pci3
    miibus0: <mii bus="">on bge0
    brgphy0: <bcm5784 10="" 100="" 1000basetx="" phy="">PHY 1 on miibus0
    brgphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
    bge0: [ITHREAD]</bcm5784></mii></hp></pci></pcibios>

    Here are my NIC hardware information (from pciconf):
    bge0@pci0:3:0:0: class=0x020000 card=0x705d103c chip=0x165b14e4 rev=0x10 hdr=0x00
        class      = network
        subclass  = ethernet
        cap 01[48] = powerspec 3  supports D0 D3  current D0
        cap 03[40] = VPD
        cap 09[60] = vendor (length 108)
        cap 05[50] = MSI supports 1 message, 64 bit
        cap 10[cc] = PCI-Express 2 endpoint max data 128(256) link x1(x1)

    It seems, that I have extract the following files from FreeBSD 8.1:
    /src/sys/dev/bge/if_bge.c
    /src/sys/dev/bge/if_bgereg.h
    /sys/dev/mii/brgphy.c
    /sys/dev/mii/brgphyreg.c
    /sys/dev/mii/miidevs

    and then, compile drivers under FreeBSD 7.2. However, I do not have a knowledge and experience how to compile kernel based drivers from newer release under older FreeBSD release.

    Anyone can help me with this?



  • FreeBSD tend to bump their kernel major version numbers when there is a "major" change to kernel interfaces. It may not be straight forward to compile the FreeBSD 8 bge driver for use on FreeBSD 7.

    Its possible the bge driver in FreeBSD 7.2 won't need any more than the addition of the PCI identification code for your bge device to operate with your bge device.

    I would be inclined to try the binary drivers from FreeBSD 7.3 or FreeBSD 7.4 to see if they work.

    Copy if_bge.ko from the appropriate installation to /boot/kernel/ on your pfSense box. Then load the module by # kldload if_bge and see if the console output shows your bge NIC was recognised. If so, add if_bge_load="YES" to /boot/loader.conf.local to get the driver loaded at boot time. If not, # kldunload if_bge (to unload the driver) then repeat for the other driver version.

    If you are unlucky you could spend hours trying to get your bge NIC working in pfSense 1.2.3. If you don't mind making that investment (perhaps as way of "learning FreeBSD") that probably won't matter. However if you need to get this box in operation quickly you might be better off purchasing a multiport card with NICs supported by FreeBSD 7.2, but there could be a challenge in finding such a card that will fit the available slots in your box.


  • Rebel Alliance Developer Netgate

    If your choices are:

    a. Use 2.0 which is fairly stable and about to hit RC1, and properly supports your hardware

    -or-

    b. Use 1.2.3 with hacked up drivers copied from another source or OS revision

    I don't know about you, but I'd be leaning more toward 'a', since you are likely to introduce your own instabilities into 1.2.3 by going the 'b' route…


Log in to reply