lbwww/site/docs/install/e6400.md

295 lines
12 KiB
Markdown
Raw Normal View History

2023-04-19 16:45:48 +00:00
---
title: Flashing the Dell Latitude E6400
2023-04-19 16:45:48 +00:00
x-toc-enable: true
...
Introduction
============
2023-04-23 11:37:26 +00:00
Initial flashing instructions for the E6400.
**ROM images are available in the [Libreboot 20230423
release](../../news/libreboot20230423.md), and subsequent releases.**
2023-04-19 16:45:48 +00:00
**Variants with Nvidia GPUs are NOT supported in Libreboot 20230423
or 20230625. Please
see below for further guidance (experimental support available in `lbmk.git`).**
2023-04-19 16:45:48 +00:00
This guide is for those who want libreboot on their Latitude E6400 while
they still have the original Dell BIOS present. This guide can also be
followed (adapted) if you brick your E6400, and you want to recover it.
Variants (nvidia or intel graphics)
========
2023-04-19 16:45:48 +00:00
Dell E6400, E6400 XFR and E6400 ATG are all believed to work. The flashing
instructions are identical, on all of them.
100% Free Software possible (Intel GPU)
=========================
2023-04-19 16:45:48 +00:00
This board can boot entirely *free software* in the flash. The hardware is similar
to that of ThinkPad X200, T400 etc where no-ME setup is possible.
2023-04-19 16:45:48 +00:00
No-microcode setup feasible
----------------------------
2023-04-19 16:45:48 +00:00
The
[microcode bugfixes/mitigations added for GM45](../../news/gm45microcode.md)
are also applicable to this board, for users who are interested. Read that
article for more information.
2023-04-19 16:45:48 +00:00
Libreboot still recommends that boot with CPU microcode updates, by default,
for all the reasons described by Libreboot's [Binary Blobs Reductions
Policy](../../news/policy.md) but this board run reasonably well without them.
2023-04-19 16:45:48 +00:00
A note about GPUs
-----------------
2023-04-19 16:45:48 +00:00
We *confirm that* the Nvidia models are PM45, and therefore will require a VGA
ROM for initialisation. This is supported in Libreboot *after* the 20230625
release, if you compile from source; the `e6400_4mb` target can work on both
variants, but will need the Nvidia VGA ROM inserted to work on Nvidia models.
This insertion is handled automatically in newer lbmk revisions, during build
time, or you can [insert it on a release rom
after 20230625](ivy_has_common.md). - **A Video BIOS Option
ROM is used, in this configuration. Libreboot's
build system automatically downloads this at build time, or it can handle that
for you in the same way if it was scrubbed from a release ROM.**
2023-04-19 16:45:48 +00:00
Models with Intel graphics are GM45, and fully supported in Libreboot
with native initialisation; ROM images are available since Libreboot 20230423.
**The Intel video initialisation is libre, implemented with publicly available
source code via libgfxinit, from the coreboot project.**
2023-04-19 16:45:48 +00:00
Flash chip size {#flashchips}
===============
Use this to find out:
flashrom -p internal
We believe most/all are 4MB (32Mb) flash sizes, but larger ROM images are
provided for people who wish to upgrade.
2023-04-19 16:45:48 +00:00
MAC address {#macaddress}
===========
The MAC address is part of the ROM image that you're flashing. You can change
it at any time, before or after you've flashed Libreboot; you can also change
it in the *Dell* BIOS, if you really want to. This is for the onboard gigabit
ethernet device.
2023-04-19 16:45:48 +00:00
Refer to [mac\_address.md](../hardware/mac_address.md).
It is recommended that you run *nvmutil*. See:
[nvmutil usage manual](nvmutil.md)
The `nvmutil` software is specifically designed for changing MAC addresses,
and it implements a few more safeguards (e.g. prevents multicast/all-zero
MAC addresses) and features (MAC address randomisation, ability to correct or
intententionally corrupt(disable) GbE sections if you wish, swap GbE parts,
etc). You can *also* run ich9gen, if you wish:
[ich9gen usage manual](ich9utils.md)
Intel GPU: libre video initialisation available
===============================================
Libreboot uses coreboot's native `libgfxinit` on this platform, for
variants with Intel graphics.
For Intel GPU variants, Libreboot 20230423 and up have full support. Simply
flash a release ROM, if you wish.
Nvidia GPU: Video BIOS Option ROM required
==========================================
2023-05-09 19:13:02 +00:00
**NOTE: `nouveau` (Linux video driver) is unstable when it was last tested, in
this setup. Either specify `nomodeset` kernel option, or use another
operating system such as OpenBSD. More information is written on the
[E6400 hardware page](../hardware/e6400.md), regarding OS compatibility.**
This is *unavailable* in Libreboot 20230423 and 20230625, but a future release
will contain support for these variants; for now, you must compile Libreboot
from Git. It is available in the default `master` branch of lbmk, under
build target `e6400_4mb` - either build from source and it gets inserted
automatically, or you can [insert it
manually](ivy_has_common.md) on future release ROMs past Libreboot 20230625.
An earlier experimental revision existed in the `e6400nvidia_wip` branch of
lbmk, as build target `e6400nvidia_4mb`, but it was decided that since SeaBIOS
is the only payload anyway on this board, having just a single build target is
more efficient if that can (and it does) support both variants.
Actual installation is the same as with regular E6400 (Intel GPU) variants.
Refer to the [E6400 flashing instructions](../docs/install/e6400.md).
The `e6400nvidia_wip` is used, because this version is still under development.
Problems with Linux video drivers on Nvidia
-------------------------------------------
Technically, there is nothing wrong with Libreboot itself, but the `nouveau`
driver hangs/crashes on Nvidia models, after booting Linux with the Nvidia VGA
ROM loaded from coreboot.
Until that is fixed, you must specify `nomodeset` in your Linux kernel boot
parameters.
Refer to [development
discussion](https://codeberg.org/libreboot/lbmk/issues/14#issuecomment-907758)
for more information - [testers needed!](../maintain/testing.md)
The *Intel* GPU variant of E6400 is more stable, and works fully, with full
acceleration - the Nvidia models can only be run in software, and the BSD
systems only have the slow `nv` driver (which is nonetheless stable).
Obtaining the VGA Option ROM (Nvidia)
-------------------------------------
Libreboot does not (and will not) directly distribute the Nvidia ROM, but lbmk
has logic added to vendor handle scripts, which automatically fetches Dell
update files and extracts the Video BIOS from it. This is inserted during
the build process, *automatically*. Everything has been figured out *for you*,
2023-05-09 07:53:28 +00:00
as is the purpose of Libreboot's [automated build system](../maintain/).
Provided for *after* the Libreboot 20230625 release, this Video BIOS ROM will
*not* be present in releases, but you'll be able to run the same script that
lbmk uses, to manually re-download and re-add it. The Libreboot build system
scrubs certain vendor code, in the scripts from lbmk that create release
archives.
2023-05-09 08:04:43 +00:00
[Please read the Libreboot build guide](../build/) for more general guidance
on compiling Libreboot. This is *required*, until the next release of Libreboot
after 20230625 comes out.
The `./build boot roms` command (see above) automatically inserts this PCI
ROM, and it is downloaded automatically if the PCI ROM is missing; if
downloading and/or extraction (of the Option ROM) fails, the entire build
process will fail (non-zero exit status). DO NOT flash it until you confirm
that the build went successfully. For example, try:
make -BC src/coreboot/default/util/cbfstool/cbfstool
cp src/coreboot/default/util/cbfstool/cbfstool .
Then check the E6400 ROM under `bin/`. Let's say the ROM was
named `libreboot.rom`, you would do:
./cbfstool libreboot.rom print
This would print the files that have been inserted into the ROM image (rom
stage, car, payloads etc), and it should list the PCI option ROM as the
following file, by name: `pci10de,06eb.rom`.
DO NOT flash it unless that file is present. If you've confirmed that the ROM
has compiled successfully, you can flash it.
**BEFORE** you flash it, please know that support for Nvidia variants is
a **proof of concept**. Known issues exist. For more information, please
read the [E6400 info page](../hardware/e6400.md), [E6400 nvidia news
page](../../news/e6400nvidia.md) and the [development discussion via
codeberg](https://codeberg.org/libreboot/lbmk/issues/14#issuecomment-907758).
How to flash internally (no diassembly)
=======================================
Warning for BSD users
---------------------
BSD *boots* and works properly on these machines, but take note:
Nicholas's [e6400-flash-unlock](https://browse.libreboot.org/lbmk.git/plain/util/e6400-flash-unlock/e6400_flash_unlock.c)
utility has not yet been ported to BSD systems. The `flashrom` software is
available on BSD systems. Libreboot's build system has not yet been ported to
the BSDs.
BSD users could run Linux from USB to run `flashrom` and `e6400-flash-unlock`.
Virtualisation is available in BSDs, where it should be feasible to run the
Libreboot build system, in Linux, under virtualisation.
Flashing from Linux
-------------------
MAKE SURE you boot with this Linux kernel parameter: `iomem=relaxed` - this
disables memory protections, permitting `/dev/mem` access needed by flashrom.
The flash is memory mapped and flashrom accesses it via `/dev/mem`.
You can flash Libreboot directly from the vendor (Dell) BIOS, without taking
the machine apart. It can be done entirely from Linux. It will probably also
work on BSD systems, but it has only been testing on Linux thus far.
Check `util/e6400-flash-unlock` in the `lbmk.git` repository, or in release
2023-04-23 11:37:26 +00:00
archives for Libreboot releases from 20230423 onwards.
Go in there:
cd util/e6400-flash-unlock
make
With this program, you can unlock the flash in such a way where everything
is writeable. Information about how to use it is in the `README.md` file which
2023-04-19 18:20:36 +00:00
is included in that program's directory, or you can read it online here:
2023-04-19 18:20:36 +00:00
<https://browse.libreboot.org/lbmk.git/plain/util/e6400-flash-unlock/README.md>
2023-04-19 16:45:48 +00:00
Literally just run that program, and do what it says. You run it once, and shut
down, and when you do, the system brings itself back up automatically. Then
you run it and flash it unlocked. Then you run it again. The source code is
intuitive enough that you can easily get the gist of it; it's writing some EC
commands and changing some chipset config bits. The EC on this machine is
hooked up to the `GPIO33` signal, sometimes called `HDA_DOCK_EN`, which sets
the flash descriptor override thus disabling any flash protection by the IFD.
It also bypasses the SMM BIOS lock protection by disabling SMIs, and Dell's
BIOS doesn't set any other type of protection either such as writing to
Protected Range registers.
2023-04-19 16:45:48 +00:00
When you flash it, you can use this command:
flashrom -p internal -w libreboot.rom
Where `libreboot.rom` is your E6400 ROM. *Make sure* it's the right one.
If flashrom complains about multiple flash chips detected, just pick one of
them (doesn't matter which one). On *most* Dell machines, the most correct
would probably be this option in flashrom: `-c MX25L3205D/MX25L3208D`.
So:
flashrom -p internal -w libreboot.rom -c MX25L3205D/MX25L3208D
When you see flashrom say `VERIFIED` at the end, that means the flash was
successful. If you don't see that, or you're unsure, please [contact the
Libreboot project via IRC](../../contact.md).
BACK UP THE FACTORY BIOS
========================
The `-w` option flashes `libreboot.rom`. You may consider *backing up* the
original Dell BIOS first, using the -r option:
flashrom -p internal -r backup.rom -c MX25L3205D/MX25L3208D
Do this while in a flashable state, after the 2nd run of `e6400-flash-unlock`.
Make sure the `backup.rom` file gets backed up to an external storage media,
not the E6400 itself.
With this method, you can probably flash it within 5 minutes. Again, zero
disassembly required!
2023-04-19 16:45:48 +00:00
How to flash externally
=========================
Refer to [spi.md](spi.md) as a guide for external re-flashing.
The SPI flash chip shares a voltage rail with the ICH9 southbridge, which is
not isolated using a diode. As a result, powering the flash chip externally
causes the ICH9 to partially power up and attempt to drive the SPI clock pin
low, which can interfere with programmers such as the Raspberry Pi. See
[RPi Drive Strength](spi.md#rpi-drive-strength) for a workaround.
Have a look online for videos showing how to disassemble, if you wish to
externally re-flash.