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_
