diff --git a/dev/usb/usb.c b/dev/usb/usb.c
index b3ddabc..1b1661d 100644
--- a/dev/usb/usb.c
+++ b/dev/usb/usb.c
@@ -27,12 +27,10 @@
 #include <dev/usbc.h>
 #include <dev/usb.h>
 
-//#include <lib/pmux.h>
-//#include <lib/usbmass.h>
-//#include <lib/dfu.h>
-//#include <target/usbconfig.h>
+#define LOCAL_TRACE 0
 
-#define LOCAL_TRACE 1
+#define MAX_STRINGS 8
+static usb_string strings[MAX_STRINGS];
 
 static usb_config *config;
 
@@ -118,6 +116,29 @@
 	((uint16_t *)config->highspeed.device.desc)[5] = product;
 }
 
+void usb_add_string(const char *string, uint8_t id) 
+{
+	uint i;
+	size_t len = strlen(string);
+	uint16_t *strbuf = malloc(len * 2 + 2);
+
+	/* build the usb string descriptor */
+	strbuf[0] = 0x300 | (len * 2 + 2);
+	for (i = 0; i < len; i++) {
+		strbuf[i + 1] = (uint16_t)string[i];
+	}
+
+	/* find a slot to put it */
+	for (i = 0; i < MAX_STRINGS; i++) {
+		if (strings[i].id == 0) {
+			strings[i].string.desc = strbuf;
+			strings[i].string.len = len * 2 + 2;
+			strings[i].id = id;
+			break;
+		}
+	}
+}
+
 static int default_usb_callback(usbc_callback_op_t op, const union usb_callback_args *args)
 {
 	LTRACEF("op %d, args %p\n", op, args);
@@ -170,29 +191,26 @@
 								usbc_ep0_send(config->langid.desc,
 										config->langid.len, setup->length);
 								break;
-							case 0x301:    /* Manufacturer string */
-								LTRACEF("got GET_DESCRIPTOR, mfg string\n");
-								usbc_ep0_send(config->mfg_string.desc,
-										config->mfg_string.len, 
-										setup->length);
-								break;
-							case 0x302:    /* Device string */
-								LTRACEF("got GET_DESCRIPTOR, device string\n");
-								usbc_ep0_send(config->device_string.desc,
-										config->device_string.len,
-										setup->length);
-								break;
-							case 0x303:    /* Serial number string */
-								LTRACEF("got GET_DESCRIPTOR, serial number string\n");
-								if (config->serial_string.desc) {
-									usbc_ep0_send(config->serial_string.desc,
-											config->serial_string.len,
+							case (0x301)...(0x3ff): {
+								/* string descriptor, search our list for a match */
+								uint i;
+								bool found = false;
+								uint8_t id = setup->value & 0xff;
+								for (i = 0; i < MAX_STRINGS; i++) {
+									if (strings[i].id == id) {
+										usbc_ep0_send(strings[i].string.desc,
+											strings[i].string.len, 
 											setup->length);
-								} else {
-									/* stall */
+										found = true;
+										break;
+									}
+								}
+								if (!found) {
+									/* couldn't find one, stall */
 									usbc_ep0_stall();
 								}
 								break;
+							}
 							case 0x600:    /* DEVICE QUALIFIER */
 								LTRACEF("got GET_DESCRIPTOR, device qualifier\n");
 								usbc_ep0_send(speed->device_qual.desc, 
diff --git a/include/dev/usb.h b/include/dev/usb.h
index a35a819..e33bea4 100644
--- a/include/dev/usb.h
+++ b/include/dev/usb.h
@@ -32,6 +32,11 @@
 	size_t len;
 } usb_descriptor __ALIGNED(2);
 
+typedef struct {
+	usb_descriptor string;
+	uint8_t id;
+} usb_string;
+
 /* complete usb config struct, passed in to usb_setup() */
 typedef struct {
 	struct usb_descriptor_speed {
@@ -39,9 +44,6 @@
 		usb_descriptor device_qual;
 		usb_descriptor config;
 	} lowspeed, highspeed;
-	usb_descriptor device_string;
-	usb_descriptor mfg_string;
-	usb_descriptor serial_string;
 	usb_descriptor langid;
 } usb_config;
 
@@ -54,6 +56,8 @@
 int usb_append_interface_highspeed(const uint8_t *int_descr, size_t len);
 int usb_append_interface_lowspeed(const uint8_t *int_descr, size_t len);
 
+void usb_add_string(const char *string, uint8_t id);
+
 void usb_start(void);
 void usb_stop(void);
 
diff --git a/project/beagle-test/init.c b/project/beagle-test/init.c
index 12a0fbf..725ec5c 100644
--- a/project/beagle-test/init.c
+++ b/project/beagle-test/init.c
@@ -39,9 +39,6 @@
 		.device_qual = { devqual_descr, sizeof(devqual_descr) },
 		.config = { cfg_descr_highspeed, sizeof(cfg_descr_highspeed) },
 	},
-	.device_string = { dstring, sizeof(dstring) },
-	.mfg_string = { mstring, sizeof(mstring) },
-	.serial_string = { NULL, 0 },
 	.langid = { langid, sizeof(langid) }
 };
 
@@ -55,6 +52,8 @@
 	
 	usb_init();
 	usb_setup(&config);
+	usb_add_string("lk, Inc.", 0x1); // manufacturer id
+	usb_add_string("lk", 0x2); // device string
 	usb_start();
 
 	console_start();
diff --git a/project/beagle-test/usb_descriptors.h b/project/beagle-test/usb_descriptors.h
index 1bfce4c..cfd499a 100644
--- a/project/beagle-test/usb_descriptors.h
+++ b/project/beagle-test/usb_descriptors.h
@@ -81,16 +81,6 @@
     0,              /* Power Consumption - none */
 };
 
-static ushort dstring[] = {
-    0x0306, /* numchars * 2 + 2 */
-    'l', 'k'
-};
-
-static ushort mstring[] = {
-    0x0310, /* numchars * 2 + 2 */
-    'l', 'k', ',', 'i', 'n', 'c', '.'
-};
-
 static uchar langid[] __ALIGNED(2) = { 0x04, 0x03, 0x09, 0x04 };
 
 #endif
