Merge "Updates to Building for Devices page, b 20670305"
diff --git a/src/accessories/headset-spec.jd b/src/accessories/headset-spec.jd
index c9a749e..572bb12 100644
--- a/src/accessories/headset-spec.jd
+++ b/src/accessories/headset-spec.jd
@@ -1,8 +1,8 @@
-page.title=Wired audio headset specification
+page.title=Wired audio headset specification (v1.1)
 @jd:body
 
 <!--
-    Copyright 2014 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -24,116 +24,68 @@
   </div>
 </div>
 
-<p><em>Version 1.1</em></p>
+<p>This section specifies requirements for headsets and mobile devices to
+function uniformly across the Android ecosystem.</p>
 
-<p>This document specifies the requirements for headsets and mobile devices to
-function uniformly across the Android ecosystem. It is separated into two
-sections beginning with the specifications for the headset
-accessory followed by the specifications for the mobile device.</p>
+<h2 id="headset_accessory_plug_specifications">Headset accessory (plug)
+specifications</h2>
 
-<h2 id=headset_accessory_plug_specifications>Headset Accessory (Plug) Specifications</h2>
+<p>The following requirements apply to headset accessories.</p>
 
-<p>The requirements in the following section apply to the headset accessory.</p>
+<h3 id="functions">Functions</h3>
 
-<h3 id=functions>Functions</h3>
+<table style="width:50%">
+ <tr>
+    <th>Function</th>
+    <th>Accessory Support</th>
+ </tr>
+ <tr>
+    <td>Stereo Audio Out</td>
+    <td>Required</td>
+ </tr>
+ <tr>
+    <td>Audio in (Mic)</td>
+    <td>Required</td>
+ </tr>
+ <tr>
+    <td>Ground</td>
+    <td>Required</td>
+ </tr>
+</table>
+
+<h3 id="control-function_mapping">Control-function mapping</h3>
 
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Accessory Support</strong></p>
-</th>
+    <th style="width:33%">Control Function</th>
+    <th style="width:33%">Accessory Support</th>
+    <th style="width:33%">Description</th>
  </tr>
  <tr>
-    <td>
-<p>Stereo Audio Out</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
+    <td>Function A</td>
+    <td>Required</td>
+    <td>Play/pause/hook (Short Press), Trigger Assist (Long Press), Next
+    (Double Press)</td>
  </tr>
  <tr>
-    <td>
-<p>Audio in (Mic)</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
+    <td>Function B</td>
+    <td>Optional</td>
+    <td>Vol+</td>
  </tr>
  <tr>
-    <td>
-<p>Ground</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
+    <td>Function C</td>
+    <td>Optional</td>
+    <td>Vol-</td>
+ </tr>
+ <tr>
+    <td>Function D</td>
+    <td>Optional</td>
+    <td>Reserved (Nexus devices use this to launch Google voice search)
 </td>
  </tr>
 </table>
 
-<h3 id=control-function_mapping>Control-Function Mapping</h3>
-
-<table>
- <tr>
-    <th>
-<p><strong>Control Function</strong></p>
-</th>
-    <th>
-<p><strong>Accessory Support</strong></p>
-</th>
-    <th>
-<p><strong>Description</strong></p>
-</th>
- </tr>
- <tr>
-    <td>
-<p>Function A</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Play/pause/hook (Short Press), Trigger Assist (Long Press), Next (double press)</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p>Function B</p>
-</td>
-    <td>
-<p>Optional</p>
-</td>
-    <td>
-<p>Vol+</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p>Function C</p>
-</td>
-    <td>
-<p>Optional</p>
-</td>
-    <td>
-<p>Vol-</p>
-</td>
- </tr>
- <tr>
-    <td>
-<p>Function D</p>
-</td>
-    <td>
-<p>Optional</p>
-</td>
-    <td>
-<p>Reserved (Nexus devices will use this reserved function to launch Google
-voice search)</p>
-</td>
- </tr>
-</table>
-
-<p><strong>Assign functions to buttons as follows</strong>:</p>
+<p>Assign functions to buttons as follows:</p>
 
 <ul>
   <li> All one-button headsets must implement Function A.
@@ -146,160 +98,93 @@
   </ul>
 </ul>
 
-<h3 id=mechanical>Mechanical</h3>
+<h3 id="mechanical">Mechanical</h3>
 
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Accessory Support</strong></p>
-</th>
-    <th>
-<p><strong>Notes</strong></p>
-</th>
+    <th style="width:33%">Function</th>
+    <th style="width:33%">Accessory Support</th>
+    <th style="width:33%">Notes</th>
  </tr>
  <tr>
-    <td>
-<p>4 conductor 3.5mm plug</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Ref: EIAJ-RC5325A standard</p>
-</td>
+    <td>4 conductor 3.5mm plug</td>
+    <td>Required</td>
+    <td>Ref: EIAJ-RC5325A standard</td>
  </tr>
  <tr>
-    <td>
-<p>CTIA pinout order (LRGM)</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Except in regions with legal requirements for OMTP pinout</p>
-</td>
+    <td>CTIA pinout order (LRGM)</td>
+    <td>Required</td>
+    <td>Except in regions with legal requirements for OMTP pinout</td>
  </tr>
  <tr>
-    <td>
-<p>OMTP pinout order  (LRMG)</p>
-</td>
-    <td>
-<p>Optional</p>
-</td>
+    <td>OMTP pinout order (LRMG)</td>
+    <td>Optional</td>
     <td></td>
  </tr>
  <tr>
-    <td>
-<p>Microphone</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Must not be obstructed when operating headset controls</p>
-</td>
+    <td>Microphone</td>
+    <td>Required</td>
+    <td>Must not be obstructed when operating headset controls</td>
  </tr>
 </table>
 
-<h3 id=electrical>Electrical</h3>
+<h3 id="electrical">Electrical</h3>
 
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Accessory Support</strong></p>
-</th>
-    <th>
-<p><strong>Description</strong></p>
-</th>
+    <th style="width:33%">Function</th>
+    <th style="width:33%">Accessory Support</th>
+    <th style="width:33%">Description</th>
  </tr>
  <tr>
-    <td>
-<p>Ear speaker impedance</p>
-</td>
-    <td>
-<p><strong>16 ohms or higher</strong></p>
-</td>
-    <td>
-<p>Recommend 32 - 300 ohms</p>
-</td>
+    <td>Ear speaker impedance</td>
+    <td>16 ohms or higher</td>
+    <td>Recommend 32 - 300 ohms</td>
  </tr>
  <tr>
-    <td>
-<p>Mic DC resistance</p>
+    <td>Mic DC resistance</td>
+    <td>1000 ohms or higher
 </td>
-    <td>
-<p><strong>1000 ohms or higher</strong></p>
-</td>
-    <td>
-<p>Mic characteristics must be compliant with section 5.4 “Audio Recording” of
-current Android Compatibility Definition Document (CDD)</p>
-</td>
+    <td>Mic characteristics must be compliant with section 5.4 “Audio
+    Recording” of the current
+    <a href="{@docRoot}compatibility/android-cdd.pdf">Android CDD</a></td>
  </tr>
  <tr>
-    <td>
-<p>Control Function Equivalent impedance*</p>
-
-<p>*Total impedance from positive mic terminal to GND when button is pressed with
-2.2 V mic bias applied through 2.2 kOhm resistor</p>
-</td>
-    <td>
-<p><strong>0 ohm</strong></p>
-</td>
-    <td>
-<p>[Function A]  Play/Pause/Hook</p>
-</td>
+    <td rowspan="4">Control Function Equivalent impedance*</td>
+    <td>0 ohm</td>
+    <td>[Function A] Play/Pause/Hook</td>
  </tr>
  <tr>
-    <td></td>
-    <td>
-<p><strong>240 ohm</strong> +/- 1% resistance</p>
-</td>
-    <td>
-<p>[Function B]</p>
-</td>
+    <td>240 ohm +/- 1% resistance</td>
+    <td>[Function B]</td>
  </tr>
  <tr>
-    <td></td>
-    <td>
-<p><strong>470 ohm</strong> +/- 1% resistance</p>
-</td>
-    <td>
-<p>[Function C] </p>
-</td>
+    <td>470 ohm +/- 1% resistance</td>
+    <td>[Function C]</td>
  </tr>
  <tr>
-    <td></td>
-    <td>
-<p><strong>135 ohm</strong> +/- 1% resistance</p>
-</td>
-    <td>
-<p>[Function D]</p>
-</td>
+    <td>135 ohm +/- 1% resistance</td>
+    <td>[Function D]</td>
  </tr>
 </table>
 
-<p>In the following diagrams, Button A is mapped to Function A, Button B to
+<p><em>*Total impedance from positive mic terminal to GND when button is
+pressed with 2.2 V mic bias applied through 2.2 kOhm resistor</em></p>
+
+<p>In the following diagrams, Button A maps to Function A, Button B to
 Function B, and so on.</p>
 
-<h3 id=reference_headset_test_circuit_1>Reference Headset Test Circuit 1</h3>
+<h3 id="reference_headsets">Reference headset test circuits</h3>
+
+<p>The following diagram for Reference Headset Test Circuit 1 shows the CTIA
+pinout for a 4-segment plug. For the OMTP pinout, switch the positions of the
+MIC and GND segments.</p>
 
 <img src="images/headset-circuit1.png" alt="Reference Headset Test Circuit 1" />
 <p class="img-caption"><strong>Figure 1.</strong> Reference headset test circuit 1</p>
 
-<p class="note"><strong>Note:</strong> The above diagram shows the CTIA pinout
-for a 4-segment plug. For the OMTP pinout, switch the positions of the MIC and
-GND segments.</p>
-
-<h3 id=reference_headset_test_circuit_2>Reference Headset Test Circuit 2</h3>
-
-<p>The second reference circuit shows how the actual resistor values (R1 - R4)
-are altered to meet this specification.</p>
+<p>The following diagram for Reference Headset Test Circuit 2 shows how the
+actual resistor values (R1 - R4) are altered to meet this specification.</p>
 
 <img src="images/headset-circuit2.png" alt="Reference Headset Test Circuit 2" />
 <p class="img-caption"><strong>Figure 2.</strong> Reference headset test circuit 2</p>
@@ -314,293 +199,161 @@
 equivalent impedance value of that button (provided), and Rmic is the
 microphone impedance value.</p>
 
-<p>The example above assumes a 5 kohm microphone impedance (Rmic). Therefore, to
-achieve an equivalent R4 impedance of 135 ohm (ReqD), the actual resistor value
-(R4) needs to be 139 ohms.</p>
+<p>The example above assumes a 5 kohm microphone impedance (Rmic); to achieve
+an equivalent R4 impedance of 135 ohm (ReqD), the actual resistor value (R4)
+must be 139 ohms.</p>
 
-
-<h2 id=mobile_device_jack_specifications>Mobile Device (Jack) Specifications</h2>
+<h2 id="mobile_device_jack_specifications">Mobile device (jack) specifications</h2>
 
 <p class="caution"><strong>Caution:</strong> To achieve compatibility with the
-headset specification above, devices that include a 4 conductor 3.5mm audio
-jack must meet the following specifications. Please see the <em>Analog audio
-ports</em> section of the <a
-href="{@docRoot}compatibility/android-cdd.pdf">Android Compatibility Definition
-Document (CDD)</a> for Android compatibility requirements.</p>
+headset specification, devices that include a 4 conductor 3.5mm audio jack
+must meet the following specifications. For Android compatibility requirements,
+refer to the <em>Analog audio ports</em> section of the <a
+href="{@docRoot}compatibility/android-cdd.pdf">Android CDD</a>.</p>
 
-<p><strong>Headset Jack Functions</strong></p>
+<h3 id="headset_jack_functions">Functions</h3>
+
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Device Support</strong></p>
-</th>
+    <th>Function</th>
+    <th>Device Support</th>
  </tr>
  <tr>
-    <td>
-<p>Stereo Audio Out</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
+    <td>Stereo Audio Out</td>
+    <td>Required</td>
  </tr>
  <tr>
-    <td>
-<p>Audio in (Mic)</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
+    <td>Audio in (Mic)</td>
+    <td>Required</td>
  </tr>
  <tr>
-    <td>
-<p>Ground</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
+    <td>Ground</td>
+    <td>Required</td>
  </tr>
 </table>
 
-<h3 id=software_mapping>Software mapping</h3>
+<h3 id="software_mapping">Software mapping</h3>
 
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Device Support</strong></p>
-</th>
-    <th>
-<p><strong>Description</strong></p>
-</th>
+    <th style="width:33%">Function</th>
+    <th style="width:33%">Device Support</th>
+    <th style="width:33%">Description</th>
  </tr>
  <tr>
-    <td>
-<p>Function A control event </p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>input event KEY_MEDIA</p>
-
-<p>Android key  KEYCODE_HEADSETHOOK</p>
-</td>
+    <td>Function A control event</td>
+    <td>Required</td>
+    <td>input event KEY_MEDIA
+<p>Android key KEYCODE_HEADSETHOOK</p></td>
  </tr>
  <tr>
-    <td>
-<p>Function D control event</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>input event KEY_VOICECOMMAND</p>
-
-<p>Android key KEYCODE_VOICE_ASSIST</p>
-</td>
+    <td>Function D control event</td>
+    <td>Required</td>
+    <td>input event KEY_VOICECOMMAND
+<p>Android key KEYCODE_VOICE_ASSIST</p></td>
  </tr>
  <tr>
-    <td>
-<p>Function B control event</p>
+    <td>Function B control event</td>
+    <td>Required
 </td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>input event KEY_VOLUMEUP</p>
-
-<p>Android key  VOLUME_UP</p>
-</td>
+    <td>input event KEY_VOLUMEUP
+<p>Android key  VOLUME_UP</p></td>
  </tr>
  <tr>
-    <td>
-<p>Function C control event</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>input event KEY_VOLUMEDOWN</p>
-
-<p>Android key  VOLUME_DOWN</p>
-</td>
+    <td>Function C control event</td>
+    <td>Required</td>
+    <td>input event KEY_VOLUMEDOWN
+<p>Android key VOLUME_DOWN</p></td>
  </tr>
  <tr>
-    <td>
-<p>Headset insertion detection</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>input event SW_JACK_PHYSICAL_INSERT 7</p>
-</td>
+    <td>Headset insertion detection</td>
+    <td>Required</td>
+    <td>input event SW_JACK_PHYSICAL_INSERT 7</td>
  </tr>
  <tr>
-    <td>
-<p>Headset type detection</p>
-</td>
-    <td>
-<p><strong>Mic</strong></p>
-</td>
-    <td>
-<p>input event SW_MICROPHONE_INSERT 4</p>
-</td>
+    <td rowspan="2">Headset type detection</td>
+    <td>Mic</td>
+    <td>input event SW_MICROPHONE_INSERT 4</td>
  </tr>
  <tr>
-    <td>
-<p>Headset type detection</p>
-</td>
-    <td>
-<p><strong>No Mic</strong></p>
-</td>
-    <td>
-<p>input event SW_HEADPHONE_INSERT 2</p>
-</td>
+    <td>No Mic</td>
+    <td>input event SW_HEADPHONE_INSERT 2</td>
  </tr>
  <tr>
-    <td>
-<p>Headset speaker impedance</p>
-</td>
-    <td>
-<p><strong>Required Headphone (low)</strong></p>
-</td>
-    <td>
-<p>Failure mode is to indicate headphones so that limitation would be on</p>
-</td>
+    <td rowspan="2">Headset speaker impedance</td>
+    <td>Required Headphone (low)</td>
+    <td>Failure mode is to indicate headphones so limitation would be on</td>
  </tr>
  <tr>
-    <td>
-<p>Headset speaker impedance</p>
-</td>
-    <td>
-<p><strong>Required Line In (high)</strong></p>
-</td>
-    <td>
-<p>input event SW_LINEOUT_INSERT 6</p>
-</td>
+    <td>Required Line In (high)</td>
+    <td>input event SW_LINEOUT_INSERT 6</td>
  </tr>
 </table>
 
-<h3 id=mechanical11>Mechanical</h3>
+<h3 id="mechanical11">Mechanical</h3>
 
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Device Support</strong></p>
-</th>
-    <th>
-<p><strong>Description</strong></p>
-</th>
+    <th style="width:33%">Function</th>
+    <th style="width:33%">Device Support</th>
+    <th style="width:33%">Description</th>
  </tr>
  <tr>
-    <td>
-<p>4 conductor 3.5mm jack</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
+    <td>4 conductor 3.5mm jack</td>
+    <td>Required</td>
     <td></td>
  </tr>
  <tr>
-    <td>
-<p>CTIA pinout order (LRGM)</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>3 Pin & Mono Plug Compatible</p>
-</td>
+    <td>CTIA pinout order (LRGM)</td>
+    <td>Required</td>
+    <td>3 Pin & Mono Plug Compatible</td>
  </tr>
  <tr>
-    <td>
-<p>OMTP pinout order  (LRMG)</p>
-</td>
-    <td>
-<p>Optional but <strong>Strongly Recommended</strong></p>
-</td>
+    <td>OMTP pinout order (LRMG)</td>
+    <td>Optional but strongly recommended</td>
     <td></td>
  </tr>
  <tr>
-    <td>
-<p>Headset detect sequence</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Plug insert notification must only be triggered after all contacts on plug are
-touching their relevant segments. This will prevent unreliable headset
-detection due to slow insertion. </p>
-</td>
+    <td>Headset detect sequence</td>
+    <td>Required</td>
+    <td>Plug insert notification must be triggered only after all contacts on
+    plug are touching their relevant segments (this prevents unreliable headset
+    detection due to slow insertion.</td>
  </tr>
 </table>
 
-<h3 id=electrical12>Electrical</h3>
+<h3 id="electrical12">Electrical</h3>
 
-<h4 id=general>General</h4>
+<h4 id="general">General</h4>
 
 <table>
  <tr>
-    <th>
-<p><strong>Function</strong></p>
-</th>
-    <th>
-<p><strong>Device Support</strong></p>
-</th>
-    <th>
-<p><strong>Notes</strong></p>
-</th>
+    <th style="width:33%">Function</th>
+    <th style="width:33%">Device Support</th>
+    <th style="width:33%">Notes</th>
  </tr>
  <tr>
-    <td>
-<p>Maximum output voltage drive</p>
-</td>
-    <td>
-<p>150mV </p>
-</td>
-    <td>
-<p>&gt;= 150mV on 32 ohm</p>
-
-<p>Test conditions: EN50332-2</p>
-</td>
+    <td>Maximum output voltage drive</td>
+    <td>150mV</td>
+    <td>&gt;= 150mV on 32 ohm
+<p>Test conditions: EN50332-2</p></td>
  </tr>
  <tr>
-    <td>
-<p>Mic bias resistance </p>
-</td>
-    <td>
-<p>Required</p>
-</td>
-    <td>
-<p>Flexible on detection method used and microphone bias resistor selection.
-Require that all button resistance value ranges specified below be detected and
-related to their respective function</p>
-</td>
+    <td>Mic bias resistance</td>
+    <td>Required</td>
+    <td>Flexible on detection method used and microphone bias resistor
+    selection. Require that all button resistance value ranges specified below
+    be detected and related to their respective function</td>
  </tr>
  <tr>
-    <td>
-<p>Mic bias voltage</p>
-</td>
-    <td>
-<p>1.8V - 2.9V</p>
-</td>
-    <td>
-<p>To guarantee compatibility to common microphone capsules.</p>
-</td>
+    <td>Mic bias voltage</td>
+    <td>1.8V - 2.9V</td>
+    <td>To guarantee compatibility to common microphone capsules.</td>
  </tr>
 </table>
 
-<h4 id=function_impedance_and_threshold_detection>Function Impedance and Threshold Detection</h4>
+<h4 id="function_impedance_and_threshold_detection">Function impedance and
+threshold detection</h4>
 
 <p>Devices must detect the following resistor ladder on the accessories. The
 accessories will be tested to the standardized circuit diagram in the diagram
@@ -609,89 +362,49 @@
 bias applied through 2.2 kOhm resistor. This is the same effective resistance
 as the button detection circuit with the microphone in parallel with the button
 resistor.</p>
+
 <table>
  <tr>
-    <th>
-<p><strong>Button Impedance Level</strong></p>
-</th>
-    <th>
-<p><strong>Device Support</strong></p>
-</th>
-    <th>
-<p><strong>Notes</strong></p>
-</th>
+    <th style="width:40%">Button Impedance Level</th>
+    <th style="width:20%">Device Support</th>
+    <th style="width:40%">Notes</th>
  </tr>
  <tr>
-    <td>
-<p><strong>70 ohm or less</strong></p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>[Function A]</p>
-</td>
+    <td>70 ohm or less</td>
+    <td>Required</td>
+    <td>[Function A]</td>
  </tr>
  <tr>
-    <td>
-<p><strong>110 - 180 ohm </strong></p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>[Function D]</p>
-</td>
+    <td>110 - 180 ohm</td>
+    <td>Required</td>
+    <td>[Function D]</td>
  </tr>
  <tr>
-    <td>
-<p><strong>210 - 290 ohm</strong></p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>[Function B]</p>
-</td>
+    <td>210 - 290 ohm</td>
+    <td>Required</td>
+    <td>[Function B]</td>
  </tr>
  <tr>
-    <td>
-<p><strong>360 - 680 ohm </strong></p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>[Function C]</p>
-</td>
+    <td>360 - 680 ohm</td>
+    <td>Required</td>
+    <td>[Function C]</td>
+ </tr>
+ </table>
+
+ <table>
+ <tr>
+    <th style="width:40%">Headset Speaker Impedance Level</th>
+    <th style="width:20%">Device Support</th>
+    <th style="width:40%">Notes</th>
  </tr>
  <tr>
-    <td>
-<p><strong>Headset speaker impedance level</strong></p>
-</td>
-    <td></td>
-    <td></td>
+    <td>Low Threshold Detection</td>
+    <td>Required</td>
+    <td>Headphone (low) &lt; 1 Kohm</td>
  </tr>
  <tr>
-    <td>
-<p>Low Threshold Detection</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Headphone (low) &lt; 1 Kohm</p>
-</td>
+    <td>High Threshold Detection</td>
+    <td>Required</td>
+    <td>Line In (high) &gt; 5 Kohm</td>
  </tr>
- <tr>
-    <td>
-<p>High Threshold Detection</p>
-</td>
-    <td>
-<p><strong>Required</strong></p>
-</td>
-    <td>
-<p>Line In (high) &gt; 5 Kohm</p>
-</td>
- </tr>
-</table>
+</table>
\ No newline at end of file
diff --git a/src/accessories/images/headset-circuit1.png b/src/accessories/images/headset-circuit1.png
index f3e622a..d6f7421 100644
--- a/src/accessories/images/headset-circuit1.png
+++ b/src/accessories/images/headset-circuit1.png
Binary files differ
diff --git a/src/accessories/images/headset-circuit2.png b/src/accessories/images/headset-circuit2.png
index ff6b541..6700c45 100644
--- a/src/accessories/images/headset-circuit2.png
+++ b/src/accessories/images/headset-circuit2.png
Binary files differ
diff --git a/src/compatibility/contact-us.jd b/src/compatibility/contact-us.jd
index 6c590f5..e77b115 100644
--- a/src/compatibility/contact-us.jd
+++ b/src/compatibility/contact-us.jd
@@ -2,24 +2,24 @@
 @jd:body
 
 <!--
-    Copyright 2015 The Android Open Source Project     
+    Copyright 2015 The Android Open Source Project
 
-    Licensed under the Apache License, Version 2.0 (the "License");    
-    you may not use this file except in compliance with the License.   
-    You may obtain a copy of the License at    
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
 
         http://www.apache.org/licenses/LICENSE-2.0
 
-    Unless required by applicable law or agreed to in writing, software    
-    distributed under the License is distributed on an "AS IS" BASIS,    
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
-    See the License for the specific language governing permissions and    
-    limitations under the License.   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
 -->
 <p>This page describes the
 contact methods for inquiries regarding the Android compatibility program,
 including the Compatibility Definition Document (CDD) and Compatibility Test
-Suite (CTS). See the <a href="{@docRoot}community/index.html">Community</a>
+Suite (CTS). See the <a href="{@docRoot}source/community.html">Community</a>
 page for communication channels regarding other topics.</p>
 
 <h2
@@ -38,7 +38,7 @@
 </ul>
 
 <p>To make best use of this list, please first read <a
-href="{@docRoot}source/community/index.html#getting-the-most-from-our-lists">Getting
+href="{@docRoot}source/community.html#getting-the-most-from-our-lists">Getting
 the Most from Our Lists</a> on the Community page. Users looking for help with
 Android devices should contact their carrier or manufacturer for help.</p>
 
@@ -49,4 +49,4 @@
 href="mailto:android-partnerships@google.com">android-partnerships@google.com</a>
 
 <p>While we read every message received, we cannot respond to each of them. We
-promise to contact you if we can help!</p>
+promise to contact you if we can help!</p>
\ No newline at end of file
diff --git a/src/compatibility/overview.jd b/src/compatibility/overview.jd
index aa0fccb..0a1bfca 100644
--- a/src/compatibility/overview.jd
+++ b/src/compatibility/overview.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project     
+    Copyright 2015 The Android Open Source Project     
 
     Licensed under the Apache License, Version 2.0 (the "License");    
     you may not use this file except in compliance with the License.   
diff --git a/src/devices/audio/latency_measurements.jd b/src/devices/audio/latency_measurements.jd
index e66b5f9..8055890 100644
--- a/src/devices/audio/latency_measurements.jd
+++ b/src/devices/audio/latency_measurements.jd
@@ -331,6 +331,16 @@
   <td>38</td>
 </tr>
 
+</tr>
+  <td>Nexus 9</td>
+  <td>5.1.1</td>
+  <td>LMY47X</td>
+  <td>48000</td>
+  <td>256</td>
+  <td>5.3</td>
+  <td>32</td>
+</tr>
+
 <tr>
   <td>Nexus 6</td>
   <td>5.0.1</td>
diff --git a/src/devices/camera/images/ape_fwk_camera.png b/src/devices/camera/images/ape_fwk_camera.png
index 102461e..cb8831b 100644
--- a/src/devices/camera/images/ape_fwk_camera.png
+++ b/src/devices/camera/images/ape_fwk_camera.png
Binary files differ
diff --git a/src/devices/camera/images/camera-hal-overview.png b/src/devices/camera/images/camera-hal-overview.png
index fed29e7..3f39356 100644
--- a/src/devices/camera/images/camera-hal-overview.png
+++ b/src/devices/camera/images/camera-hal-overview.png
Binary files differ
diff --git a/src/devices/camera/images/camera-ops-flow.png b/src/devices/camera/images/camera-ops-flow.png
index 7326782..2d5cd4f 100644
--- a/src/devices/camera/images/camera-ops-flow.png
+++ b/src/devices/camera/images/camera-ops-flow.png
Binary files differ
diff --git a/src/devices/camera/images/camera_block.png b/src/devices/camera/images/camera_block.png
index b7a58eb..29b92e9 100644
--- a/src/devices/camera/images/camera_block.png
+++ b/src/devices/camera/images/camera_block.png
Binary files differ
diff --git a/src/devices/camera/images/camera_hal.png b/src/devices/camera/images/camera_hal.png
index 28fa927..ffb1406 100644
--- a/src/devices/camera/images/camera_hal.png
+++ b/src/devices/camera/images/camera_hal.png
Binary files differ
diff --git a/src/devices/camera/images/camera_model.png b/src/devices/camera/images/camera_model.png
index 50cbabc..a8810c6 100644
--- a/src/devices/camera/images/camera_model.png
+++ b/src/devices/camera/images/camera_model.png
Binary files differ
diff --git a/src/devices/camera/images/camera_simple_model.png b/src/devices/camera/images/camera_simple_model.png
index fd0fac0..625dd8f 100644
--- a/src/devices/camera/images/camera_simple_model.png
+++ b/src/devices/camera/images/camera_simple_model.png
Binary files differ
diff --git a/src/devices/camera/images/crop-region-11-ratio.png b/src/devices/camera/images/crop-region-11-ratio.png
index 8e28230..f6406d7 100644
--- a/src/devices/camera/images/crop-region-11-ratio.png
+++ b/src/devices/camera/images/crop-region-11-ratio.png
Binary files differ
diff --git a/src/devices/camera/images/crop-region-169-ratio.png b/src/devices/camera/images/crop-region-169-ratio.png
index 62837e2..d190858 100644
--- a/src/devices/camera/images/crop-region-169-ratio.png
+++ b/src/devices/camera/images/crop-region-169-ratio.png
Binary files differ
diff --git a/src/devices/camera/images/crop-region-43-ratio.png b/src/devices/camera/images/crop-region-43-ratio.png
index f48046b..420068b 100644
--- a/src/devices/camera/images/crop-region-43-ratio.png
+++ b/src/devices/camera/images/crop-region-43-ratio.png
Binary files differ
diff --git a/src/devices/camera/images/crop-region-43-square-ratio.png b/src/devices/camera/images/crop-region-43-square-ratio.png
index 3794dbe..9257dda 100644
--- a/src/devices/camera/images/crop-region-43-square-ratio.png
+++ b/src/devices/camera/images/crop-region-43-square-ratio.png
Binary files differ
diff --git a/src/devices/camera/index.jd b/src/devices/camera/index.jd
index 1e5cab8..9bf74df 100644
--- a/src/devices/camera/index.jd
+++ b/src/devices/camera/index.jd
@@ -30,7 +30,7 @@
 camera framework APIs in <a href="http://developer.android.com/reference/android/hardware/package-summary.html">android.hardware</a> to your underlying camera driver and hardware. The camera subsystem includes implementations for camera pipeline components while the camera HAL provides interfaces for use in implementing your version of these components.</p>
 
 <h2 id="architecture">Architecture</h2>
-<p>The following figure and list describe the components involved and where to find the source for each:
+<p>The following figure and list describe the HAL components:
 </p>
 
 <img src="images/ape_fwk_camera.png" alt="Android camera architecture" id="figure1" />
diff --git a/src/devices/devices_toc.cs b/src/devices/devices_toc.cs
index 45ddd70..ca4ef2d 100644
--- a/src/devices/devices_toc.cs
+++ b/src/devices/devices_toc.cs
@@ -251,7 +251,7 @@
         </ul>
       </li>
 
-      <li><a href="<?cs var:toroot ?>devices/tech/netstats.html">Viewing Network Data</a></li>
+      <li><a href="<?cs var:toroot ?>devices/tech/netstats.html">Network Data</a></li>
 
       <li class="nav-section">
         <div class="nav-section-header">
diff --git a/src/devices/input/getevent.jd b/src/devices/input/getevent.jd
index 8bf4093..fd39dbb 100644
--- a/src/devices/input/getevent.jd
+++ b/src/devices/input/getevent.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
+
 <p>The <code>getevent</code> tool runs on the device and provides information about input
 devices and a live dump of kernel input events.</p>
 <p>It is very useful tool for ensuring that device drivers are reporing the
diff --git a/src/devices/input/input-device-configuration-files.jd b/src/devices/input/input-device-configuration-files.jd
index 877053c..ffe9ba4 100644
--- a/src/devices/input/input-device-configuration-files.jd
+++ b/src/devices/input/input-device-configuration-files.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
+
 <p>Input device configuration files (<code>.idc</code> files) contain device-specific
 configuration properties that affect the behavior of input devices.</p>
 <p>Input device configuration files are typically not necessary for standard
diff --git a/src/devices/input/key-character-map-files.jd b/src/devices/input/key-character-map-files.jd
index 6872cdb..d485707 100644
--- a/src/devices/input/key-character-map-files.jd
+++ b/src/devices/input/key-character-map-files.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
+
 <p>Key character map files (<code>.kcm</code> files) are responsible for mapping combinations
 of Android key codes with modifiers to Unicode characters.</p>
 <p>Device-specific key layout files are <em>required</em> for all internal (built-in)
diff --git a/src/devices/input/key-layout-files.jd b/src/devices/input/key-layout-files.jd
index d353d08..2b7cd53 100644
--- a/src/devices/input/key-layout-files.jd
+++ b/src/devices/input/key-layout-files.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
+
 <p>Key layout files (<code>.kl</code> files) are responsible for mapping Linux key codes
 and axis codes to Android key codes and axis codes and specifying associated
 policy flags.</p>
diff --git a/src/devices/input/keyboard-devices.jd b/src/devices/input/keyboard-devices.jd
index 74bafaa..267ae42 100644
--- a/src/devices/input/keyboard-devices.jd
+++ b/src/devices/input/keyboard-devices.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
+
 <p>Android supports a variety of keyboard devices including special function
 keypads (volume and power controls), compact embedded QWERTY keyboards,
 and fully featured PC-style external keyboards.</p>
diff --git a/src/devices/input/overview.jd b/src/devices/input/overview.jd
index 118fabf..11cdf97 100644
--- a/src/devices/input/overview.jd
+++ b/src/devices/input/overview.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
+
 <p>The Android input subsystem nominally consists of an event pipeline
 that traverses multiple layers of the system.</p>
 <h2 id="input-pipeline">Input Pipeline</h2>
diff --git a/src/devices/input/touch-devices.jd b/src/devices/input/touch-devices.jd
index 298ba15..bb78d35 100644
--- a/src/devices/input/touch-devices.jd
+++ b/src/devices/input/touch-devices.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
+
 <p>Android supports a variety of touch screens and touch pads, including
 stylus-based digitizer tablets.</p>
 <p>Touch screens are touch devices that are associated with a display such that
diff --git a/src/devices/input/validate-keymaps.jd b/src/devices/input/validate-keymaps.jd
index 6a907a1..4a099d4 100644
--- a/src/devices/input/validate-keymaps.jd
+++ b/src/devices/input/validate-keymaps.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
+
 <p>The Android framework has a small tool called <code>validatekeymaps</code> to validate the
 syntax of input device configuration files, key layout files, key character
 maps files and virtual key definition files.</p>
diff --git a/src/devices/storage/config-example.jd b/src/devices/storage/config-example.jd
index 347d8d5..fd55db8 100644
--- a/src/devices/storage/config-example.jd
+++ b/src/devices/storage/config-example.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,13 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
 
 <p>Below are examples of external storage configurations as of Android 4.4
 for various typical devices. Only the relevant portions of the configuration
diff --git a/src/devices/storage/index.jd b/src/devices/storage/index.jd
index e8786ec..894e85b 100644
--- a/src/devices/storage/index.jd
+++ b/src/devices/storage/index.jd
@@ -16,6 +16,13 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
 
 <img style="float: right; margin: 0px 15px 15px 15px;" src="images/ape_fwk_hal_extstor.png" alt="Android external storage HAL icon"/>
 
diff --git a/src/devices/tech/dalvik/dex-format.jd b/src/devices/tech/dalvik/dex-format.jd
index 9b7a6a2..5315db1 100644
--- a/src/devices/tech/dalvik/dex-format.jd
+++ b/src/devices/tech/dalvik/dex-format.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
diff --git a/src/devices/tech/kernel.jd b/src/devices/tech/kernel.jd
index 637c5c4..e3f89bb 100644
--- a/src/devices/tech/kernel.jd
+++ b/src/devices/tech/kernel.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,7 +16,18 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
-<p>The kernel configuration settings in this document are meant to be used as a base for an Android kernel configuration. All devices should have the options in android-base configuration enabled. While not mandatory, the options in android-recommended configuration enable advanced Android 
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
+
+<p>The kernel configuration settings in this document are meant to be used as a
+base for an Android kernel configuration. All devices should have the options
+in android-base configuration enabled. While not mandatory, the options in
+android-recommended configuration enable advanced Android 
 features.</p>
 
 <p>
diff --git a/src/devices/tech/security/images/android_software_stack.png b/src/devices/tech/security/images/android_software_stack.png
new file mode 100644
index 0000000..170ea33
--- /dev/null
+++ b/src/devices/tech/security/images/android_software_stack.png
Binary files differ
diff --git a/src/devices/tech/security/images/device_states.png b/src/devices/tech/security/images/device_states.png
deleted file mode 100644
index 319c345..0000000
--- a/src/devices/tech/security/images/device_states.png
+++ /dev/null
Binary files differ
diff --git a/src/devices/tech/security/images/dm-verity_mgmt.png b/src/devices/tech/security/images/dm-verity_mgmt.png
index f67b93f..2c2854e 100644
--- a/src/devices/tech/security/images/dm-verity_mgmt.png
+++ b/src/devices/tech/security/images/dm-verity_mgmt.png
Binary files differ
diff --git a/src/devices/tech/security/images/permissions_check.png b/src/devices/tech/security/images/permissions_check.png
new file mode 100644
index 0000000..0dc2e02
--- /dev/null
+++ b/src/devices/tech/security/images/permissions_check.png
Binary files differ
diff --git a/src/devices/tech/security/images/verified_boot.png b/src/devices/tech/security/images/verified_boot.png
index 592aee8..b1c5cb6 100644
--- a/src/devices/tech/security/images/verified_boot.png
+++ b/src/devices/tech/security/images/verified_boot.png
Binary files differ
diff --git a/src/devices/tech/security/index.jd b/src/devices/tech/security/index.jd
index 1c67377..cb5c881 100644
--- a/src/devices/tech/security/index.jd
+++ b/src/devices/tech/security/index.jd
@@ -64,7 +64,7 @@
   the components below are properly secured. With the exception of a small amount
   of Android OS code running as root, all code above the Linux Kernel is
   restricted by the Application Sandbox.</p>
-<p><img alt="Figure 1: Android software stack" src="images/image00.png" /></p>
+<p><img alt="Figure 1: Android software stack" src="images/android_software_stack.png" /></p>
 <p><em>Figure 1: Android software stack.</em></p>
 <p>The main Android platform building blocks are:</p>
 <ul>
diff --git a/src/devices/tech/security/overview/acknowledgements.jd b/src/devices/tech/security/overview/acknowledgements.jd
index 19e79ec..35e8cbc 100644
--- a/src/devices/tech/security/overview/acknowledgements.jd
+++ b/src/devices/tech/security/overview/acknowledgements.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2014 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
+
 <p>The Android Security Team would like to thank the following people and
 parties for helping to improve Android security. They have done this either by
 finding and responsibly reporting security vulnerabilities to <a
diff --git a/src/devices/tech/security/overview/app-security.jd b/src/devices/tech/security/overview/app-security.jd
index 3f2811c..f25f067 100644
--- a/src/devices/tech/security/overview/app-security.jd
+++ b/src/devices/tech/security/overview/app-security.jd
@@ -239,7 +239,7 @@
   choose to share this information can use Android OS permission checks to
   protect the data from third-party applications.</p>
 <img alt="Access to sensitive user data available only through protected
-APIs" src="../images/image03.png" id="figure2" />
+APIs" src="../images/permissions_check.png" id="figure2" />
 <p class="img-caption">
   <strong>Figure 2.</strong> Access to sensitive user data is available only through protected APIs
 </p>
@@ -339,7 +339,7 @@
   </li>
 </ul>
 <p><img alt="Architecture of Digital Rights Management on Android
-platform" src="../images/image02.png" id="figure3" /></p>
+platform" src="../../../images/ape_fwk_drm_2.png" id="figure3" /></p>
 <p class="img-caption">
   <strong>Figure 3.</strong> Architecture of Digital Rights Management on Android platform
 </p>
diff --git a/src/devices/tech/security/verifiedboot/dm-verity.jd b/src/devices/tech/security/verifiedboot/dm-verity.jd
index f86c1b2..0b03dda 100644
--- a/src/devices/tech/security/verifiedboot/dm-verity.jd
+++ b/src/devices/tech/security/verifiedboot/dm-verity.jd
@@ -189,6 +189,9 @@
 
 <p>And this table describes those metadata fields.</p>
 
+<p class="table-caption" id="table1">
+  <strong>Table 1.</strong> Verity metadata fields</p>
+
 <table>
 <tr>
 <th>Field</th>
@@ -233,3 +236,11 @@
 <td>0</td>
 </tr>
 </table>
+
+<h3 id="optimize">Optimizing dm-verity</h3>
+
+<p>To get the best performance out of dm-verity, you should:</p>
+  <ul>
+    <li>In the kernel, turn on NEON SHA-2 for ARMv7 and the SHA-2 extensions for ARMv8.
+    <li>Experiment with different read-ahead and prefetch_cluster settings to find the best configuration for your device.
+  </ul>
diff --git a/src/devices/tech/security/verifiedboot/verified-boot.jd b/src/devices/tech/security/verifiedboot/verified-boot.jd
index c96d930..1216fec 100644
--- a/src/devices/tech/security/verifiedboot/verified-boot.jd
+++ b/src/devices/tech/security/verifiedboot/verified-boot.jd
@@ -41,6 +41,9 @@
 
 <h2 id=glossary>Glossary</h2>
 
+<p class="table-caption" id="table1">
+  <strong>Table 1.</strong> Glossary of terms related to verified boot</p>
+
 <table>
  <tr>
     <td>
@@ -65,7 +68,7 @@
 </td>
     <td>
 <p>The device state indicates how freely software can be flashed to the device.
-Device states are LOCKED, UNLOCKED, or VERIFIED.</p>
+Device states are LOCKED and UNLOCKED.</p>
 </td>
  </tr>
  <tr>
@@ -94,38 +97,39 @@
 must be used to verify the boot image.</p>
 </td>
  </tr>
- <tr>
-    <td>
-<p>User provided keystore</p>
-</td>
-    <td>
-<p>The user keystore is a keystore flashed to the device via <code>fastboot 
-flash keystore &lt;path&gt;</code>.</p>
-</td>
- </tr>
 </table>
 
 <h2 id=overview>Overview</h2>
 
 <p>In addition to device state - which already exists in devices and controls
 whether the bootloader allows new software to be flashed - we introduce the
-concept of boot state that indicates the state of device integrity. We also
-add a third device state, which allows developers for example, to flash the
-software more frequently without a data wipe while still benefiting from
-verification.</p>
+concept of boot state that indicates the state of device integrity.</p>
+
+<h3 id=classes>Classes</h3>
+
+<p>We define two implementation classes for verified boot depending on how
+fully the device implements this specification, as follows:</p>
+
+<p><strong>Class A</strong>  implements verified boot with full chain of trust
+up to verified partitions. This implementation must support the LOCKED device
+state, and GREEN and RED boot states.</p>
+
+<p><strong>Class B</strong> implements Class A and additionally supports the
+UNLOCKED device state and the ORANGE boot state.</p>
 
 <h3 id=verification_keys>Verification keys</h3>
 
 <p>Bootloader integrity must be verified using a hardware root of trust. For
-verifying boot and recovery images, the bootloader must have a fixed OEM key
-available to it. It must always attempt to verify the boot image using the OEM
-key and only try other possible keys if this verification fails.</p>
+verifying boot and recovery partitions, the bootloader must have a fixed OEM key
+available to it. It must always attempt to verify the boot partition using the OEM
+key first and try other possible keys only if this verification fails.</p>
 
-<p>It must be possible for the user to flash alternative image verification keys
-to the device, and the bootloader must try verification using these keys if
-verification using the OEM key fails. However, using an image signed with the
-user-provided keystore must result in a notification to be shown, as described
-below.</p>
+<p>In Class B implementations, it must be possible for the user to flash
+software signed with other keys when the device is UNLOCKED. If the device is
+then LOCKED and verification using the OEM key fails, the bootloader must try
+verification using the certificate embedded in the partition signature.
+However, using a partition signed with anything other than the OEM key must
+result in a notification or a warning, as described below.</p>
 
 <h3 id=boot_state>Boot state</h3>
 
@@ -133,103 +137,62 @@
 attempt:</p>
 
 <ul>
-  <li> GREEN, indicating a full chain of trust extending from the bootloader to the
-system partition, including the bootloader, boot partition, and system
-partition.
+  <li>GREEN, indicating a full chain of trust extending from the bootloader to
+verified partitions, including the bootloader, boot partition, and all verified
+partitions.
+
+  <li>YELLOW, indicating the boot partition has been verified using the
+embedded certificate, and the signature is valid. The bootloader is required to
+display a notification and the fingerprint of the public key during boot.
+
+  <li>ORANGE, indicating a device may be freely modified. Device integrity is
+left to the user to verify out-of-band. The bootloader must display a warning
+to the user before allowing the boot process to continue.
+
+  <li>RED, indicating the device has failed verification. The bootloader must
+display a warning to the user before allowing the boot process to continue.
 </ul>
 
-<ul>
-  <li> YELLOW, indicating a chain of trust starting from a user-provided keystore
-and extending up. To enable users to acquire trust in their keystore,
-bootloaders are required to display a partial hash of the verifying keystore
-during boot.
-</ul>
+<p>The recovery partition must also be verified in the exact same way.</p>
 
-<ul>
-  <li> ORANGE, indicating a device may be freely modified. Device integrity is
-left to the user to verify out-of-band.
-</ul>
+<h3 id=device_state>Device state</h3>
 
-<ul>
-  <li> RED, indicating the device has failed verification. This must display a
-warning to the user before allowing the boot process to continue.
-</ul>
+<p>The device is required to be in one of two states at all times:</p>
 
-<p>The recovery partition must also be verified and should be verified in the
-exact same way.</p>
+<ol>
+  <li>LOCKED, indicating the device cannot be flashed. A LOCKED device must
+boot into the GREEN, YELLOW, or RED states during any attempted boot.
+
+  <li>UNLOCKED, indicating the device may be flashed freely and is not intended
+to be verified. An UNLOCKED device must always boot to the ORANGE boot state.
+</ol>
 
 <img src="../images/verified_boot.png" alt="Verified boot flow" id="figure1" />
 <p class="img-caption"><strong>Figure 1.</strong> Verified boot flow</p>
 
-<h3 id=device_state>Device state</h3>
-
-<p>The device is required to be in one of three states at all times:</p>
-
-<ol>
-  <li>LOCKED, indicating the device cannot currently be flashed. In the image
-above, a LOCKED device must boot into the GREEN state, YELLOW state, or RED
-state during any attempted boot. It must not be possible to alter the user
-keystore in the LOCKED state.
-
-  <li>VERIFIED, indicating someone in physical control of the device may perform
-limited actions intended to change the state of the device but may not break
-its current chain of trust. In the image above, a VERIFIED device must boot
-into the GREEN state, YELLOW state, or RED state during each attempted boot. It
-must not be possible to alter the user keystore in the VERIFIED state. It must
-be possible to:
-   <ol>
-    <li> Flash the following partitions:
-    <ol>
-      <li> bootloader
-      <li> boot partition
-      <li> system partition
-      <li> vendor partition
-      <li> recovery partition
-    </ol>
-    <li> Erase the following partitions:
-    <ol>
-      <li> userdata
-      <li> cache
-    </ol>
-   </ol>
-
-<p>Boot and recovery image signatures may be verified during the flashing process,
-and the bootloader may reject images that do not validate against the OEM key
-or the user-provided keystore at this point. However, signatures must also be
-verified again at every boot.
-
-  <li>UNLOCKED, indicating the device may be flashed freely and is not intended
-to be verified.
-</ol>
-
 <h2 id=detailed_design>Detailed design</h2>
 
 <p>Achieving full chain of trust requires support from both the bootloader and the
-software on the boot partition, specifically <code>init</code>, which is responsible for
-mounting additional partitions. Verification metadata must also be appended to the
-system partition and any additional partitions whose integrity should be
-verified.</p>
+software on the boot partition, which is responsible for mounting further
+partitions. Verification metadata must also be appended to the system partition
+and any additional partitions whose integrity should be verified.</p>
 
 <h3 id=bootloader_requirements>Bootloader requirements</h3>
 
-<p>The bootloader is the guardian of the device state, manages the user-provided
-keystore, and is responsible for initializing the TEE and binding its root of
-trust.</p>
+<p>The bootloader is the guardian of the device state and is responsible for
+initializing the TEE and binding its root of trust.</p>
 
 <p>Most importantly, the bootloader must verify the integrity of the boot and/or
 recovery partition before moving execution to the kernel and display the
-warnings or notifications in the section <a href="#boot_state">Boot state</a>.</p>
+warnings specified in the section <a href="#boot_state">Boot state</a>.</p>
 
-<h4 id=changing_device_state><strong>Changing device state</strong></h4>
+<h4 id=changing_device_state>Changing device state</h4>
 
 <p>State changes are performed using the <code>fastboot flashing [unlock |
-verified | lock]</code> command. And to protect user data, <strong>all</strong>
+lock]</code> command. And to protect user data, <strong>all</strong>
 state transitions require a data wipe. Note the user must be asked for
 confirmation before data is deleted.</p>
 
-<img src="../images/device_states.png" alt="Changing device states" id="figure2" />
-<p class="img-caption"><strong>Figure 2.</strong> Changing device states</p>
-
 <ol>
   <li>The UNLOCKED to LOCKED transition is anticipated when a user buys a used
 development device. As a result of locking the device, the user should have
@@ -237,20 +200,13 @@
 
   <li>The LOCKED to UNLOCKED transition is expected in the case where a developer
 wishes to disable verification on the device.
-
-  <li>The LOCKED to VERIFIED transition is expected in the case where a developer
-wishes to do development on the device and doesn’t want to wipe data frequently.
-
-  <li>The VERIFIED to LOCKED transition is idempotent with the above.
-
-  <li>The UNLOCKED to VERIFIED transition is anticipated when a user wishes to put a
-development device in a more secure state but may not want to prevent
-themselves from flashing new system images.
-
-  <li> The VERIFIED to UNLOCKED transition is idempotent with the above.
 </ol>
 
 <p>Requirements for <code>fastboot</code> commands that alter device state are listed in the table below:</p>
+
+<p class="table-caption" id="table2">
+  <strong>Table 2.</strong> <code>fastboot</code> commands</p>
+
 <table>
  <tr>
     <td>
@@ -268,7 +224,6 @@
 <ul>
   <li>Wipe data after asking the user for confirmation     
   <li>Clear a write-protected bit indicating the device is unlocked
-  <li>Clear a write-protected bit indicating the device is verified
 </ul>
 </td>
  </tr>
@@ -280,19 +235,6 @@
 <ul>
   <li>Wipe data after asking the user for confirmation     
   <li>Set a write-protected bit indicating the device is unlocked
-  <li>Clear a write-protected bit indicating the device is verified
-</ul>
-</td>
- </tr>
- <tr>
-    <td>
-<code>
-flashing verified</code></td>
-    <td>
-<ul>
-  <li>Wipe data after asking the user for confirmation     
-  <li>Clear a write-protected bit indicating the device is unlocked
-  <li>Set a write-protected bit indicating the device is verified
 </ul>
 </td>
  </tr>
@@ -300,6 +242,10 @@
 
 <p>When altering partition contents, the bootloader must check the bits set by
 the above commands as described in the following table:</p>
+
+<p class="table-caption" id="table3">
+  <strong>Table 3.</strong> <code>fastboot</code> command requirements</p>
+
 <table>
  <tr>
     <td>
@@ -314,128 +260,110 @@
 <code>
 flash &lt;partition&gt;</code></td>
     <td>
-<ul>
-  <li>If the bit set by <code>flashing unlock</code> is set, flash the partition as normal    
-  <li>If this bit is not set, check the bit set by <code>flashing verified</code>
-    <ul>
-      <li>If this bit is not set, exit with an error
-      <li>If this bit is set and &lt;partition&gt; is on the list provided in
-          the section <a href="#device_state">Device state</a>, flash the partition as normal.
-   </ul>
-</ul>
+    <p>If the bit set by <code>flashing unlock</code> is set, flash the
+      partition. Otherwise, do not allow flashing.<p>
     </td>
  </tr>
 </table>
 
-<p>The same checks should be performed for any <code>fastboot</code> command that can be used to change the contents of partitions.</p>
+<p>The same checks should be performed for any <code>fastboot</code> command
+that can be used to change the contents of partitions.</p>
 
-<h4 id=managing_user_provided_keystore><strong>Managing user-provided keystore</strong></h4>
+<p class="note"><strong>Note</strong>: Class B implementations must support
+changing device state.</p>
 
-<p>Users can flash their own verification keys to the device, which must be
-used to verify the integrity of boot and recovery images if verification
-against the OEM key fails. This allows a developer to change the system
-software frequently, for example,  while still keeping verified boot enabled.</p>
+<h4 id=binding_tee_root_of_trust>Binding TEE root of trust</h4>
 
-<p>The bootloader is responsible for maintaining the integrity of the user
-keystore. It must not be possible to change the contents of the keystore unless
-the device is UNLOCKED. When the user flashes a new keystore to the device, the
-bootloader must sign it using the TEE and store the signed keystore. Before
-using keys from the keystore, the bootloader must use the TEE to verify the
-signature.</p>
-
-<p>Requirements for <code>fastboot</code> commands used to manage the user-provided keystore are listed in the table
-below:</p>
-<table>
- <tr>
-    <td>
-<p><strong><code>fastboot</code> command</strong></p>
-</td>
-    <td>
-<p>Requirements</p>
-</td>
- </tr>
- <tr>
-    <td>
-<code>
-flash keystore &lt;filename&gt;</code></td>
-    <td>
-<ul>
-  <li>Check the bit set by <code>flashing unlock</code>; if not set, exit with an error 
-  <li>Validate the given keystore against the format provided in section <a href="#keystore_format">Keystore format</a>
-  <li>Pass the keystore to the TEE for signing
-  <li>Write the signed keystore to the write-protected user keystore storage
-      area (location to be determined by the OEM)
-</ul>
-</td>
- </tr>
- <tr>
-    <td>
-<code>
-erase keystore</code></td>
-    <td>
-<ul>
-  <li>Check the bit set by <code>flashing unlock</code>; if not set, exit with an error
-  <li>Erase the keystore stored in the write-protected user keystore storage area
-</ul>
-    </td>
- </tr>
-</table>
-
-<h4 id=binding_tee_root_of_trust><strong>Binding TEE root of trust</strong></h4>
-
-<p>After the bootloader has initialized the TEE and performed boot image
-verification steps, it must pass the following information to the TEE Keymaster
-as the root of trust:</p>
+<p>If TEE is available, the bootloader should pass the following information to
+the TEE to bind the Keymaster root of trust, after partition verification and
+TEE initialization:</p>
 
 <ol>
-  <li>The public key that was used to sign the boot image
-  <li>The current device state (LOCKED, VERIFIED, or UNLOCKED)
+  <li>the public key that was used to sign the boot partition
+  <li>the current device state (LOCKED or UNLOCKED)
 </ol>
 
-<p>This changes the keys derived by the TEE. For disk encryption, for example,
-this prevents user data from being decrypted when the device is booted using a
-potentially untrusted image signed with a different key.</p>
+<p>This changes the keys derived by the TEE. Taking disk encryption as an example,
+this prevents user data from being decrypted when the device state changes.</p>
 
 <p class="note"><strong>Note:</strong> This means if the system software or the
 device state changes, encrypted user data will no longer be accessible as the
 TEE will attempt to use a different key to decrypt the data.</p>
 
-<h4 id=booting_into_recovery><strong>Booting into recovery</strong></h4>
+<h4 id=booting_into_recovery>Booting into recovery</h4>
 
-<p>The recovery image should be verified in exactly the same manner as the boot
-image.</p>
+<p>The recovery partition should be verified in exactly the same manner as the
+boot partition.</p>
+
+<h4 id=comm_boot_state>Communicating boot state</h4>
+
+<p>System software needs to be able to determine the verification status of
+previous stages. The bootloader must specify the current boot state as a
+parameter on the kernel command line (or through the device tree under
+<code>firmware/android/verifiedbootstate</code>) as described in the table
+below:</p>
+
+<p class="table-caption" id="table4">
+  <strong>Table 4.</strong> Kernel command line parameters</p>
+
+<table>
+  <tr>
+    <th>Kernel command line parameter</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td><code>androidboot.verifiedbootstate=green</code></td>
+    <td>Device has booted into GREEN boot state.<br>
+        Boot partition has been verified using the OEM key and it’s valid.</td>
+  </tr>
+  <tr>
+    <td><code>androidboot.verifiedbootstate=yellow</code></td>
+    <td>Device has booted into YELLOW boot state.<br>
+	Boot partition has been verified using the certificate embedded into
+        the signature and it’s valid.</td>
+  </tr>
+  <tr>
+    <td><code>androidboot.verifiedbootstate=orange</code></td>
+    <td>Device has booted into ORANGE boot state.<br>
+        The device is unlocked and no verification has been performed.</td>
+  </tr>
+  <tr>
+    <td><code>androidboot.verifiedbootstate=red</code></td>
+    <td>Device has booted into RED boot state.<br>
+        The device has failed verification.</td>
+  </tr>
+</table>
 
 <h3 id=boot_partition>Boot partition</h3>
 
-<p>Once execution has moved to the boot and/or recovery image, <code>init</code> is responsible
-for setting up verification for further partitions. Due to its large size, the
-system partition cannot be verified similarly to previous parts but must be
-verified in real time as it’s being accessed by using the dm-verity kernel
-driver.</p>
+<p>Once execution has moved to the boot partition, the software there is responsible
+for setting up verification of further partitions. Due to its large size, the
+system partition typically cannot be verified similarly to previous parts but must be
+verified as it’s being accessed instead using the dm-verity kernel driver or a
+similar solution.</p>
 
-<p>When <code>fs_mgr</code> flags in the device’s <code>fstab</code> indicate a partition should be
-verified, <code>init</code> will verify the signed verity metadata appended to the partition
-before mounting it and set up the dm-verity device for the partition.</p>
+<p>If dm-verity is used to verify large partitions, the signature of the verity
+metadata appended to each verified partition must be verified before the
+partition is mounted and dm-verity is set up for it.</p>
 
-<h4 id=managing_dm-verity><strong>Managing dm-verity</strong></h4>
+<h4 id=managing_dm-verity>Managing dm-verity</h4>
 
-<p>By default, dm-verity operates in verifying mode and verifies each block read
-from the device against a hash tree passed to it by <code>init</code> during set up. If it
+<p>By default, dm-verity operates in enforcing mode and verifies each block read
+from the partition against a hash tree passed to it during setup. If it
 comes across a block that fails to verify, it returns an I/O error and makes
 the block with unexpected contents inaccessible to user space. Depending on
 which block is corrupted, this may cause some of the programs that reside on
 the partition to malfunction.</p>
 
-<p>Using a persistent flag, dm-verity can also be configured to function in
-logging mode. This flag is read by <code>init</code> when setting up dm-verity. And if the
-mode flag is set to logging or verity metadata cannot be verified, a warning
-must be displayed to the user, similar to the warning the bootloader shows
-before booting into RED state.</p>
+<p>Using an optional verity table parameter, dm-verity can be configured to
+function in logging mode. If dm-verity is not started in enforcing mode for any
+reason, or verity metadata cannot be verified, a warning must be displayed to
+the user, similar to the one shown before booting into the RED state.</p>
 
-<img src="../images/dm-verity_mgmt.png" alt="dm-verity management" id="figure3" />
-<p class="img-caption"><strong>Figure 3.</strong> dm-verity management</p>
+<img src="../images/dm-verity_mgmt.png" alt="dm-verity management" id="figure2" />
+<p class="img-caption"><strong>Figure 2.</strong> dm-verity management</p>
 
-<h4 id=recovering_from_dm-verity_errors><strong>Recovering from dm-verity errors</strong></h4>
+<h4 id=recovering_from_dm-verity_errors>Recovering from dm-verity errors</h4>
 
 <p>Since the system partition is by far larger than the boot partition, the
 probability of verification errors is also higher. Specifically, there is a
@@ -445,31 +373,32 @@
 
 <p>It’s generally not possible to distinguish disk corruption from malicious
 changes, so any change to the system partition must result in the user being
-notified, and no unverified data must leak to user space until a warning has
+notified; and no unverified data must leak to user space until a warning has
 been shown. However, we must also assume most verification failures are
 not the result of malicious behavior; so the user must also have an option to
 continue using the device without verification.</p>
 
-<p>If dm-verity is in verifying mode and a block of a partition fails to verify,
-it will send a <code>uevent</code> to notify user space of the error. This event must be
-handled by software in the boot partition as potentially any program residing
-on the verified partition may not function anymore. When the event is received,
-the persistent dm-verity state must be updated to set the mode flag to logging
-mode, and the device must be rebooted. When the device restarts,
-<code>init</code> will warn the user of changes to the partition before mounting it.</p>
+<p>When a dm-verity error is detected, the device must be rebooted and
+dm-verity must be started in logging mode during all subsequent restarts until
+any of the verified partitions is reflashed or changed by an OTA update. This
+means dm-verity state should be stored in a persistent flag. When a verified
+partition has been changed, the flag must be cleared and dm-verity must again
+be started in enforcing mode. Anytime dm-verity is not started in enforcing
+mode, a warning must be shown to the user before any of the verified partitions
+are mounted.</p>
 
 <h3 id=verified_partition>Verified partition</h3>
 
 <p>In a verified device, the system partition must always be verified. But any
-other read-only partition can also be set to be verified, as well. Specifically,
-any read-only partition that contains executable code must be verified on a
-verified device. This include the vendor partition, if one exists, for example.</p>
+other read-only partition should also be set to be verified, as well. Any
+read-only partition that contains executable code must be verified on a
+verified device. This includes vendor and OEM partitions, if they exist, for example.</p>
 
 <p>In order for a partition to be verified, signed verity metadata must be
 appended to it. The metadata consists of a hash tree of the partition contents
 and a verity table containing signed parameters and the root of the hash tree.
-If this information is missing or invalid when <code>init</code> attempts to
-mount the device, the user must be warned.</p>
+If this information is missing or invalid when dm-verity is set up for the
+partition, the user must be warned.</p>
 
 <h2 id=implementation_details>Implementation details</h2>
 
@@ -481,7 +410,6 @@
 
 <h3 id=signature_format>Signature format</h3>
 
-
 <p>The signature on an Android verifiable boot image is an ASN.1 DER-encoded
 message, which can be parsed with a decoder similar to the one found at: <a
 href="https://android.googlesource.com/platform/bootable/recovery/+/f4a6ab27b335b69fbc419a9c1ef263004b561265/asn1_decoder.cpp">platform/bootable/recovery/asn1_decoder.cpp</a><br/>
@@ -508,9 +436,9 @@
 <p>The <code>Certificate</code> field is the full X.509 certificate containing
 the public key used for signing, as defined by <a
 href="http://tools.ietf.org/html/rfc5280#section-4.1.1.2">RFC5280</a> section
-4.1. The bootloader must ignore this field and must NOT use the key
-specified in the certificate to verify the signature. Signatures must always be
-verified against the OEM key or the user-provided keystore only.</p>
+4.1. When LOCKED, the bootloader must always use the OEM key for verification
+first, and only boot to YELLOW or RED states if the embedded certificate is
+used for verification instead.</p>
 
 <p>The remaining structure is similar to that defined by <a
 href="http://tools.ietf.org/html/rfc5280#section-4.1.1.2">RFC5280</a> sections
@@ -526,7 +454,8 @@
   <li>Generate the unsigned image.
   <li>0-pad the image to the next page size boundary (omit this step if already
 aligned).
-  <li>Populate the fields of the <code>AuthenticatedAttributes</code> section above based on the padded image and desired target partition.
+  <li>Populate the fields of the <code>AuthenticatedAttributes</code> section
+      above based on the padded image and desired target partition.
   <li>Append the <code>AuthenticatedAttributes</code> structure above to the image.
   <li>Sign the image.
 </ol>
@@ -537,55 +466,23 @@
 a header).
   <li>Read the signature located at the offset above.
   <li>Validate the contents of the <code>AuthenticatedAttributes</code> field.
-If these values do not validate, treat it as a signature validation error.
+      If these values do not validate, treat it as a signature validation error.
   <li>Verify the image and <code>AuthenticatedAttributes</code> sections.
 </ol>
 
-<h3 id=keystore_format>Keystore format</h3>
-
-<p>The Android verified boot keystore format is an ASN.1 DER-encoded document. Its
- specification follows:</p>
-
-<pre>
-AndroidVerifiedBootKeystore DEFINITIONS ::=
-     BEGIN
-          FormatVersion ::= INTEGER
-          KeyBag ::= SEQUENCE {
-               Key  ::= SEQUENCE {
-                    AlgorithmIdentifier  ::=  SEQUENCE {
-                         algorithm OBJECT IDENTIFIER,
-                         parameters ANY DEFINED BY algorithm
-                    OPTIONAL
-                    }
-                    KeyMaterial ::= RSAPublicKey
-               }
-          }
-          Signature ::= AndroidVerifiedBootSignature OPTIONAL
-     END
-</pre>
-
-<p>Where <code>RSAPublicKey</code>, <code>AlgorithmIdentifier</code>, and
-parameters are as specified in <a
-href="http://tools.ietf.org/html/rfc3279#section-2.3.1">RFC3279</a>. Other key
-types specified in RFC3279 section 2.3 may optionally be supported,
-in which case the appropriate type for <code>Key</code> must be used.</p>
-
-<h3 id=keystore_location>Keystore location</h3>
-
-<p>The location of the keystore is not specified here, but that location must be
-known to the bootloader and both readable and writable by it. Reading should
-happen as per the above; writing a new keystore should be accomplished through
-<code>fastboot flash keystore &lt;path&gt;</code>. Sufficient storage must be
-provided for at least one key, with storage for additional keys recommended.</p>
-
 <h3 id=user_experience>User experience</h3>
 
 <p>A user in the GREEN boot state should see no additional user interaction besides that
-required by normal device boot. In other boot states, the user should see a
+required by normal device boot. In other boot states, the user must see a
 warning for at least five seconds. Should the user interact with the device during
-this time, the warning should remain visible until the user agrees to continue.</p>
+this time, the warning must remain visible at least 30 seconds longer, or until
+the user dismisses the warning.</p>
 
 <p>Sample user interaction screens for other states are shown in the following table:</p>
+
+<p class="table-caption" id="table5">
+  <strong>Table 5.</strong> Sample user interaction screens</p>
+
 <table>
  <tr>
     <td>
diff --git a/src/devices/tech/test_infra/tradefed/full_example.jd b/src/devices/tech/test_infra/tradefed/full_example.jd
index a9f57bc..34cd63a 100644
--- a/src/devices/tech/test_infra/tradefed/full_example.jd
+++ b/src/devices/tech/test_infra/tradefed/full_example.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,13 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
 
 <p>This tutorial guides you through the construction of a "hello world" Trade Federation test
 configuration, and gives you a hands-on introduction to the Trade Federation framework.  Starting
@@ -435,6 +442,5 @@
 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master"
 >Trade Federation source code</a> has a lot of useful information that isn't
 exposed in the documentation.  And if all else fails, try asking on the
-<a href="/source/community/index.html">android-platform</a> Google Group, with "Trade Federation"
-in the message subject.</p>
-
+<a href="{@docRoot}source/community.html">android-platform</a> Google Group, with "Trade Federation"
+in the message subject.</p>
\ No newline at end of file
diff --git a/src/devices/tech/test_infra/tradefed/fundamentals/index.jd b/src/devices/tech/test_infra/tradefed/fundamentals/index.jd
index 98ab260..68ff06d 100644
--- a/src/devices/tech/test_infra/tradefed/fundamentals/index.jd
+++ b/src/devices/tech/test_infra/tradefed/fundamentals/index.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -70,6 +70,6 @@
 <p>If you've gotten through everything here and still have unanswered questions, first try taking
 a look at the <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master"
 >Trade Federation source code.</a>.  Beyond that, feel free to try asking on the
-<a href="/source/community/index.html">android-platform</a> Google Group.  For best results, make
+<a href="{@docRoot}source/community.html">android-platform</a> Google Group.  For best results, make
 sure to mention "Trade Federation" (or "tradefed", or "TF") in the message subject.</p>
 
diff --git a/src/devices/tech/test_infra/tradefed/fundamentals/options.jd b/src/devices/tech/test_infra/tradefed/fundamentals/options.jd
index 3874256..568cd35 100644
--- a/src/devices/tech/test_infra/tradefed/fundamentals/options.jd
+++ b/src/devices/tech/test_infra/tradefed/fundamentals/options.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,13 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
 
 <p>Option handling lies at the heart of Trade Federation's modular approach.  In particular, options
 are the mechanism by which the Developer, Integrator, and Test Runner can work together without
diff --git a/src/devices/tech/test_infra/tradefed/index.jd b/src/devices/tech/test_infra/tradefed/index.jd
index dabe07f..64939b2 100644
--- a/src/devices/tech/test_infra/tradefed/index.jd
+++ b/src/devices/tech/test_infra/tradefed/index.jd
@@ -2,7 +2,7 @@
 @jd:body
 
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -16,6 +16,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<div id="qv-wrapper">
+  <div id="qv">
+    <h2>In this document</h2>
+    <ol id="auto-toc">
+    </ol>
+  </div>
+</div>
+
 <p>Trade Federation (tradefed or TF for short) is a continuous test framework designed for running tests
 on Android devices. It's a Java application which runs on a host computer, and communicates to one or
 more Android devices using ddmlib (the library behind DDMS) over adb.</p>
diff --git a/src/images/android_framework_details.png b/src/images/android_framework_details.png
index 618f027..ed83453 100644
--- a/src/images/android_framework_details.png
+++ b/src/images/android_framework_details.png
Binary files differ
diff --git a/src/images/android_framework_small.png b/src/images/android_framework_small.png
index 475f58d..6030881 100644
--- a/src/images/android_framework_small.png
+++ b/src/images/android_framework_small.png
Binary files differ
diff --git a/src/index.jd b/src/index.jd
index 6eb5b6f..b36e632 100644
--- a/src/index.jd
+++ b/src/index.jd
@@ -42,6 +42,12 @@
   <div class="landing-docs">
     <div class="col-8">
     <h3>What's New</h3>
+<a href="{@docRoot}source/building.html">
+        <h4>Increased Disk Space Requirements</h4></a>
+        <p>The amount of available disk space required to build Android has
+        been increased to a minimum of 100GB in <strong><a
+        href="{@docRoot}source/building.html">Downloading and Building</a></strong>.</p>
+
 <a href="{@docRoot}compatibility/cts/index.html">
         <h4>Compatibility Test Suite User Instructions</h4></a>
         <p>The <strong><a
@@ -82,15 +88,6 @@
         information has been moved and expanded to include details on
         <code>cpu.awake</code> and <code>cpu.active</code>. The need to create a
         <code>power_profile.xml</code> file is also emphasized throughout.</p>
-
-<a href="{@docRoot}source/initializing.html">
-        <h4>Initializing Improvements</h4></a>
-        <p>Build environment <strong><a
-        href="{@docRoot}source/initializing.html#setting-up-a-mac-os-x-build-environment">Initializing</a></strong>
-        instructions now explain how to resize and unmount Mac OS sparse
-        images. And the ccache section has been moved to an optional <strong><a
-        href="{@docRoot}source/initializing.html#optimizing-a-build-environment">Optimizing
-        a build environment</a></strong> section.</p>
     </div>
 
     <div class="col-8">
@@ -104,7 +101,7 @@
         href="https://android.googlesource.com/">Android Open Source Project (AOSP)
         repository</a></strong> to make your changes available to everyone else
         in the Android ecosystem.</p>
-<a href="{@docRoot}source/index.html"><img border="0" src="images/android_framework_small.png" alt="Android framework summary" style="display:inline;float:left;margin:5px 10px"></a>
+<a href="{@docRoot}source/index.html"><img border="0" src="images/android_framework_small.png" alt="Android framework summary" style="display:inline;float:right;margin:5px 10px;width:42%;height:42%"></a>
       <a href="{@docRoot}devices/index.html">
         <h4>Port Android to Devices</h4></a>
         <p>Port the latest Android platform and
diff --git a/src/source/building.jd b/src/source/building.jd
index 408ddb1..78401da 100644
--- a/src/source/building.jd
+++ b/src/source/building.jd
@@ -21,14 +21,15 @@
 build tools available. We welcome reports of successes or failures on other
 distributions.</p>
 
-<p>Before you download and build the Android source, ensure your system meets the following requirements:</p>
+<p>Before you download and build the Android source, ensure your system meets
+the following requirements:</p>
 
 <ul>
 
   <li>A Linux or Mac OS system. It is also possible
   to build Android in a virtual machine on unsupported systems such as Windows.
   If you are running Linux in a virtual machine, you need at
-  least 16GB of RAM/swap and 50GB or more of disk space in order to
+  least 16GB of RAM/swap and 100GB or more of disk space in order to
   build the Android tree. See disk size requirements below.
   </li>
 
@@ -36,8 +37,8 @@
   branch. You can compile older versions on 32-bit systems.
   </li>
 
-  <li>At least 50GB of free disk space for a checkout, 100GB for a single
-  build, and 150GB or more for multiple builds. If you employ ccache, you will
+  <li>At least 100GB of free disk space for a checkout, 150GB for a single
+  build, and 200GB or more for multiple builds. If you employ ccache, you will
   need even more space.</p>
   </li>
 
diff --git a/src/source/community/index.jd b/src/source/community.jd
similarity index 100%
rename from src/source/community/index.jd
rename to src/source/community.jd
diff --git a/src/source/faqs.jd b/src/source/faqs.jd
index 42e52bf..6c01017 100644
--- a/src/source/faqs.jd
+++ b/src/source/faqs.jd
@@ -172,7 +172,7 @@
 in the ART runtime. Similarly, we won't accept contributions such as GPL
 or LGPL libraries that are incompatible with our licensing goals.</p>
 <p>We encourage those interested in contributing source code to contact us
-via the channels listed on the <a href="{@docRoot}source/community/index.html">
+via the channels listed on the <a href="{@docRoot}source/community.html">
 Android Community</a> page prior to beginning any work. You can find more
 information on this topic from the <a href="{@docRoot}source/contributing.html">
 Contributing</a> page.</p>
@@ -187,7 +187,7 @@
 Approvers are typically Google employees, but the same approvers are
 responsible for all submissions, regardless of origin.</p>
 <p>You can find more information on this topic at the <a href="submit-patches.html">Submitting Patches</a> page.</p>
-<a href="#top">Back to top</a>  
+<a href="#top">Back to top</a>
 <h2 id="compatibility">Compatibility</h2>
 <h3 id="what-does-compatibility-mean">What does "compatibility" mean?</h3>
 <p>We define an "Android-compatible device" as one that can run any
diff --git a/src/source/source_toc.cs b/src/source/source_toc.cs
index 84897f1..b707b43 100644
--- a/src/source/source_toc.cs
+++ b/src/source/source_toc.cs
@@ -1,5 +1,5 @@
 <!--
-    Copyright 2013 The Android Open Source Project
+    Copyright 2015 The Android Open Source Project
 
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
@@ -78,7 +78,7 @@
 
   <li class="nav-section">
     <div class="nav-section-header empty">
-      <a href="<?cs var:toroot ?>source/community/index.html">
+      <a href="<?cs var:toroot ?>source/community.html">
         <span class="en">Community</span>
       </a>
     </div>
diff --git a/src/source/using-eclipse.jd b/src/source/using-eclipse.jd
index 12ee1eb..33ef381 100644
--- a/src/source/using-eclipse.jd
+++ b/src/source/using-eclipse.jd
@@ -230,5 +230,5 @@
 </li>
 </ul>
 <p>If you're still having problems, please contact one of the <a
-href="{@docRoot}source/community/index.html">Android community mailing lists or
+href="{@docRoot}source/community.html">Android community mailing lists or
 IRC channels</a>.</p>