EX48X_2011_02_20.ROM
====================

Enclosed is a hacked up BIOS for the HP MediaSmart EX485/7 server.
Featuring support for new CPUs, and the ability to actually power down.

md5(EX48X_2011_02_20.ROM)= 5d22bf375eb607e74a692865c2e9303f
sha1(EX48X_2011_02_20.ROM)= 97eafe9caf8bb8b3df7f63bdb691cf269e03928b



Disclaimer
----------

This is NOT an officially supported BIOS, and has had very little testing.

USE AT YOUR OWN RISK.



Instructions
------------

1) Have VGA and keyboard access to your server
 Not sure what settings the BIOS will have on boot.

2) Find a copy of afuwin, afudos, or some other AMI BIOS flashing software

3) Flash _ALL_ blocks INCLUDING BOOT
 We are actually flashing an EX495 BIOS, and its module layout is different
 so you will need to FLASH ALL BLOCKS.
 Failure to do so will brick your server (from experience)

4) ACCEPT the afuwin warning that the CMOS layout is different
 This is re-iterating point three.
 FLASH ALL BLOCKS.

5) Reboot



Changes
-------

This BIOS _IS_ the EX495 BIOS with very minor changes:

* Decreases the hardware monitor register init count from 0x14 to 0x0D
 Additional registers were being initialized for the EX495 which uses a
 newer SCH5147 chipset, and was causing the full fan problem
 Specifically bit one of mysterious register 0x7D sets 100% PWM

 BIOS module 0x1B
  0x1B810: B9 14 -> B9 09   or   MOV CX, 14h -> MOV CX, 0Dh

* Bypassing the CPUID specific hardware monitoring register initialization
 Where the test actually looks flawed, and the EX485 doesn't do it anyway

 BIOS module 0x1B
  0x1B83D: 0F 84 8A 00 -> E9 10 01 00  or  JZ _4000:B4DA -> JMP _4000:B55F

* Removal of the "EVALUATION COPY, NOT FOR SALE" message

 BIOS module 0x1B
  0xFA73: 80 -> 00

* Changed the ROMID to match the EX485's
 Making it clear that this BIOS is EX485/7 specific, and to keep afuwin happy

 


Background
----------

I recently replaced the CPU in my EX485 server with a Celeron E3400.

This CPU was detected as a dual core correctly, but had trouble POSTing until
PECI was enabled, and somehow stopped the server from completely powering
down on shutdown.

So while looking for a solution I discovered a posting by taohat
 http://www.mediasmarthome.com/forum/thread/11977/HP-EX-485-CPU-upgrade-sucessful/?page=24

who had temporarily reflashed with an EX495 BIOS. Resulting in fixing all of
the known issues, and introduced a new one where the chassis fans ran at full
speed.

Which sounded promising... perhaps I can compare the EX495 BIOS with my EX485
BIOS, and work out where the problem is. They have very similar hardware, how
hard can it be?

How hard INDEED.

Queue montage:
* reading of Pinczakko's Guide to AMI BIOS Reverse Engineering
* x86 assembly instructions flying up the screen in IDA disassembler
* re-soldering the cmos serial flash chip
* more x86 assembly instructions flying up the screen

Problem turned out to be with the SCH5127 hardware monitoring registers. Where
bit one of register 0x7D was being set. I have no idea what that register is
for, but the EX485 BIOS doesn't touch it, and now neither does this BIOS ;-)


Thanks
------

taohat   - for testing the EX495 firmware, and posting his findings
TheWiz   - for still having the EX495 BIOS image shared on Dropbox, and sacrificing
           his server for the cause
hey-rays - for having a free version of their IDA disassembler

Everyone else in that mediasmarthome.com thread


- Adaptation
