From 8b2219bfa2da36e7809588ef723a10483a6e137f Mon Sep 17 00:00:00 2001 From: Francis Rowe Date: Wed, 05 Nov 2014 20:52:36 -0500 Subject: Documentation: *major* cleanup. Cleanup was long overdue. Old structure was messy and inefficient. --- (limited to 'docs/index.html') diff --git a/docs/index.html b/docs/index.html index e5fe5df..fe17fc4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -5,1752 +5,165 @@ - Libreboot documentation: Main + Documentation for libreboot project -
-

Libreboot Documentation

- - -
- -

- It is assumed that you are running GNU/Linux. No other operating system is known to be compatible (with libreboot) for this release. -

- -

- The information here is mainly user documentation. For development notes and TODO's, see release.html and - future/index.html -

- -

GNU/Linux distributions

- - -

Working with source code

- - -

Supported hardware

- - -

Installing libreboot (software: using internal programmer)

- - -

Installing libreboot (hardware: using external programmer)

- - -

Security topics

- - -

Hardware maintenance

- - -

GRUB2 payload

- - -

Miscallaneous

- - -
- -

What is libreboot, really?

- -

- Project goals (and differences versus coreboot): -

- - -

- Libreboot is not a fork of coreboot, despite misconceptions of this fact. Libreboot (downstream supplier) is a parallel effort - which works closely with and re-bases on the latest coreboot (upstream supplier) every so often. -

- -

- - As such, all new coreboot development should be done in coreboot, not libreboot! - Libreboot is about deblobbing, and packaging coreboot in a user-friendly way, where most work is already done for the user! - If, for example you wanted to attempt porting a new motherboard then you should do that in coreboot. Libreboot will (as a downstream) - receive your change at some point in the future, in a future release. - -

- -

- A 'stable' coreboot: -

- - -

- On the other hand, coreboot is also strict about what it accepts (merges) into the main git repository: - most of the time, a lot of changes are under review at review.coreboot.org (as a way of encouraging as much further development - as possible before accepting the patch). -

- -

- Meanwhile, libreboot is a lot less strict in this area and freely merges specific patches that are desirable, sometimes before they are merged into coreboot's main repository. -

- -

Back to top of page.

- -
- -

Install build dependencies

- -

- Before doing anything, you need the dependencies first. -

- - -

- For all other GNU/Linux distributions, you may have to adapt these scripts. By all means send patches! -

- -

Back to top of page

- -
- -

Get the full source code from metadata (git clone)

- -

- If you downloaded libreboot from git, then there are some steps to download and patch - the source code for all relevant dependencies. The archive in the git repository used to be - available as a tarball called 'libreboot_meta.tar.gz'. It contains 'metadata' (scripts) - which define how the source was created (where it came from). -

- -

- You can use the scripts included to download everything. -

+

Documentation for libreboot project

- First, install the build dependencies. + It is assumed that you are running GNU/Linux + (no other operating system is known to work with this release).

-

- After that, run the get script:
- $ ./getall + What is libreboot?

-

- What this did was download everything (grub, coreboot, memtest86+, bucts, flashrom) - at the versions last tested for this release, and patch them. Read the script - in a text editor to learn more. -

- -

- To build the ROM's, see #build. -

- -

Back to top of page.

- -
- -

How to build "bucts" (for LenovoBIOS X60/X60S/X60T/T60)

- -

- This is for Lenovo BIOS users on the ThinkPad X60/X60S, X60 Tablet and T60. If you have coreboot or libreboot running already, ignore this. -

- -

- Bucts is needed when flashing in software the X60/X60S/X60T/T60 ROM while Lenovo BIOS is running; - external flashing will be safe regardless. - Each ROM contains identical data inside the two final 64K region in the file. - This corresponds to the final two 64K regions in the flash chip. Lenovo BIOS will prevent you from writing the - final one, so running "bucts 1" will set the machine to boot from the other block instead (which - is writeable along with everything beneath it when using a patched flashrom. see #build_flashrom). - After shutting down and booting up after the first flash, - the final 64K block is writeable so you flash the ROM again with an unpatched flashrom and run "bucts 0" to - make the machine boot from the normal (highest) block again. -

- -

- BUC.TS utility is included in libreboot_src.tar.gz and libreboot_bin.tar.gz.
- If you downloaded from git, follow #build_meta before you proceed. -

- -

- "BUC" means "Backup Control" (it's a register) and "TS" means "Top Swap" - (it's a status bit). Hence "bucts" (BUC.TS). TS 1 and TS 0 corresponds to bucts 1 and bucts 0. -

- -

- First, install the build dependencies. -

- -

- To build bucts, do this in the main directory:
- $ ./builddeps-bucts -

- -

- The "builddeps" script in libreboot_src also makes use of builddeps-bucts. -

- -

Back to top of page.

- -
- -

How to build "flashrom"

- -

- Flashrom is the utility for flashing/dumping ROM's. This is what you will use to install libreboot. -

- -

- Flashrom source code is included in libreboot_src.tar.gz and libreboot_bin.tar.gz.
- If you downloaded from git, follow #build_meta before you proceed. -

- -

- First, install the build dependencies. -

- -

- To build it, do that in the main directory:
- $ ./builddeps-flashrom -

- -

- After you've done that, under ./flashrom/ you will find the following executables: -

- - -

- The "builddeps" script in libreboot_src also makes use of builddeps-flashrom. -

- -

Back to top of page.

- -
- -

Configuring libreboot

- -

- Before building a ROM in libreboot (or coreboot, for that matter), you need to configure it. - This is done using the following inside the source tree:
- $ make menuconfig -

- -

- If you've already built a kernel before, you know how to use this interface. -

- -

- Configurations are then saved as files called ".config". Copies of each configuration used - for each machine type by the libreboot build scripts are stored in resources/libreboot/config/ -

- -

- dmidecode -

-

- There is certain information that can be useful to enter in particular: -

- +

Release information

- This information can be obtained using:
- $ sudo dmidecode
- # dmidecode + Information about this release can be found at release.html. + Always check libreboot.org for updates.

- Specifically, it's good practise to enter the same information for libreboot that you found when running this - with the original BIOS or firmware. libreboot has already done this for you. This information is for reference, - in the hope that it will be useful. + The release page and future/index.html contain details + about future work.

-

- ThinkPad X60 configuration (file: resources/libreboot/config/x60/config) -

- +

Hardware compatibility list

- Now go back into Devices: + Information about what systems libreboot supports.

-

- The resulting .config file was saved as resources/libreboot/config/x60/config and is used by the build - scripts for this machine. + Goto hcl/index.html.

+ +

Installing libreboot

- This is based on an X60S with the Core 2 Duo L7400 processor. + Information about how to install libreboot on supported targets, + using software and/or dedicated hardware.

- SMBIOS Version Number is ThinkPad X60 on the X60, but it is believed that the X60 and X60s both have identical - motherboards where the only difference is the CPU. This same configuration is used on the X60 and X60s. + Goto install/index.html.

-

- ThinkPad X60 Tablet configuration (file: resources/libreboot/config/x60t/config) -

- +

GNU/Linux distributions

- Now go back into Devices: + Installing GNU/Linux distributions, preparing bootable USB drives, changing the default GRUB + menu and so on.

-

- The resulting .config file was saved as resources/libreboot/config/x60t/config and is used by the build - scripts for this machine. + This also contains guides for fully encrypted Trisquel and Parabola GNU/Linux-libre installations.

- This is based on an X60T with the Core 2 Duo L7400 processor. + Goto gnulinux/index.html.

-

- ThinkPad T60 configuration (file: resources/libreboot/config/t60/config) -

- - Go back into Devices: -

- -

- The resulting .config file was saved as resources/libreboot/config/t60/config and is used by the build - scripts for this machine. -

+

Developing libreboot

- It is believed that the motherboards on 14.1" and 15.1" T60's are the same, so the same configuration is used - on both the 14.1" and 15.1" T60's. + Information about configuring libreboot, building from source, maintaining the project, + working in git and so on.

- -

- MacBook2,1 configuration (file: resources/libreboot/config/macbook21/config) -

-

- Go back and disable option ROM's: + Goto git/index.html.

- -

- The resulting .config file was saved as resources/libreboot/config/macbook21/config and is used by the build - scripts for this machine. This config is also used for the MacBook1,1. -

- -

Back to top of page.

- -
- -

How to build the ROM's!

- -

You don't need to do much, as there are scripts already written for you that can build everything automatically.

- -

- First, install the build dependencies. -

-

- If you downloaded libreboot from git, refer to #build_meta. -

- -

If running for the first time, run this:
- $ ./buildall (also performs the "./build" step below)
- Or if you only want to build dependencies (crossgcc, grub and so on):
- $ ./builddeps

- -

If you've already run ./builddeps and/or ./buildall before, you don't need to run them again. - Just run that from now on to build your ROM's:
- $ ./build

- -

To un-build (clean) the build dependencies that you built before, do the following:
- This also deletes the ROM images under ./bin/:
- $ ./cleandeps

- -

Note: after running 'cleandeps', you will need to run 'builddeps' or 'buildall' again before you can use 'build'.

- -

After 'build' or 'buildall' has finished, you'll find the ROM images for each machine under ./bin/

- -

Preparing release archives (optional)

+

Security topics

- Run that script:
- $ ./build-release + Goto security/index.html.

+

Hardware maintenance

- You'll find that the files libreboot_bin.tar.xz and libreboot_src.tar.xz have been created. + Goto hardware/index.html.

- -

Back to top of page

- -
- -

How to add SeaBIOS to your ROM's

- -

- SeaBIOS isn't really needed since libreboot uses the GRUB payload which - is much better (for several reasons), so it is no longer included in the ROM - images by default. Instead, you can add it afterwards. -

- -

- In the supplied binary archives, or in your own (if you did 'build-release') you can add SeaBIOS - to the ROM images, along with SeaVGABIOS which is a free/libre Video BIOS implementation that wraps - around the 'native graphics initializitation' code in coreboot, for boards that have support for it. -

- -

- First, install the build dependencies. -

- -

- Build cbfstool:
- $ ./builddeps-cbfstool -

- -

- Now:
- $ ./addseabios -

- -

- SeaBIOS and SeaVGABIOS (which the build scripts created, and the build-release script put - compiled - - inside the binary archive) have now been added to all of the ROM images under ./bin/. A GRUB menuentry will show - up when you boot your machine, allowing you to use SeaBIOS. -

- -

Back to top of page

- -
- -

List of supported hardware

- -

- Libreboot supports the following machines in this release: -

- - -

- 'Supported' means that the build scripts know how to build ROM's for these machines, - and that the machines have been tested (confirmed working). There may be exceptions; - in other words, this is a list of 'officially' supported machines. -

- -

- It is also possible to build ROM images (from source) for other machines (and virtual machines, e.g. QEMU). -

- -

Back to top of page

- -
- -

Recommended wifi chipsets

-

- The following are known to work well: -

- - -

Back to top of page

- -
- -

List of supported ThinkPad X60's

- -

- Native gpu initialization ('native graphics') which replaces the proprietary VGA Option ROM - ('Video BIOS' or 'VBIOS'), - all known LCD panels are currently compatible: -

- -

- To find what LCD panel you have, see: #get_edid_panelname. -

- - - -

- You can remove an X61/X61s motherboard from the chassis and install an X60/X60s motherboard in it's place (for flashing libreboot). The chassis is mostly identical - and the motherboards are the same shape/size. -

- -

- The X60 typically comes with an Intel wifi chipset which does not work at all without proprietary firmware, and while Lenovo BIOS is running - the machine will refuse to boot if you replace the card. Fortunately it is very easily replaced; - just remove the card and install another one after libreboot is installed. See #recommended_wifi for replacements. -

- -

Back to top of page.

- -
- -

List of supported ThinkPad X60 Tablets

- -

- Native gpu initialization ('native graphics') which replaces the proprietary VGA Option ROM - ('Video BIOS' or 'VBIOS'). -

- -

- To find what LCD panel you have, see: #get_edid_panelname. -

- -

- There are 5 known LCD panels for the X60 Tablet: -

- - -

- Most X60T's only have digitizer (pen), but some have finger (touch) aswell as pen; finger/multitouch doesn't work, only digitizer (pen) does. -

- -

- You can remove an X61/X61s motherboard from the chassis and install an X60/X60s motherboard in it's place (for flashing libreboot). The chassis is mostly identical - and the motherboards are the same shape/size. It is unknown if the same applies between the X60 Tablet and the X61 Tablet. -

- -

- The X60 Tablet typically comes with an Intel wifi chipset which does not work at all without proprietary firmware, and while Lenovo BIOS is running - the machine will refuse to boot if you replace the card. Fortunately it is very easily replaced; - just remove the card and install another one after libreboot is installed. See #recommended_wifi for replacements. -

- -

- A user with a X60T that has digitizer+finger support, reported that they could get finger input working. They - used linuxwacom at git tag 0.25.99.2 and had the following in their xorg.conf: -

- -
-# This file be public domain.
-
-# Now, for some reason (probably a bug in linuxwacom),
-# the 'Touch=on' directive gets reset to 'off'.
-# So you'll need to do
-# $ xsetwacom --set WTouch Touch on
-#
-# tested with linuxwacom git 42a42b2a8636abc9e105559e5dea467163499de7
-
-Section "Monitor"
-    Identifier             ""
-    DisplaySize     245 184
-EndSection
-
-Section "Screen"
-    Identifier "Default Screen Section"
-    Monitor    ""
-EndSection
-
-Section "InputDevice"
-    Identifier  "WTouch"
-    Driver      "wacom"
-    Option      "Device" "/dev/ttyS0"
-#    Option      "DebugLevel" "12"
-    Option      "BaudRate" "38400"
-    Option      "Type" "touch"
-    Option      "Touch" "on"
-    Option      "Gesture" "on"
-    Option      "ForceDevice" "ISDV4"
-#    Option      "KeepShape" "on"
-    Option      "Mode" "Absolute"
-    Option      "RawSample" "2"
-#    Option      "TPCButton" "off"
-    Option      "TopX" "17"
-    Option      "TopY" "53"
-    Option      "BottomX" "961"
-    Option      "BottomY" "985"
-EndSection
-
-Section "ServerLayout"
-  Identifier    "Default Layout"
-  Screen        "Default Screen Section"
-  InputDevice   "WTouch" "SendCoreEvents"
-EndSection
-
-
- -

Back to top of page.

- -
- -

Supported T60 list

- -

- Native gpu initialization ('native graphics') which replaces the proprietary VGA Option ROM - ('Video BIOS' or 'VBIOS'). -

- -

- To find what LCD panel you have, see: #get_edid_panelname. -

- -

- - Some T60's have ATI GPU's, and all T60p's have ATI GPU's These are incompatible! See #t60_ati_intel for how to remedy this. - -

- -

- How to dump the EDID:
- -

- -

- Tested LCD panels: working(compatible) -

- - -
- + +

GRUB payload

- Tested LCD panels: not working yet (incompatible; see future/index.html#lcd_i945_incompatibility) + Information about fonts and keyboard layouts used in GRUB.

- -

- The following LCD panels are UNTESTED. If you have one of these panels - then please submit a report!: + Goto grub/index.html

- +

Miscellaneous

- It is unknown whether the 1680x1050 (15.4") and 1920x1200 (15.4") panels use a different inverter board than the 1280x800 panels. + Random topics that don't belong anywhere else.

- -

- The T60 typically comes with an Intel wifi chipset which does not work at all without proprietary firmware, and while Lenovo BIOS is running - the machine will refuse to boot if you replace the card. Fortunately it is very easily replaced; - just remove the card and install another one after libreboot is installed. See #recommended_wifi for replacements. -

- -
- -

Back to top of page.

- -
- -

ThinkPad T60 (ATI GPU) and ThinkPad T60 (Intel GPU) differences.

- -

- If your T60 is a 14.1" or 15.1" model with an ATI GPU, it won't work with libreboot by default but - you can replace the motherboard with another T60 motherboard that has an Intel GPU, and then libreboot should work. -

- -

- As far as I know, 14.1" (Intel GPU) and 15.1" (Intel GPU) T60 motherboards are the same, where - 'spacers' are used on the 15.1" T60. In any case, it makes sense to find one that is guaranteed to fit in your chassis. -

- -

- There is also a 15.4" T60 with Intel GPU. -

- -

- Note: the T60p laptops all have ATI graphics. - The T60p laptops cannot be used with libreboot under any circumstances. -

- -

- The following T60 motherboard (see area highlighted in white) shows an empty space where the ATI GPU would be (this particular motherboard has an Intel GPU): - -

- -

- The reason that the ATI GPU on T60 is unsupported is due to the VBIOS (Video BIOS) which is non-free. - The VBIOS for the Intel GPU on X60/T60 has been reverse engineered, and replaced with Free Software and - so will work in libreboot. -

- -

- The 'Video BIOS' is what initializes graphics. -

- -

- See: https://en.wikipedia.org/wiki/Video_BIOS.
- In fact, lack of free VBIOS in general is a big problem in coreboot, and is one reason (among others) why many ports for coreboot are - unsuitable for libreboot's purpose. -

- -

- Theoretically, the ThinkPad T60 with ATI GPU can work with libreboot and have ROM's compiled for it, however - in practise it would not be usable as a laptop because there would be no visual display at all. That being said, - such a configuration is acceptable for use in a 'headless' server setup (with serial and/or ssh console as the display). -

- -

Back to top of page.

- -
- -

Information about the macbook1,1

- -

- There is an Apple laptop called the macbook1,1 from 2006 which uses the same i945 chipset as the ThinkPad X60/T60. - A developer ported the MacBook2,1 to coreboot, the ROM images also work on the macbook1,1. -

- -

- You can refer to #macbook21 for most of this. Macbook2,1 laptops come with Core 2 Duo processors - which support 64-bit operating systems (and 32-bit). The MacBook1,1 uses Core Duo processors (supports 32-bit OS but not 64-bit), - and it is believed that this is the only difference. -

- -

- It is believed that all models are compatible, listed here: -

- - -

- Compatible models -

- Specifically (Order No. / Model No. / CPU): + Goto misc/index.html.

- - -

- Also of interest: #config_macbook21. -

- -

- Unbricking: this page shows disassembly guides and mono's page (see #macbook21) - shows the location of the SPI flash chip on the motherboard. How to remove the motherboard. -

- -

- No method is yet known for flashing in GNU/Linux while the Apple firmware is running. You will need to disassemble the machine and flash externally. - Reading from flash seems to work. Bus Pirate recommended for external flashing (there are others) and needed tools: clip (eg Pomona 5250), mini usb cable, - bus pirate cable (for connecting Pomona to the bus pirate). -

- -

Back to top of page.


-

Information about the macbook2,1

+

What is libreboot, really?

- There is an Apple laptop called the macbook2,1 from late 2006 or early 2007 that uses the same i945 chipset - as the ThinkPad X60 and ThinkPad T60. A developer ported coreboot to his macbook2,1, and now libreboot can run on it. -

-

- Mono Moosbart is the person who wrote the port for macbook2,1. Referenced below are copies (up to date at the time of writing, 20140630) - of the pages he wrote when porting coreboot to the macbook2,1. They are included here in case the main site goes down for - whatever reason, since they include a lot of useful information. -

-

- Backups created using wget:
- $ wget -m -p -E -k -K -np http://macbook.donderklumpen.de/
- $ wget -m -p -E -k -K -np http://macbook.donderklumpen.de/coreboot/
- Use -e robots=off if using this trick for other sites and the site restricts using robots.txt + Libreboot is a coreboot distribution (distro) with proprietary software removed, + intended to be a free + (libre) 'BIOS' replacement for your computer.

- Links to wget backups (and the backups themselves) of Mono's pages (see above) removed temporarily. Mono has given me permission to distribute them, but I need to ask - him to tell me what license these works fall under first. Otherwise, the above URL's should be fine. NOTE TO SELF: REMOVE THIS WHEN DONE + Read the full Free Software definition.

- Installing GNU/Linux distributions (on Apple EFI firmware) -

- -

- How to boot an ISO: burn it to a CD (like you would normally) and hold down the Alt/Control key while booting. - The bootloader will detect the GNU/Linux CD as 'Windows' (because Apple doesn't think GNU/Linux exists). Install it like you normally would. - When you boot up again, hold Alt/Control once more. The installation (on the HDD) will once again be seen as 'Windows'. (it's not actually Windows, - but Apple likes to think that Apple and Microsoft are all that exist.) - Now to install libreboot, follow #flashrom_macbook21. -

- -

- Information about coreboot -

- - -

- coreboot wiki page -

- - -

- Compatible models + Project goals (and differences versus coreboot):

-

- It is believed that all models are compatible, listed here: -

- -

- Specifically (Order No. / Model No. / CPU): -

- - -

- Also of interest: #config_macbook21. -

- -

- Unbricking: this page shows disassembly guides and mono's page (see above) - shows the location of the SPI flash chip on the motherboard. How to remove the motherboard. -

- -

- Bus Pirate recommended for external flashing (there are others) and needed tools: clip (eg Pomona 5250), mini usb cable, - bus pirate cable (for connecting Pomona to the bus pirate). -

- -

- You need to replace OS X with GNU/Linux before flashing libreboot. (OSX won't run at all in libreboot). -

- -

- There are some issues with this machine (compared to other computers that libreboot supports): -

- -

- This is an apple laptop, so it comes with OS X: it has an Apple keyboard, which means that certain keys you expect are missing: - insert, del, home, end, pgup, pgdown. There is also one mouse button only. Battery life is poor compared to X60/T60 (for now). - It also has other issues: for example, the Apple logo on the back is a hole, exposing the backlight, which means that it glows. You should cover it up. -

- -

- The macbook21 gets extremely hot under GNU/Linux and libreboot; Macfanctld (mac fan control daemon) I'm told is a programme (GPLv3 license) that can help with this. -

- -

- Debugging the heating issues (initial work):
- Distro: Trisquel 7. kernel(linux-libre): 3.13.0-32
- CPU temperatures:
- 52C(idle)/81C(stress) on factory.bin
- 70C(idle)/80C(stress) on coreboot(with microcode updates). libreboot results (without microcode updates) were the same.
- (libreboot and coreboot rom's were both built from the same code, just with or without microcode included in the rom)
- battery life was higher on original firmware, lower on coreboot/libreboot.
- microcode patches included [y/n] makes no difference.
- libreboot: 1hr18min left on idle (99% battery), 42mins left on stress (82% battery)
- factory.bin: 2 hours left on idle (99% battery), 48mins left on stress (82% battery) -

-

- Todo: see what the non-free firmware has in it's ACPI tables using acpidump and iasl -d. Try to implement cstate support in coreboot - (this will allow for lower temperatures). -

- -

- - The MacBook2,1 comes with a webcam, which does not work without proprietary software. Also, webcams are a security risk; cover it up! Or remove it. - -

- -

- A user reported that they could get better response from the touchpad with the following in their xorg.conf: -

- -
-Section "InputClass"
- Identifier "Synaptics Touchpad"
- Driver "synaptics"
- MatchIsTouchpad "on"
- MatchDevicePath "/dev/input/event*"
- Driver "synaptics"
-# The next two values determine how much pressure one needs
-# for tapping, moving the cursor and other events.
- Option "FingerLow" "10"
- Option "FingerHigh" "15"
-# Do not emulate mouse buttons in the touchpad corners.
- Option "RTCornerButton" "0"
- Option "RBCornerButton" "0"
- Option "LTCornerButton" "0"
- Option "LBCornerButton" "0"
-# One finger tap = left-click
- Option "TapButton1" "1"
-# Two fingers tap = right-click
- Option "TapButton2" "3"
-# Three fingers tap = middle-mouse
- Option "TapButton3" "2"
-# Try to not count the palm of the hand landing on the touchpad
-# as a tap. Not sure if helps.
- Option "PalmDetect" "1"
-# The following modifies how long and how fast scrolling continues
-# after lifting the finger when scrolling
- Option "CoastingSpeed" "20"
- Option "CoastingFriction" "200"
-# Smaller number means that the finger has to travel less distance
-# for it to count as cursor movement. Larger number prevents cursor
-# shaking.
- Option "HorizHysteresis" "10"
- Option "VertHysteresis" "10"
-# Prevent two-finger scrolling. Very jerky movement
- Option "HorizTwoFingerScroll" "0"
- Option "VertTwoFingerScroll" "0"
-# Use edge scrolling
- Option "HorizEdgeScroll" "1"
- Option "VertEdgeScroll" "1"
-EndSection
-
- -

Back to top of page.

- -
- -

Recommended ROM's to flash

- -

- List of directories corresponding to each board: -

- - -

These images use coreboot text-mode graphics:

-

These images use coreboot framebuffer graphics:

- -

- _txtmode images come with a working MemTest86+ and GRUB Invaders, both of which require text-mode. - _vesafb images are recommended in most cases. -

- -

- This will give you your native keyboard layout inside GRUB. The preferences in your OS are not affected, it just makes using - the GRUB command line easier (if you ever need to do that). - #grub_keyboardshows you how this was done. If your native keyboard layout - differs, you can adapt those notes and hack the 'build' script for your needs. -

- -

Back to top of page.

- -
- -

X60/X60S/X60T/T60: How to flash the ROM's onto your machine (if running Lenovo BIOS firmware).

- -
- -

- Hover over the next paragraph to make it black. -

-

- Following this guide means simply flashing a libreboot ROM. This guide will not (directly) teach you how to make a backup (dump) of the original Lenovo BIOS - because to do so would be to explicitly endorse proprietary software. However, for the purposes of reverse engineering it can be useful - to have a backup. Each copy of the original Lenovo BIOS is tied to the specific machine that it came from; it will not run - on any other machine, even if it's the same type of machine as yours. What this means is that, effectively, you can back it up now (so that you can - re-flash it later if you want to run the original Lenovo BIOS again) or lose it forever. The X60/T60 installation - guide on the coreboot wiki will show you how to do this: - http://www.coreboot.org/Board:lenovo/x60/Installation.
- Do not make this decision lightly! This is your last and only chance. -

- -

- The following is for the libreboot image and *not* the factory bios dump: -

-

- Check the last two 64K regions in your ROM file (libreboot.rom in this example):
- $ dd if=libreboot.rom of=top64k.bin bs=1 skip=$[$(stat -c %s libreboot.rom) - 0x10000] count=64k
- $ dd if=libreboot.rom of=lower64k.bin bs=1 skip=$[$(stat -c %s libreboot.rom) - 0x20000] count=64k
- $ sha512sum lower64k.bin top64k.bin
- Make *sure* that they match before you continue. The ROM's included pre-compiled in libreboot should already match. - If they don't match, then do this (based on those instructions from coreboot wiki):
- $ dd if=top64k.bin of=libreboot.rom bs=1 seek=$[$(stat -c %s libreboot.rom) - 0x20000] count=64k conv=notrunc
- After this, the ROM will be safe to flash. Explanation is provided in #build_bucts. -

- -
- -

This is for the ThinkPad X60 and T60 while running Lenovo BIOS. If you already have coreboot or libreboot running, - then go to #flashrom instead!

- -

If you are flashing a Lenovo ThinkPad T60, be sure to read #supported_t60_list

- -

- First, install the build dependencies. -

- -
- -

- - Before you proceed, make *sure* to build flashrom and bucts from source. Both are provided. This is very important! - -

- - -
- -

"YOURBOARD/YOURROM" should be replaced with what is correct as per #rom. Alternatively - you may be using your own custom ROM. Adapt.

- -

- Run the script:
- $ sudo ./lenovobios_firstflash bin/YOURBOARD/YOURROM. -

- -
- -

- You should see within the output the following:
- "Updated BUC.TS=1 - 64kb address ranges at 0xFFFE0000 and 0xFFFF0000 are swapped". -

- -

- You should also see within the output the following:
- "Flash chip is in an unknown state", "FAILED" and "DO NOT SHUTDOWN OR REBOOT"
- Seeing this means that the operation was a resounding success! DON'T PANIC. -

- -

- See this link for more details: - http://thread.gmane.org/gmane.linux.bios.flashrom/575. -

- -

- If the above is what you see, then SHUT DOWN. Wait a few seconds, and then boot; libreboot is running, but there is a 2nd procedure *needed* (see below). -

- -
- -

- - If you boot and you see nothing, try turning up the backlight (Fn+Home). - -

- -

- When you have booted up again:
- $ sudo ./lenovobios_secondflash bin/YOURBOARD/YOURROM -

- -
- -

- You should see within the output the following:
- "Updated BUC.TS=0 - 128kb address range 0xFFFE0000-0xFFFFFFFF is untranslated" -

- -

- You should also see within the output the following:
- "Verifying flash... VERIFIED." -

- -

Shut down again, wait a few seconds, and then boot.

- -
- -

- Some thinkpads come with WWAN cards installed, along with sim cards. These use non-free firmware and should be removed. - You might also want to remove bluetooth. See x60_security.html and - t60_security.html. -

- -

Back to top of page.

- -
- -

macbook21: How to flash your ROM (if running Apple EFI firmware)

- -
- -

- Hover over the next paragraph to make it black. -

-

- Following this guide means simply flashing a libreboot ROM. This guide will not (directly) teach you how to make a backup (dump) of the original Apple EFI firmware - because to do so would be to explicitly endorse proprietary software. However, for the purposes of reverse engineering it can be useful - to have a backup. Each copy of the original Apple EFI is (believed, but unproven to be) tied to the specific machine that it came from; it will not (as is believed) run - on any other machine, even if it's the same type of machine as yours. What this means is that, effectively, you can back it up now (so that you can - re-flash it later if you want to run the original Apple EFI firmware again) or lose it forever. The macbook21 installation - guide on the coreboot wiki will show you how to do this: - http://www.coreboot.org/Board:apple/macbook21.
- Do not make this decision lightly! This is (very likely) your last and only chance. -

- -

- (this theory is untested at the time of writing) -

-

- Note: If you have a MacBook1,1 then these instructions will not work. See #macbook11 for MacBook1,1 flashing instructions. -

- -
- -

- - This is for the MacBook2,1 while running Apple EFI firmware. If you already have - coreboot or libreboot running, then go to #flashrom instead! - -

- -

- Be sure to read the information in #macbook21. -

- -

- First, install the build dependencies. -

- -
- -

- - Before you proceed, make *sure* to build flashrom from source. This is very important! - -

- - -
- -

- Look at #rom to see which ROM is suitable for your machine. Alternatively you may be using your own - custom ROM. Adapt. -

- -

- Flashing is actually easy (compared to X60/T60).
- $ sudo flashrom -p internal:laptop=force_I_want_a_brick -w bin/YOURBOARD/YOURROM -

- -

- Alternatively, a script is provided which does the same thing:
- $ sudo ./macbook21_firstflash bin/YOURBOARD/YOURROM -

- -
- -

- You should also see within the output the following:
- "Verifying flash... VERIFIED." -

- -

- If you see that, great! Shut down now (power off). Wait a few seconds and then boot! -

- -

- - If you boot and you see nothing, try turning up the backlight (F2 for macbook21). - -

- - -
- -

Back to top of page.

- -
- -

X60/X60S/X60T/T60/macbook21: How to flash the ROM's onto your machine (if running libreboot or coreboot already)

- -

- - These instructions work for the Lenovo ThinkPad X60/X60S/X60T/T60 and Apple MacBook2,1. - -

-

- - This assumes that you already have coreboot or libreboot running. - -

-

- - If you have Lenovo BIOS running (X60/X60S/X60T/T60), go to #flashrom_lenovobios instead. - -

-

- - If you have Apple EFI firmware running (macbook21), go to #flashrom_macbook21 instead. - -

-

- - If you are flashing a Lenovo ThinkPad T60, be sure to read #supported_t60_list. - -

-

- - If you are flashing an Apple MacBook2,1, be sure to read the information in #macbook21. - -

-

- First, install the build dependencies. -

-
- -

- - Before you proceed, make *sure* to build flashrom from source. This is very important! - -

- - -
-

- Look at #rom to see which ROM is suitable for your machine. Alternative you may be using your own - custom ROM. Adapt. -

-

- Flash the ROM:
- $ sudo ./flash bin/YOURBOARD/YOURROM -

- -
- -

- You should see "Verifying flash... VERIFIED." written at the end of the flashrom output. SHUT DOWN - after you see this, and then boot up again after a few seconds. + Libreboot is not a fork of coreboot, despite misconceptions of this fact. Libreboot (downstream supplier) is a parallel effort + which works closely with and re-bases on the latest coreboot (upstream supplier) every so often.

- If you boot and you see nothing, try turning up the backlight (Fn+Home for X60/X60S/X60T/T60, F2 for macbook21). + As such, all new coreboot development should be done in coreboot, not libreboot! + Libreboot is about deblobbing, and packaging coreboot in a user-friendly way, where most work is already done for the user! + If, for example you wanted to attempt porting a new motherboard then you should do that in coreboot. Libreboot will (as a downstream) + receive your change at some point in the future, in a future release.

-
- -

- Some thinkpads come with WWAN cards installed, along with sim cards. These use non-free firmware and should be removed. - You might also want to remove bluetooth. See x60_security.html and - t60_security.html. -

- -

Back to top of page

- -
- -

Setting font in GRUB (for reference)

- -

You don't need to do this unless you would like to change the default font yourself. - (this is just for reference. It has already been done for you)

- -

The old font used was Unifont, and this had some missing characters: for instance, the border showed ??? characters instead of lines.

- -

I tried DeJavu Sans Mono from this website: - dejavu-fonts.org

- -

Specifically, the version that I chose was the latest at the time of writing (Saturday 21 June 2014): - this one

- -

This is a free font that is also contained in GNU/Linux distributions like Trisquel or Parabola.

- -

$ cd libreboot_src/grub
- compile grub ('build' script has the info on how to do this)
- come back out into libreboot_src/resources/grub:
- $ cd ../libreboot_src/resources/grub/font

- -

I took Dejavu Sans Mono from dejavu (included in this version of libreboot) and did:
- $ ../../../grub/grub-mkfont -o dejavusansmono.pf2 ../../../dejavu-fonts-ttf-2.34/ttf/DejaVuSansMono.ttf

- -

I then added the instructions to 'build' script to include resources/grub/dejavusansmono.pf2 in all of the ROM's in root of cbfs.
- I then added that instructions to the grub.cfg files (to load the font):
- loadfont (cbfsdisk)/dejavusansmono.pf2

- -

Back to top of page

- -
- -

GRUB keyboard layouts (for reference)

- -

Custom keyboard layout in GRUB (for reference)

- -

- Keymaps are stored in resources/utilities/grub-assemble/keymap/. -

- -

- Example (French Azerty):
- $ ckbcomp fr > frazerty

- Go in grub directory:
- cat frazerty | ./grub/grub-mklayout -o frazerty.gkb -

- -

- You must make sure that the files are named keymap and keymap.gkb (where 'keymap' can be whatever you want). -

- -

- Then from the above example, you would put frazerty in resources/utilities/grub-assemble/keymap/original/ and - the frazerty.gkb file goes under resources/utilities/grub-assemble/keymap/ -

+

+ A 'stable' coreboot: +

+

- The scripts build and buildrom-withgrub will automatically see this, and automatically build - ROM's with your custom layout (given the name) and include them under bin. Example: libreboot_frazerty.rom. + On the other hand, coreboot is also strict about what it accepts (merges) into the main git repository: + most of the time, a lot of changes are under review at review.coreboot.org (as a way of encouraging as much further development + as possible before accepting the patch).

-

Back to top of page

- -

UK Dvorak keyboard layout in GRUB (for reference)

-

- ukdvorak had to be created manually, based on usdvorak. diff them (under resources/utilities/grub-assemble/keymap/original) - to see how ukdvorak file was created + Meanwhile, libreboot is a lot less strict in this area and freely merges specific patches that are desirable, sometimes before they are merged into coreboot's main repository.

- $ cat ukdvorak | ./grub/grub-mklayout -o ukdvorak.gkb

- -

Back to top of page

- -
- -

High Pitched Whining Noise on Idle (how to remove in Trisquel)

- -

- Tested in Trisquel 6. -

-

- Note: untested in Trisquel 7. Remove this note when it is. -

- -

Powertop - how to use

- -

Now you can use this command to kill that noise:
- $ sudo powertop --auto-tune

- -

You can also run it without parameters and then go into 'Tunables' and set everything to 'Good'

- -

Note: On Trisquel 6, you will need to use a later powertop version from git. The one in the repositories is too old. See below:

- -

Powertop - Start automatically at boot time (Trisquel 6)

- -

Included with libreboot is a script called 'powertop.trisquel6'. Run this and it will setup powertop to run with --auto-tune - at boot time. Load the file in your text editor to see how it does that.

- -

$ ./powertop.trisquel6

- -

This has been tested on Trisquel 6.

- -

Back to top of page

- -
- -

High Pitched Whining Noise on Idle (how to remove in Parabola)

- -

The following removes most of the noise. It reduces what is a high frequency whine - (that not everyone can hear) to a slight buzz (which most people can't hear or doesn't bother most people).

- -

This is not perfect! The full solution is still not discovered but this is a step towards that. - Also, in some instances you will need to run 'sudo powertop --auto-tune' again. - This needs to be implemented properly in coreboot itself!

- -

On the X60 with coreboot or libreboot, there is a high pitched sound when idle. - So far we have use processor.max_cstate=2 or idle=halt in GRUB. - These consume power. Stop using them!

- -

Be root
- $ su -

- -

Installed powertop:
- # pacman -S powertop

- -

and added the following to /etc/systemd/system/powertop.service :

- -

-[Unit]
-Description=Powertop tunings
-
-[Service]
-Type=oneshot
-RemainAfterExit=no
-ExecStart=/usr/bin/powertop --auto-tune
-# "powertop --auto-tune" still needs a terminal for some reason. Possibly a bug?
-Environment="TERM=xterm"
-
-[Install]
-WantedBy=multi-user.target
-
- - -

Finally, as root do that:
- # systemctl enable powertop
- # systemctl start powertop

- -

The next time you boot the machine, the buzz will be gone.

- -

Back to top of page

- -
- -

X60/T60: Serial port - how to use (for dock owners)

-

- For the Thinkpad X60 you can use the "UltraBase X6" dock (for the X60 Tablet it is called - X6 Tablet UltraBase). For the ThinkPad T60, - you can use the "Advanced Mini Dock". -

-

- If you are using one of the ROM's with 'serial' in the name, then you have serial port enabled in libreboot - and you have memtest86+ included inside the ROM. Connect your null modem cable to the serial port on the dock - and connect the other end to a 2nd machine using your USB Serial adapter. -

-

- On the 2nd machine, you can try this (using GNU Screen):
- $ sudo screen /dev/ttyUSB0 115200 -

-

- How to quit GNU Screen: Ctrl+A then release and press K, and then press Y. -

-

There are also others like Minicom but I like GNU Screen

-

- By doing this before booting the X60/T60, you will see console output from libreboot. You will also see - GRUB displaying on the serial output, and you will be able to see MemTest86+ on the serial output aswell. - You can also configure your distro so that a terminal (TTY) is accessible from the serial console. -

-

- The following guide is for Ubuntu, and can be followed for Trisquel 6.0 which is based on Ubuntu 12.04 - (should also work in Trisquel 7, based on Ubuntu 14.04) to enable a serial console using GeTTY:
- https://help.ubuntu.com/community/SerialConsoleHowto -

-

- Note: part of the tutorial above requires changing your grub.cfg. Just change the linux line to add instructions for enabling getty. - See howtos/grub_cbfs.html. -

-

Back to top of page - -


- -

Get EDID: Find out the name (model) of your LCD panel

-

- Get the panel name with sudo get-edid | strings
- Or look in /sys/class/drm/card0-LVDS-1/edid -

-

- Alternatively you can use i2cdump. In Trisquel, this is in the package i2c-tools.
- $ sudo modprobe i2c-dev
- $ sudo i2cdump -y 5 0x50
- $ sudo rmmod i2c-dev
- You'll see the panel name in the output (from the EDID dump). -

-

- If neither of these options work (or they are unavailable), physically removing the LCD panel is an option. - Usually, there will be information printed on the back. -

-

Back to top of page.


-- cgit v0.9.1