added an LED that turns on when the wrist is zeroed
diff --git a/bbb_cape/src/bbb/bbb.gyp b/bbb_cape/src/bbb/bbb.gyp
index 8efe553..1da4732 100644
--- a/bbb_cape/src/bbb/bbb.gyp
+++ b/bbb_cape/src/bbb/bbb.gyp
@@ -11,6 +11,16 @@
   },
   'targets': [
     {
+      'target_name': 'led',
+      'type': 'static_library',
+      'sources': [
+        'led.cc',
+      ],
+      'dependencies': [
+        '<(AOS)/build/aos.gyp:logging',
+      ],
+    },
+    {
       'target_name': 'crc',
       'type': 'static_library',
       'sources': [
diff --git a/bbb_cape/src/bbb/gpios.h b/bbb_cape/src/bbb/gpios.h
index 1471b43..0ba3323 100644
--- a/bbb_cape/src/bbb/gpios.h
+++ b/bbb_cape/src/bbb/gpios.h
@@ -1,5 +1,5 @@
-#ifndef BBB_CAPE_SRC_BBB_CAPE_CONTROL_H_
-#define BBB_CAPE_SRC_BBB_CAPE_CONTROL_H_
+#ifndef BBB_CAPE_SRC_BBB_GPIOS_H_
+#define BBB_CAPE_SRC_BBB_GPIOS_H_
 
 #include <stdio.h>
 
@@ -31,4 +31,4 @@
 
 }  // namespace bbb
 
-#endif
+#endif  // BBB_CAPE_SRC_BBB_GPIOS_H_
diff --git a/bbb_cape/src/bbb/led.cc b/bbb_cape/src/bbb/led.cc
new file mode 100644
index 0000000..5dc5e71
--- /dev/null
+++ b/bbb_cape/src/bbb/led.cc
@@ -0,0 +1,60 @@
+#include "bbb_cape/src/bbb/led.h"
+
+#include "aos/common/logging/logging.h"
+
+#include <string.h>
+#include <errno.h>
+
+#define DIRECTORY "/sys/class/leds/beaglebone:green:usr%d/"
+
+namespace bbb {
+
+LED::LED(int number) : number_(number) {
+  char trigger_path[64];
+  snprintf(trigger_path, sizeof(trigger_path), DIRECTORY "trigger", number_);
+  FILE *trigger_handle = fopen(trigger_path, "w");
+  if (trigger_handle == nullptr) {
+    LOG(FATAL, "couldn't open trigger file for LED %d because of %d: %s\n",
+        number_, errno, strerror(errno));
+  }
+  if (fputs("none", trigger_handle) < 0) {
+    LOG(FATAL,
+        "writing 'none' to file %p (trigger for LED %d) failed with %d: %s\n",
+        trigger_handle, number_, errno, strerror(errno));
+  }
+  if (fclose(trigger_handle) == -1) {
+    LOG(WARNING, "fclose(%p) failed with %d: %s\n",
+        trigger_handle, errno, strerror(errno));
+  }
+
+  char brightness_path[64];
+  snprintf(brightness_path, sizeof(brightness_path),
+           DIRECTORY "brightness", number_);
+
+  brightness_handle_ = fopen(brightness_path, "w");
+  if (brightness_handle_ == nullptr) {
+    LOG(FATAL, "fopen('%s', 'w') failed with %d: %s\n",
+        brightness_path, errno, strerror(errno));
+  }
+}
+
+LED::~LED() {
+  if (fclose(brightness_handle_) == -1) {
+    LOG(WARNING, "fclose(%p) failed with %d: %s\n",
+        brightness_handle_, errno, strerror(errno));
+  }
+}
+
+void LED::Set(bool on) {
+  rewind(brightness_handle_);
+  if (fputs(on ? "255" : "0", brightness_handle_) == EOF) {
+    LOG(FATAL, "fputs(255|0, %p) for LED %d failed with %d: %s\n",
+        brightness_handle_, number_, errno, strerror(errno));
+  }
+  if (fflush(brightness_handle_) == EOF) {
+    LOG(FATAL, "fflush(%p) for LED %d failed with %d: %s\n",
+        brightness_handle_, number_, errno, strerror(errno));
+  }
+}
+
+}  // namespace bbb
diff --git a/bbb_cape/src/bbb/led.h b/bbb_cape/src/bbb/led.h
new file mode 100644
index 0000000..19976e6
--- /dev/null
+++ b/bbb_cape/src/bbb/led.h
@@ -0,0 +1,27 @@
+#ifndef BBB_CAPE_SRC_BBB_LED_H_
+#define BBB_CAPE_SRC_BBB_LED_H_
+
+#include <stdio.h>
+
+#include "aos/common/macros.h"
+
+namespace bbb {
+
+// Allows easily controlling one of the LEDs.
+class LED {
+ public:
+  LED(int number);
+  ~LED();
+
+  void Set(bool on);
+
+ private:
+  FILE *brightness_handle_ = nullptr;
+  const int number_;
+
+  DISALLOW_COPY_AND_ASSIGN(LED);
+};
+
+}  // namespace bbb
+
+#endif  // BBB_CAPE_SRC_BBB_LED_H_