HOWTO: Update You HP BIOS From Linux

Linux users consistently get the short end of the stick when it comes to BIOS updates. Oftentimes dmesg will show us that something is wrong in the BIOS and we have no way to fix it. This is especially infuriating when you have a laptop with no CDROM drive and it doesn’t like to boot off usb because of… a bug in the BIOS. This is the HP 6730b laptop with the 00D BIOS. It’s a disaster of a monumental scale. It’s a nice laptop when it works, but oftentimes with fedora or suse (or any other distro which uses the intel driver rather than vesa) the screen “flickers” and the laptop runs like junk until you CTRL+ALT+F2 it and back again a few times. The dmesg log will be filled with errors about intel_iommu and the kernel will report a crash.

Officially the problem is a buggy BIOS, what’s actually happening is the iommu register is being mapped to ‘0’ rather than any actual address. This means the CPU has it, the BIOS maps it incorrectly and then tells the OS to use ‘0’ as the address in memory. If the kernel didn’t do sanity checking your box would crash. As it stands it simply causes an interrupt (the screen flashing) and then it’s caught.

HP’s site is amazingly bad and offers up three options – Bootable CD, USB and floppy. The laptop won’t USB boot, because of the 00D BIOS. The laptop doesn’t have a floppy drive, and who does anymore? The laptop will boot off a CD, but this requires you to actually find a CD. I tried a DVD and booktyped it as a CD just for grins and it didn’t work. How are we supposed to update this crap? Install windows?

The workaround: If you don’t want to do this, the cheap workaround is to turn off “virtualization technology” in the BIOS and set intel_iommu=0 in the grub.conf. You will lose access to virtualization accelleration. It will still cause kernel problems, but it will happen much less frequently. This also fixes the problem with sleeping unless the box had the problem when it started up.

The fix: Ready to take the plunge? Get yourself an HP account first. Registration is free.

Install syslinux. In fedora, this is yum install syslinux and it puts in in /usr/share/syslinux. I would also install the perl stuff if you plan on doing a lot of servers with this. If HP continues this sort of crap for servers that they did with laptops, plan on doing this – a lot.

Grab sp50750. There’s actually an F17 BIOS, but it only affects Windows 7 and appears to have driver updates also.  If you want that one instead, use sp51317. As of right now the sp51317 download link doesn’t work, I believe they pulled it.

At this point I used wine to unpack the executable and I used rar to dump out ROM.CAB. Grab the ROM.BIN file and tuck it somewhere safe.

Grab sp50751. This is the F16 BIOS but this is for a different laptop. Do not apply this BIOS to your laptop. You have been warned. I didn’t try to apply the BIOS from that link to this laptop.

When you unpack that one, you will notice an ISO directory. You want to go in to that directory and mount the ROM.ISO – mount -o loop rom.iso tmp will mount the iso to a tmp directory. Create tmp first if it doesn’t exist.

Inside of your tmp directory (which is really the iso), you will see a /boot directory. Inside of that directory is a release.img file. Now we’re getting somewhere! You can run file release.img and see that it’s actually a floppy disk. Sweet! Copy this floppy image out of the ISO.

Mount up the floppy image. mount -o loop release.img tmp will do it, just like the CD. The difference is we can read and write to the floppy image while we can’t do that to a CD image. Doing an ls into our floppy image shows a 68PDD.BIN file, which is the BIOS. How am I so sure? It’s the only BIN file in there. Copy your ROM.BIN file we extracted earlier over the 68PDD.BIN file. Hit yes to overwrite it and then unmount the image.

WHAT DO WE DO WITH IT?

We can boot from it!

Copy release.img and /usr/share/syslinux/memdisk to /boot.

Edit /boot/grub/menu.lst and add the following:

title Floppy Disk Image
root (hd0,0)
kernel /memdisk
initrd /release.img

Reboot and select “Floppy Disk Image” from the grub menu, and it will boot into freeDOS and flash F16 to your laptop! Next time you boot you’ll have the new BIOS after it does some tests.

Proof?

[    0.000000] WARNING: at drivers/pci/dmar.c:633 warn_invalid_dmar+0x7d/0x8d()
[    0.000000] Hardware name: HP Compaq 6730b (SERIAL NUMBER)
[    0.000000] Your BIOS is broken; DMAR reported at address 0!
[    0.000000] BIOS vendor: Hewlett-Packard; Ver: 68PDD Ver. F.16; Product Version: F.16

New F16 bugs! Good thing HP fixes them all!

Advertisements

This is What Sells Dells!

(Ticket Opened)…

The problem is definitely in something which changed in the PXEs.
We have a 460, 465 and a 685 and they all do the same thing – the PXE attempts to talk to the DHCP relay and not the PXE server.
As far as versions and hardware are concerned –

HP BL465c G7:
PXESelect is 2.102.517.7
BIOS is A19 (12/20/2010)
NICs is HP NC551i “Dual Port FlexFabric 10Gb”

HP BL460c G7:
PXE-2.0 BIOS v3.102.517.7
BIOS I27 (12/01/2010)
NIC is HP NC553i 10Gb 2-port FlexFabric Adapter

HP BL685c G7:
PXE-2.0 BIOS 2.102.517.7
BIOS is A20 (12/20/2010)
NICs is HP NC551i “Dual Port FlexFabric 10Gb”


FR: seema_vasudevan
HI Joshua
This is regarding the case ID 4628825693.
AS mentioned in the case regarding the  PXE boot.
To isolate the issue further , please update the NIC firmware and check if the issue continuous
The link to update the driver is
Linux FCoE/FC Driver Kit – Min LOM and CNA FW 2.702.485.4
http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=en&cc=us&prodTypeId=329290&prodSeriesId=4324629&prodNameId=4324630&swEnvOID=4004&swLang=8&mode=2&taskId=135&swItem=co-88680-2
To receive further assistance or to provide your inputs on this case, please visit our IT resource center at: http://www2.itrc.hp.com/service/mcm/homepageRequest.do  instead of replying to this email.
I look forward to your reply.
Regards,
Seema V | Technical Solutions Consultant | HP e-Solutions


From: knarrj@xxxxxxxxxxxx.com
To: HPSupport_Global@hp.com
Sent: 4/21/2011 6:22:23 PM
Subject: Re: <CASE:4628825693>

Lets have a different technician take a shot at this one.

Thanks
Josh

HP 2600N Color Laser Linux Drivers

I think I’m one of two idiots who use Linux as a desktop. I’ve been flirting with this for years and finally when my current PC got too old for videogames, it finally happened that I realized I has no reason to run windows and put up with all the crap that goes with it. The primary attack venue is the browser, but even TurboTax.com works in FailureFox 3.x, so as far as I’m concerned the open source stuff scratches my itch. Since it’s my bread and butter, it also behooves me to use it at home so I can get it into weird places there too.

One of the majorly lacking things in Linux are “Win Printers”, or printers that eschew standards like “LPT” or “PostScript” and instead use Windows GDI. There’s been various efforts to reverse engineer it but the spec is intentionally ambiguous so that you can add features to the wire. HP does it with their “ink protocol” for telling the PC how much ink/toner/crayon is left, and basically any other transport from the printer to the PC is winprint only. PostScript lets you specify “Color” or not, and “tray 3” or “A4 paper”, but there’s no provisions to the best of my knowledge for talking back and forth. Up until now there’s been hacks to get winprinters to talk to Linux but it’s been… hacky. The foomatic print driver was it.

Unfortunately, this is the problem with open source. The guy is a bit of a whiney bitch (seriously, don’t give it away if you want money for it), and the level of polish was low. It requires a fairly involved installation and it didn’t play well with CUPS or Samba Print. In short, it was a mess, it was tough to install, the UI was rough, and as of SuSE 10 it didn’t work. I run OpenSuSE 11.1 here, so whenever I needed to print something I either e-mailed it to myself and printed it at work or fed it to the printer after picking up my mail in windows. I figured he would fix it at some point but it looks like he’s decided he’s not going to maintain it without money, so we were all screwed. Finally one day the lightbulb went on.

Gee I download Linux drivers from HP’s enterprise portal all the time, I wonder if the printer is in the enterprise portal?

DING DING DING, A WINNAR APPEARS!

You have to click through quite a bit but eventually you end up at HPLIP Open Source. And frankly, the HP driver is a lot nicer. For one, it covers printing, scanning and faxing, and for two the UI actually works well. No offense to anyone who actually makes their money out of this but if your open source product gets beat in both functionality and ease of use by the equally free but not open source product… There’s very little reason to continue working. For the curious, it works exactly the same way the ATI/nVidia loader works where the driver is really a loader for a “binary plugin” which handles the communication. Since the plugin is actually the zStream protocol HP uses, any ZJIS/HPLIP printer works. Which is all of them. This is why faxing and scanning also suddenly works in Linux. Good show HP!

Now, there’s one bug I ran into. If you choose “automatic install” it tries to call YAST to uninstall an older version of itself, then it gets hung up with YAST exits with a 1 (error) to indicate it can’t uninstall something which isn’t installed. Simply choose “manual”, spell out what you want out of the installer and when you’re prompted “should we uninstall the old driver?” tell it “no”. The GUI will come up shortly which automatically finds the printer (even on the network!) and downloads the correct plugin. All the settings normally available in the Windows driver are available in the Linux driver (color, black settings, halftoning, picture quality) and the toner monitor works also. All in all minus the yast bit it’s quite nice.

The HP 2600N shows up on ebay on the cheap. They were popular among the soho crowd for awhile then newer printers printed faster so these were discarded. I got mine for a penny from a liquidator and ended up paying $80 to ship it since it’s heavy as hell. If you do buy one, buy a sealed one so it comes with the toner. Mine wasn’t, and it didn’t come with toner carts, which is another $100 out the door for the HP ones or you can get them for $10 a pop (times four, black yellow cyan magenta) from a refiller. Or you can refill your own, the kits are cheap and the ones from the refiller are pretty rough.

Now, the only thing that sucks is the printer will complain about the toner being low, especially if you use non-HP products. Be sure to use the TONER OVERRIDE command and suddenly your toner will last twice as long.

All in all if you can get past the rough spots, and it’s pretty easy compared to setting up a lot of other stuff, the HP 2600N is a strong buy for network printing and Linux needs.