      UsbUser               = 0x20005,
      I2cMasterSlave        = 0x20006,
 +    UsbCtap               = 0x20009,
-
+ 
      // Radio
      BleAdvertising        = 0x30000,
 diff --git a/capsules/src/usb/mod.rs b/capsules/src/usb/mod.rs
-index 767f5de..3f3a4f6 100644
+index 767f5de83..3f3a4f646 100644
 --- a/capsules/src/usb/mod.rs
 +++ b/capsules/src/usb/mod.rs
 @@ -1,5 +1,7 @@

diff --git a/boards/nordic/nrf52840_dongle/src/main.rs b/boards/nordic/nrf52840_dongle/src/main.rs
index d72d204..8b97f8d 100644
--- a/boards/nordic/nrf52840_dongle/src/main.rs
+++ b/boards/nordic/nrf52840_dongle/src/main.rs
@@ -15,6 +15,7 @@ use kernel::common::dynamic_deferred_call::{DynamicDeferredCall, DynamicDeferred
 use kernel::component::Component;
 #[allow(unused_imports)]
 use kernel::{capabilities, create_capability, debug, debug_gpio, debug_verbose, static_init};
+use kernel::hil::usb::UsbController;
 use nrf52840::gpio::Pin;
 use nrf52_components::{self, UartChannel, UartPins};

@@ -45,6 +46,17 @@ const PAN_ID: u16 = 0xABCD;
 /// UART Writer
 pub mod io;

+const VENDOR_ID: u16 = 0x1915; // Nordic Semiconductor
+const PRODUCT_ID: u16 = 0x521f; // nRF52840 Dongle (PCA10059)
+static STRINGS: &'static [&'static str] = &[

 // State for loading and holding applications.
 // How should the kernel respond when a process faults.
 const FAULT_RESPONSE: kernel::procs::FaultResponse = kernel::procs::FaultResponse::Panic;
@@ -96,6 +107,11 @@ pub struct Platform {
         capsules::virtual_alarm::VirtualMuxAlarm<'static, nrf52840::rtc::Rtc<'static>>,
     >,
     nvmc: &'static nrf52840::nvmc::SyscallDriver,
