Post

How to fix HP Z840 PXE boot 'NBP is too big' (and a Quadro that hates UEFI)

Fix PXE boot failing with 'NBP is too big to fit in free base memory' on HP Z840 workstations. Legacy BIOS memory limits, Quadro M4000 without UEFI, and the All UEFI Except Video BIOS option that sorted both.

How to fix HP Z840 PXE boot 'NBP is too big' (and a Quadro that hates UEFI)

I had a few HP Z840 workstations to image, a Windows Deployment Services PXE server already set up, and a LiteTouchPE boot image I had already tested. Network boot the lot, deploy the image, move on.. was the plan.

The setup

Imaging one machine from USB is fine. Imaging several that way gets old quickly, which is why Preboot Execution Environment (PXE) is useful: build the OS image once, then boot every machine from a central server over the network.

The problem

Powering on the first Z840, I hammered F9 for the boot menu, selected Network Boot on Ethernet port 1, and waited. PXE talked to the server as usual and the image download looked about to start.

Then an error flashed up so briefly I nearly missed it: NBP is too big to fit in free base memory. Before I could properly read it, the machine had already dumped itself into HP hardware diagnostics.

HP BIOS PXE boot: NBP is too big to fit in free base memory

I ended up filming the boot with my phone just to catch the message. Short, unhelpful, and now stuck in my head.

Trying UEFI

A bit of digging suggested the cause. PXE over BIOS only has a few kilobytes of free base memory to play with. My LiteTouchPE image was 4909MB. Fair enough, that was never going to work.

I tried switching from legacy BIOS boot to UEFI network boot, but those settings were suspiciously absent. I then noticed that Option ROM Policy was set to Legacy, which could explain the missing UEFI settings.

So I changed it to UEFI, expecting that to be the end of it.

HP Computer Setup: Option ROM Launch Policy

Six beeps later

The machine wouldn’t POST.

Instead I got 6 beeps. The HP Z840 manual calls that a ‘Pre video error’, meaning GPU or motherboard. I tried a CMOS battery flush and cleaned the dusty Quadro with contact cleaner. Still nothing. Flipping one BIOS setting and suddenly I was wondering whether I’d killed a perfectly good workstation.

I had an identical box next to it, so I started swapping parts to compare. Hours of troubleshooting later, having also soft-bricked the second system along the way (yes, two machines in one day), it became clear this wasn’t a failed motherboard.

The Nvidia Quadro M4000 is from 2015. It had been fine in these workstations for years, but it doesn’t support UEFI boot. From that awkward stretch of years when UEFI support on GPUs was still hit and miss.

Nvidia Quadro M4000

The fix

After unpicking my own BIOS mess, I spotted the option HP had put there for exactly this: just under Option ROM Policy ‘UEFI’ sits ‘All UEFI Except Video’.

That PXE boots over UEFI so the image fits, whilst leaving the graphics card in legacy mode so you don’t get the 6 beeps.

The machine came up. PXE negotiated again, and LiteTouchPE downloaded without complaint.

UEFI PXE boot: WDS Boot Manager

Conclusion

A PXE job that should have taken minutes took most of an afternoon because a 2015 Quadro and a full UEFI Option ROM Policy do not mix. The fix was already in the BIOS list: ‘All UEFI Except Video’. I just needed to scroll one option further down.

Much better than writing off two workstations over a boot policy. Especially in this economy :)

References

This post is licensed under CC BY 4.0 by the author.