diff --git a/camera/docs/docs.html b/camera/docs/docs.html
index f149184..6fdf265 100644
--- a/camera/docs/docs.html
+++ b/camera/docs/docs.html
@@ -343,6 +343,13 @@
         <li><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a> (dynamic)</li>
     </ul>
     </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_led">led</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.led.transmit">android.led.transmit</a> (controls)</li>
+        <li><a href="#dynamic_android.led.transmit">android.led.transmit</a> (dynamic)</li>
+        <li><a href="#static_android.led.availableLeds">android.led.availableLeds</a> (static)</li>
+    </ul>
+    </li> <!-- toc_section -->
   </ul>
 
   <h1>Properties</h1>
@@ -9871,6 +9878,233 @@
       </tbody>
 
   <!-- end of section -->
+  <tr><td colspan="7" id="section_led" class="section">led</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.led.transmit">
+            <td class="entry_name">android.<wbr>led.<wbr>transmit</td>
+            <td class="entry_type">
+                <span class="entry_type_name entry_type_name_enum">byte</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              This LED is nominally used to indicate to the user
+          that the camera is powered on and may be streaming images back to the
+          Application Processor.<wbr> In certain rare circumstances,<wbr> the OS may
+          disable this when video is processed locally and not transmitted to
+          any untrusted applications.<wbr>
+<br>
+<br>          In particular,<wbr> the LED *must* always be on when the data could be
+          transmitted off the device.<wbr> The LED *should* always be on whenever
+          data is stored locally on the device.<wbr>
+<br>
+<br>          The LED *may* be off if a trusted application is using the data that
+          doesn't violate the above rules.<wbr>
+          
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.led.transmit">
+            <td class="entry_name">android.<wbr>led.<wbr>transmit</td>
+            <td class="entry_type">
+                <span class="entry_type_name entry_type_name_enum">byte</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              This LED is nominally used to indicate to the user
+          that the camera is powered on and may be streaming images back to the
+          Application Processor.<wbr> In certain rare circumstances,<wbr> the OS may
+          disable this when video is processed locally and not transmitted to
+          any untrusted applications.<wbr>
+<br>
+<br>          In particular,<wbr> the LED *must* always be on when the data could be
+          transmitted off the device.<wbr> The LED *should* always be on whenever
+          data is stored locally on the device.<wbr>
+<br>
+<br>          The LED *may* be off if a trusted application is using the data that
+          doesn't violate the above rules.<wbr>
+          
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">static</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="static_android.led.availableLeds">
+            <td class="entry_name">android.<wbr>led.<wbr>available<wbr>Leds</td>
+            <td class="entry_type">
+                <span class="entry_type_name entry_type_name_enum">byte</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">TRANSMIT</span>
+                    <span class="entry_type_enum_notes">android.<wbr>led.<wbr>transmit control is used</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              A list of camera LEDs that are available on this system.<wbr>
+          
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
 <!-- </namespace> -->
   </table>
 
diff --git a/camera/docs/html.mako b/camera/docs/html.mako
index 0baf181..b1b9759 100644
--- a/camera/docs/html.mako
+++ b/camera/docs/html.mako
@@ -73,6 +73,8 @@
 </head>
 
 <%!
+  import re
+
   # insert word break hints for the browser
   def wbr(text):
     new_txt = text
@@ -91,6 +93,10 @@
       new_txt = new_txt.replace(i, i + "<wbr>")
 
     return new_txt
+
+  # insert line breaks after every two \n\n
+  def br(text):
+    return re.sub(r"(\r?\n)(\r?\n)", r"\1<br>\2<br>", text)
 %>
 
 
@@ -233,7 +239,7 @@
 
             <td class="entry_description">
             % if prop.description is not None:
-              ${prop.description | wbr}
+              ${prop.description | wbr, br}
             % endif
             </td>
 
@@ -251,7 +257,7 @@
 
             <td class="entry_notes">
             % if prop.notes is not None:
-              ${prop.notes | wbr}
+              ${prop.notes | wbr, br}
             % endif
             </td>
 
diff --git a/camera/docs/metadata-generate b/camera/docs/metadata-generate
index 8e5bf56..59aaff2 100755
--- a/camera/docs/metadata-generate
+++ b/camera/docs/metadata-generate
@@ -48,6 +48,7 @@
 }
 
 $thisdir/metadata-check-dependencies || exit 1
+$thisdir/metadata-validate $thisdir/metadata_properties.xml || exit 1
 $thisdir/metadata-parser-sanity-check || exit 1
 gen_file html.mako docs.html || exit 1
 gen_file camera_metadata_tag_info.mako ../src/camera_metadata_tag_info.c || exit 1
diff --git a/camera/docs/metadata_properties.xml b/camera/docs/metadata_properties.xml
index 14d865f..4db5bac 100644
--- a/camera/docs/metadata_properties.xml
+++ b/camera/docs/metadata_properties.xml
@@ -2203,5 +2203,45 @@
         </clone>
       </dynamic>
     </section>
+    <section name="led">
+      <controls>
+        <entry name="transmit" type="byte" enum="true">
+          <enum>
+            <value>OFF</value>
+            <value>ON</value>
+          </enum>
+          <description>This LED is nominally used to indicate to the user
+          that the camera is powered on and may be streaming images back to the
+          Application Processor. In certain rare circumstances, the OS may
+          disable this when video is processed locally and not transmitted to
+          any untrusted applications.
+
+          In particular, the LED *must* always be on when the data could be
+          transmitted off the device. The LED *should* always be on whenever
+          data is stored locally on the device.
+
+          The LED *may* be off if a trusted application is using the data that
+          doesn't violate the above rules.
+          </description>
+        </entry>
+      </controls>
+      <dynamic>
+        <clone entry="android.led.transmit" kind="controls"></clone>
+      </dynamic>
+      <static>
+        <entry name="availableLeds" type="byte" enum="true" container="array">
+          <array>
+            <size>n</size>
+          </array>
+          <enum>
+            <value>TRANSMIT
+              <notes>android.led.transmit control is used</notes>
+            </value>
+          </enum>
+          <description>A list of camera LEDs that are available on this system.
+          </description>
+        </entry>
+      </static>
+    </section>
   </namespace>
 </metadata>
diff --git a/camera/include/system/camera_metadata_tags.h b/camera/include/system/camera_metadata_tags.h
index 47968e3..8d5cdf4 100644
--- a/camera/include/system/camera_metadata_tags.h
+++ b/camera/include/system/camera_metadata_tags.h
@@ -57,6 +57,7 @@
     ANDROID_STATISTICS,
     ANDROID_STATISTICS_INFO,
     ANDROID_TONEMAP,
+    ANDROID_LED,
     ANDROID_SECTION_COUNT,
 
     VENDOR_SECTION = 0x8000
@@ -89,6 +90,7 @@
     ANDROID_STATISTICS_START       = ANDROID_STATISTICS        << 16,
     ANDROID_STATISTICS_INFO_START  = ANDROID_STATISTICS_INFO   << 16,
     ANDROID_TONEMAP_START          = ANDROID_TONEMAP           << 16,
+    ANDROID_LED_START              = ANDROID_LED               << 16,
     VENDOR_SECTION_START           = VENDOR_SECTION            << 16
 } camera_metadata_section_start_t;
 
@@ -301,6 +303,10 @@
     ANDROID_TONEMAP_MAX_CURVE_POINTS,
     ANDROID_TONEMAP_END,
 
+    ANDROID_LED_TRANSMIT           = ANDROID_LED_START,
+    ANDROID_LED_AVAILABLE_LEDS,
+    ANDROID_LED_END,
+
 } camera_metadata_tag_t;
 
 /**
@@ -637,3 +643,15 @@
 } camera_metadata_enum_android_tonemap_mode_t;
 
 
+// ANDROID_LED_TRANSMIT
+typedef enum camera_metadata_enum_android_led_transmit {
+    ANDROID_LED_TRANSMIT_OFF,
+    ANDROID_LED_TRANSMIT_ON,
+} camera_metadata_enum_android_led_transmit_t;
+
+// ANDROID_LED_AVAILABLE_LEDS
+typedef enum camera_metadata_enum_android_led_available_leds {
+    ANDROID_LED_AVAILABLE_LEDS_TRANSMIT,
+} camera_metadata_enum_android_led_available_leds_t;
+
+
diff --git a/camera/src/camera_metadata_tag_info.c b/camera/src/camera_metadata_tag_info.c
index 6a4e0e6..c547dfb 100644
--- a/camera/src/camera_metadata_tag_info.c
+++ b/camera/src/camera_metadata_tag_info.c
@@ -53,6 +53,7 @@
     [ANDROID_STATISTICS]           = "android.statistics",
     [ANDROID_STATISTICS_INFO]      = "android.statistics.info",
     [ANDROID_TONEMAP]              = "android.tonemap",
+    [ANDROID_LED]                  = "android.led",
 };
 
 unsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = {
@@ -100,6 +101,8 @@
                                        ANDROID_STATISTICS_INFO_END },
     [ANDROID_TONEMAP]              = { ANDROID_TONEMAP_START,
                                        ANDROID_TONEMAP_END },
+    [ANDROID_LED]                  = { ANDROID_LED_START,
+                                       ANDROID_LED_END },
 };
 
 static tag_info_t android_color_correction[ANDROID_COLOR_CORRECTION_END -
@@ -504,6 +507,14 @@
     { "maxCurvePoints",                TYPE_INT32  },
 };
 
+static tag_info_t android_led[ANDROID_LED_END -
+        ANDROID_LED_START] = {
+    [ ANDROID_LED_TRANSMIT - ANDROID_LED_START ] =
+    { "transmit",                      TYPE_BYTE   },
+    [ ANDROID_LED_AVAILABLE_LEDS - ANDROID_LED_START ] =
+    { "availableLeds",                 TYPE_BYTE   },
+};
+
 
 tag_info_t *tag_info[ANDROID_SECTION_COUNT] = {
     android_color_correction,
@@ -528,6 +539,7 @@
     android_statistics,
     android_statistics_info,
     android_tonemap,
+    android_led,
 };
 
 int camera_metadata_enum_snprint(uint32_t tag,
@@ -1804,6 +1816,33 @@
             break;
         }
 
+        case ANDROID_LED_TRANSMIT: {
+            switch (value) {
+                case ANDROID_LED_TRANSMIT_OFF:
+                    msg = "OFF";
+                    ret = 0;
+                    break;
+                case ANDROID_LED_TRANSMIT_ON:
+                    msg = "ON";
+                    ret = 0;
+                    break;
+                default:
+                    msg = "error: enum value out of range";
+            }
+            break;
+        }
+        case ANDROID_LED_AVAILABLE_LEDS: {
+            switch (value) {
+                case ANDROID_LED_AVAILABLE_LEDS_TRANSMIT:
+                    msg = "TRANSMIT";
+                    ret = 0;
+                    break;
+                default:
+                    msg = "error: enum value out of range";
+            }
+            break;
+        }
+
     }
 
     strncpy(dst, msg, size - 1);
