aboutsummaryrefslogtreecommitdiff
path: root/docs/hardware
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>2017-03-17 22:24:25 -0700
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>2017-03-17 22:24:25 -0700
commitdbc480fb28a694ad5a587be025eabfded7c7784b (patch)
tree16b4251dcbdede274781f7bb8b1f23570853f3bb /docs/hardware
parent85ec6862e8af0747420ca15fef7100edb5885302 (diff)
downloadlibrebootfr-dbc480fb28a694ad5a587be025eabfded7c7784b.tar.gz
librebootfr-dbc480fb28a694ad5a587be025eabfded7c7784b.zip
Convert documentation to markdown
Diffstat (limited to 'docs/hardware')
-rw-r--r--docs/hardware/dock.html190
-rw-r--r--docs/hardware/dock.md165
-rw-r--r--docs/hardware/index.html84
-rw-r--r--docs/hardware/index.md58
-rw-r--r--docs/hardware/t60_heatsink.html171
-rw-r--r--docs/hardware/t60_heatsink.md131
-rw-r--r--docs/hardware/t60_lcd_15.html128
-rw-r--r--docs/hardware/t60_lcd_15.md92
-rw-r--r--docs/hardware/t60_security.html484
-rw-r--r--docs/hardware/t60_security.md416
-rw-r--r--docs/hardware/x60_heatsink.html187
-rw-r--r--docs/hardware/x60_heatsink.md158
-rw-r--r--docs/hardware/x60_keyboard.html91
-rw-r--r--docs/hardware/x60_keyboard.md66
-rw-r--r--docs/hardware/x60_lcd_change.html83
-rw-r--r--docs/hardware/x60_lcd_change.md60
-rw-r--r--docs/hardware/x60_security.html344
-rw-r--r--docs/hardware/x60_security.md319
18 files changed, 1465 insertions, 1762 deletions
diff --git a/docs/hardware/dock.html b/docs/hardware/dock.html
deleted file mode 100644
index 6dc54322..00000000
--- a/docs/hardware/dock.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!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>Notes about DMA and the docking station (X60/T60)</title>
-</head>
-
-<body>
- <div class="section">
- <h1>Notes about DMA and the docking station (X60/T60)</h1>
- </div>
-
- <div class="section">
-<pre>
-
-Use case:
----------
-Usually when people do full disk encryption, it's not really full disk,
-instead they still have a /boot in clear.
-
-So an evil maid attack can still be done, in two passes:
-1) Clone the hdd, Infect the initramfs or the kernel.
-2) Wait for the user to enter its password, recover the password,
-luksOpen the hdd image.
-
-I wanted a real full-disk encryption so I've put grub in flash and I
-have the following: The HDD has a LUKS rootfs(containing /boot) on an
-lvm partition, so no partition is in clear.
-
-So when the computer boots it executes coreboot, then grub as a payload.
-Grub then opens the LUKS partition and loads the kernel and initramfs
-from there.
-
-To prevent hardware level tempering(like reflashing), I used nail
-polish with a lot of gilder, that acts like a seal. Then a high
-resolution picture of it is taken, to be able to tell the difference.
-
-The problem:
-------------
-But then comes the docking port issue: Some LPC pins are exported
-there, such as the CLKRUN and LDRQ#.
-
-LDRQ# is "Encoded DMA/Bus Master Request": "Only needed by
-peripherals that need DMA or bus mastering. Requires an
-individual signal per peripheral. Peripherals may not share
-an LDRQ# signal."
-
-So now DMA access is possible trough the dock connector.
-So I want to be able to turn that off.
-
-If I got it right, the X60 has 2 superio, one is in the dock, and the
-other one is in the laptop, so we have:
- ________________
- _________________ | |
-| | | Dock connector:|
-|Dock: NSC pc87982|&lt;--LPC---&gt;D_LPC_DREQ0 |
-|_________________| |_______^________|
- |
- |
- |
- |
- ___________________|____
- | v |
- | SuperIO: DLDRQ# |
- | NSC pc87382 LDRQ# |
- |___________________^____|
- |
- |
- |
- |
- ___________________|___
- | v |
- | Southbridge: LDRQ0 |
- | ICH7 |
- |_______________________|
-
-
-The code:
----------
-Now if I look at the existing code, there is some superio drivers, like
-pc87382 in src/superio/nsc, the code is very small.
-The only interesting part is the pnp_info pnp_dev_info struct.
-
-Now if I look inside src/mainboard/lenovo/x60 there is some more
-complete dock driver:
-
-Inside dock.c I see some dock_connect and dock_disconnect functions.
-
-Such functions are called during the initialisation (romstage.c) and
-from the X60 SMI handler (smihandler.c).
-
-Questions:
-----------
-1) Would the following be sufficent to prevent DMA access from the
-outside:
-&gt; int dock_connect(void)
-&gt; {
-&gt; int timeout = 1000;
-&gt; + int val;
-&gt; +
-&gt; + if (get_option(&amp;val, &quot;dock&quot;) != CB_SUCCESS)
-&gt; + val = 1;
-&gt; + if (val == 0)
-&gt; + return 0;
-&gt; [...]
-&gt; }
->
-&gt; void dock_disconnect(void) {
-&gt; + if (dock_present())
-&gt; + return;
-&gt; [...]
-&gt; }
-2) Would an nvram option be ok for that? Should a Kconfig option be
-added too?
-
-&gt; config DOCK_AUTODETECT
-&gt; bool "Autodetect"
-&gt; help
-&gt; The dock is autodetected. If unsure select this option.
->
-&gt; config DOCK_DISABLED
-&gt; bool "Disabled"
-&gt; help
-&gt; The dock is always disabled.
->
-&gt; config DOCK_NVRAM_ENABLE
-&gt; bool "Nvram"
-&gt; help
-&gt; The dock autodetection is tried only if it is also enabled
-&gt; trough nvram.
-
-</pre>
- </div>
-
- <div class="section">
-
- <p>
- Copyright &copy; 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;<br/>
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the Creative Commons Attribution-ShareAlike 4.0 International license
- or any later version published by Creative Commons;
-
- A copy of the license can be found at <a href="../cc-by-sa-4.0.txt">../cc-by-sa-4.0.txt</a>
- </p>
-
- <p>
- Updated versions of the license (when available) can be found at
- <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a>
- </p>
-
- <p>
- UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
- EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
- AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
- ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
- IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
- WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
- ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
- KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
- ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
- </p>
- <p>
- TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
- TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
- NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
- INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
- COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
- USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
- DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
- IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
- </p>
- <p>
- The disclaimer of warranties and limitation of liability provided
- above shall be interpreted in a manner that, to the extent
- possible, most closely approximates an absolute disclaimer and
- waiver of all liability.
- </p>
-
- </div>
-
-</body>
-</html>
diff --git a/docs/hardware/dock.md b/docs/hardware/dock.md
new file mode 100644
index 00000000..4602fc02
--- /dev/null
+++ b/docs/hardware/dock.md
@@ -0,0 +1,165 @@
+<div class="section">
+
+Notes about DMA and the docking station (X60/T60)
+=================================================
+
+</div>
+
+<div class="section">
+
+
+ Use case:
+ ---------
+ Usually when people do full disk encryption, it's not really full disk,
+ instead they still have a /boot in clear.
+
+ So an evil maid attack can still be done, in two passes:
+ 1) Clone the hdd, Infect the initramfs or the kernel.
+ 2) Wait for the user to enter its password, recover the password,
+ luksOpen the hdd image.
+
+ I wanted a real full-disk encryption so I've put grub in flash and I
+ have the following: The HDD has a LUKS rootfs(containing /boot) on an
+ lvm partition, so no partition is in clear.
+
+ So when the computer boots it executes coreboot, then grub as a payload.
+ Grub then opens the LUKS partition and loads the kernel and initramfs
+ from there.
+
+ To prevent hardware level tempering(like reflashing), I used nail
+ polish with a lot of gilder, that acts like a seal. Then a high
+ resolution picture of it is taken, to be able to tell the difference.
+
+ The problem:
+ ------------
+ But then comes the docking port issue: Some LPC pins are exported
+ there, such as the CLKRUN and LDRQ#.
+
+ LDRQ# is "Encoded DMA/Bus Master Request": "Only needed by
+ peripherals that need DMA or bus mastering. Requires an
+ individual signal per peripheral. Peripherals may not share
+ an LDRQ# signal."
+
+ So now DMA access is possible trough the dock connector.
+ So I want to be able to turn that off.
+
+ If I got it right, the X60 has 2 superio, one is in the dock, and the
+ other one is in the laptop, so we have:
+ ________________
+ _________________ | |
+ | | | Dock connector:|
+ |Dock: NSC pc87982|<--LPC--->D_LPC_DREQ0 |
+ |_________________| |_______^________|
+ |
+ |
+ |
+ |
+ ___________________|____
+ | v |
+ | SuperIO: DLDRQ# |
+ | NSC pc87382 LDRQ# |
+ |___________________^____|
+ |
+ |
+ |
+ |
+ ___________________|___
+ | v |
+ | Southbridge: LDRQ0 |
+ | ICH7 |
+ |_______________________|
+
+
+ The code:
+ ---------
+ Now if I look at the existing code, there is some superio drivers, like
+ pc87382 in src/superio/nsc, the code is very small.
+ The only interesting part is the pnp_info pnp_dev_info struct.
+
+ Now if I look inside src/mainboard/lenovo/x60 there is some more
+ complete dock driver:
+
+ Inside dock.c I see some dock_connect and dock_disconnect functions.
+
+ Such functions are called during the initialisation (romstage.c) and
+ from the X60 SMI handler (smihandler.c).
+
+ Questions:
+ ----------
+ 1) Would the following be sufficent to prevent DMA access from the
+ outside:
+ > int dock_connect(void)
+ > {
+ > int timeout = 1000;
+ > + int val;
+ > +
+ > + if (get_option(&val, "dock") != CB_SUCCESS)
+ > + val = 1;
+ > + if (val == 0)
+ > + return 0;
+ > [...]
+ > }
+ >
+ > void dock_disconnect(void) {
+ > + if (dock_present())
+ > + return;
+ > [...]
+ > }
+ 2) Would an nvram option be ok for that? Should a Kconfig option be
+ added too?
+
+ > config DOCK_AUTODETECT
+ > bool "Autodetect"
+ > help
+ > The dock is autodetected. If unsure select this option.
+ >
+ > config DOCK_DISABLED
+ > bool "Disabled"
+ > help
+ > The dock is always disabled.
+ >
+ > config DOCK_NVRAM_ENABLE
+ > bool "Nvram"
+ > help
+ > The dock autodetection is tried only if it is also enabled
+ > trough nvram.
+
+</div>
+
+<div class="section">
+
+Copyright © 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;\
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the Creative Commons Attribution-ShareAlike 4.0
+International license or any later version published by Creative
+Commons; A copy of the license can be found at
+[../cc-by-sa-4.0.txt](../cc-by-sa-4.0.txt)
+
+Updated versions of the license (when available) can be found at
+<https://creativecommons.org/licenses/by-sa/4.0/legalcode>
+
+UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT
+POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND
+AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY,
+OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE,
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT,
+ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE
+OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF
+WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT
+APPLY TO YOU.
+
+TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU
+ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR
+OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL,
+PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES
+ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN
+IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES,
+COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT
+ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+The disclaimer of warranties and limitation of liability provided above
+shall be interpreted in a manner that, to the extent possible, most
+closely approximates an absolute disclaimer and waiver of all liability.
+
+</div>
diff --git a/docs/hardware/index.html b/docs/hardware/index.html
deleted file mode 100644
index d89d7212..00000000
--- a/docs/hardware/index.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!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>Hardware modifications</title>
-</head>
-
-<body>
-
- <div class="section">
- <h1 id="pagetop">Hardware modifications</h1>
- <p>
- This section relates to hardware maintenance on supported targets.
- </p>
- <p>
- <a href="../">Back to previous index</a>.
- </p>
- <ul>
- <li><a href="x60_keyboard.html">ThinkPad X60/X60s/X60T: Change keyboard</a> (the procedure on X200/X200S/X200T is almost identical)</li>
- <li><a href="x60_heatsink.html">ThinkPad X60/X60S: change the fan/heatsink</a></li>
- <li><a href="x60_lcd_change.html">ThinkPad X60/X60s: How to change the LCD panel</a> (incomplete. pics only for now)</li>
- <li><a href="t60_lcd_15.html">ThinkPad T60 15.1&quot; changing LCD panel</a></li>
- <li><a href="t60_heatsink.html">ThinkPad T60: change the fan/heatsink</a></li>
- <li><a href="x60_security.html">ThinkPad X60/X60S: hardware security</a></li>
- <li><a href="t60_security.html">ThinkPad T60: hardware security</a></li>
- </ul>
- </div>
-
- <div class="section">
-
- <p>
- Copyright &copy; 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;<br/>
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the Creative Commons Attribution-ShareAlike 4.0 International license
- or any later version published by Creative Commons;
-
- A copy of the license can be found at <a href="../cc-by-sa-4.0.txt">../cc-by-sa-4.0.txt</a>
- </p>
-
- <p>
- Updated versions of the license (when available) can be found at
- <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a>
- </p>
-
- <p>
- UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
- EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
- AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
- ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
- IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
- WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
- ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
- KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
- ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
- </p>
- <p>
- TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
- TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
- NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
- INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
- COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
- USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
- DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
- IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
- </p>
- <p>
- The disclaimer of warranties and limitation of liability provided
- above shall be interpreted in a manner that, to the extent
- possible, most closely approximates an absolute disclaimer and
- waiver of all liability.
- </p>
-
- </div>
-
-</body>
-</html>
diff --git a/docs/hardware/index.md b/docs/hardware/index.md
new file mode 100644
index 00000000..99b8ed91
--- /dev/null
+++ b/docs/hardware/index.md
@@ -0,0 +1,58 @@
+<div class="section">
+
+Hardware modifications {#pagetop}
+======================
+
+This section relates to hardware maintenance on supported targets.
+
+[Back to previous index](../).
+
+- [ThinkPad X60/X60s/X60T: Change keyboard](x60_keyboard.html) (the
+ procedure on X200/X200S/X200T is almost identical)
+- [ThinkPad X60/X60S: change the fan/heatsink](x60_heatsink.html)
+- [ThinkPad X60/X60s: How to change the LCD
+ panel](x60_lcd_change.html) (incomplete. pics only for now)
+- [ThinkPad T60 15.1\" changing LCD panel](t60_lcd_15.html)
+- [ThinkPad T60: change the fan/heatsink](t60_heatsink.html)
+- [ThinkPad X60/X60S: hardware security](x60_security.html)
+- [ThinkPad T60: hardware security](t60_security.html)
+
+</div>
+
+<div class="section">
+
+Copyright © 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;\
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the Creative Commons Attribution-ShareAlike 4.0
+International license or any later version published by Creative
+Commons; A copy of the license can be found at
+[../cc-by-sa-4.0.txt](../cc-by-sa-4.0.txt)
+
+Updated versions of the license (when available) can be found at
+<https://creativecommons.org/licenses/by-sa/4.0/legalcode>
+
+UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT
+POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND
+AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY,
+OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE,
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT,
+ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE
+OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF
+WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT
+APPLY TO YOU.
+
+TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU
+ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR
+OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL,
+PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES
+ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN
+IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES,
+COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT
+ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+The disclaimer of warranties and limitation of liability provided above
+shall be interpreted in a manner that, to the extent possible, most
+closely approximates an absolute disclaimer and waiver of all liability.
+
+</div>
diff --git a/docs/hardware/t60_heatsink.html b/docs/hardware/t60_heatsink.html
deleted file mode 100644
index c3f2286d..00000000
--- a/docs/hardware/t60_heatsink.html
+++ /dev/null
@@ -1,171 +0,0 @@
-<!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>Changing the heatsink or CPU on a ThinkPad T60</title>
-</head>
-
-<body>
-
- <div class="section">
- <h1>Changing heatsink (or CPU) on the ThinkPad T60</h1>
- <p>
- Using this guide you can also change/upgrade the CPU.
- </p>
- <p><a href="./">Back to previous index</a></p>
- </div>
-
- <div class="section">
- <h1 id="hardware_requirements">Hardware requirements</h1>
- <ul>
- <li>rubbing alcohol or isopropyl alcohol, and thermal compound for changing CPU heatsink (procedure involves removing heatsink)</li>
- <li>thermal compound/paste (Arctic MX-4 is good. Others are also good.)</li>
- </ul>
- </div>
-
- <div class="section">
- <h1 id="software_requirements">Software requirements</h1>
- <ul>
- <li>xsensors</li>
- <li>stress</li>
- </ul>
- </div>
-
- <div class="section">
-
- <h1 id="recovery">Disassembly</h1>
-
- <p>
- Remove those screws and remove the HDD:<br/>
- <img src="../images/t60_dev/0001.JPG" alt="" /> <img src="../images/t60_dev/0002.JPG" alt="" />
- </p>
-
- <p>
- Lift off the palm rest:<br/>
- <img src="../images/t60_dev/0003.JPG" alt="" />
- </p>
-
- <p>
- Lift up the keyboard, pull it back a bit, flip it over like that and then disconnect it from the board:<br/>
- <img src="../images/t60_dev/0004.JPG" alt="" /> <img src="../images/t60_dev/0005.JPG" alt="" /> <img src="../images/t60_dev/0006.JPG" alt="" />
- </p>
-
- <p>
- Gently wedge both sides loose:<br/>
- <img src="../images/t60_dev/0007.JPG" alt="" /> <img src="../images/t60_dev/0008.JPG" alt="" />
- </p>
-
- <p>
- Remove that cable from the position:<br/>
- <img src="../images/t60_dev/0009.JPG" alt="" /> <img src="../images/t60_dev/0010.JPG" alt="" />
- </p>
-
- <p>
- Remove the bezel (sorry forgot to take pics).
- </p>
-
- <p>
- On the CPU (and there is another chip south-east to it, sorry forgot to take pic)
- clean off the old thermal paste (with the alcohol) and apply new (Artic Silver 5 is good, others are good too)
- you should also clean the heatsink the same way<br/>
- <img src="../images/t60_dev/0051.JPG" alt="" />
- </p>
-
- <p>
- This is also an opportunity to change the CPU to another one. For example if you had a Core Duo T2400, you can upgrade it to a better processor
- (higher speed, 64-bit support). A Core 2 Duo T7600 was installed here.
- </p>
-
- <p>
- Attach the heatsink and install the screws (also, make sure to install the AC jack as highlighted):<br/>
- <img src="../images/t60_dev/0052.JPG" alt="" />
- </p>
-
- <p>
- Reinstall that upper bezel:<br/>
- <img src="../images/t60_dev/0053.JPG" alt="" />
- </p>
-
- <p>
- Do that:<br/>
- <img src="../images/t60_dev/0054.JPG" alt="" /> <img src="../images/t60_dev/0055.JPG" alt="" />
- </p>
-
- <p>
- Attach keyboard:<br/>
- <img src="../images/t60_dev/0056.JPG" alt="" />
- </p>
-
- <p>
- Place keyboard and (sorry, forgot to take pics) reinstall the palmrest and insert screws on the underside:<br/>
- <img src="../images/t60_dev/0058.JPG" alt="" />
- </p>
-
- <p>
- It lives!<br/>
- <img src="../images/t60_dev/0071.JPG" alt="" /> <img src="../images/t60_dev/0072.JPG" alt="" /> <img src="../images/t60_dev/0073.JPG" alt="" />
- </p>
-
- <p>
- Always stress test ('stress -c 2' and xsensors. below 90C is ok) when replacing cpu paste/heatsink:<br/>
- <img src="../images/t60_dev/0074.JPG" alt="" />
- </p>
-
- </div>
-
- <div class="section">
-
- <p>
- Copyright &copy; 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;<br/>
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the Creative Commons Attribution-ShareAlike 4.0 International license
- or any later version published by Creative Commons;
-
- A copy of the license can be found at <a href="../cc-by-sa-4.0.txt">../cc-by-sa-4.0.txt</a>
- </p>
-
- <p>
- Updated versions of the license (when available) can be found at
- <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a>
- </p>
-
- <p>
- UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
- EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
- AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
- ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
- IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
- WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
- ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
- KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
- ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
- </p>
- <p>
- TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
- TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
- NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
- INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
- COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
- USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
- DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
- IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
- </p>
- <p>
- The disclaimer of warranties and limitation of liability provided
- above shall be interpreted in a manner that, to the extent
- possible, most closely approximates an absolute disclaimer and
- waiver of all liability.
- </p>
-
- </div>
-
-</body>
-</html>
diff --git a/docs/hardware/t60_heatsink.md b/docs/hardware/t60_heatsink.md
new file mode 100644
index 00000000..4828d68d
--- /dev/null
+++ b/docs/hardware/t60_heatsink.md
@@ -0,0 +1,131 @@
+<div class="section">
+
+Changing heatsink (or CPU) on the ThinkPad T60
+==============================================
+
+Using this guide you can also change/upgrade the CPU.
+
+[Back to previous index](./)
+
+</div>
+
+<div class="section">
+
+Hardware requirements {#hardware_requirements}
+=====================
+
+- rubbing alcohol or isopropyl alcohol, and thermal compound for
+ changing CPU heatsink (procedure involves removing heatsink)
+- thermal compound/paste (Arctic MX-4 is good. Others are also good.)
+
+</div>
+
+<div class="section">
+
+Software requirements {#software_requirements}
+=====================
+
+- xsensors
+- stress
+
+</div>
+
+<div class="section">
+
+Disassembly {#recovery}
+===========
+
+Remove those screws and remove the HDD:\
+![](../images/t60_dev/0001.JPG) ![](../images/t60_dev/0002.JPG)
+
+Lift off the palm rest:\
+![](../images/t60_dev/0003.JPG)
+
+Lift up the keyboard, pull it back a bit, flip it over like that and
+then disconnect it from the board:\
+![](../images/t60_dev/0004.JPG) ![](../images/t60_dev/0005.JPG)
+![](../images/t60_dev/0006.JPG)
+
+Gently wedge both sides loose:\
+![](../images/t60_dev/0007.JPG) ![](../images/t60_dev/0008.JPG)
+
+Remove that cable from the position:\
+![](../images/t60_dev/0009.JPG) ![](../images/t60_dev/0010.JPG)
+
+Remove the bezel (sorry forgot to take pics).
+
+On the CPU (and there is another chip south-east to it, sorry forgot to
+take pic) clean off the old thermal paste (with the alcohol) and apply
+new (Artic Silver 5 is good, others are good too) you should also clean
+the heatsink the same way\
+![](../images/t60_dev/0051.JPG)
+
+This is also an opportunity to change the CPU to another one. For
+example if you had a Core Duo T2400, you can upgrade it to a better
+processor (higher speed, 64-bit support). A Core 2 Duo T7600 was
+installed here.
+
+Attach the heatsink and install the screws (also, make sure to install
+the AC jack as highlighted):\
+![](../images/t60_dev/0052.JPG)
+
+Reinstall that upper bezel:\
+![](../images/t60_dev/0053.JPG)
+
+Do that:\
+![](../images/t60_dev/0054.JPG) ![](../images/t60_dev/0055.JPG)
+
+Attach keyboard:\
+![](../images/t60_dev/0056.JPG)
+
+Place keyboard and (sorry, forgot to take pics) reinstall the palmrest
+and insert screws on the underside:\
+![](../images/t60_dev/0058.JPG)
+
+It lives!\
+![](../images/t60_dev/0071.JPG) ![](../images/t60_dev/0072.JPG)
+![](../images/t60_dev/0073.JPG)
+
+Always stress test (\'stress -c 2\' and xsensors. below 90C is ok) when
+replacing cpu paste/heatsink:\
+![](../images/t60_dev/0074.JPG)
+
+</div>
+
+<div class="section">
+
+Copyright © 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;\
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the Creative Commons Attribution-ShareAlike 4.0
+International license or any later version published by Creative
+Commons; A copy of the license can be found at
+[../cc-by-sa-4.0.txt](../cc-by-sa-4.0.txt)
+
+Updated versions of the license (when available) can be found at
+<https://creativecommons.org/licenses/by-sa/4.0/legalcode>
+
+UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT
+POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND
+AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY,
+OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE,
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT,
+ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE
+OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF
+WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT
+APPLY TO YOU.
+
+TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU
+ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR
+OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL,
+PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES
+ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN
+IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES,
+COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT
+ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+The disclaimer of warranties and limitation of liability provided above
+shall be interpreted in a manner that, to the extent possible, most
+closely approximates an absolute disclaimer and waiver of all liability.
+
+</div>
diff --git a/docs/hardware/t60_lcd_15.html b/docs/hardware/t60_lcd_15.html
deleted file mode 100644
index c74bb8f3..00000000
--- a/docs/hardware/t60_lcd_15.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!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>Changing LCD panel on 15.1 inch T60</title>
-</head>
-
-<body>
-
- <div class="section">
- <h1>Changing the LCD panel on a 15.1&quot; T60</h1>
- <p>
- This is for the 15.1&quot; T60. If you have another size then the procedure will differ; for example, on 14.1&quot; you have
- to remove the hinges and the procedure is a bit more involved than on 15.1&quot;.
- </p>
- <p><a href="./">Back to previous index</a></p>
- </div>
-
- <div class="section">
-
- <h1 id="recovery">Disassembly</h1>
-
- <p>
- Remove those covers and unscrew:<br/>
- <img src="../images/t60_dev/0059.JPG" alt="" /> <img src="../images/t60_dev/0060.JPG" alt="" /> <img src="../images/t60_dev/0061.JPG" alt="" />
- </p>
-
- <p>
- Gently pry off the front bezel.
- </p>
-
- <p>
- Remove inverter board:<br/>
- <img src="../images/t60_dev/0064.JPG" alt="" />
- </p>
-
- <p>
- Disconnect LCD cable:<br/>
- <img src="../images/t60_dev/0065.JPG" alt="" />
- </p>
-
- <p>
- Remove the panel:<br/>
- <img src="../images/t60_dev/0066.JPG" alt="" />
- </p>
-
- <p>
- Move the rails (left and right side) from the old panel to the new one and then attach LCD cable:<br/>
- <img src="../images/t60_dev/0068.JPG" alt="" />
- </p>
-
- <p>
- Insert panel (this one is an LG-Philips LP150E05-A2K1, and there are others. See <a href="../hcl/#supported_t60_list">../hcl/#supported_t60_list</a>):<br/>
- <img src="../images/t60_dev/0069.JPG" alt="" />
- </p>
-
- <p>
- Insert new inverter board (see <a href="../hcl/#supported_t60_list">../hcl/#supported_t60_list</a> for what is recommended on your LCD panel):<br/>
- <img src="../images/t60_dev/0070.JPG" alt="" />
- </p>
-
- <p>
- Now re-attach the front bezel and put all the screws in.
- </p>
-
- <p>
- It lives!<br/>
- <img src="../images/t60_dev/0071.JPG" alt="" /> <img src="../images/t60_dev/0072.JPG" alt="" /> <img src="../images/t60_dev/0073.JPG" alt="" />
- </p>
-
- </div>
-
- <div class="section">
-
- <p>
- Copyright &copy; 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;<br/>
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the Creative Commons Attribution-ShareAlike 4.0 International license
- or any later version published by Creative Commons;
-
- A copy of the license can be found at <a href="../cc-by-sa-4.0.txt">../cc-by-sa-4.0.txt</a>
- </p>
-
- <p>
- Updated versions of the license (when available) can be found at
- <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a>
- </p>
-
- <p>
- UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
- EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
- AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
- ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
- IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
- WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
- ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
- KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
- ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
- </p>
- <p>
- TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
- TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
- NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
- INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
- COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
- USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
- DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
- IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
- </p>
- <p>
- The disclaimer of warranties and limitation of liability provided
- above shall be interpreted in a manner that, to the extent
- possible, most closely approximates an absolute disclaimer and
- waiver of all liability.
- </p>
-
- </div>
-
-</body>
-</html>
diff --git a/docs/hardware/t60_lcd_15.md b/docs/hardware/t60_lcd_15.md
new file mode 100644
index 00000000..49b35135
--- /dev/null
+++ b/docs/hardware/t60_lcd_15.md
@@ -0,0 +1,92 @@
+<div class="section">
+
+Changing the LCD panel on a 15.1\" T60
+======================================
+
+This is for the 15.1\" T60. If you have another size then the procedure
+will differ; for example, on 14.1\" you have to remove the hinges and
+the procedure is a bit more involved than on 15.1\".
+
+[Back to previous index](./)
+
+</div>
+
+<div class="section">
+
+Disassembly {#recovery}
+===========
+
+Remove those covers and unscrew:\
+![](../images/t60_dev/0059.JPG) ![](../images/t60_dev/0060.JPG)
+![](../images/t60_dev/0061.JPG)
+
+Gently pry off the front bezel.
+
+Remove inverter board:\
+![](../images/t60_dev/0064.JPG)
+
+Disconnect LCD cable:\
+![](../images/t60_dev/0065.JPG)
+
+Remove the panel:\
+![](../images/t60_dev/0066.JPG)
+
+Move the rails (left and right side) from the old panel to the new one
+and then attach LCD cable:\
+![](../images/t60_dev/0068.JPG)
+
+Insert panel (this one is an LG-Philips LP150E05-A2K1, and there are
+others. See
+[../hcl/\#supported\_t60\_list](../hcl/#supported_t60_list)):\
+![](../images/t60_dev/0069.JPG)
+
+Insert new inverter board (see
+[../hcl/\#supported\_t60\_list](../hcl/#supported_t60_list) for what is
+recommended on your LCD panel):\
+![](../images/t60_dev/0070.JPG)
+
+Now re-attach the front bezel and put all the screws in.
+
+It lives!\
+![](../images/t60_dev/0071.JPG) ![](../images/t60_dev/0072.JPG)
+![](../images/t60_dev/0073.JPG)
+
+</div>
+
+<div class="section">
+
+Copyright © 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;\
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the Creative Commons Attribution-ShareAlike 4.0
+International license or any later version published by Creative
+Commons; A copy of the license can be found at
+[../cc-by-sa-4.0.txt](../cc-by-sa-4.0.txt)
+
+Updated versions of the license (when available) can be found at
+<https://creativecommons.org/licenses/by-sa/4.0/legalcode>
+
+UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT
+POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND
+AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY,
+OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE,
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT,
+ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE
+OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF
+WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT
+APPLY TO YOU.
+
+TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU
+ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR
+OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL,
+PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES
+ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN
+IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES,
+COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT
+ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+The disclaimer of warranties and limitation of liability provided above
+shall be interpreted in a manner that, to the extent possible, most
+closely approximates an absolute disclaimer and waiver of all liability.
+
+</div>
diff --git a/docs/hardware/t60_security.html b/docs/hardware/t60_security.html
deleted file mode 100644
index 5e0c4bdd..00000000
--- a/docs/hardware/t60_security.html
+++ /dev/null
@@ -1,484 +0,0 @@
-<!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>Libreboot documentation: Security on the ThinkPad T60</title>
-</head>
-
-<body>
-
- <div class="section">
- <h1>Security on the ThinkPad T60</h1>
- <p>Hardware modifications to enhance security on the ThinkPad T60. This tutorial is <b>incomplete</b> at the time of writing.</p>
- <p><a href="./">Back to previous index</a></p>
- </div>
-
- <div class="section">
- <h1>Table of Contents</h1>
- <ul>
- <li><a href="#hardware_requirements">Hardware Requirements</a></li>
- <li><a href="#software_requirements">Software Requirements</a></li>
- <li><a href="#procedure">The procedure</a></li>
- </ul>
- <h1 id="hardware_requirements">Hardware requirements</h1>
- <ul>
- <li>A T60</li>
- <li>screwdriver</li>
- <li>Rubbing or isopropyl alcohol, and thermal compound.</li>
- <li>(in a later version of this tutorial: soldering iron and scalpel)</li>
- </ul>
- <h1 id="software_requirements">Software requirements</h1>
- <ul>
- <li>none (at least in the scope of the article as-is)</li>
- <li>You probably want to encrypt your GNU+Linux install using LUKS</li>
- </ul>
- </div>
-
- <div class="section">
- <h1>
- Rationale
- </h1>
- <p>
- Most people think of security on the software side: the hardware is important aswell.
- </p>
- <p>
- This tutorial deals with reducing the number of devices that have direct memory access that
- could communicate with inputs/outputs that could be used to remotely
- command the system (or leak data). All of this is purely theoretical for the time being.
- </p>
- </div>
-
- <div class="section">
-
- <h1 id="procedure">Disassembly</h1>
-
- <p>
- Remove those screws and remove the HDD:<br/>
- <img src="../images/t60_dev/0001.JPG" alt="" /> <img src="../images/t60_dev/0002.JPG" alt="" />
- </p>
-
- <p>
- Lift off the palm rest:<br/>
- <img src="../images/t60_dev/0003.JPG" alt="" />
- </p>
-
- <p>
- Lift up the keyboard, pull it back a bit, flip it over like that and then disconnect it from the board:<br/>
- <img src="../images/t60_dev/0004.JPG" alt="" /> <img src="../images/t60_dev/0005.JPG" alt="" /> <img src="../images/t60_dev/0006.JPG" alt="" />
- </p>
-
- <p>
- Gently wedge both sides loose:<br/>
- <img src="../images/t60_dev/0007.JPG" alt="" /> <img src="../images/t60_dev/0008.JPG" alt="" />
- </p>
-
- <p>
- Remove that cable from the position:<br/>
- <img src="../images/t60_dev/0009.JPG" alt="" /> <img src="../images/t60_dev/0010.JPG" alt="" />
- </p>
-
- <p>
- Now remove that bezel. Remove wifi, nvram battery and speaker connector (also remove 56k modem, on the left of wifi):<br/>
- <img src="../images/t60_dev/0011.JPG" alt="" /><br/>
- Reason: has direct (and very fast) memory access, and could (theoretically) leak data over a side-channel.<br/>
- <b>Wifi:</b> The ath5k/ath9k cards might not have firmware at all. They might safe but could have
- access to the computer's RAM trough DMA. If people have an intel
- card(most T60 laptops come with Intel wifi by default, until you change it),then that card runs
- a non-free firwamre and has access to the computer's RAM trough DMA! So
- the risk-level is very high.
- </p>
-
- <p>
- Remove those screws:<br/>
- <img src="../images/t60_dev/0012.JPG" alt="" />
- </p>
-
- <p>
- Disconnect the power jack:<br/>
- <img src="../images/t60_dev/0013.JPG" alt="" />
- </p>
-
- <p>
- Remove nvram battery (we will put it back later):<br/>
- <img src="../images/t60_dev/0014.JPG" alt="" />
- </p>
-
- <p>
- Disconnect cable (for 56k modem) and disconnect the other cable:<br/>
- <img src="../images/t60_dev/0015.JPG" alt="" /> <img src="../images/t60_dev/0016.JPG" alt="" />
- </p>
-
- <p>
- Disconnect speaker cable:<br/>
- <img src="../images/t60_dev/0017.JPG" alt="" />
- </p>
-
- <p>
- Disconnect the other end of the 56k modem cable:<br/>
- <img src="../images/t60_dev/0018.JPG" alt="" />
- </p>
-
- <p>
- Make sure you removed it:<br/>
- <img src="../images/t60_dev/0019.JPG" alt="" />
- </p>
-
- <p>
- Unscrew those:<br/>
- <img src="../images/t60_dev/0020.JPG" alt="" />
- </p>
-
- <p>
- Make sure you removed those:<br/>
- <img src="../images/t60_dev/0021.JPG" alt="" />
- </p>
-
- <p>
- Disconnect LCD cable from board:<br/>
- <img src="../images/t60_dev/0022.JPG" alt="" />
- </p>
-
- <p>
- Remove those screws then remove the LCD assembly:<br/>
- <img src="../images/t60_dev/0023.JPG" alt="" /> <img src="../images/t60_dev/0024.JPG" alt="" /> <img src="../images/t60_dev/0025.JPG" alt="" />
- </p>
-
- <p>
- Once again, make sure you removed those:<br/>
- <img src="../images/t60_dev/0026.JPG" alt="" />
- </p>
-
- <p>
- Remove the shielding containing the motherboard, then flip it over. Remove these screws, placing them on a steady
- surface in the same layout as they were in before you removed them. Also, you should mark each screw hole after removing the
- screw (a permanent marker pen will do), this is so that you have a point of reference when re-assembling the system:<br/>
- <img src="../images/t60_dev/0027.JPG" alt="" /> <img src="../images/t60_dev/0028.JPG" alt="" /> <img src="../images/t60_dev/0029.JPG" alt="" />
- <img src="../images/t60_dev/0031.JPG" alt="" /> <img src="../images/t60_dev/0032.JPG" alt="" /> <img src="../images/t60_dev/0033.JPG" alt="" />
- </p>
-
- <p>
- Remove microphone (soldering iron not needed. Just wedge it out gently):<br/>
- <img src="../images/t60_dev/0039.JPG" alt="" /><br/>
- <b>Rationale:</b><br/>
- Another reason to remove the microphone: If your computer gets<a href="#ref1">[1]</a> compromised, it can
- record what you say, and use it to receive data from nearby devices if
- they're compromised too. Also, we do not know what the built-in microcode (in the CPU) is doing; it could theoretically
- be programmed to accept remote commands from some speaker somewhere (remote security hole). <b>In other words,
- the system could already be compromised from the factory.</b>
- </p>
-
- <p>
- Remove infrared:<br/>
- <img src="../images/t60_dev/0040.JPG" alt="" /> <img src="../images/t60_dev/0042.JPG" alt="" />
- </p>
-
- <p>
- Remove cardbus (it's in a socket, no need to disable. Just remove the port itself):<br/>
- <img src="../images/t60_dev/0041.JPG" alt="" /><br/>
- <b>Rationale:</b><br/>
- It has direct memory access and can be used to extract sensitive details (such as LUKS keys). See
- 'GoodBIOS' video linked at the end (speaker is Peter Stuge, a coreboot hacker). The video covers X60
- but the same topics apply to T60.
- </p>
-
- <p>
- Before re-installing the upper chassis, remove the speaker:<br/>
- <img src="../images/t60_dev/0043.JPG" alt="" /> <img src="../images/t60_dev/0044.JPG" alt="" /><br/>
- Reason: combined with the microphone issue, this could be used to leak data.<br/>
- If your computer gets<a href="#ref1">[1]</a> compromised, it can be used to
- transmit data to nearby compromised devices. It's unknown if it can be
- turned into a microphone<a href="#ref2">[2]</a>.<br/>
- Replacement: headphones/speakers (line-out) or external DAC (USB).
- </p>
-
- <p>
- Remove the wwan:<br/>
- <img src="../images/t60_dev/0045.JPG" alt="" /><br/>
- <b>Wwan (3g modem):</b> They run proprietary software! It's like AMT but over the GSM network which is
- probably even worse.<br/>
- Replacement: external USB wifi dongle. (or USB wwan/3g dongle; note, this has all the same privacy issues as mobile phones. wwan not recommended).
- </p>
-
- <p>
- This is where the simcard connector is soldered. See notes above about wwan. Remove simcard by removing battery
- and then it's accessible (so, remember to do this when you re-assemble. or you could do it now?)<br/>
- <img src="../images/t60_dev/0046.JPG" alt="" />
- </p>
-
- <p>
- Put those screws back:<br/>
- <img src="../images/t60_dev/0047.JPG" alt="" />
- </p>
-
- <p>
- Put it back into lower chassis:<br/>
- <img src="../images/t60_dev/0048.JPG" alt="" />
- </p>
-
- <p>
- Attach LCD and insert screws (also, attach the lcd cable to the board):<br/>
- <img src="../images/t60_dev/0049.JPG" alt="" />
- </p>
-
- <p>
- Insert those screws:<br/>
- <img src="../images/t60_dev/0050.JPG" alt="" />
- </p>
-
- <p>
- On the CPU (and there is another chip south-east to it, sorry forgot to take pic)
- clean off the old thermal paste (with the alcohol) and apply new (Artic Silver 5 is good, others are good too)
- you should also clean the heatsink the same way<br/>
- <img src="../images/t60_dev/0051.JPG" alt="" />
- </p>
-
- <p>
- Attach the heatsink and install the screws (also, make sure to install the AC jack as highlighted):<br/>
- <img src="../images/t60_dev/0052.JPG" alt="" />
- </p>
-
- <p>
- Reinstall that upper bezel:<br/>
- <img src="../images/t60_dev/0053.JPG" alt="" />
- </p>
-
- <p>
- Do that:<br/>
- <img src="../images/t60_dev/0054.JPG" alt="" /> <img src="../images/t60_dev/0055.JPG" alt="" />
- </p>
-
- <p>
- Attach keyboard and install nvram battery:<br/>
- <img src="../images/t60_dev/0056.JPG" alt="" /> <img src="../images/t60_dev/0057.JPG" alt="" />
- </p>
-
- <p>
- Place keyboard and (sorry, forgot to take pics) reinstall the palmrest and insert screws on the underside:<br/>
- <img src="../images/t60_dev/0058.JPG" alt="" />
- </p>
-
- <p>
- Remove those covers and unscrew:<br/>
- <img src="../images/t60_dev/0059.JPG" alt="" /> <img src="../images/t60_dev/0060.JPG" alt="" /> <img src="../images/t60_dev/0061.JPG" alt="" />
- </p>
-
- <p>
- Gently pry off the front bezel (sorry, forgot to take pics).
- </p>
-
- <p>
- Remove bluetooth module:<br/>
- <img src="../images/t60_dev/0062.JPG" alt="" /> <img src="../images/t60_dev/0063.JPG" alt="" />
- </p>
-
- <p>
- Re-attach the front bezel and re-insert the screws (sorry, forgot to take pics).
- </p>
-
- <p>
- It lives!<br/>
- <img src="../images/t60_dev/0071.JPG" alt="" /> <img src="../images/t60_dev/0072.JPG" alt="" /> <img src="../images/t60_dev/0073.JPG" alt="" />
- </p>
-
- <p>
- Always stress test ('stress -c 2' and xsensors. below 90C is ok) when replacing cpu paste/heatsink:<br/>
- <img src="../images/t60_dev/0074.JPG" alt="" />
- </p>
-
- </div>
-
- <div class="section">
- <h2>
- Not covered yet:
- </h2>
- <ul>
- <li>Disable flashing the ethernet firmware</li>
- <li>Disable SPI flash writes (can be re-enabled by unsoldering two parts)</li>
- <li>Disable use of xrandr/edid on external monitor (cut 2 pins on VGA)</li>
- <li>Disable docking station (might be possible to do it in software, in coreboot upstream as a Kconfig option)</li>
- </ul>
- <p>
- Go to <a href="http://media.ccc.de/browse/congress/2013/30C3_-_5529_-_en_-_saal_2_-_201312271830_-_hardening_hardware_and_choosing_a_goodbios_-_peter_stuge.html">http://media.ccc.de/browse/congress/2013/30C3_-_5529_-_en_-_saal_2_-_201312271830_-_hardening_hardware_and_choosing_a_goodbios_-_peter_stuge.html</a>
- or directly to the video: <a href="http://mirror.netcologne.de/CCC/congress/2013/webm/30c3-5529-en-Hardening_hardware_and_choosing_a_goodBIOS_webm.webm">http://mirror.netcologne.de/CCC/congress/2013/webm/30c3-5529-en-Hardening_hardware_and_choosing_a_goodBIOS_webm.webm</a>.
- </p>
- <p>
- A lot of this tutorial is based on that video. Look towards the second half of the video to see how to do the above.
- </p>
- </div>
-
- <div class="section">
- <h2>
- Also not covered yet:
- </h2>
- <ul>
- <li>
- Intrusion detection: randomized seal on screws<br/>
- Just put nail polish with lot of glider on the important screws, take
- some good pictures. Keep the pictueres and make sure of their integrity.
- Compare the nail polish with the pictures before powering on the laptop.
- </li>
- <li>
- Tips about preventing/mitigating risk of cold boot attack.
- <ul>
- <li>soldered RAM?</li>
- <li>wipe all RAM at boot/power-off/power-on? (patch in coreboot upstream?)</li>
- <li>ask gnutoo about fallback patches (counts number of boots)</li>
- </ul>
- </li>
- <li>
- General tips/advice and web links showing how to detect physical intrusions.
- </li>
- <li>
- For example: <a href="http://cs.tau.ac.il/~tromer/acoustic/">http://cs.tau.ac.il/~tromer/acoustic/</a>
- or <a href="http://cyber.bgu.ac.il/content/how-leak-sensitive-data-isolated-computer-air-gap-near-mobile-phone-airhopper">http://cyber.bgu.ac.il/content/how-leak-sensitive-data-isolated-computer-air-gap-near-mobile-phone-airhopper</a>.
- </li>
- <li>
- <a href="https://en.wikipedia.org/wiki/Tempest_%28codename%29">https://en.wikipedia.org/wiki/Tempest_%28codename%29</a>
- </li>
- <li>
- https://gitorious.org/gnutoo-for-coreboot/grub-assemble/source/a61f636797777a742f65f4c9c58032aa6a9b23c3:
- </li>
- </ul>
- </div>
-
- <div class="section">
- <h1>
- Extra notes
- </h1>
- <p>
- EC: Cannot be removed but can be mitigated: it contains non-free
- non-loadable code, but it has no access to the computer's RAM.
- It has access to the on-switch of the wifi, bluetooth, modem and some
- other power management features. The issue is that it has access to the
- keyboard, however if the software security howto <b>(not yet written)</b> is followed correctly,
- it won't be able to leak data to a local attacker. It has no network
- access but it may still be able to leak data remotely, but that
- requires someone to be nearby to recover the data with the help of an
- SDR and some directional antennas<a href="#ref3">[3]</a>.
- </p>
- <p>
- <a href="http://www.coreboot.org/Intel_82573_Ethernet_controller">Intel 82573 Ethernet controller</a>
- on the X60 seems safe, according to Denis.
- </p>
-
- <div class="subsection">
- <h2>
- Risk level
- </h2>
- <ul>
- <li>Modem (3g/wwan): highest</li>
- <li>Intel wifi: Near highest</li>
- <li>Atheros PCI wifi: unknown, but lower than intel wifi.</li>
- <li>Microphone: only problematic if the computer gets compromised.</li>
- <li>Speakers: only problematic if the computer gets compromised.</li>
- <li>EC: can be mitigated if following the guide on software security.</li>
- </ul>
- </div>
- </div>
-
- <div class="section">
- <h1>
- Further reading material (software security)
- </h1>
- <ul>
- <li><a href="../gnulinux/encrypted_debian.html">Installing Debian or Devuan GNU+Linux with full disk encryption (including /boot)</a></li>
- <li><a href="../gnulinux/encrypted_parabola.html">Installing Parabola GNU+Linux with full disk encryption (including /boot)</a></li>
- <li><a href="dock.html">Notes about DMA access and the docking station</a></li>
- </ul>
- </div>
-
- <div class="section">
- <h1>
- References
- </h1>
- <div class="subsection">
- <h2 id="ref1">[1] physical access</h2>
- <p>
- Explain that black hats, TAO, and so on might use a 0day to get in,
- and explain that in this case it mitigates what the attacker can do.
- Also the TAO do some evaluation before launching an attack: they take
- the probability of beeing caught into account, along with the kind of
- target. A 0day costs a lot of money, I heard that it was from 100000$
- to 400000$, some other websites had prices 10 times lower but that
- but it was probably a typo. So if people increase their security it
- makes it more risky and more costly to attack people.
- </p>
- </div>
- <div class="subsection">
- <h2 id="ref2">[2] microphone</h2>
- <p>
- It's possible to turn headphones into a microphone, you could try
- yourself, however they don't record loud at all. Also intel cards have
- the capability to change a connector's function, for instance the
- microphone jack can now become a headphone plug, that's called
- retasking. There is some support for it in GNU+Linux but it's not very
- well known.
- </p>
- </div>
- <div class="subsection">
- <h2 id="ref3">[3] Video (CCC)</h2>
- <p>
- 30c3-5356-en-Firmware_Fat_Camp_webm.webm from the 30th CCC. While
- their demo is experimental(their hardware also got damaged during the
- transport), the spies probably already have that since a long time.
- <a href="http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm">http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm</a>
- </p>
- </div>
- </div>
-
- <div class="section">
-
- <p>
- Copyright &copy; 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;<br/>
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the Creative Commons Attribution-ShareAlike 4.0 International license
- or any later version published by Creative Commons;
-
- A copy of the license can be found at <a href="../cc-by-sa-4.0.txt">../cc-by-sa-4.0.txt</a>
- </p>
-
- <p>
- Updated versions of the license (when available) can be found at
- <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a>
- </p>
-
- <p>
- UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
- EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
- AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
- ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
- IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
- WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
- ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
- KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
- ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
- </p>
- <p>
- TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
- TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
- NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
- INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
- COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
- USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
- DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
- IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
- </p>
- <p>
- The disclaimer of warranties and limitation of liability provided
- above shall be interpreted in a manner that, to the extent
- possible, most closely approximates an absolute disclaimer and
- waiver of all liability.
- </p>
-
- </div>
-
-</body>
-</html>
diff --git a/docs/hardware/t60_security.md b/docs/hardware/t60_security.md
new file mode 100644
index 00000000..667c906a
--- /dev/null
+++ b/docs/hardware/t60_security.md
@@ -0,0 +1,416 @@
+<div class="section">
+
+Security on the ThinkPad T60
+============================
+
+Hardware modifications to enhance security on the ThinkPad T60. This
+tutorial is **incomplete** at the time of writing.
+
+[Back to previous index](./)
+
+</div>
+
+<div class="section">
+
+Table of Contents
+=================
+
+- [Hardware Requirements](#hardware_requirements)
+- [Software Requirements](#software_requirements)
+- [The procedure](#procedure)
+
+Hardware requirements {#hardware_requirements}
+=====================
+
+- A T60
+- screwdriver
+- Rubbing or isopropyl alcohol, and thermal compound.
+- (in a later version of this tutorial: soldering iron and scalpel)
+
+Software requirements {#software_requirements}
+=====================
+
+- none (at least in the scope of the article as-is)
+- You probably want to encrypt your GNU+Linux install using LUKS
+
+</div>
+
+<div class="section">
+
+Rationale
+=========
+
+Most people think of security on the software side: the hardware is
+important aswell.
+
+This tutorial deals with reducing the number of devices that have direct
+memory access that could communicate with inputs/outputs that could be
+used to remotely command the system (or leak data). All of this is
+purely theoretical for the time being.
+
+</div>
+
+<div class="section">
+
+Disassembly {#procedure}
+===========
+
+Remove those screws and remove the HDD:\
+![](../images/t60_dev/0001.JPG) ![](../images/t60_dev/0002.JPG)
+
+Lift off the palm rest:\
+![](../images/t60_dev/0003.JPG)
+
+Lift up the keyboard, pull it back a bit, flip it over like that and
+then disconnect it from the board:\
+![](../images/t60_dev/0004.JPG) ![](../images/t60_dev/0005.JPG)
+![](../images/t60_dev/0006.JPG)
+
+Gently wedge both sides loose:\
+![](../images/t60_dev/0007.JPG) ![](../images/t60_dev/0008.JPG)
+
+Remove that cable from the position:\
+![](../images/t60_dev/0009.JPG) ![](../images/t60_dev/0010.JPG)
+
+Now remove that bezel. Remove wifi, nvram battery and speaker connector
+(also remove 56k modem, on the left of wifi):\
+![](../images/t60_dev/0011.JPG)\
+Reason: has direct (and very fast) memory access, and could
+(theoretically) leak data over a side-channel.\
+**Wifi:** The ath5k/ath9k cards might not have firmware at all. They
+might safe but could have access to the computer\'s RAM trough DMA. If
+people have an intel card(most T60 laptops come with Intel wifi by
+default, until you change it),then that card runs a non-free firwamre
+and has access to the computer\'s RAM trough DMA! So the risk-level is
+very high.
+
+Remove those screws:\
+![](../images/t60_dev/0012.JPG)
+
+Disconnect the power jack:\
+![](../images/t60_dev/0013.JPG)
+
+Remove nvram battery (we will put it back later):\
+![](../images/t60_dev/0014.JPG)
+
+Disconnect cable (for 56k modem) and disconnect the other cable:\
+![](../images/t60_dev/0015.JPG) ![](../images/t60_dev/0016.JPG)
+
+Disconnect speaker cable:\
+![](../images/t60_dev/0017.JPG)
+
+Disconnect the other end of the 56k modem cable:\
+![](../images/t60_dev/0018.JPG)
+
+Make sure you removed it:\
+![](../images/t60_dev/0019.JPG)
+
+Unscrew those:\
+![](../images/t60_dev/0020.JPG)
+
+Make sure you removed those:\
+![](../images/t60_dev/0021.JPG)
+
+Disconnect LCD cable from board:\
+![](../images/t60_dev/0022.JPG)
+
+Remove those screws then remove the LCD assembly:\
+![](../images/t60_dev/0023.JPG) ![](../images/t60_dev/0024.JPG)
+![](../images/t60_dev/0025.JPG)
+
+Once again, make sure you removed those:\
+![](../images/t60_dev/0026.JPG)
+
+Remove the shielding containing the motherboard, then flip it over.
+Remove these screws, placing them on a steady surface in the same layout
+as they were in before you removed them. Also, you should mark each
+screw hole after removing the screw (a permanent marker pen will do),
+this is so that you have a point of reference when re-assembling the
+system:\
+![](../images/t60_dev/0027.JPG) ![](../images/t60_dev/0028.JPG)
+![](../images/t60_dev/0029.JPG) ![](../images/t60_dev/0031.JPG)
+![](../images/t60_dev/0032.JPG) ![](../images/t60_dev/0033.JPG)
+
+Remove microphone (soldering iron not needed. Just wedge it out
+gently):\
+![](../images/t60_dev/0039.JPG)\
+**Rationale:**\
+Another reason to remove the microphone: If your computer
+gets[\[1\]](#ref1) compromised, it can record what you say, and use it
+to receive data from nearby devices if they\'re compromised too. Also,
+we do not know what the built-in microcode (in the CPU) is doing; it
+could theoretically be programmed to accept remote commands from some
+speaker somewhere (remote security hole). **In other words, the system
+could already be compromised from the factory.**
+
+Remove infrared:\
+![](../images/t60_dev/0040.JPG) ![](../images/t60_dev/0042.JPG)
+
+Remove cardbus (it\'s in a socket, no need to disable. Just remove the
+port itself):\
+![](../images/t60_dev/0041.JPG)\
+**Rationale:**\
+It has direct memory access and can be used to extract sensitive details
+(such as LUKS keys). See \'GoodBIOS\' video linked at the end (speaker
+is Peter Stuge, a coreboot hacker). The video covers X60 but the same
+topics apply to T60.
+
+Before re-installing the upper chassis, remove the speaker:\
+![](../images/t60_dev/0043.JPG) ![](../images/t60_dev/0044.JPG)\
+Reason: combined with the microphone issue, this could be used to leak
+data.\
+If your computer gets[\[1\]](#ref1) compromised, it can be used to
+transmit data to nearby compromised devices. It\'s unknown if it can be
+turned into a microphone[\[2\]](#ref2).\
+Replacement: headphones/speakers (line-out) or external DAC (USB).
+
+Remove the wwan:\
+![](../images/t60_dev/0045.JPG)\
+**Wwan (3g modem):** They run proprietary software! It\'s like AMT but
+over the GSM network which is probably even worse.\
+Replacement: external USB wifi dongle. (or USB wwan/3g dongle; note,
+this has all the same privacy issues as mobile phones. wwan not
+recommended).
+
+This is where the simcard connector is soldered. See notes above about
+wwan. Remove simcard by removing battery and then it\'s accessible (so,
+remember to do this when you re-assemble. or you could do it now?)\
+![](../images/t60_dev/0046.JPG)
+
+Put those screws back:\
+![](../images/t60_dev/0047.JPG)
+
+Put it back into lower chassis:\
+![](../images/t60_dev/0048.JPG)
+
+Attach LCD and insert screws (also, attach the lcd cable to the board):\
+![](../images/t60_dev/0049.JPG)
+
+Insert those screws:\
+![](../images/t60_dev/0050.JPG)
+
+On the CPU (and there is another chip south-east to it, sorry forgot to
+take pic) clean off the old thermal paste (with the alcohol) and apply
+new (Artic Silver 5 is good, others are good too) you should also clean
+the heatsink the same way\
+![](../images/t60_dev/0051.JPG)
+
+Attach the heatsink and install the screws (also, make sure to install
+the AC jack as highlighted):\
+![](../images/t60_dev/0052.JPG)
+
+Reinstall that upper bezel:\
+![](../images/t60_dev/0053.JPG)
+
+Do that:\
+![](../images/t60_dev/0054.JPG) ![](../images/t60_dev/0055.JPG)
+
+Attach keyboard and install nvram battery:\
+![](../images/t60_dev/0056.JPG) ![](../images/t60_dev/0057.JPG)
+
+Place keyboard and (sorry, forgot to take pics) reinstall the palmrest
+and insert screws on the underside:\
+![](../images/t60_dev/0058.JPG)
+
+Remove those covers and unscrew:\
+![](../images/t60_dev/0059.JPG) ![](../images/t60_dev/0060.JPG)
+![](../images/t60_dev/0061.JPG)
+
+Gently pry off the front bezel (sorry, forgot to take pics).
+
+Remove bluetooth module:\
+![](../images/t60_dev/0062.JPG) ![](../images/t60_dev/0063.JPG)
+
+Re-attach the front bezel and re-insert the screws (sorry, forgot to
+take pics).
+
+It lives!\
+![](../images/t60_dev/0071.JPG) ![](../images/t60_dev/0072.JPG)
+![](../images/t60_dev/0073.JPG)
+
+Always stress test (\'stress -c 2\' and xsensors. below 90C is ok) when
+replacing cpu paste/heatsink:\
+![](../images/t60_dev/0074.JPG)
+
+</div>
+
+<div class="section">
+
+Not covered yet:
+----------------
+
+- Disable flashing the ethernet firmware
+- Disable SPI flash writes (can be re-enabled by unsoldering two
+ parts)
+- Disable use of xrandr/edid on external monitor (cut 2 pins on VGA)
+- Disable docking station (might be possible to do it in software, in
+ coreboot upstream as a Kconfig option)
+
+Go to
+<http://media.ccc.de/browse/congress/2013/30C3_-_5529_-_en_-_saal_2_-_201312271830_-_hardening_hardware_and_choosing_a_goodbios_-_peter_stuge.html>
+or directly to the video:
+<http://mirror.netcologne.de/CCC/congress/2013/webm/30c3-5529-en-Hardening_hardware_and_choosing_a_goodBIOS_webm.webm>.
+
+A lot of this tutorial is based on that video. Look towards the second
+half of the video to see how to do the above.
+
+</div>
+
+<div class="section">
+
+Also not covered yet:
+---------------------
+
+- Intrusion detection: randomized seal on screws\
+ Just put nail polish with lot of glider on the important screws,
+ take some good pictures. Keep the pictueres and make sure of their
+ integrity. Compare the nail polish with the pictures before powering
+ on the laptop.
+- Tips about preventing/mitigating risk of cold boot attack.
+ - soldered RAM?
+ - wipe all RAM at boot/power-off/power-on? (patch in coreboot
+ upstream?)
+ - ask gnutoo about fallback patches (counts number of boots)
+- General tips/advice and web links showing how to detect physical
+ intrusions.
+- For example: <http://cs.tau.ac.il/~tromer/acoustic/> or
+ <http://cyber.bgu.ac.il/content/how-leak-sensitive-data-isolated-computer-air-gap-near-mobile-phone-airhopper>.
+- <https://en.wikipedia.org/wiki/Tempest_%28codename%29>
+- https://gitorious.org/gnutoo-for-coreboot/grub-assemble/source/a61f636797777a742f65f4c9c58032aa6a9b23c3:
+
+</div>
+
+<div class="section">
+
+Extra notes
+===========
+
+EC: Cannot be removed but can be mitigated: it contains non-free
+non-loadable code, but it has no access to the computer\'s RAM. It has
+access to the on-switch of the wifi, bluetooth, modem and some other
+power management features. The issue is that it has access to the
+keyboard, however if the software security howto **(not yet written)**
+is followed correctly, it won\'t be able to leak data to a local
+attacker. It has no network access but it may still be able to leak data
+remotely, but that requires someone to be nearby to recover the data
+with the help of an SDR and some directional antennas[\[3\]](#ref3).
+
+[Intel 82573 Ethernet
+controller](http://www.coreboot.org/Intel_82573_Ethernet_controller) on
+the X60 seems safe, according to Denis.
+
+<div class="subsection">
+
+Risk level
+----------
+
+- Modem (3g/wwan): highest
+- Intel wifi: Near highest
+- Atheros PCI wifi: unknown, but lower than intel wifi.
+- Microphone: only problematic if the computer gets compromised.
+- Speakers: only problematic if the computer gets compromised.
+- EC: can be mitigated if following the guide on software security.
+
+</div>
+
+</div>
+
+<div class="section">
+
+Further reading material (software security)
+============================================
+
+- [Installing Debian or Devuan GNU+Linux with full disk encryption
+ (including /boot)](../gnulinux/encrypted_debian.html)
+- [Installing Parabola GNU+Linux with full disk encryption (including
+ /boot)](../gnulinux/encrypted_parabola.html)
+- [Notes about DMA access and the docking station](dock.html)
+
+</div>
+
+<div class="section">
+
+References
+==========
+
+<div class="subsection">
+
+\[1\] physical access {#ref1}
+---------------------
+
+Explain that black hats, TAO, and so on might use a 0day to get in, and
+explain that in this case it mitigates what the attacker can do. Also
+the TAO do some evaluation before launching an attack: they take the
+probability of beeing caught into account, along with the kind of
+target. A 0day costs a lot of money, I heard that it was from 100000\$
+to 400000\$, some other websites had prices 10 times lower but that but
+it was probably a typo. So if people increase their security it makes it
+more risky and more costly to attack people.
+
+</div>
+
+<div class="subsection">
+
+\[2\] microphone {#ref2}
+----------------
+
+It\'s possible to turn headphones into a microphone, you could try
+yourself, however they don\'t record loud at all. Also intel cards have
+the capability to change a connector\'s function, for instance the
+microphone jack can now become a headphone plug, that\'s called
+retasking. There is some support for it in GNU+Linux but it\'s not very
+well known.
+
+</div>
+
+<div class="subsection">
+
+\[3\] Video (CCC) {#ref3}
+-----------------
+
+30c3-5356-en-Firmware\_Fat\_Camp\_webm.webm from the 30th CCC. While
+their demo is experimental(their hardware also got damaged during the
+transport), the spies probably already have that since a long time.
+<http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm>
+
+</div>
+
+</div>
+
+<div class="section">
+
+Copyright © 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;\
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the Creative Commons Attribution-ShareAlike 4.0
+International license or any later version published by Creative
+Commons; A copy of the license can be found at
+[../cc-by-sa-4.0.txt](../cc-by-sa-4.0.txt)
+
+Updated versions of the license (when available) can be found at
+<https://creativecommons.org/licenses/by-sa/4.0/legalcode>
+
+UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT
+POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND
+AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY,
+OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE,
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT,
+ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE
+OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF
+WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT
+APPLY TO YOU.
+
+TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU
+ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR
+OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL,
+PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES
+ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN
+IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES,
+COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT
+ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+The disclaimer of warranties and limitation of liability provided above
+shall be interpreted in a manner that, to the extent possible, most
+closely approximates an absolute disclaimer and waiver of all liability.
+
+</div>
diff --git a/docs/hardware/x60_heatsink.html b/docs/hardware/x60_heatsink.html
deleted file mode 100644
index a5e3f847..00000000
--- a/docs/hardware/x60_heatsink.html
+++ /dev/null
@@ -1,187 +0,0 @@
-<!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>Libreboot documentation: Switch heatsink on ThinkPad X60</title>
-</head>
-
-<body>
-
- <div class="section">
- <h1>Changing the fan/heatsink on the ThinkPad X60</h1>
- <p>
- This guide will teach you how to replace the fan and heatsink on your ThinkPad X60.
- </p>
- <p><a href="./">Back to main index</a></p>
- </div>
-
- <div class="section">
- <h1>Table of Contents</h1>
- <ul>
- <li><a href="#hardware_requirements">Hardware Requirements</a></li>
- <li><a href="#software_requirements">Software Requirements</a></li>
- <li><a href="#procedure">Disassembly</a></li>
- </ul>
- </div>
-
- <div class="section">
- <h1 id="hardware_requirements">Hardware requirements</h1>
- <ul>
- <li>isopropyl alcohol (sometimes called rubbing alcohol)</li>
- <li>your new fan and/or heatsink</li>
- <li>CPU thermal compound (some say Arctic MX-4 is good, others are also 'ok')</li>
- <li>Something to spread the paste with</li>
- </ul>
- </div>
-
- <div class="section">
- <h1 id="software_requirements">Software requirements (for CPU stress testing)</h1>
- <ul>
- <li>xsensors utility</li>
- <li>stress utility</li>
- </ul>
- </div>
-
- <div class="section">
- <h1 id="procedure">Disassembly</h1>
- <p>
- Remove those screws:<br/>
- <img src="../images/x60_heatsink/0000.jpg" alt="" />
- </p>
- <p>
- Push the keyboard forward (carefully):<br/>
- <img src="../images/x60_heatsink/0001.jpg" alt="" />
- </p>
- <p>
- Lift the keyboard up and disconnect it from the board:<br/>
- <img src="../images/x60_heatsink/0002.jpg" alt="" />
- </p>
- <p>
- Grab the right-hand side of the chassis and force it off (gently) and pry up the rest of the chassis:<br/>
- <img src="../images/x60_heatsink/0003.jpg" alt="" />
- </p>
- <p>
- You should now have this:<br/>
- <img src="../images/x60_heatsink/0004.jpg" alt="" />
- </p>
- <p>
- Disconnect the wifi antenna cables, the modem cable and the speaker:<br/>
- <img src="../images/x60_heatsink/0005.jpg" alt="" />
- </p>
- <p>
- Unroute the cables along their path, carefully lifting the tape that holds them in place. Then, disconnect the modem
- cable (other end) and power connection and unroute all the cables so that they dangle by the monitor hinge on the right-hand
- side:<br/>
- <img src="../images/x60_heatsink/0006.jpg" alt="" />
- </p>
- <p>
- Disconnect the monitor from the motherboard, and unroute the grey antenna cable, carefully lifting the tape
- that holds it into place:<br/>
- <img src="../images/x60_heatsink/0008.jpg" alt="" />
- </p>
- <p>
- Carefully lift the remaining tape and unroute the left antenna cable so that it is loose:<br/>
- <img src="../images/x60_heatsink/0009.jpg" alt="" />
- </p>
- <p>
- Remove those screws:<br/>
- <img src="../images/x60_heatsink/0011.jpg" alt="" />
- </p>
- <p>
- Remove those screws:<br/>
- <img src="../images/x60_heatsink/0012.jpg" alt="" />
- </p>
- <p>
- Carefully remove the plate, like so:<br/>
- <img src="../images/x60_heatsink/0013.jpg" alt="" />
- </p>
- <p>
- Remove the SATA connector:<br/>
- <img src="../images/x60_heatsink/0014.jpg" alt="" />
- </p>
- <p>
- Now remove the motherboard (gently) and cast the lcd/chassis aside:<br/>
- <img src="../images/x60_heatsink/0015.jpg" alt="" />
- </p>
- <p>
- Look at that black tape above the heatsink, remove it:<br/>
- <img src="../images/x60_heatsink/0016.jpg" alt="" />
- </p>
- <p>
- Now you have removed it:<br/>
- <img src="../images/x60_heatsink/0017.jpg" alt="" />
- </p>
-
- <p>
- Disconnect the fan and remove all the screws, heatsink will easily come off:<br/>
- <img src="../images/x60_heatsink/0018.jpg" alt="" />
- </p>
-
- <p>
- Remove the old paste with a cloth (from the CPU and heatsink) and then clean both of them with the alcohol (to remove remaining residue of the paste).
- Apply a pea-sized amount of paste to the both chipsets that the heatsink covered and spread it evenly (uniformally).
- Finally reinstall the heatsink, reversing previous steps.
- </p>
-
- <p>
- <b>stress -c 2</b> command can be used to push the CPU to 100%, and <b>xsensors</b> (or <b>watch sensors</b> command) can be used to monitor heat.
- Below 90C is ok.
- </p>
- </div>
-
- <div class="section">
-
- <p>
- Copyright &copy; 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;<br/>
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the Creative Commons Attribution-ShareAlike 4.0 International license
- or any later version published by Creative Commons;
-
- A copy of the license can be found at <a href="../cc-by-sa-4.0.txt">../cc-by-sa-4.0.txt</a>
- </p>
-
- <p>
- Updated versions of the license (when available) can be found at
- <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a>
- </p>
-
- <p>
- UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
- EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
- AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
- ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
- IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
- WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
- ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
- KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
- ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
- </p>
- <p>
- TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
- TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
- NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
- INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
- COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
- USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
- DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
- IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
- </p>
- <p>
- The disclaimer of warranties and limitation of liability provided
- above shall be interpreted in a manner that, to the extent
- possible, most closely approximates an absolute disclaimer and
- waiver of all liability.
- </p>
-
- </div>
-
-</body>
-</html>
diff --git a/docs/hardware/x60_heatsink.md b/docs/hardware/x60_heatsink.md
new file mode 100644
index 00000000..366c36c9
--- /dev/null
+++ b/docs/hardware/x60_heatsink.md
@@ -0,0 +1,158 @@
+<div class="section">
+
+Changing the fan/heatsink on the ThinkPad X60
+=============================================
+
+This guide will teach you how to replace the fan and heatsink on your
+ThinkPad X60.
+
+[Back to main index](./)
+
+</div>
+
+<div class="section">
+
+Table of Contents
+=================
+
+- [Hardware Requirements](#hardware_requirements)
+- [Software Requirements](#software_requirements)
+- [Disassembly](#procedure)
+
+</div>
+
+<div class="section">
+
+Hardware requirements {#hardware_requirements}
+=====================
+
+- isopropyl alcohol (sometimes called rubbing alcohol)
+- your new fan and/or heatsink
+- CPU thermal compound (some say Arctic MX-4 is good, others are also
+ \'ok\')
+- Something to spread the paste with
+
+</div>
+
+<div class="section">
+
+Software requirements (for CPU stress testing) {#software_requirements}
+==============================================
+
+- xsensors utility
+- stress utility
+
+</div>
+
+<div class="section">
+
+Disassembly {#procedure}
+===========
+
+Remove those screws:\
+![](../images/x60_heatsink/0000.jpg)
+
+Push the keyboard forward (carefully):\
+![](../images/x60_heatsink/0001.jpg)
+
+Lift the keyboard up and disconnect it from the board:\
+![](../images/x60_heatsink/0002.jpg)
+
+Grab the right-hand side of the chassis and force it off (gently) and
+pry up the rest of the chassis:\
+![](../images/x60_heatsink/0003.jpg)
+
+You should now have this:\
+![](../images/x60_heatsink/0004.jpg)
+
+Disconnect the wifi antenna cables, the modem cable and the speaker:\
+![](../images/x60_heatsink/0005.jpg)
+
+Unroute the cables along their path, carefully lifting the tape that
+holds them in place. Then, disconnect the modem cable (other end) and
+power connection and unroute all the cables so that they dangle by the
+monitor hinge on the right-hand side:\
+![](../images/x60_heatsink/0006.jpg)
+
+Disconnect the monitor from the motherboard, and unroute the grey
+antenna cable, carefully lifting the tape that holds it into place:\
+![](../images/x60_heatsink/0008.jpg)
+
+Carefully lift the remaining tape and unroute the left antenna cable so
+that it is loose:\
+![](../images/x60_heatsink/0009.jpg)
+
+Remove those screws:\
+![](../images/x60_heatsink/0011.jpg)
+
+Remove those screws:\
+![](../images/x60_heatsink/0012.jpg)
+
+Carefully remove the plate, like so:\
+![](../images/x60_heatsink/0013.jpg)
+
+Remove the SATA connector:\
+![](../images/x60_heatsink/0014.jpg)
+
+Now remove the motherboard (gently) and cast the lcd/chassis aside:\
+![](../images/x60_heatsink/0015.jpg)
+
+Look at that black tape above the heatsink, remove it:\
+![](../images/x60_heatsink/0016.jpg)
+
+Now you have removed it:\
+![](../images/x60_heatsink/0017.jpg)
+
+Disconnect the fan and remove all the screws, heatsink will easily come
+off:\
+![](../images/x60_heatsink/0018.jpg)
+
+Remove the old paste with a cloth (from the CPU and heatsink) and then
+clean both of them with the alcohol (to remove remaining residue of the
+paste). Apply a pea-sized amount of paste to the both chipsets that the
+heatsink covered and spread it evenly (uniformally). Finally reinstall
+the heatsink, reversing previous steps.
+
+**stress -c 2** command can be used to push the CPU to 100%, and
+**xsensors** (or **watch sensors** command) can be used to monitor heat.
+Below 90C is ok.
+
+</div>
+
+<div class="section">
+
+Copyright © 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;\
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the Creative Commons Attribution-ShareAlike 4.0
+International license or any later version published by Creative
+Commons; A copy of the license can be found at
+[../cc-by-sa-4.0.txt](../cc-by-sa-4.0.txt)
+
+Updated versions of the license (when available) can be found at
+<https://creativecommons.org/licenses/by-sa/4.0/legalcode>
+
+UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT
+POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND
+AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY,
+OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE,
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT,
+ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE
+OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF
+WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT
+APPLY TO YOU.
+
+TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU
+ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR
+OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL,
+PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES
+ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN
+IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES,
+COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT
+ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+The disclaimer of warranties and limitation of liability provided above
+shall be interpreted in a manner that, to the extent possible, most
+closely approximates an absolute disclaimer and waiver of all liability.
+
+</div>
diff --git a/docs/hardware/x60_keyboard.html b/docs/hardware/x60_keyboard.html
deleted file mode 100644
index 0f0ea92d..00000000
--- a/docs/hardware/x60_keyboard.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!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 X60: Change keyboard</title>
-</head>
-
-<body>
-
- <div class="section">
- <h1>Thinkpad X60/X60s/X60t: Change keyboard</h1>
- <p>
- Use this guide to replace the keyboard on your ThinkPad X60. Also works for X60s and X60 Tablet.
- </p>
- <p>
- Although slightly different, this guide can also be followed for the ThinkPad X200, X200S and X200 Tablet.
- The screws are in more or less the same place, and it's the same procedure.
- </p>
- <p><a href="./">Back to previous index</a></p>
- </div>
-
- <div class="section">
-
- <h1 id="recovery">Just follow these steps, and then reverse</h1>
-
- <p>
- <img src="../images/x60_keyboard/1.JPG"><br/>
- <img src="../images/x60_keyboard/2.JPG"><br/>
- <img src="../images/x60_keyboard/3.JPG"><br/>
- <img src="../images/x60_keyboard/4.JPG"><br/>
- <img src="../images/x60_keyboard/5.JPG">
- </p>
-
- </div>
-
- <div class="section">
-
- <p>
- Copyright &copy; 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;<br/>
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the Creative Commons Attribution-ShareAlike 4.0 International license
- or any later version published by Creative Commons;
-
- A copy of the license can be found at <a href="../cc-by-sa-4.0.txt">../cc-by-sa-4.0.txt</a>
- </p>
-
- <p>
- Updated versions of the license (when available) can be found at
- <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a>
- </p>
-
- <p>
- UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
- EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
- AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
- ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
- IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
- WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
- ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
- KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
- ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
- </p>
- <p>
- TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
- TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
- NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
- INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
- COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
- USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
- DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
- IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
- </p>
- <p>
- The disclaimer of warranties and limitation of liability provided
- above shall be interpreted in a manner that, to the extent
- possible, most closely approximates an absolute disclaimer and
- waiver of all liability.
- </p>
-
- </div>
-
-</body>
-</html>
diff --git a/docs/hardware/x60_keyboard.md b/docs/hardware/x60_keyboard.md
new file mode 100644
index 00000000..3bc3c159
--- /dev/null
+++ b/docs/hardware/x60_keyboard.md
@@ -0,0 +1,66 @@
+<div class="section">
+
+Thinkpad X60/X60s/X60t: Change keyboard
+=======================================
+
+Use this guide to replace the keyboard on your ThinkPad X60. Also works
+for X60s and X60 Tablet.
+
+Although slightly different, this guide can also be followed for the
+ThinkPad X200, X200S and X200 Tablet. The screws are in more or less the
+same place, and it\'s the same procedure.
+
+[Back to previous index](./)
+
+</div>
+
+<div class="section">
+
+Just follow these steps, and then reverse {#recovery}
+=========================================
+
+![](../images/x60_keyboard/1.JPG)\
+![](../images/x60_keyboard/2.JPG)\
+![](../images/x60_keyboard/3.JPG)\
+![](../images/x60_keyboard/4.JPG)\
+![](../images/x60_keyboard/5.JPG)
+
+</div>
+
+<div class="section">
+
+Copyright © 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;\
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the Creative Commons Attribution-ShareAlike 4.0
+International license or any later version published by Creative
+Commons; A copy of the license can be found at
+[../cc-by-sa-4.0.txt](../cc-by-sa-4.0.txt)
+
+Updated versions of the license (when available) can be found at
+<https://creativecommons.org/licenses/by-sa/4.0/legalcode>
+
+UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT
+POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND
+AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY,
+OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE,
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT,
+ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE
+OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF
+WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT
+APPLY TO YOU.
+
+TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU
+ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR
+OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL,
+PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES
+ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN
+IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES,
+COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT
+ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+The disclaimer of warranties and limitation of liability provided above
+shall be interpreted in a manner that, to the extent possible, most
+closely approximates an absolute disclaimer and waiver of all liability.
+
+</div>
diff --git a/docs/hardware/x60_lcd_change.html b/docs/hardware/x60_lcd_change.html
deleted file mode 100644
index f6d2d3ce..00000000
--- a/docs/hardware/x60_lcd_change.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!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>Libreboot documentation: Unbricking the ThinkPad T60</title>
-</head>
-
-<body>
-
- <div class="section">
- <h1>Changing the LCD panel on X60</h1>
- <p>This tutorial is incomplete, and only pictures for now.</p>
- <p><a href="./">Back to previous index</a></p>
- </div>
-
- <div class="section">
- <p>
- <img src="../images/x60_lcd_change/0001.JPG" alt="" />
- <img src="../images/x60_lcd_change/0002.JPG" alt="" />
- <img src="../images/x60_lcd_change/0003.JPG" alt="" />
- <img src="../images/x60_lcd_change/0004.JPG" alt="" />
- <img src="../images/x60_lcd_change/0005.JPG" alt="" />
- <img src="../images/x60_lcd_change/0006.JPG" alt="" />
- <img src="../images/x60_lcd_change/0007.JPG" alt="" />
- </p>
- </div>
-
- <div class="section">
-
- <p>
- Copyright &copy; 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;<br/>
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the Creative Commons Attribution-ShareAlike 4.0 International license
- or any later version published by Creative Commons;
-
- A copy of the license can be found at <a href="../cc-by-sa-4.0.txt">../cc-by-sa-4.0.txt</a>
- </p>
-
- <p>
- Updated versions of the license (when available) can be found at
- <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a>
- </p>
-
- <p>
- UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
- EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
- AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
- ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
- IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
- WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
- ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
- KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
- ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
- </p>
- <p>
- TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
- TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
- NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
- INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
- COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
- USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
- DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
- IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
- </p>
- <p>
- The disclaimer of warranties and limitation of liability provided
- above shall be interpreted in a manner that, to the extent
- possible, most closely approximates an absolute disclaimer and
- waiver of all liability.
- </p>
-
- </div>
-
-</body>
-</html>
diff --git a/docs/hardware/x60_lcd_change.md b/docs/hardware/x60_lcd_change.md
new file mode 100644
index 00000000..32c5c967
--- /dev/null
+++ b/docs/hardware/x60_lcd_change.md
@@ -0,0 +1,60 @@
+<div class="section">
+
+Changing the LCD panel on X60
+=============================
+
+This tutorial is incomplete, and only pictures for now.
+
+[Back to previous index](./)
+
+</div>
+
+<div class="section">
+
+![](../images/x60_lcd_change/0001.JPG)
+![](../images/x60_lcd_change/0002.JPG)
+![](../images/x60_lcd_change/0003.JPG)
+![](../images/x60_lcd_change/0004.JPG)
+![](../images/x60_lcd_change/0005.JPG)
+![](../images/x60_lcd_change/0006.JPG)
+![](../images/x60_lcd_change/0007.JPG)
+
+</div>
+
+<div class="section">
+
+Copyright © 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;\
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the Creative Commons Attribution-ShareAlike 4.0
+International license or any later version published by Creative
+Commons; A copy of the license can be found at
+[../cc-by-sa-4.0.txt](../cc-by-sa-4.0.txt)
+
+Updated versions of the license (when available) can be found at
+<https://creativecommons.org/licenses/by-sa/4.0/legalcode>
+
+UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT
+POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND
+AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY,
+OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE,
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT,
+ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE
+OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF
+WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT
+APPLY TO YOU.
+
+TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU
+ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR
+OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL,
+PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES
+ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN
+IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES,
+COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT
+ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+The disclaimer of warranties and limitation of liability provided above
+shall be interpreted in a manner that, to the extent possible, most
+closely approximates an absolute disclaimer and waiver of all liability.
+
+</div>
diff --git a/docs/hardware/x60_security.html b/docs/hardware/x60_security.html
deleted file mode 100644
index f2bb70af..00000000
--- a/docs/hardware/x60_security.html
+++ /dev/null
@@ -1,344 +0,0 @@
-<!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>Libreboot documentation: Security on the ThinkPad X60</title>
-</head>
-
-<body>
-
- <div class="section">
- <h1>Security on the ThinkPad X60</h1>
- <p>Hardware modifications to enhance security on the ThinkPad X60. This tutorial is <b>incomplete</b> at the time of writing.</p>
- <p><a href="./">Back to previous index</a></p>
- </div>
-
- <div class="section">
- <h1>Table of Contents</h1>
- <ul>
- <li><a href="#hardware_requirements">Hardware Requirements</a></li>
- <li><a href="#software_requirements">Software Requirements</a></li>
- <li><a href="#procedure">The procedure</a></li>
- </ul>
- </div>
-
- <div class="section">
-
- <h1 id="hardware_requirements">Hardware requirements</h1>
- <ul>
- <li>An X60</li>
- <li>screwdriver</li>
- <li>(in a later version of this tutorial: soldering iron and scalpel)</li>
- </ul>
-
- <h1 id="software_requirements">Software requirements</h1>
- <ul>
- <li>none (at least in the scope of the article as-is)</li>
- <li>You probably want to encrypt your GNU+Linux install using LUKS</li>
- </ul>
-
- </div>
-
- <div class="section">
-
- <h1>
- Rationale
- </h1>
- <p>
- Most people think of security on the software side: the hardware is important aswell.
- </p>
- <p>
- This tutorial deals with reducing the number of devices that have direct memory access that
- could communicate with inputs/outputs that could be used to remotely
- command the system (or leak data). All of this is purely theoretical for the time being.
- </p>
-
- <h1 id="procedure">Disassembly</h1>
-
- <p>
- Firstly remove the bluetooth (if your X60 has this):<br/>
- The marked screws are underneath those stickers (marked in those 3 locations at the bottom of the LCD assembly):<br/>
- <img src="../images/x60_security/0000_bluetooth0.jpg" alt="" /><br/>
- Now gently pry off the bottom part of the front bezel, and the bluetooth module is on the left (easily removable):<br/>
- <img src="../images/x60_security/0000_bluetooth.jpg" alt="" /><br/>
- </p>
-
- <p>
- If your model was WWAN, remove the simcard (check anyway):<br/>
- Uncover those 2 screws at the bottom:<br/>
- <img src="../images/x60_security/0000_simcard0.jpg" alt="" /><br/>
- SIM card (not present in the picture) is in the marked location:<br/>
- <img src="../images/x60_security/0000_simcard1.jpg" alt="" /><br/>
- Replacement: USB dongle.
- </p>
-
- <p>
- Now get into the motherboard.
- </p>
-
- <p>
- Remove those screws:<br/>
- <img src="../images/x60_security/0000.jpg" alt="" />
- </p>
- <p>
- Push the keyboard forward (carefully):<br/>
- <img src="../images/x60_security/0001.jpg" alt="" />
- </p>
- <p>
- Lift the keyboard up and disconnect it from the board:<br/>
- <img src="../images/x60_security/0002.jpg" alt="" />
- </p>
- <p>
- Grab the right-hand side of the chassis and force it off (gently) and pry up the rest of the chassis:<br/>
- <img src="../images/x60_security/0003.jpg" alt="" />
- </p>
- <p>
- You should now have this:<br/>
- <img src="../images/x60_security/0004.jpg" alt="" />
- </p>
-
- <p>
- The following is a summary of what you will remove (already done to this system):<br/>
- <img src="../images/x60_security/0001_overview.jpg" alt="" /><br/>
- Note: the blue lines represent antenna cables and modem cables. You don't need to remove these, but you can if you want
- (to make it tidier after removing other parts). I removed the antenna wires, the modem jack, the modem cable and
- also (on another model) a device inside the part where the wwan antenna goes (wasn't sure what it was, but I knew it wasn't needed). <b>This is optional</b>
- </p>
-
- <p>
- Remove the microphone (can desolder it, but you can also easily pull it off with you hands). Already removed here:<br/>
- <img src="../images/x60_security/0001_microphone.jpg" alt="" /><br/>
- <b>Rationale:</b><br/>
- Another reason to remove the microphone: If your computer gets<a href="#ref1">[1]</a> compromised, it can
- record what you say, and use it to receive data from nearby devices if
- they're compromised too. Also, we do not know what the built-in microcode (in the CPU) is doing; it could theoretically
- be programmed to accept remote commands from some speaker somewhere (remote security hole). <b>In other words,
- the system could already be compromised from the factory.</b>
- </p>
-
- <p>
- Remove the modem:<br/>
- <img src="../images/x60_security/0001_modem.jpg" alt="" /><br/>
- (useless, obsolete device)
- </p>
-
- <p>
- Remove the speaker:<br/>
- <img src="../images/x60_security/0001_speaker.jpg" alt="" /><br/>
- Reason: combined with the microphone issue, this could be used to leak data.<br/>
- If your computer gets<a href="#ref1">[1]</a> compromised, it can be used to
- transmit data to nearby compromised devices. It's unknown if it can be
- turned into a microphone<a href="#ref2">[2]</a>.<br/>
- Replacement: headphones/speakers (line-out) or external DAC (USB).
- </p>
-
- <p>
- Remove the wlan (also remove wwan if you have it):<br/>
- <img src="../images/x60_security/0001_wlan_wwan.jpg" alt="" /><br/>
- Reason: has direct (and very fast) memory access, and could (theoretically) leak data over a side-channel.<br/>
- <b>Wifi:</b> The ath5k/ath9k cards might not have firmware at all. They might safe but could have
- access to the computer's RAM trough DMA. If people have an intel
- card(most X60s come with Intel wifi by default, until you change it),then that card runs
- a non-free firwamre and has access to the computer's RAM trough DMA! So
- the risk-level is very high.<br/>
- <b>Wwan (3g modem):</b> They run proprietary software! It's like AMT but over the GSM network which is
- probably even worse.<br/>
- Replacement: external USB wifi dongle. (or USB wwan/3g dongle; note, this has all the same privacy issues as mobile phones. wwan not recommended).
- </p>
-
- <h2>
- Not covered yet:
- </h2>
- <ul>
- <li>Disable cardbus (has fast/direct memory access)</li>
- <li>Disable firewire (has fast/direct memory access)</li>
- <li>Disable flashing the ethernet firmware</li>
- <li>Disable SPI flash writes (can be re-enabled by unsoldering two parts)</li>
- <li>Disable use of xrandr/edid on external monitor (cut 2 pins on VGA)</li>
- <li>Disable docking station (might be possible to do it in software, in coreboot upstream as a Kconfig option)</li>
- </ul>
- <p>
- Go to <a href="http://media.ccc.de/browse/congress/2013/30C3_-_5529_-_en_-_saal_2_-_201312271830_-_hardening_hardware_and_choosing_a_goodbios_-_peter_stuge.html">http://media.ccc.de/browse/congress/2013/30C3_-_5529_-_en_-_saal_2_-_201312271830_-_hardening_hardware_and_choosing_a_goodbios_-_peter_stuge.html</a>
- or directly to the video: <a href="http://mirror.netcologne.de/CCC/congress/2013/webm/30c3-5529-en-Hardening_hardware_and_choosing_a_goodBIOS_webm.webm">http://mirror.netcologne.de/CCC/congress/2013/webm/30c3-5529-en-Hardening_hardware_and_choosing_a_goodBIOS_webm.webm</a>.
- </p>
- <p>
- A lot of this tutorial is based on that video. Look towards the second half of the video to see how to do the above.
- </p>
-
- <h2>
- Also not covered yet:
- </h2>
- <ul>
- <li>
- Intrusion detection: randomized seal on screws<br/>
- Just put nail polish with lot of glider on the important screws, take
- some good pictures. Keep the pictueres and make sure of their integrity.
- Compare the nail polish with the pictures before powering on the laptop.
- </li>
- <li>
- Tips about preventing/mitigating risk of cold boot attack.
- <ul>
- <li>soldered RAM?</li>
- <li>seal RAM door shut (possibly modified lower chassis) so that system has to be disassembled (which has to go through the nail polish)</li>
- <li>wipe all RAM at boot/power-off/power-on? (patch in coreboot upstream?)</li>
- <li>ask gnutoo about fallback patches (counts number of boots)</li>
- </ul>
- </li>
- <li>
- General tips/advice and web links showing how to detect physical intrusions.
- </li>
- <li>
- For example: <a href="http://cs.tau.ac.il/~tromer/acoustic/">http://cs.tau.ac.il/~tromer/acoustic/</a>
- or <a href="http://cyber.bgu.ac.il/content/how-leak-sensitive-data-isolated-computer-air-gap-near-mobile-phone-airhopper">http://cyber.bgu.ac.il/content/how-leak-sensitive-data-isolated-computer-air-gap-near-mobile-phone-airhopper</a>.
- </li>
- <li>
- <a href="https://en.wikipedia.org/wiki/Tempest_%28codename%29">https://en.wikipedia.org/wiki/Tempest_%28codename%29</a>
- </li>
- <li>
- https://gitorious.org/gnutoo-for-coreboot/grub-assemble/source/a61f636797777a742f65f4c9c58032aa6a9b23c3:
- </li>
- </ul>
-
- </div>
-
- <div class="section">
- <h1>
- Extra notes
- </h1>
- <p>
- EC: Cannot be removed but can be mitigated: it contains non-free
- non-loadable code, but it has no access to the computer's RAM.
- It has access to the on-switch of the wifi, bluetooth, modem and some
- other power management features. The issue is that it has access to the
- keyboard, however if the software security howto <b>(not yet written)</b> is followed correctly,
- it won't be able to leak data to a local attacker. It has no network
- access but it may still be able to leak data remotely, but that
- requires someone to be nearby to recover the data with the help of an
- SDR and some directional antennas<a href="#ref3">[3]</a>.
- </p>
- <p>
- <a href="http://www.coreboot.org/Intel_82573_Ethernet_controller">Intel 82573 Ethernet controller</a>
- on the X60 seems safe, according to Denis.
- </p>
-
- <div class="subsection">
- <h2>
- Risk level
- </h2>
- <ul>
- <li>Modem (3g/wwan): highest</li>
- <li>Intel wifi: Near highest</li>
- <li>Atheros PCI wifi: unknown, but lower than intel wifi.</li>
- <li>Microphone: only problematic if the computer gets compromised.</li>
- <li>Speakers: only problematic if the computer gets compromised.</li>
- <li>EC: can be mitigated if following the guide on software security.</li>
- </ul>
- </div>
- </div>
-
- <div class="section">
- <h1>
- Further reading material (software security)
- </h1>
- <ul>
- <li><a href="../gnulinux/encrypted_debian.html">Installing Debian or Devuan GNU+Linux with full disk encryption (including /boot)</a></li>
- <li><a href="../gnulinux/encrypted_parabola.html">Installing Parabola GNU+Linux with full disk encryption (including /boot)</a></li>
- <li><a href="dock.html">Notes about DMA access and the docking station</a></li>
- </ul>
- </div>
-
- <div class="section">
- <h1>
- References
- </h1>
- <div class="subsection">
- <h2 id="ref1">[1] physical access</h2>
- <p>
- Explain that black hats, TAO, and so on might use a 0day to get in,
- and explain that in this case it mitigates what the attacker can do.
- Also the TAO do some evaluation before launching an attack: they take
- the probability of beeing caught into account, along with the kind of
- target. A 0day costs a lot of money, I heard that it was from 100000$
- to 400000$, some other websites had prices 10 times lower but that
- but it was probably a typo. So if people increase their security it
- makes it more risky and more costly to attack people.
- </p>
- </div>
- <div class="subsection">
- <h2 id="ref2">[2] microphone</h2>
- <p>
- It's possible to turn headphones into a microphone, you could try
- yourself, however they don't record loud at all. Also intel cards have
- the capability to change a connector's function, for instance the
- microphone jack can now become a headphone plug, that's called
- retasking. There is some support for it in GNU+Linux but it's not very
- well known.
- </p>
- </div>
- <div class="subsection">
- <h2 id="ref3">[3] Video (CCC)</h2>
- <p>
- 30c3-5356-en-Firmware_Fat_Camp_webm.webm from the 30th CCC. While
- their demo is experimental(their hardware also got damaged during the
- transport), the spies probably already have that since a long time.
- <a href="http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm">http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm</a>
- </p>
- </div>
- </div>
-
- <div class="section">
-
- <p>
- Copyright &copy; 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;<br/>
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the Creative Commons Attribution-ShareAlike 4.0 International license
- or any later version published by Creative Commons;
-
- A copy of the license can be found at <a href="../cc-by-sa-4.0.txt">../cc-by-sa-4.0.txt</a>
- </p>
-
- <p>
- Updated versions of the license (when available) can be found at
- <a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a>
- </p>
-
- <p>
- UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
- EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
- AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
- ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
- IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
- WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
- PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
- ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
- KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
- ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
- </p>
- <p>
- TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
- TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
- NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
- INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
- COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
- USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
- DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
- IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
- </p>
- <p>
- The disclaimer of warranties and limitation of liability provided
- above shall be interpreted in a manner that, to the extent
- possible, most closely approximates an absolute disclaimer and
- waiver of all liability.
- </p>
-
- </div>
-
-</body>
-</html>
diff --git a/docs/hardware/x60_security.md b/docs/hardware/x60_security.md
new file mode 100644
index 00000000..82cd2401
--- /dev/null
+++ b/docs/hardware/x60_security.md
@@ -0,0 +1,319 @@
+<div class="section">
+
+Security on the ThinkPad X60
+============================
+
+Hardware modifications to enhance security on the ThinkPad X60. This
+tutorial is **incomplete** at the time of writing.
+
+[Back to previous index](./)
+
+</div>
+
+<div class="section">
+
+Table of Contents
+=================
+
+- [Hardware Requirements](#hardware_requirements)
+- [Software Requirements](#software_requirements)
+- [The procedure](#procedure)
+
+</div>
+
+<div class="section">
+
+Hardware requirements {#hardware_requirements}
+=====================
+
+- An X60
+- screwdriver
+- (in a later version of this tutorial: soldering iron and scalpel)
+
+Software requirements {#software_requirements}
+=====================
+
+- none (at least in the scope of the article as-is)
+- You probably want to encrypt your GNU+Linux install using LUKS
+
+</div>
+
+<div class="section">
+
+Rationale
+=========
+
+Most people think of security on the software side: the hardware is
+important aswell.
+
+This tutorial deals with reducing the number of devices that have direct
+memory access that could communicate with inputs/outputs that could be
+used to remotely command the system (or leak data). All of this is
+purely theoretical for the time being.
+
+Disassembly {#procedure}
+===========
+
+Firstly remove the bluetooth (if your X60 has this):\
+The marked screws are underneath those stickers (marked in those 3
+locations at the bottom of the LCD assembly):\
+![](../images/x60_security/0000_bluetooth0.jpg)\
+Now gently pry off the bottom part of the front bezel, and the bluetooth
+module is on the left (easily removable):\
+![](../images/x60_security/0000_bluetooth.jpg)\
+
+If your model was WWAN, remove the simcard (check anyway):\
+Uncover those 2 screws at the bottom:\
+![](../images/x60_security/0000_simcard0.jpg)\
+SIM card (not present in the picture) is in the marked location:\
+![](../images/x60_security/0000_simcard1.jpg)\
+Replacement: USB dongle.
+
+Now get into the motherboard.
+
+Remove those screws:\
+![](../images/x60_security/0000.jpg)
+
+Push the keyboard forward (carefully):\
+![](../images/x60_security/0001.jpg)
+
+Lift the keyboard up and disconnect it from the board:\
+![](../images/x60_security/0002.jpg)
+
+Grab the right-hand side of the chassis and force it off (gently) and
+pry up the rest of the chassis:\
+![](../images/x60_security/0003.jpg)
+
+You should now have this:\
+![](../images/x60_security/0004.jpg)
+
+The following is a summary of what you will remove (already done to this
+system):\
+![](../images/x60_security/0001_overview.jpg)\
+Note: the blue lines represent antenna cables and modem cables. You
+don\'t need to remove these, but you can if you want (to make it tidier
+after removing other parts). I removed the antenna wires, the modem
+jack, the modem cable and also (on another model) a device inside the
+part where the wwan antenna goes (wasn\'t sure what it was, but I knew
+it wasn\'t needed). **This is optional**
+
+Remove the microphone (can desolder it, but you can also easily pull it
+off with you hands). Already removed here:\
+![](../images/x60_security/0001_microphone.jpg)\
+**Rationale:**\
+Another reason to remove the microphone: If your computer
+gets[\[1\]](#ref1) compromised, it can record what you say, and use it
+to receive data from nearby devices if they\'re compromised too. Also,
+we do not know what the built-in microcode (in the CPU) is doing; it
+could theoretically be programmed to accept remote commands from some
+speaker somewhere (remote security hole). **In other words, the system
+could already be compromised from the factory.**
+
+Remove the modem:\
+![](../images/x60_security/0001_modem.jpg)\
+(useless, obsolete device)
+
+Remove the speaker:\
+![](../images/x60_security/0001_speaker.jpg)\
+Reason: combined with the microphone issue, this could be used to leak
+data.\
+If your computer gets[\[1\]](#ref1) compromised, it can be used to
+transmit data to nearby compromised devices. It\'s unknown if it can be
+turned into a microphone[\[2\]](#ref2).\
+Replacement: headphones/speakers (line-out) or external DAC (USB).
+
+Remove the wlan (also remove wwan if you have it):\
+![](../images/x60_security/0001_wlan_wwan.jpg)\
+Reason: has direct (and very fast) memory access, and could
+(theoretically) leak data over a side-channel.\
+**Wifi:** The ath5k/ath9k cards might not have firmware at all. They
+might safe but could have access to the computer\'s RAM trough DMA. If
+people have an intel card(most X60s come with Intel wifi by default,
+until you change it),then that card runs a non-free firwamre and has
+access to the computer\'s RAM trough DMA! So the risk-level is very
+high.\
+**Wwan (3g modem):** They run proprietary software! It\'s like AMT but
+over the GSM network which is probably even worse.\
+Replacement: external USB wifi dongle. (or USB wwan/3g dongle; note,
+this has all the same privacy issues as mobile phones. wwan not
+recommended).
+
+Not covered yet:
+----------------
+
+- Disable cardbus (has fast/direct memory access)
+- Disable firewire (has fast/direct memory access)
+- Disable flashing the ethernet firmware
+- Disable SPI flash writes (can be re-enabled by unsoldering two
+ parts)
+- Disable use of xrandr/edid on external monitor (cut 2 pins on VGA)
+- Disable docking station (might be possible to do it in software, in
+ coreboot upstream as a Kconfig option)
+
+Go to
+<http://media.ccc.de/browse/congress/2013/30C3_-_5529_-_en_-_saal_2_-_201312271830_-_hardening_hardware_and_choosing_a_goodbios_-_peter_stuge.html>
+or directly to the video:
+<http://mirror.netcologne.de/CCC/congress/2013/webm/30c3-5529-en-Hardening_hardware_and_choosing_a_goodBIOS_webm.webm>.
+
+A lot of this tutorial is based on that video. Look towards the second
+half of the video to see how to do the above.
+
+Also not covered yet:
+---------------------
+
+- Intrusion detection: randomized seal on screws\
+ Just put nail polish with lot of glider on the important screws,
+ take some good pictures. Keep the pictueres and make sure of their
+ integrity. Compare the nail polish with the pictures before powering
+ on the laptop.
+- Tips about preventing/mitigating risk of cold boot attack.
+ - soldered RAM?
+ - seal RAM door shut (possibly modified lower chassis) so that
+ system has to be disassembled (which has to go through the nail
+ polish)
+ - wipe all RAM at boot/power-off/power-on? (patch in coreboot
+ upstream?)
+ - ask gnutoo about fallback patches (counts number of boots)
+- General tips/advice and web links showing how to detect physical
+ intrusions.
+- For example: <http://cs.tau.ac.il/~tromer/acoustic/> or
+ <http://cyber.bgu.ac.il/content/how-leak-sensitive-data-isolated-computer-air-gap-near-mobile-phone-airhopper>.
+- <https://en.wikipedia.org/wiki/Tempest_%28codename%29>
+- https://gitorious.org/gnutoo-for-coreboot/grub-assemble/source/a61f636797777a742f65f4c9c58032aa6a9b23c3:
+
+</div>
+
+<div class="section">
+
+Extra notes
+===========
+
+EC: Cannot be removed but can be mitigated: it contains non-free
+non-loadable code, but it has no access to the computer\'s RAM. It has
+access to the on-switch of the wifi, bluetooth, modem and some other
+power management features. The issue is that it has access to the
+keyboard, however if the software security howto **(not yet written)**
+is followed correctly, it won\'t be able to leak data to a local
+attacker. It has no network access but it may still be able to leak data
+remotely, but that requires someone to be nearby to recover the data
+with the help of an SDR and some directional antennas[\[3\]](#ref3).
+
+[Intel 82573 Ethernet
+controller](http://www.coreboot.org/Intel_82573_Ethernet_controller) on
+the X60 seems safe, according to Denis.
+
+<div class="subsection">
+
+Risk level
+----------
+
+- Modem (3g/wwan): highest
+- Intel wifi: Near highest
+- Atheros PCI wifi: unknown, but lower than intel wifi.
+- Microphone: only problematic if the computer gets compromised.
+- Speakers: only problematic if the computer gets compromised.
+- EC: can be mitigated if following the guide on software security.
+
+</div>
+
+</div>
+
+<div class="section">
+
+Further reading material (software security)
+============================================
+
+- [Installing Debian or Devuan GNU+Linux with full disk encryption
+ (including /boot)](../gnulinux/encrypted_debian.html)
+- [Installing Parabola GNU+Linux with full disk encryption (including
+ /boot)](../gnulinux/encrypted_parabola.html)
+- [Notes about DMA access and the docking station](dock.html)
+
+</div>
+
+<div class="section">
+
+References
+==========
+
+<div class="subsection">
+
+\[1\] physical access {#ref1}
+---------------------
+
+Explain that black hats, TAO, and so on might use a 0day to get in, and
+explain that in this case it mitigates what the attacker can do. Also
+the TAO do some evaluation before launching an attack: they take the
+probability of beeing caught into account, along with the kind of
+target. A 0day costs a lot of money, I heard that it was from 100000\$
+to 400000\$, some other websites had prices 10 times lower but that but
+it was probably a typo. So if people increase their security it makes it
+more risky and more costly to attack people.
+
+</div>
+
+<div class="subsection">
+
+\[2\] microphone {#ref2}
+----------------
+
+It\'s possible to turn headphones into a microphone, you could try
+yourself, however they don\'t record loud at all. Also intel cards have
+the capability to change a connector\'s function, for instance the
+microphone jack can now become a headphone plug, that\'s called
+retasking. There is some support for it in GNU+Linux but it\'s not very
+well known.
+
+</div>
+
+<div class="subsection">
+
+\[3\] Video (CCC) {#ref3}
+-----------------
+
+30c3-5356-en-Firmware\_Fat\_Camp\_webm.webm from the 30th CCC. While
+their demo is experimental(their hardware also got damaged during the
+transport), the spies probably already have that since a long time.
+<http://berlin.ftp.media.ccc.de/congress/2013/webm/30c3-5356-en-Firmware_Fat_Camp_webm.webm>
+
+</div>
+
+</div>
+
+<div class="section">
+
+Copyright © 2014, 2015 Leah Rowe &lt;info@minifree.org&gt;\
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the Creative Commons Attribution-ShareAlike 4.0
+International license or any later version published by Creative
+Commons; A copy of the license can be found at
+[../cc-by-sa-4.0.txt](../cc-by-sa-4.0.txt)
+
+Updated versions of the license (when available) can be found at
+<https://creativecommons.org/licenses/by-sa/4.0/legalcode>
+
+UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT
+POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND
+AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
+CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY,
+OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE,
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT,
+ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE
+OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF
+WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT
+APPLY TO YOU.
+
+TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU
+ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR
+OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL,
+PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES
+ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN
+IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES,
+COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT
+ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+The disclaimer of warranties and limitation of liability provided above
+shall be interpreted in a manner that, to the extent possible, most
+closely approximates an absolute disclaimer and waiver of all liability.
+
+</div>