123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <style type="text/css">
- @import url('../css/main.css');
- </style>
- <title>ThinkPad X200: flashing tutorial (BeagleBone Black)</title>
- </head>
- <body>
- <div class="section">
- <h1 id="pagetop">Flashing the X200 with a BeagleBone Black</h1>
- <p>Initial flashing instructions for X200.</p>
- <p>
- This guide is for those who want libreboot on their ThinkPad X200
- while they still have the original Lenovo BIOS present. This guide
- can also be followed (adapted) if you brick your X200, to know how
- to recover.
- </p>
- <p>
- The X200S is also briefly covered (image showing soldering joints, wired up
- to a BBB). Note, not all X200S or X200 Tablet configurations are supported yet
- (see <a href="../hcl/x200.html#x200s">../hcl/x200.html#x200s</a></b>
- </p>
- <p>
- Before following this section, please make sure to setup your libreboot ROM properly first.
- Although ROM images are provided pre-built in libreboot, there are some modifications that
- you need to make to the one you chose before flashing. (instructions referenced later in
- this guide)
- </p>
- <p><a href="index.html">Back to main index</a></p>
- </div>
- <div class="section">
- <h1 id="flashchips">Flash chips</h1>
-
- <p>
- There are two possible flash chip sizes for the X200: 4MiB
- (32Mbit) or 8MiB (64Mbit). This can be identified by the type
- of flash chip below the palmrest: 4MiB is SOIC-8 (8 pins), 8MiB
- is SOIC-16 (16 pins). The X200S uses a WSON package and has the same
- pinout as SOIC-8 (covered briefly later on in this guide) but
- the chip is on the underside of the board (disassembly required).
- </p>
-
- <p>
- <a href="#pagetop">Back to top of page.</a>
- </p>
-
- </div>
-
- <div class="section">
- <h1>Initial BBB setup</h1>
-
- <p>
- Refer to <a href="bbb_setup.html">bbb_setup.html</a> for how to
- setup the BBB for flashing.
- </p>
- <p>
- The following shows how to connect clip to the BBB (on the P9 header), for SOIC-16 (clip: Pomona 5252):
- </p>
- <pre>
- POMONA 5252 (correlate with the BBB guide)
- === front (display) on your X200 ====
- NC - - 21
- 1 - - 17
- NC - - NC
- NC - - NC
- NC - - NC
- NC - - NC
- 18 - - 3.3V PSU RED
- 22 - - NC - this is pin 1 on the flash chip
- === back (palmrest) on your X200 ===
- <i>This is how you will connect. Numbers refer to pin numbers on the BBB, on the plugs near the DC jack.</i>
- </pre>
- <p>
- The following shows how to connect clip to the BBB (on the P9 header), for SOIC-8 (clip: Pomona 5250):
- </p>
- <pre>
- POMONA 5250 (correlate with the BBB guide)
- === left side of the X200 (where the VGA port is) ====
- 18 - - 1
- 22 - - NC
- NC - - 21
- 3.3V PSU RED - - 17 - this is pin 1 on the flash chip. in front of it is the screen.
- === right side of the X200 (where the audio jacks are) ===
- <i>This is how you will connect. Numbers refer to pin numbers on the BBB, on the plugs near the DC jack.</i>
- Here is a photo of the SOIC-8 flash chip: <a href="images/x200/soic8.jpg" alt="freenode IRC #libreboot 01:42 UK/London timezone February 8th 2015: pehjota: fchmmr: Here are two photos in the camera's configured resolution; resize them as you wish: http://www.pehjota.net/~pj/x200/soic-8/. License: CC BY-SA 3.0 or later. If you want other angles or anything, let me know.">images/x200/soic8.jpg</a>
- (image copyright 2015 Patrick "P. J." McDermott <pj@pehjota.net>, CC BY-SA 3.0 or later)
- Look at the pads in that photo, on the left and right. Those are for SOIC-16. Would it be possible to remove the SOIC-8 and solder a SOIC-16
- chip on those pins?
- </pre>
- <p>
- <b>On the X200S the flash chip is underneath the board, in a WSON package.
- The pinout is very much the same as a SOIC-8, except you need to solder (there are no clips available).
- <a href="images/x200/wson_soldered.jpg">images/x200/wson_soldered.jpg</a> (image copyright (C) 2014 <a href="mailto:sgsit@libreboot.org">Steve Shenton</a> under CC-BY-SA 4.0
- or higher, same license that this document uses) shows it wired (soldered) and
- connected to a BBB.</b>
- <br/>
- In this image, a pin header was soldered onto the WSON. Another solution might be to de-solder the WSON-8 chip and put a SOIC-8 there instead.
- Check the list of SOIC-8 flash chips at <a href="../hcl/x200_remove_me.html#flashchips">../hcl/x200_remove_me.html#flashchips</a> but
- do note that these are only 4MiB (32Mb) chips. The only X200 SPI chips with 8MiB capacity are SOIC-16. For 8MiB capacity in this case,
- the X201 SOIC-8 flash chip (Macronix 25L6445E) might work.
- </p>
- <h2>
- Connect Pomona 5252/5250 to the X200 flash chip, and dump/flash
- </h2>
- <p>
- <a href="images/x200/x200_pomona.jpg">images/x200/x200_pomona.jpg</a>
- shows everything connected. In this picture, the X200 is being flashed
- with the BBB.
- </p>
- <p>
- Remove the battery from your X200, then remove all the screws on
- the bottom (underside) of the machine. Then remove the keyboard and palmrest.
- The flash chip is below the palm rest. Lift back the tape that goes over it,
- and then connect your 5252/5250 (make sure to get it the right way round).
- Then connect the 3.3v PSU wire (red one) and make sure that everything else is connected.
- </p>
- <p>
- I did (SSH'd into the BBB):<br/>
- # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512</b><br/>
- In my case, the output was:
- </p>
- <pre>
- flashrom v0.9.7-r1854 on Linux 3.8.13-bone47 (armv7l)
- flashrom is free software, get the source code at http://www.flashrom.org
- Calibrating delay loop... OK.
- Found Macronix flash chip "MX25L6405(D)" (8192 kB, SPI) on linux_spi.
- Found Macronix flash chip "MX25L6406E/MX25L6436E" (8192 kB, SPI) on linux_spi.
- Found Macronix flash chip "MX25L6445E/MX25L6473E" (8192 kB, SPI) on linux_spi.
- Multiple flash chip definitions match the detected chip(s): "MX25L6405(D)", "MX25L6406E/MX25L6436E", "MX25L6445E/MX25L6473E"
- Please specify which chip definition to use with the -c <chipname> option.
- </pre>
- <p>
- This is just to test that it's working. In my case, I had to define which chip to use, like so (in your case
- it may be different, depending on what flash chip you have):<br/>
- # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)"</b>
- </p>
- <p>
- At this point, you need to create a copy of the original lenovo firmware that is currently flashed.
- This is so that you can extract the gbe (gigabit ethernet) and flash descriptor regions for use in libreboot. <b>These
- are not blobs, they only contain non-functional data (configuration details, fully readable) which is fully documented in public datasheets.</b>
- The descriptor will need to be modified
- to disable the ME (also disable AMT) so that you can flash a ROM that excludes it.
- </p>
- <p>
- How to backup factory.rom (change the -c option as neeed, for your flash chip):<br/>
- # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)" -r factory.rom</b><br/>
- # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)" -r factory1.rom</b><br/>
- # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)" -r factory2.rom</b><br/>
- Now compare the 3 images:<br/>
- # <b>sha512sum factory*.rom</b><br/>
- If the hashes match, then just copy one of them (the factory.rom) to a safe place (on a drive connected to another machine, not
- the BBB). You will need it later for part of the deblobbing.
- </p>
- <p>
- Information about the descriptor, gbe regions and how the ME was removed can be found in the notes linked at
- <a href="../hcl/x200_remove_me.html">../hcl/x200_remove_me.html</a>. Libreboot ROM images now include
- the 12KiB descriptor+gbe by default, generated using ich9gen;
- <b>however, do note that the MAC address in the Gbe region is generic. Follow the instructions at
- <a href="../hcl/x200_remove_me.html#ich9gen">../hcl/x200_remove_me.html#ich9gen</a> and do what it says to change the MAC address
- inside your X200 ROM image, before flashing it.</b>
- </p>
- <p>
- Assuming that your libreboot ROM image is properly setup (modified descriptor plus gbe region included in the ROM),
- then you can flash (assuming that the filename is <b>libreboot.rom</b>) for example I had to do:<br/>
- # <b>./flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=512 -c "MX25L6405(D)" -w libreboot.rom</b>
- </p>
- <p>
- You might see errors, but if it says <b>Verifying flash... VERIFIED</b> at the end, then it's flashed and should boot.
- Test it! (boot your X200)
- </p>
- <p>
- My output when running the command above:
- </p>
- <pre>
- flashrom v0.9.7-r1854 on Linux 3.8.13-bone47 (armv7l)
- flashrom is free software, get the source code at http://www.flashrom.org
- Calibrating delay loop... OK.
- Found Macronix flash chip "MX25L6405(D)" (8192 kB, SPI) on linux_spi.
- Reading old flash chip contents... done.
- Erasing and writing flash chip... FAILED at 0x00001000! Expected=0xff, Found=0x00, failed byte count from 0x00000000-0x0000ffff: 0xd716
- ERASE FAILED!
- Reading current flash chip contents... done. Looking for another erase function.
- Erase/write done.
- Verifying flash... VERIFIED.
- </pre>
-
- <p>
- <a href="#pagetop">Back to top of page.</a>
- </p>
-
- </div>
- <div class="section">
- <p>
- Copyright © 2014, 2015 Francis Rowe <info@gluglug.org.uk><br/>
- This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions.
- A copy of the license can be found at <a href="../license.txt">../license.txt</a>.
- </p>
- <p>
- This document is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information.
- </p>
-
- </div>
- </body>
- </html>
|