AsRock, Aptio, AMI BIOS update crap

There haven’t been some updates for quite a while. But that’s not because I abandoned this site, but rather because I fried my mainboard when a BIOS update failed.

Of course I have been up- and downgrading my BIOS a lot which always is kind of risky – even more when you are using patched firmwares / BIOS’es. ‘Funny’ thing is it all went wrong with the BIOS Instant Flash feature and with a non-patched BIOS. And here is what happened:

I had all my flash files prepared on my MicroSD card. But it turned out named SD card had some corrupted sectors (I wasn’t aware of this when doing my BIOS flash unfortunately!)
So I did a regular BIOS update with the BIOS Instant Flash feature and it all (seemingly) went ok. When asked for a restart at the end, I confirmed – thus sending the motherboard into oblivion.

So learn from it: the BIOS Instant Flash feature doesn’t do any checking on read errors or corrupt sectors on your media. Also it doesn’t do any hashing (crc, md5, etc) to ensure a correct reading of data and flashing consequently ! So before flashing you should make damn sure your media is free of any errors and your files are ok (unfortunately AsRock also doesn’t provide a SHA-1 checksum of their downloads)

Meanwhile I got my motherboard replaced and already downgraded the BIOS, not before checking my USB stick is without any errors – what can take some time on a 32GB stick.

By the way AMI seems also to have problems with their website and https certificate, so theoretically also their webpage could be corrupted ๐Ÿ˜‰

IMG_0079

Advertisements

How to downgrade E3C226D2I (from 3.30 to 2.10)

ASRock provides a warning on downgrading:

Due to BIOS code major upgrade to support Broadwell CPU feature, this BIOS update (P3.xx and after) will be backward compatible to Haswell CPU (E3 v3), but wonโ€™t be able to downgrade to P2.xx versions after upgrade to P3.xx BIOS.

For me the steps below worked and so far I have not experienced any issues in doing. But proceed at your own risk.

1) Create a FAT32 formatted USB DOS boot stick.

2) Get 2.00 Update BIOS Under DOS version from ASRockRack: http://asrock.pc.cdn.bitgravity.com/BIOS/Server/E3C226D2I(2.00)DOS.zip

3) Extract the ZIP File and copy the EXE file on the USB DOS boot stick. Then boot with it.

4) Start the DOS BIOS Updater with /X parameter: C:\226D2I~2 /x

Parameter /X ignores the current BIOS ROM ID

5) The updater will remain some time (approx 20 -30 secs) at 75%.

IMG_9675-0

After this it will proceed. Just wait for some time to finish.

IMG_9676-0

6) Restart and go into the BIOS. You will see it is downgraded to 2.00

IMG_9681-0

7) Then use the BIOS Instant Flash feature to upgrade to 2.10. I UEFI patched version 2.10 before.

8) Restart

IMG_9679-0

(if you compare above 2 pictures system time you will see it took approx 2 minutes, including booting and going into BIOS again ๐Ÿ˜› )

Warning: 226D2IL3.30

I just updated to the latest Bios (3.30) on my E3C226D2I and since then OSX stops booting at pci configuration begin. Or even with CPU Sensor issues.

OSXeon:UEFIPatch_0.3.8_osx userone$ ./UEFIPatch ../226D2IL3.30
patch: replaced 10 bytes at offset 114Ah 75080FBAE80F89442430 -> EB080FBAE80F89442430
Image patched
OSXeon:UEFIPatch_0.3.8_osx userone$

IMG_9442

UEFI Patch & ASRock E3C226D2I

To get OSX booting on the ASRock E3C226D2I you can either patch the OSX Kernel (Power Management Patch) or you can patch the BIOS err… UEFI Firmware. I have chosen the latter and it works straight forward. Specifically what this Firmware Patch does is to prevent locking MSR 0xE2 and therefore make the system compatible with native OS X power management, wich nowadays is integrated in the Kernel.

The tools is available on GitHub and the Firmware is available here.

This is how you patch your firmware:

Xeon:~ userone$./UEFIPatch 226D2IL2.10 
patch: replaced 10 bytes at offset E82h 75080FBAE80F89442430 -> EB080FBAE80F89442430
Image patched
Xeon:~ userone$

And you will get a file: 226D2IL2.10.patched, which you shall flash to your machine using the Instant Flash function during boot or in the BIOS.

Unfortunately after, you have to add clover again. So go into the UEFI Shell.

Shell> fs0:EFI\CLOVER\CLOVERX64.efi

And go the relevant menu to add the clover entries. Thats it folks !

UEFI booting

Well well, getting UEFI booting to work is definitely giving me a headache. On the disk below (disk0) I installed Clover in the EFI partition disk0s1 of my Yosemite 10.10.1 install but it doesn’t show up in the boot menu:

Last login: Sat Nov 29 20:27:01 on ttys000
Xeon:~ userone$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            999.3 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
Xeon:~ userone$

Well the immediate solution is to boot into the Build-in EFI Shell and invoke this command – and even this took my a while to find out.

Shell> fs0:EFI\CLOVER\CLOVERX64.efi

And then in the Clover options choose:

  • Add as UEFI boot option.
Colver Boot Options

Colver Boot Options

But I wanted to know whats the cause and if its related to my BIOS (… err UEFI firmware to be correct). So I installed Fedora 20 on anther disk. Well in difference to Colver, Fedora shows up perfectly fine as boot option directly:

IMG_2324If I run the Built-in EFI Shell I get the following output with the “Fedora” disk plugged in:

"Fedora Disk" EFI ShellOr as text:

EFI shell version 2.31 [4.654]
Current running mode 1.1.2
Device manning table
fso :HardDisk - Alias hd33e65535a1 blk0
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)/HD(1,GPT,bf05974d-0ccd-4228โ€”b002โ€”0170d4264b84,0x800,0x64000)
blk0 :HardDisk - Alias hd33e65535a1 fs0
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)/HD(1,GPT,bf05974d-0ccd~4228-b002-0170d4264b84,0x800,0x64000)
blkl :HardDisk โ€” Alias: (null)
PclRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)/HD(2,GPT,ad5f0168-1a2d-4785-bc39-e3fa0941cd99,0x64800,0xfa000)
blk2 :HardDisk - Alias (null)
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)/HD(3,GPT,228f1d21โ€”3a10โ€”4f80-9d31-467fae6a0642,0x15e800,0xfa4000)
blk3 :HardDisk - Alias (null)
PciRoot(0x0)/Pci(Ox1f,0x2)/Sata(0x4,0x0)/HD(4,GPT,2692efa9-e9e3-4c23-a3fbโ€”5caf24fb5abc,0x1102800,0x64000O0)
blk4 :HardDisk โ€” Alias (null)
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)/HD(5,GPT,021035c7-3d3bโ€”4458-8e3c-6290997fb491,0x7502800,0x32e83800)
blk5 :BlockDevice โ€” Alias: (null)
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)
Press ESC in 1 seconds to skip startup.nsh, any other keg to continue.
Shell> _

So this got me started to try out various OSs and to check if it shows up in the boot menu:

Below are some initial results.

Yosemite 10.10.1

This the Built-in EFI Shell output with the “OS X” Yosemite 10.10.1 disk plugged in (doesn’t show up in boot menu):

Yosemite 10.10.1

Yosemite 10.10.1

Built-in EFI Shell output of Yosemite 10.10.1:

EFI Shell version 2.31 [4.654]
Current running mode 1.1.2
Device mapping table
fs0 :HardDisk โ€” Alias hd33b65535a1 blk0
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x1,0x0)/HD(1,GPT,fcc8030a-0876-4763-b8c2โ€”a343e6dd0ad7,0x28,0x64000)
blk0 :HardDisk - Alias hd33b65535a1 fs0
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x1,0x0)/HD(1,GPT,fcc8030a-0876-4763-b8c2โ€”a343e6dd0ad7,0x28,0x64000)
blk1 :HardDisk โ€” Alias (null)
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x1,0x0)/HD(2,GPT,f4f53e60-1a97-4687-943aโ€”a2d41ea848b5,0x64028,0x7456ce40)
blk2 :HardDisk โ€” Alias (null)
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x1,0x0)/HD(3,GPT,84e7b614-c07e-4cb5โ€”b2d9-25b34d1f7905,0x745d0e68,0x135f20)
b1k3 :BlockDevice - Alias (null)
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x1,0x0)
Press ESC in 1 seconds to skip startup.nsh, any other keg to continue.
Shell> _

diskutil output of Yosemite 10.10.1:

Last login: Sat Nov 29 20:27:01 on ttys000
Xeon:~ userone$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            999.3 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
Xeon:~ userone$

Parted output of Yosemite 10.10.1:

userone@un:~$ sudo parted /dev/sda -l
Model: ATA WDC WD10EADS-00L (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size   File system  Name                  Flags
 1      20.5kB  210MB   210MB  fat32        EFI System Partition  boot
 2      210MB   1000GB  999GB  hfs+         Macintosh HD
 3      1000GB  1000GB  650MB  hfs+         Recovery HD

blkid output of Yosemite 10.10.1:

userone@un:~$ sudo blkid
/dev/sda1: LABEL="EFI" UUID="67E3-17ED" TYPE="vfat"
/dev/sda2: UUID="3a813953-b791-3843-853f-b031a233f518" LABEL="Macintosh HD" TYPE="hfsplus"
/dev/sda3: UUID="fe432067-44c6-36dd-90d0-67d3bb7e1ea6" LABEL="Recovery HD" TYPE="hfsplus"

Windows 10 Technical Preview 9879

This is what I get with Windows 10 TechnicalPreview-9879-x64 disk plugged in (does show up in boot menu):

Windows 10 TechnicalPreview-9879

Windows 10 TechnicalPreview-9879

Built-in EFI Shell output of Windows 10 TechnicalPreview-9879:

EFI Shell version 2.31 [4.654]
Current running mode 1.1.2
Device mapping table
fs0 :HardDisk - Alias hd33e65535a1 blk0
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)/HD(1,GPT,96485d55-c364-4fce-a89a-8be2dde93044,0x800,0x96000)
fs1 :HardDisk - Alias hd33e65535a2 blk1
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)/HD(2,GPT,d1427ee8-f3fa-4894-b59e-2d87a4b4621e,0x96800,0x32000)
fs2 :HardDisk - Alias hd33e65535a4 blk2
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)/HD(4,GPT,a6f3e83f-f1fb-4ff9-8ff9-a9f7d80e0e2c,0x108800,0x3a27d800)
blk0 :HardDisk - Alias hd33e65535a1 fs0
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)/HD(1,GPT,96485d55-c364-4fce-a89a-8be2dde93044,0x800,0x96000)
blk1 :HardDisk - Alias hd33e655353a2 fs1
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)/HD(2,GPT,d1427ee8-f3fa-4894-b59e-2d87a4b4621e,0x96800,0x32000)
blk2 :HardDisk - Alias hd33e65535a4 fs2
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)/HD(4,GPT,a6f3e83f-f1fb-4ff9-8ff9-a9f7d80e0e2c,0x108800,0x3a27d800)
blk3 :HardDisk - Alias (null)
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)/HD(3,GPT,dcf0df4d-bafd-4d4b-9c4c-3a857a904c12,0xc8800,0x40000)
b1k4 :BlockDevice - Alias (null)
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x4,0x0)
Press ESC in 1 seconds to skip startup.nsh, any other key to continue.
Shell> _

diskutil output of Windows 10 TechnicalPreview-9879:

Last login: Mon Dec  1 22:43:24 on ttys000
Xeon:~ userone$ diskutil list
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk1
   1: DE94BBA4-06D1-4D40-A16A-BFD50179D6AC               314.6 MB   disk1s1
   2:                        EFI NO NAME                 104.9 MB   disk1s2
   3:         Microsoft Reserved                         134.2 MB   disk1s3
   4:       Microsoft Basic Data                         499.6 GB   disk1s4
Xeon:~ userone$

Parted output of Windows 10 TechnicalPreview-9879:

userone@un:~$ sudo parted /dev/sdc -l
Model: ATA WDC WD5000AADS-0 (scsi)
Disk /dev/sdc: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End    Size   File system  Name                          Flags
 1      1049kB  316MB  315MB  ntfs         Basic data partition          hidden, diag
 2      316MB   420MB  105MB  fat32        EFI system partition          boot
 3      420MB   555MB  134MB               Microsoft reserved partition  msftres
 4      555MB   500GB  500GB  ntfs         Basic data partition          msftdata

blkid output of Windows 10 TechnicalPreview-9879:

userone@un:~$ sudo blkid
/dev/sdc1: LABEL="Recovery" UUID="744651444651086E" TYPE="ntfs"
/dev/sdc2: UUID="F853-2FA4" TYPE="vfat"
/dev/sdc4: UUID="F42056312055FB56" TYPE="ntfs"

Ubuntu 14.04.1

This is what I get with the Ubuntu-14.04.1-desktop-amd64 disk plugged in (does show up in boot menu):

Ubuntu-14.04.1 desktop-amd64

Ubuntu-14.04.1 desktop-amd64

Built-in EFI Shell output of Ubuntu-14.04.1:

EFI Shell version 2.31 [4.654]
Current running mode 1.1.2
Device mapping table
fs0 :HardDisk - Alias hd33d65535a1 blk0
PciRoot(0xo0)Pci(0x1f,0x2)/Sata(0x3,0x0)/HD(1,GPT,ff18a6ce-f9f0-40d5-302c-f8d3f51bedeb,0x800,0x100000)
blk0 :HardDisk - Alias hd33d65535a1 fs0
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x3,0x0)/HD(1,GPT,ff18a6ce-f9f0-40d5-302c-f8d3f51bedeb,0x800,0x100000)
blk1 :HardDisk - Alias (null)
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x3,0x0)/HD(2,GPT,d152dde4-e9d9-49ac-bd8a-1598cc81a0ef,0xl00800,0x29a0800)
blk2 :HardDisk - Alias (null)
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x3,0x0)/HD(3,GPT,7fff267a-63f8-413e-84ff-6a38e0757ce7,0x2aa1000,0x1fe0000)
blk3 :BlockDevice - Alias (null)
PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0x3,0x0)
Press ESC in 1 seconds to skip startup.nsh, any other key to continue.
Shell> _

disuktuil output of Ubuntu-14.04.1:

Last login: Mon Dec  1 22:50:20 on console
Xeon:~ userone$ diskutil list
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *40.0 GB    disk1
   1:                        EFI NO NAME                 536.9 MB   disk1s1
   2: 0FC63DAF-8483-4772-8E79-3D69D8477DE4               22.3 GB    disk1s2
   3:                 Linux Swap                         17.1 GB    disk1s3
Xeon:~ userone

Parted output of Ubuntu-14.04.1:

userone@un:~$ sudo parted /dev/sdb -l
Model: ATA WDC WD400BD-75JM (scsi)
Disk /dev/sdb: 40.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  538MB   537MB   fat32                 boot
 2      538MB   22.9GB  22.3GB  ext4
 3      22.9GB  40.0GB  17.1GB  linux-swap(v1)

blkid output of Ubuntu-14.04.1:

userone@un:~$ sudo blkid
/dev/sdb1: UUID="C046-68DD" TYPE="vfat"
/dev/sdb2: UUID="5db35bcc-21bd-4940-98dd-741749e105bb" TYPE="ext4"
/dev/sdb3: UUID="9e316101-f472-4543-ac95-b75c38a3a6f0" TYPE="swap"

As I know it, the UEFI boot process uses the ESP (EFI System Partition) to store system bootstrap components. The ESP is a GPT (or MBR) partition with a specific identifier:

GPT: c12a7328-f81f-11d2-ba4b-00a0c93ec93b
MBR: 0xef

and contains a FAT (12,16 or 32) file system with a specified hierarchy and the boot process itself is as follows:

As I understand it, UEFI firmware runs at power up and searches for an OS loader in the EFI system partition. The path to the loader may be set by an EFI environment variable while defaulted to /EFI/BOOT/BOOTX64.EFI. There is a pretty extensive and worth reading article here.

But what seems to make the difference is the 0x800 entry – which is the starting sector… weird.

Graphic Card Woes

As recently mentioned ASRock was smart enough to not implement IGP passthrough on the E3C226D2I. Bummer ๐Ÿ˜ฆ

So I had to find a super slim graphic card which shall fit to my setup. The NVidia NVS 295 was the one I choose in the end. But also then I had to do quite some tweaking. If you look at the picture below you will see that there is not a whole lot of space between the motherboard (bottom of the picture) and the PSU (top of the picture), and exactly between this space the NVidia NVS 295 was planned to sit.

IMG_9410

The first thing I actually had to do is to cut a hole into the backplane of my chassis, as the chassis itself was not supposed to support any PCI extension card ๐Ÿ˜ .

IMG_2213 IMG_2212

Then I had to cut the metal bracket of the PCI card itself for fitting:

IMG_2211 IMG_2210

And the whole setup together:

IMG_2214 IMG_2220

My 2nd build

For my latest machine, I had one of those QNAP or Synology NAS systems in mind when planning the whole thing. Of course I want to run OS X on it, while being more powerful, energy efficient and with as little noise as possible (it will sit next to my TV in the living room – in a cupboard though) and with ECC RAMs to ensure data integrity (I just want them !! ๐Ÿ™‚ ).

This whole requirements however turned out to be much more difficult to fulfill then I thought it would. For ECC you need – besides the RAM modules of course – a Xeon CPU and (thank you Intel…… NOT !) a board with the correct chipset (c224, c226 in the haswell world) – none of those “gaming” chipsets (H, P, Q, Z, X…) support ECC – still I think this function is rather blocked.

Well then on the other hand, there are not a lot of server boards out there which feature a mini-ITX form factor. Turns out exactly 2!!! as of writing, one of which I ordered, the other one is the ASRock E3C224D2I. Now ASRock on their side also didn’t made my life too easy as they blocked / didn’t implement IGP passthrough even though its part of the chipset c226 (interesting post here, which I unfortunately only found after I ordered it…) while the Xeon 1268L comes with an integrated Intel HD Graphics 4600 ๐Ÿ˜ฆ . Consequently I had to find a graphic card, which I wanted to passive-cooled to reduce noise (Problem No. 1 nowadays) and is of low-profile (Problem No. 2 nowdays). Nowadays only giga-texel-8GB super-graphic cards are made by AMD/ATI or NVidia.

Now I use the following components (Prices in US$ from Newegg or Amazon):

Overall price: $977.90 – not too bad ๐Ÿ™‚

And some pictures:

IMG_9400 IMG_9434IMG_9346IMG_1883