Slashdot Mirror


BIOS-Approved PCI Cards For Laptops

derek_farn writes "First there were printers that would would only work with vendor annointed ink cartridges; now we have laptops that will only boot with vendor annointed PCI cards. Keeping a list of approved PCI cards in the bios is one way of ensuring that customers renew their maintenance contracts. How else are they going to be able to plug in a PCI card released after the last BIOS update?" My HP laptop is several years old; can anyone confirm this?

6 of 482 comments (clear)

  1. Workaround by Anonymous Coward · · Score: 5, Informative

    # You need an uncompressed copy of the BIOS. The easiest way to obtain this is probably to use phlash16 under DOS with the /BU option. This will write out an uncompressed copy as BIOS.BAK.
    # Find out the PCI vendor, device and subsystem IDs of your card. In Linux, doing lspci -v will tell you this.
    # Open the BIOS file in a hex editor. Find the BCPUSB header (there's an index near the start of the file that contains references to lots of BCP stuff. Ignore the one that appears here). Shortly after this is a set of PCI IDs, split up with 0s. The file is in little endian format, so the first byte in the file is the second byte of the ID. For instance, an IBM Pro/Wireless 2100 is 8086:1043 with a subsystem id of 8086:2551. This will appear as 8680431086805125. Make the modifications to suit your card.
    # Find the string EXTD. The 4 bytes after that are an additive checksum. When all the 4 byte blocks in the file are added up, they must equal 0. Change the checksum as appropriate. At some point I'll probably get round to writing a tool to do this.
    # Reflash your BIOS. Make sure that you use the /CS option to phlash16 in order to check the checksum.
    # If it's worked, your card should now work. If it hasn't, your laptop is probably dead.

  2. This guy is amazing: by Saint+Aardvark · · Score: 5, Informative
    http://www.paul.sladen.org/thinkpad-r31/wifi-card- pci-ids.html

    I came across his site a while back, and holy crap if he isn't hacking his BIOS to get around these limitations. (His page is linked to if you follow a link from TFA, but I figured he deserves more prominence here.)

    Interestingly, this is the same IBM (and HP, for that matter) that we have come to know and love for their help with Linux. I realize they're a big company, full of lawyers and patents and left hands unaware of what the right hand's doing, but I'm still really surprised I haven't heard about this before.

    Anyone know of a blacklist of this sort of shenanigans? I'm the sysadmin where I work, and it'd be great to know what to stay away from -- and to explain to these companies why they've lost our business.

  3. The credit goes to: by the_mighty_$ · · Score: 5, Informative
    --
    VI VI VI - the editor of the beast!
  4. Re:IBM Thinkpads are the same way by h2odragon · · Score: 5, Informative

    There's an easy enough workaround for that.

  5. Re:IBM Thinkpads are the same way by Fluffy+the+Cat · · Score: 5, Informative

    I've disassembled the Thinkpad BIOS and read the code myself. It scans every PCI device and flags any that have a class id starting with "02" (which signifies communication devices). Each communication device is then compared against a whitelist of PCI vendors, device IDs and subvendor information. If it's not on that list, the system will print an "1802: Unauthorized network device detected" error and stop booting. At that point, all you can do is switch off the machine. It's easy enough to fix in the BIOS - thankfully, it's even easier to fix by setting a CMOS bit that disables the check.

  6. This is probably the real issue ... by SalesEngineer · · Score: 5, Informative

    Unlike a regular PCI add-in card, the miniPCI WiFi card(s) in question doesn't contain a PCI option ROM. Like VGA, SCSI or RAID cards, this option ROM configures the device before the OS loads.

    Since the option ROM isn't on the device, the ROM is stored in the system BIOS. When PCI option ROMs are stored in the BIOS, they are associated with the device's PCI "vendor ID" and "device ID". The "hack" described in an earlier post tells the BIOS to look for a different vendor/device ID (which hopefully is compatible with the embedded option ROM).

    Some network adapters require the option ROM for the OS drivers to work, and network booting requires the option ROM so the BIOS can use UNDI/PXE.

    This is a support problem from the notebook manufacturer. They only tested a few adapters, and only have room in the BIOS for one network option ROM. This has nothing to do with "trusted computing" or weird conspiracy theories. If the integrated card can't be upgraded, then USB or PCMCIA devices should be an option.