Hardware Issues

This page contains some issues that people had while using gpxe.

3Com 3C905-TX Card

This card is known to not support gpxe while using the MBA v4.0.

Symptoms

gPXE loads, negociate the link speed but the DHCP doesn't grab any valid adress even if the DHCP server make an offer. This is due to a buggy PXE rom, this usually happens on the MBA (Master Boot Agent) v4.0.

How to Fix

3com deliver a firmware upgrade which used to live here; however the upgrade is apparently no longer available direct from 3Com but copies can still be found on other sites. This file has to be decompressed and run in a real dos mode.

Then run mbaflash.exe

If you don't have any dos system or floppy (this become more & more rare theses days), you can use this floppy disk image. Then add an entry in your pxelinux configuration file like :

LABEL flash
 KERNEL memdisk
 APPEND dos.img

The dos.img file must be put, in this example, at the root path of your tftp server.

Then boot your PXE and call the flash entry. The freedos environment loads and then call mbaflash.exe

After upgrading

The MBA version is now upgraded to v4.30, gpxe can now be loaded.

Alternate strategy booting MEMDISK from GRUB

Additional notes from a user: In this instance, I could not use a 3com 3c90 to pxe boot, at all, it would just hang, even though I flashed from 4.00 to 4.30 using memdisk, I still could not pxe boot, so somehow I found myself a newer mbaflash.exe This was all done on Debian.

Download a newer mba for the 3com cards (4.31)

curl -O ftp://ftp.hp.com/pub/softlib/software1/ob656/ob656en/3cmba431.exe

Extract with 7zip:

7z x 3cmba431.exe

The first 32 bytes of firmware.img is just the COPYDISK header, so skip it

dd if=firmware.img bs=32 skip=1 of=dos.img

If you can boot from a disk on the machine that has the card you're trying to flash, that would be good, since you can't PXE boot in theory. Hopefully you're using some Linux and you have syslinux and grub2 installed.

Add memdisk:

sudo cp /usr/share/syslinux/memdisk /boot/

Add the dos diskimage you're going to be flashing from:

sudo mkdir /boot/images
sudo cp dos.img /boot/images

Update grub:

sudo grub-update

Now you can theoretically reboot using memdisk to boot into DOS to flash the 3c90 rom that you couldn't pxeboot from before

Nvidia nForce

nVidia chipsets don't view all devices on the PCI bus in a direct fashion, and there's a bus driver (nvnetbus) necessary to make the network adapter appear as a common PCI Ethernet device on the bus.

Booting Windows XP/2k/etc using the iSCSI / WinAoE driver will not work, due to a missing service (nvnetbus) not being started. While this is not a hardware issue, nor a problem with gPXE, it is included here for informative purposes.

Symptoms (iSCSI)

After installing Microsoft iSCSI Boot initiator and executing sanbootconf (and thus making sure the NVENETFD service is started at boot) booting the image over iSCSI will result in BSOD (0x0000007b). This happens even though the NVENETFD service is loaded during boot.

This was tested on Windows XP x64.

Symptoms (AOE)

After installing WinAoE and making sure the NVENETFD service is started at boot, booting the image over AoE will work well until aoe32.sys is loaded. Upon loading aoe, the system will hang without any network activity. This happens even though the NVENETFD and nvnetbus services are loaded before aoe32.sys.

This is tested on Windows XP and Vista, both 32-bit. Not tested using 64-bit, but the problem is likely to be the same.

How to Fix

the nvnetbus service has to be started before NVENETFD:

in order to do this, the user has to be familiar with CurrentControlSet\Services Subkey Entries (http://support.microsoft.com/kb/103000) and with CurrentControlSet\Control\GroupOrderList Entries (http://technet.microsoft.com/en-us/library/cc976063.aspx).

overview of the steps required to make nvnetbus being started before NVENETFD:

1. navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NVENETFD:
  a. remember the value of Tag (priority) and increment it by 1
2. navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nvnetbus:
  a. set Group to "NDIS".
  b. set Start to 0.
  c. set Tag to the original tag of NVENETFD.
3. navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GroupOrderList\NDIS:
  a. increment the number of Tags (first four bytes), and add the new tag we just added for NVENETFD at the end of the list (you're adding four more bytes at the end).

* Another option is to use the RIS driver for the nForce card (not verified). The simplest fix is to simply use another network adapter.

Intel e1000

Some Intel e1000 cards appear to have problems if the gPXE image burned into their rom is larger than 64kb, even though the eeprom size is 128kb. This is problematic as the default e1000 rom images are around 70kb. It is unknown if it's really a hardware problem(the standard PXE ROM contents seem to use the whole 128kb without problems). It could also be a problem with a specific IBAUTIL.exe version.

Symptoms

IBAUTIL.exe will not complain after flashing and will report a successful flash. After the reboot gPXE does not start.

How to Fix

Get a gPXE image smaller than 64kb. You can achieve this by disabling unneeded features in src/config/general.h iSCSI support, for example, is a good candidate for disabling, as it uses a lot of space.

Realtek RTL8111D

Symptoms

gpxe undionly driver v1.0.1 hangs when “initialising devices…” (although the chipset declares Intel UNDI v2.1 capability upon boot).

How to Fix

  • Buy another NIC. Really. I tried two and both did never work reliably (link problems – either no link detected or DHCP answers missed – could be a firmware issue, but how do I fix the firmware when I need to boot with that NIC??).
  • The undionly solution seems to be broken with that chipset. Use r8169 driver instead.

Broadcom NetXtreme II BCM 57711 (10 Gbit)

Network card in HP Proliant BL460c G6.

Symptoms

gPXE with undionly.kkpxe driver fails to access network.

How to Fix

Use undionly.kpxe instead. Please note that undionly.kpxe does not support cached DHCP settings, i e “set use-cached 1” will not work.