where `linux_spi:` is the example of using your SPI pins of, for example, a
where `linux_spi:` is the example of using your SPI pins of, for example, a
Raspberry Pi. A [Bus Pirate](http://dangerousprototypes.com/docs/Bus_Pirate) with
Raspberry Pi. A [Bus Pirate](http://dangerousprototypes.com/docs/Bus_Pirate) with
@ -42,6 +42,23 @@ Raspberry Pi. A [Bus Pirate](http://dangerousprototypes.com/docs/Bus_Pirate) wit
## Flashing for the first time
## Flashing for the first time
### flashrom chip config
We use [flashrom](https://flashrom.org/) for flashing. Run `flashrom -p <your_hardware>`
(for [example](#how-to-flash) `flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=128` for the
Raspberry Pi) to let flashrom detect the chip. It will probably list a few you need to choose
from when flashing (by adding `-c "<chipname>"`). While there might be specific examples
in the commands below, please review the chip model for your device. In case you are
unsure what to specify, here's some examples we find out there:
#### 4MB chip
* `MX25L3206E` seems to mostly be in use
#### 8MB chip
* `MX25L3206E/MX25L3208E` is seen working with various X230 models.
* `MX25L6406E/MX25L6408E` is used in [this guide](https://github.com/mfc/flashing-docs/blob/master/walkthrough%20for%20flashing%20heads%20on%20an%20x230.md#neutering-me)
* `EN25QH64` is used sometimes
### EC firmware (optional)
### EC firmware (optional)
Enter Lenovo's BIOS with __F1__ and check the embedded controller (EC) version to be
Enter Lenovo's BIOS with __F1__ and check the embedded controller (EC) version to be
__1.14__ and upgrade using [the latest bootable CD](https://support.lenovo.com/at/en/downloads/ds029188)
__1.14__ and upgrade using [the latest bootable CD](https://support.lenovo.com/at/en/downloads/ds029188)
@ -72,10 +89,11 @@ For the first time, we have to save the original image, just like we did with
the 8MB chip. It's important to keep this image somewhere safe:
the 8MB chip. It's important to keep this image somewhere safe:
We flash externally, using a "Pomona 5250 8-pin SOIC test clip". You'll find
We flash externally, using a "Pomona 5250 8-pin SOIC test clip". You'll find
@ -110,6 +129,7 @@ and have the following setup
* [Connect to a wifi](https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md) or to network over ethernet to install `flashrom`
* [Connect to a wifi](https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md) or to network over ethernet to install `flashrom`
* only use the ...top.rom release file
* only use the ...top.rom release file
* connect the Clip to the Raspberry Pi 3:
* connect the Clip to the Raspberry Pi 3:
* use `linux_spi` as flashrom programmer name
Edge of pi (furthest from you)
Edge of pi (furthest from you)
@ -157,6 +177,7 @@ NOT YET AVAILABLE HERE
* very convenient - you don't need any additional hardware
* very convenient - you don't need any additional hardware
* here you'll use the ...full.rom release file
* here you'll use the ...full.rom release file
* Boot Linux with the `iomem=relaxed` boot parameter (for example set in /etc/default/grub)
* Boot Linux with the `iomem=relaxed` boot parameter (for example set in /etc/default/grub)
* use `internal` as flashrom programmer name
* create the following file (named x230-layout.txt):
* create the following file (named x230-layout.txt):