pre-built coreboot images and documentation on how to flash them for Thinkpad Laptops

Overview

Skulls - not quite Heads CII Best Practices

pre-built coreboot images with an easy installation process

seabios_bootmenu

Skulls makes it easy to install an unlocked, up-to-date and easy to use coreboot-based BIOS on your laptop.

  • unlocked: software update after first-time flashing / no restrictions for connected hardware
  • easy to use: SeaBIOS - simply a boot menu, compatible with Windows and Linux
  • up to date: Frequently a new image with the latest versions of all components

Supported Laptops

When do we do a release?

Either when

  • There is a new SeaBIOS release,
  • There is a new Intel microcode release (for our CPU model),
  • There is new coreboot development that affects us, or
  • We change the config

How we build

Alternatives

We aim to be the easiest possible coreboot distribution - both to install and to use. And since our flash image is unlocked to enable software updates, it's easy to move to alternative systems from it:

  • Heads - a coreboot distribution with pre-built (or reproducibly buildable) flash images (for the X230 and others). Heads includes Linux, with tools to create a trusted boot chain using your GPG key and the TPM.
  • osboot - a new coreboot distribution that wants to release pre-built images. Technically similar to Skulls and wants to release images with different payloads like GRUB too.
  • libreboot - a coreboot distribution with pre-built image releases. The X230 is currently not supported (the X200 is) - libreboot images are built from free software only and include the GRUB bootloader.

Sponsors

none. become a sponsor and you can be listed here. any compensation is very much appreciated.

Comments
  • Could we get rid of VGA BIOS binary?

    Could we get rid of VGA BIOS binary?

    Is there a configuration for having Video pre-Linux (in SeaBIOS and bootloader from HDD) without the binary VGA BIOS rom extracted from the vendor image?

    question 
    opened by merge 36
  • create a logo for the project

    create a logo for the project

    in case you noticed, I renamed the project. If you feel like it, please post a suggestion for a logo. It can be a hand-drawn draft that can later be put into a vector-graphics file. My drawing skills are rather limited. Oh. and if it's a skull, it should be a friendly one :)

    background: Basically I renamed and refactored the project to make room for more. We plan to add more hardware flashers to the x230 docs/scripts and the README became quite large already. Now we separate device-independent stuff out.

    Also we have room for any other device now, in case you have one and think that flashing could be simplified. I certainly don't plan to myself, but why not.

    Feedback and changes are always welcome. thanks so far.

    help wanted 
    opened by merge 29
  • losing battery-charge while fully powered off

    losing battery-charge while fully powered off

    • acknowledging this isn't directly related to the skulls build or code * when the laptop is powered off, the battery will lose a couple percentages in charge per day -- i've been updating with new Skulls images (thanks!), and have also ensured USB charging is disabled in the nvramui my superstitious hunch is it has to do with MEI, which I ran and re-uploaded successfully when initially doing the external flashing-- maybe those MEI gears are still turning..? any direction would be appreciated, and I'll plan to close by the end of the month

    output fr 'util/me_cleaner/me_cleaner.py -c' ++++++++++++++++++++ Full image detected The ME/TXE region goes from 0x3000 to 0x500000 Found FPT header at 0x3010 Found 1 partition(s) Found FTPR header: FTPR partition spans from 0x180000 to 0x24a000 ME/TXE firmware version 8.1.0.1265 Public key match: Intel ME, firmware versions 7.x.x.x, 8.x.x.x The AltMeDisable bit is SET Checking the FTPR RSA signature... VALID

    opened by alexgill 22
  • RAM issue - not all ram is usable

    RAM issue - not all ram is usable

    Hi,

    I am using skulls on my x230t. Thanks for providing this service!

    However, the system recognizes only (roughly) 8GB of the installed 16GB RAM.

    The memory I am using is "HyperX Impact", two 8GB modules. These modules have an automatic overclocking functionality, i.e. the modules are supposed to run with the maximum speed the system can provide. I guess this could be part of the problem.

    Is there any way I can use all of my RAM? Thanks for any help!

    opened by PietroProraso 16
  • streamline first-time flashing

    streamline first-time flashing

    1. is reading via flashrom -p internal really not possible for an original Lenovo BIOS?
    2. if not, does https://github.com/google/pawn work?
    3. If there is a way: verify it by comparing hardware-reading to (whatever method of) softwawre-reading
      • for "pawn" Tests on already-flashed / unlocked chips would be appreciated too (compare pawn result to flashrom-read)
    4. If there really is a verified way: write a script that
      • software-reads the original bios, 12M
      • splits it up, for hardware-flashing
      • runs ifd-tool unlock and (optionally) me_cleaner -S on the 8MB part.

    Also, create a flashrom-wrapper (and even include the flashrom program itself?) for writing (read 2x, compare, go on if ok, ...)

    That way we'd save a lot of time for first-time flashing. It'd be "hit one button" (twice) on the RPi, instead of the quite involved process it is right now...

    enhancement 
    opened by merge 15
  • internel flashing 4MB only / release management

    internel flashing 4MB only / release management

    first: we don't (yet) want to advertise internal flashing. It still feels like it could be dangerous. BUT:

    In case you do, how do you do it? Is there a way for flashrom to take the 4MB "top" image and write it to address 0x00800000 (from 0x00800000 to 0x00bfffff) instead of starting at 0x00000000?

    If that cannot be done: We should actually create a script that:

    • creates a working dir
    • creates a 12MB image out of the 4MB release image (filling with zeroes)
    • creates the flashrom layout file
    • prints everything necessary to know (the commands) how to flash it

    The thing is, I want to stop distributing the 12MB image. It should really be generated by users (the bottom 8MB are useless).

    As a sidenote, I want to think about how to do releases. Strictly speaking we should include Intel's microcode license. And if we add a script for internal flashing, described above, we should probably create a tarball.

    enhancement 
    opened by merge 14
  • Is it worth updating Embedded Controller (EC) to the new version 1.5?

    Is it worth updating Embedded Controller (EC) to the new version 1.5?

    There is a new official version of BIOS (2.77) for X230 that fixes a vulnerability in the Embedded Controller (updated to 1.15). I would like to know if updating the EC has any benefit in terms of security for skulls/coreboot users.

    Note: the new EC v1.15 is not compatible with thinkpad-ec patch.

    opened by apraile 13
  • Enable USB always on?

    Enable USB always on?

    For a while now, USB always on is supported in coreboot: https://review.coreboot.org/cgit/coreboot.git/commit/src/mainboard/lenovo/x230/cmos.default?id=7ffb329f278d6b027bb3b3660b69e87f1ddd69d8

    But the default config does not enable it. Would it make sense to enable here? I personally find it a very useful feature.

    opened by MerlijnWajer 13
  • Script for building locally

    Script for building locally

    I think a script to build the binary ROM locally would be a great addition. This wouldn't be too difficult, I wouldn't think - just pulling the files from skulls and coreboot repositories, and then running the compilation commands.

    help wanted 
    opened by tjburrows 12
  • Issues with top flash .sh

    Issues with top flash .sh

    sudo ./external_install_top.sh -k x230xbackuptop.bin No image file found. Please add -i

    Skulls for the X230 Run this script on an external computer with a flasher connected to the X230's top chip (closer to the display and farther from you)

    Usage: ./external_install_top.sh -i <image.rom> [-c ] [-k <backup_filename>]

    -f <hardware_flasher> supported flashers: rpi, ch341a -i path to image to flash -c to use for flashrom -k save the current image as -b frequency of the RPi SPI bus in Hz. default: 128

    opened by DanitiKain 11
  • Wait for Intel microcode release and include it in coreboot

    Wait for Intel microcode release and include it in coreboot

    Since 20180108 seems to have "reboot" issues, see https://newsroom.intel.com/news/firmware-updates-and-initial-performance-data-for-data-center-systems/ we currently only "prepare" to include a new microcode release in coreboot upstream.

    As https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088 suggests, there could be a new release "soon". By then we hopefully have enough review upstream on how to include it and it all goes without much delay.

    ... It might not even affect the X230, since the 20180108 package, for X230's CPU model has updates from up until onyl 2015-02-26. Nevertheless: currently in coreboot we have an older version (from 2014), so we want to have it included.

    intel-microcode 
    opened by merge 11
  • Feature Request x230 keyboard layout

    Feature Request x230 keyboard layout

    Hello everyone currently I have use skull image with my x230, however I was wondering if there could be an option on the nvram to change the layout (Fn functions) when anyone does the swap of the keyboard x230 to the x220, like the menu when you disable the me_module.

    In advance thanks

    Please mark as done or delete: My bad because I did not flash first the EC IC.

    opened by londere 0
  • Adding Tigard programmer support

    Adding Tigard programmer support

    Updated external_install_bottom.sh and external_install_top.sh to support the Tigard Programmer. See https://www.crowdsupply.com/securinghw/tigard and https://github.com/tigard-tools/tigard

    opened by TheWanderer1983 0
  • Outstanding Performance from Skulls v1.04

    Outstanding Performance from Skulls v1.04

    I wanted to let everyone know that my x230 was running kinda slow and using a lot of battery power. I have a raspberry pi with a Pomona Clip, I removed Intel ME again on the bottom chip and flashed skulls v1.04 again on the top chip.

    My x230 is running so much faster and the battery draw is around 10.5w when idle. It was about 15w. Not sure what happened. Maybe a bad flash the first time? Or maybe removing the Intel ME again did something.

    opened by darnrain 7
  • Strange behavior after updating to 1.0.5

    Strange behavior after updating to 1.0.5

    Hi,

    I have updated Skulls on my Thinkpad X230.

    The X230 came with the "non-free" version of Skulls 1.0.4 preinstalled (the version with the proprietary VGA BIOS) and now I flashed the free version of Skulls 1.0.5 (because I like the idea of free software).

    Now there is some really strange behavior, though the device is booting the OS properly.

    There's basically three strange things happening:

    1. when starting the device, some messages (such as the version of SeaBIOS, the machine UUID as well as Debian's GRUB menu) are only shown on a part of the display.

    It looks like the display is reduced to about a quarter of the actual size and it only changes to the full size after the GRUB menu has disappeared.

    I noticed that this is partially mentioned in the README.md file and it advices people to put GRUB_GFXMODE=1366x768x32 into the /etc/default/grub file.

    I have done that, but the GRUB menu is still shown in reduced size. Also, the messages about SeaBIOS and machine UUID right after startup are shown in reduced size.

    1. the Skulls logo (the rabbit head) is shown with slightly wrong proportions. Width is reduced and height is increased.

    2. after the GRUB menu has disappeared (when Debian or any other OS starts), there are the following messages appearing (this was not the case before updating Skulls):

    [ 2.710940] i915 0000:00:02.0: [drm] ERROR uncleared fifo underrun on pipe A [ 2.710942] i915 0000:00:02.0: [drm] ERROR CPU pipe A FIFO underrun [ 2.712118] i915 0000:00:02.0: [drm] ERROR uncleared pch fifo underrun on pch transcoder A [ 2.712120] i915 0000:00:02.0: [drm] ERROR PCH transcoder A FIFO underrun

    Are these three things something to be concerned about or can they maybe be explained by the fact that I flashed the free version of Skulls?

    I would like to stay with the free version a lot, unless there is really a need to go with the proprietary version.

    Thanks in advance

    opened by cronos1998 10
  • T530--Error in instructions and issues recognizing 8MB chip

    T530--Error in instructions and issues recognizing 8MB chip

    The first issue is that the pin layout for the T530 instructions to use the SOIC clip is backwards. Assuming the edge side is closer to you and the screen side away, the black and white diagram should be rotated 180 degrees. You can verify this by looking closely where the indented dot is in this photo from coreboot.org, which is also how my unit is. The indented dot is in the top left, not the bottom right like an X230. After I rotated my clip 180 degrees I could recognize the chips on my Pi.

    https://www.coreboot.org/images/5/5d/T530_SPI_chips.jpg

    I can also possibly get a better picture of this on my board.

    --

    The second issue I've run into now trying to flash two T530s is that the 8MB chip is not being read correctly. It is recognized as a 4MB chip, and each time flashrom lists it as a different chip when I run sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 with outputs like this and others:

    flashrom  on Linux 5.10.103-v7l+ (armv7l)
    flashrom is free software, get the source code at https://flashrom.org
    
    Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
    Found Macronix flash chip "MX25L3205D/MX25L3208D" (4096 kB, SPI) on linux_spi.
    No operations were specified.
    
    flashrom  on Linux 5.10.103-v7l+ (armv7l)
    flashrom is free software, get the source code at https://flashrom.org
    
    Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
    Found Macronix flash chip "MX25L3205(A)" (4096 kB, SPI) on linux_spi.
    Found Macronix flash chip "MX25L3273E" (4096 kB, SPI) on linux_spi.
    Multiple flash chip definitions match the detected chip(s): "MX25L3205(A)", "MX25L3273E"
    Please specify which chip definition to use with the -c <chipname> option.
    

    When I ran commands like this to read multiple images from the chip

    sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 -c MX25L3273E -r flash02.bin

    I got 4 copies of the image on the chip and none of them were the same as any other when examined with md5sum.

    Anyone have any idea what could be going on with this? Has anyone successfully flashed Skulls to the T530?

    opened by crispyambulance 0
Releases(1.0.5)
Owner
Martin Kepplinger
Martin Kepplinger
This package provides localization in a pre-built map using ICP and odometry (or the IMU measurements).

Localization using ICP in a known map Overview This package localizes the lidar sensor in a given map using the ICP algorithm. It subscribes to lidar

Robotic Systems Lab - Legged Robotics at ETH Z├╝rich 106 Sep 28, 2022
A pre-boot execution environment for Apple boards built on top of checkra1n

archOS A pre-boot execution environment for Apple boards built on top of checkra1n - currently based off the Checkra1n/PongoOS Repo. Building on macOS

ScarletAI 2 Jan 17, 2022
A graphical interface to set options on devices with coreboot firmware

Corevantage A graphical interface to set options on devices with coreboot firmware. Introduction This is a utility that allows users to view and modif

null 30 Sep 22, 2022
ASUS services replacement for Zephyrus G14 laptops

G14ControlPP ASUS services replacement for Zephyrus G14 laptops Introduction Initially, main goal was to bring back PgUp/PgDown/Home/End keys function

null 11 Sep 18, 2022
A WMI driver for Lenovo Legion series of laptops

Problem The Legion line of laptops from Lenovo come with the ability to switch power modes between "quiet", "balanced" and "performance." On Windows t

null 11 Aug 20, 2022
A simply GUI to change settings in coreboot's CBFS, via the nvramtool utility.

coreboot-configurator A simple GUI to change settings in coreboot's CBFS, via the nvramtool utility. How to install Ubuntu, Linux Mint, elementary OS,

Star Labs 34 Sep 30, 2022
Documentation and code for rooting and extending a Bosch car head unit (lcn2kai)

Rooting Bosch lcn2kai Headunit My Nissan Xterra came with a (for the time) modern head unit that has a touch screen, built-in navigation, backup camer

null 334 Sep 4, 2022
An operating system. Its main goal? Readable code, developer experience and documentation.

OS Dependencies Required for development. sudo apt install build-essential nasm grub-pc-bin grub-common xorriso Required for building cross-compiler.

Stijn Rogiest 2 Jun 20, 2022
Manticore - iOS Jailbreak based on cicuta virosa by ModernPwner and Pattern F's pre-jailbreak's amfid bypass.

Manticore Jailbreak Manticore Jailbreak is a Free and Open-Source Jailbreak utility developed by the Manticore Team. Current compatibility: iOS 14.0 -

Project Manticore 223 Aug 26, 2022
ThatOS64 is for the youtube series on 64-Bit Kernel Development pre-loaded by the EFI

Step by Step Tutorials on how to code a 64-Bit loader and kernel for OS Development NOTES Starting with CODE5, the resolution from the EFI file sets t

ThatOSDev 0 Jul 10, 2022
The repository contains some examples of pre-trained SNN (Spiking Neural Network) models.

About the Project The repository contains some examples of pre-trained SNN (Spiking Neural Network) models. The models were trained using the MM-BP tr

ETRI 12 Dec 30, 2021
Pre-compiled builds for CVE-2021-4034

CVE-2021-4034 Precompiled builds for CVE-2021-4034. Of course you shouldn't trust precompiled builds :) This release works slightly different: first a

null 11 Jun 13, 2022
This software brings you the possibility to Read and Write the internal Flash of the Nordic nRF52 series with an ESP32

ESP32 nRF52 SWD flasher This software brings you the possibility to Read and Write the internal Flash of the Nordic nRF52 series with an ESP32 using t

null 125 Sep 21, 2022
flashrom is a utility for detecting, reading, writing, verifying and erasing flash chips

flashrom is a utility for detecting, reading, writing, verifying and erasing flash chips

null 582 Oct 2, 2022
A run-time C++ library for working with units of measurement and conversions between them and with string representations of units and measurements

Units What's new Some of the CMake target names have changed in the latest release, please update builds appropriately Documentation A library that pr

Lawrence Livermore National Laboratory 109 Sep 7, 2022
NightDriverStrip is a source code package for building a flash program that you upload to the ESP32 microcontroller.

NightDriverStrip is a source code package for building a flash program that you upload to the ESP32 microcontroller.

Plummer's Software LLC 576 Sep 27, 2022
Open Source STC8G/STC8H ISP flash tool

stc8prog - STC MCU ISP flash tool stc8prog is a command line flash programming tool for STC 8051 series microcontrollers, Currently, only STC8H/STC8G/

IOsetting 23 Sep 5, 2022
Flash-DBSim Simulation System

Flash-DBSim Simulation System Flash-DBSim is a simulation tool for evaluating Flash-based database algorithms used for flash-based researches, we'd li

Baroquer 1 Jan 18, 2022
This is a set of utilities that allow you to read, write or erase SPI flash chips using a Raspberry Pi Pico (RP2040) chip.

Pico SPI Utilities This is a set of utilities that allow you to read, write or erase SPI flash chips using a Raspberry Pi Pico (RP2040) chip. While th

Two Bean Development 2 Aug 7, 2022