Unofficial (Simplified) Libreboot Documentation
  • Home
  • Building from source/
  • External SPI flashing/
  • Freedom in Libreboot/
  • Maintainance manual/
  • Operating systems/
  • Payloads/
  • Releases/
  • Targets/
    • ARM Chromebooks/
    • Emulation/
    • Other/
    • X86/
      • AMD pitfalls
      • Boards/
        • Acer G43T-AM3
        • ASUS KCMA-D8 Desktop/Workstation
        • ASUS KFSN4-DRE Server/Workstation
        • ASUS KGPE-D16 Server/Workstation
        • Dell Latitude flashing
        • Dell Latitude thermal throttling
        • Dell OptiPlex 3050 Micro
        • Dell OptiPlex 7010/9010 MT
        • Dell OptiPlex 7010/9010 SFF
        • Dell OptiPlex 7020/9020 SFF/MT, and XE2 MT/SFF
        • Dell OptiPlex 780 MT/USFF
        • Dell Precision T1650
        • Gigabyte GA-G41M-ES2L Desktop
        • HP Compaq Elite 8300 USDT
        • HP Elite 8200 SFF/MT and 6200 Pro Business
        • HP EliteBook 2170p
        • HP EliteBook 2560p
        • HP EliteBook 2570p
        • HP EliteBook 820 G2
        • HP EliteBook 8460p
        • HP EliteBook 8470p
        • HP EliteBook 8560w
        • HP EliteBook Folio 9470m
        • Intel D510MO/D410PT
        • Intel D945GCLF Desktop
        • MacBook 1,1 and 2,1
        • ThinkPad R400
        • ThinkPad T400 external flashing
        • ThinkPad T420 external flashing
        • ThinkPad T440p external flashing
        • ThinkPad T480/T480s
        • ThinkPad T500 external flashing
        • ThinkPad T60 recovery guide
        • ThinkPad W541/W540 external flashing
        • ThinkPad X200 first-time flashing
        • ThinkPad X220/X220T
        • ThinkPad X230/X230T external flashing
        • ThinkPad X60 recovery
        • ThinkPad X60 Tablet recovery
        • ThinkPad X60/X60T/T60 internal flashing
      • Changing the MAC address
      • Disabling /dev/mem protections
      • Disabling Intel Boot Guard on MEv11
      • EC firmware updates
      • Generic internal flashing
      • Insert vendor files
      • Intel pitfalls
      • Ivybridge internal flashing
      • Microcode
      • nvmutil import
      • nvmutil manual
  • UNCATEGORIZED/
Site license: GFDL v1.3 with disclaimer

Gigabyte GA-G41M-ES2L Desktop

GA-G41M-ES2L
Specifications
Manufacturer Gigabyte
Name GA-G41M-ES2L
Released 2009
Chipset Intel G41
CPU Intel Core 2 Extreme/Quad/Duo,
Pentium Extreme/D/4 Extreme/4/Celeron
Graphics Integrated
Display None.
Memory Up to 8GB (2x4GB DDR2-800)
Architecture x86_64
Original boot firmware AWARD BIOS
Intel ME/AMD PSP Present. Can be disabled
Flash chip 2x8Mbit
W+: Works without vendor firmware; 
N: Doesn't work; 
W*: Works with vendor firmware; 
U: Untested; 
P+: Partially works; 
P*: Partially works with vendor firmware
Features
Internal flashing with original boot firmware W+
Display -
Audio W+
RAM Init P+
External output P+
Display brightness -
Payloads supported
GRUB Slow!
SeaBIOS Works
SeaBIOS with GRUB Works

Introduction

This is a desktop board using intel hardware (circa ~2009, ICH7 southbridge, similar performance-wise to the ThinkPad X200. It can make for quite a nifty desktop. Powered by libreboot.

As of Libreboot release 20221214, only SeaBIOS payload is provided in ROMs for this board. According to user reports, they work quite well. GRUB was always buggy on this board, so it was removed from lbmk.

IDE on the board is untested, but it might be possible to use a SATA HDD using an IDE SATA adapter. The SATA ports do work, but it’s IDE emulation. The emulation is slow in DMA mode sia SeaBIOS, so SeaBIOS is configured to use PIO mode on this board. This SeaBIOS configuration does not affect the Linux kernel.

You need to set a custom MAC address in Linux for the NIC to work. In /etc/network/interfaces on debian-based systems like Debian or Devuan, this would be in the entry for your NIC:
hwaddress ether macaddressgoeshere

Alternatively:

cbfstool libreboot.rom extract -n rt8168-macaddress -f rt8168-macaddress

Modify the MAC address in the file rt8168-macaddress and then:

cbfstool libreboot.rom remove -n rt8168-macaddress
cbfstool libreboot.rom add -f rt8168-macaddress -n rt8168-macaddress -t raw

Now you have a different MAC address hardcoded. In the above example, the ROM image is named libreboot.rom for your board. You can find cbfstool under cbutils/ after running the following command in the build system:

./mk -d coreboot TREENAME

You can learn more about using the build system, lbmk, here:
libreboot build instructions

RAM

This board is very picky with RAM. If it doesn’t boot, try an EHCI debug dongle, serial usb adapter and null modem cable, or spkmodem, to get a coreboot log to see if it passed raminit.

Kingston 8 GiB Kit KVR800D2N6/8G with Elpida Chips E2108ABSE-8G-E

this is a 2x4GB setup and these work quite well, according to a user on IRC.

Nanya NT2GT64U8HD0BY-AD with 2 GiB of NT5TU128M8DE-AD chips works too.

Many other modules will probably work just fine, but raminit is very picky on this board. Your mileage will fluctuate, wildly.

MAC ADDRESS

NOTE: due to a bug in the hardware, the MAC address is hardcoded in coreboot. Therefore, you must set your own MAC address in your operating system.

Use macchanger in your distro, to set a valid MAC address. By doing this, your NIC should work nicely.

Flash chip size

Use this to find out:

flashprog -p internal

Flashing instructions

Refer to spi.md for how to set up an SPI programmer for external flashing. You can only externally reprogram one of the chips at a time, and you need to disable the chip that you’re not flashing, by connecting 3v3 to /CS of that chip, so you will actually need second test clip or IC pin mini grabber.

NOTE: on GA-G41M-ES2L, the flash shares a common voltage plane with the southbridge, which draws a lot of current. This will cause under-voltage on most SPI flashers, so do not use the 3.3V rail from your flasher. Do not connect +3.3V to the chip. Instead, turn the board on and then turn it off by holding the power button. With the board powered down, but plugged in, there will be a 3.3V supply from the ATX PSU. You can then flash, but DO NOT connect the +3.3V supply from your SPI flasher!

NOTE: You should use a resistor in series, between 1K to 10K ohms, for the 3.3v connection to the CS pin. This is to protect from over-current.

Here is an image of the flash chip:

Internal flashing is possible. Boot with the proprietary BIOS and Linux. There are 2 flash chips (one is backup).

Flash the first chip:

./flashprog -p internal:dualbiosindex=0 -w libreboot.rom

Flash the second chip:

./flashprog -p internal:dualbiosindex=1 -w libreboot.rom

NOTE: you can still boot the system with just the main flash chip connected, after desoldering the backup chip. This has been tested while libreboot was already installed onto the main chip.

NOTE: If you don’t flash both chips, the recovery program from the default factory BIOS will kick in and your board will be soft bricked. Make sure that you flash both chips!