Coreboot is awesome

Two weeks ago I was updating Award BIOS on Alix.1c board and failed — computer bricked 🙁

But there was a way to get it to working state again — PC Engines (vendor or Alix boards) has LPC1a adapter with extra BIOS chip. I contacted them and few days later it arrived here (I will send it back as it is loaned).

Use is simple: plug into LPC connector, boot machine, reprogram on-board flash chip, power off, unplug lpc1a, power on. But I decided to make a use of it and decided to migrate from Award BIOS to coreboot with some extra payload.

As I use only Linux on Alix I tried FILO first. It booted to prompt but refused to see files on CompactFlash card. GRUB v2 supports coreboot but did not run so I tried SeaBIOS instead. And that was it — clean, fast boot to GRUB from CF card.

There is one problem which I did not solved yet: VGA BIOS rom does not work for me. But I will rather do not spend time on it as framebuffer under Linux works without it and I do not plan to run FreeDOS or other systems which would do VGA BIOS calls. Other option is to use SGABIOS which redirects input/output from video card to serial port — works fine.

But the nicest moment was still before me. When I disabled all debug output in coreboot and SeaBIOS I got HUGE improvement in boot time. Linux was loading in a time which previously was needed for Award BIOS to make a beep sound…

Never say never

Years ago I had Gigabyte mainboard in computer at work. One day cpu fan died — it did not shut down but tried to operate with 85°C at CPU… That day I decided to not buy Gigabyte mainboards anymore (my home machine had in BIOS limit of working temperatures with 70°C set as temp to shut down).

Few days ago I upgraded my home machine. And it is Gigabyte powered 🙂 To be exact: EP35C-DS3R is what I bought.

There are few annoyances:

  • Intel AHCI SATA BIOS adds few seconds on each boot for checking 6 Serial-ATA ports
  • Gigabyte AHCI SATA/ATA BIOS adds few more and ask for pressing key (with few seconds timeout)

But also nice stuff:

  • profiles in BIOS — so I am able to configure everything and store settings for later use
  • flashing BIOS from USB stick, hard drive or floppy (does someone still use floppies?)

I also added few other components: Core2Quad Q6600 CPU, 4GB RAM and new hard drive but that is other story.

CPU cooler upgrade

As you probably noticed I upgraded CPU in my desktop machine. But cpu cooler was same as before — stock Athlon64 BOX one which was included with previous A64 3200+ processor.

Akasa AK-876 CPU Cooler

During idle cpu was running on 1GHz speed (thanks to cpufreq governor “ondemand”) and had 37-39°C temperature. Under load (such as OE/Poky builds) it was up to 65°C and after some time overheating check switched frequency to 1GHz…

Now with Akasa AK-876 heatsink this machine has 30-32°C when idle and 46-50°C under load. And fan speed is much lower — keeps under 2000 RPM under load (previous one goes up to 4000 RPM) so machine is usable without listening music.

There was some problems with fitting such big heatsink into case but it sits properly in place and air flow is in proper way — from CPU fan -> CPU heatsink -> case fan -> out. It also shows that my next machine will get new case — Codegen 9002 which I use now starts to be too small to keep all drives, fans and cables in good order.

CPU upgrade

I usually did big computer upgrades (AMD Duron with SDRAM -> AMD Athlon with DDR, then to AMD Athlon64 with DDR) but this time it was only CPU. From Athlon64 3200+ (2GHz) I switched to Athlon64 X2 4200+ (2.2GHz). Operation was quite simple — take one CPU, insert another but old one glued to radiator so I had to use some force 🙁

Then first boot and question… will BIOS recognize new CPU or not. It properly displayed information and then Linux started — just to show me 1 CPU. Quick installation of already prepared SMP kernel and /proc/cpuinfo had more informations.

Machine is quite loud when operating on full speed but most of time CPUFreq is able to lower frequency (1.0/1.8/2.0/2.2GHz steps are available) so it is noiseless. It is nice to see how CPU usage is split into two cores — now I do not have to wait when two builds are progressing and I want to run some applications.

Now doing builds will be more comfortable 🙂

Partition Signature !=55AA

Due to fact that some of embedded devices require using vendor tools I decided to install Microsoft Windows XP Professional on my Dell D400. As this machine lack CD-ROM drive I had to find other way. “Unattended” project provides boot discs which allow to make installation over PXE (netboot).

I followed DOS way and gave my tweaked copy of installation CD for it. The first problem was that I got “Partition Signature !=55AA” message after reboot and machine was unbootable. Hopefully I can boot grub4dos over PXE so I was able to go back to the Debian.

How to fix it? In my situation marking FAT32 partition as bootable solved problem.

The message is messy because there was 0x55aa signature at the end of MBR…

Dell D400 – installation report

OK, system (Debian ‘etch’) was installed and then upgraded to ‘sid’. Everything is working with Linux (kernel 2.6.18 from Etch):

  • ACPI reports battery status, battery is charging without problems.
  • Dell Wireless 1450 card works — I only had to install bcm43xx firmware (which I took from Cafuego’s Sarge Backports repository). There is also other way — Debian contain package bcm43xx-fwcutter which extracts firmware from Windows drivers.
  • Gigabit Ethernet works with tg3 kernel module (tested with 100Mbps Ethernet only).
  • CPU Frequency scaling works with speedstep-centrino module and provides wide range: 1600MHz, 1400MHz, 1200MHz, 1000MHz, 800MHz, 600MHz so it is possible to extend battery life with it.
  • Backlight control (via Fn+Up/Down buttons) works — it is handled by hardware/BIOS probably.
  • Touchpad was wrongly recognized — it is not Synaptic but ALPS so edit of /etc/X11/xorg.conf was needed. All informations what to change are described in README.alps (part of xserver-xorg-input-synaptic package). Idea found on Ubuntu blog.
  • Suspend to disk works, suspend to RAM also works.

In other words — no problems yet — everything works like it should.

Flashing Progear BIOS

Today I checked how to flash BIOS on Progear HX1050 webpad. Basically there are two ways:

  • using psplash.exe under DOS
  • using fpFlashBIOS under GNU/Linux

I do not know does they were provided with default installations.

Flashing under GNU/Linux (Debian ‘testing’ in my case) is simple:

sync
./fpFlashBIOS -w:pb_10404.rom

Application will write some flash block (and verify). Then reboot to check does everything is OK — due to fact, that flashing clear BIOS settings external USB keyboard is recommended. Pressing F2 during bootup (when white screen is shown) will enter Setup.

Beware: unbricking can be hard — flash chips are soldered…

How to flash BIOS without floppy disk drive

During building my current home PC I decided to get rid of FDD and disabled it in BIOS, did not connect cable and power into drive (which is still in computer case due my laziness). But how to upgrade BIOS without floppy?

There are some solutions:

  1. Create floppy image and burn it to CD

  2. Create floppy image and use MEMDISK

Where to get floppy image? Good one is FreeDOS fdboot.img — mount it via loop, remove directories, put flasher and bios image, umount. Then time for another step.

If you want to go CD way, you need to start CD writing program (I used K3b) and use you floppy image as bootable image. No need for any other files — you only flash 1.4M. Then boot computer from CD, select ‘Safe Mode’ in FreeDOS and run flasher.

Memdisk way is a bit simpler. You need to download syslinux package from your distro or built it (I used Debian package). Then you have to find memdisk binary (/usr/share/syslinux/ in Debian) and copy it to /boot/. Then copy floppy image into same directory. Next step is configuration of boot loader (I use GRUB). Add new entry with memdisk as kernel and floppy image as initrd. Then reboot, selecting proper entry from list and select ‘Safe Mode’ in FreeDOS and run flasher.

Small modification of second step can be skip of configuration editing and usage of GRUB shell to do same.

I hope that someone will find that howto useful.

UPDATE: in some places I found informations that memdisk is not good way to reflash BIOS — some flashers refuse to work or breaks.