diff --git a/hdl/eb_usb_core/cdc_acm.c b/hdl/eb_usb_core/cdc_acm.c
index 421429a653d95b912858a9e3e4ff5ddec9a94645..91572893dc98b22968008f868e7cc7f4bf775cb9 100644
--- a/hdl/eb_usb_core/cdc_acm.c
+++ b/hdl/eb_usb_core/cdc_acm.c
@@ -565,7 +565,7 @@ static void Initialize(void) {
 
   EP1OUTCFG    = 0xa0; syncdelay(); // 1-10 ----  1=valid,  out,10=bulk,   64,   single
   EP1INCFG     = 0xb0; syncdelay(); // 1-11 ----  1=valid,  in, 11=int,    64,   single
-  EP2CFG       = 0xa2; syncdelay(); // 1010 0-10  1=valid,  out,10=bulk,0=512,10=double
+  EP2CFG       = 0xa2; syncdelay(); // 1010 0-10  1=valid,0=out,10=bulk,0=512,10=double
   EP4CFG       = 0xa0; syncdelay(); // 1010 ----  1=valid,0=out,10=bulk,  512,   double
   EP6CFG       = 0xe2; syncdelay(); // 1110 0-10  1=valid,1=in, 10=bulk,0=512,10=double
   EP8CFG       = 0xe0; syncdelay(); // 1110 ----  1=valid,1=in, 10=bulk,  512,   double
@@ -580,10 +580,15 @@ static void Initialize(void) {
   FIFORESET = 0x80;  syncdelay();  // NAK all requests from host. 
   FIFORESET = 0x00;  syncdelay();  // Resume normal operation. 
 
+  // Prime the pump for output buffers
   OUTPKTEND = 0x82;  syncdelay();
   OUTPKTEND = 0x82;  syncdelay();
   OUTPKTEND = 0x82;  syncdelay();
   OUTPKTEND = 0x82;  syncdelay();
+  OUTPKTEND = 0x84;  syncdelay();
+  OUTPKTEND = 0x84;  syncdelay();
+  OUTPKTEND = 0x84;  syncdelay();
+  OUTPKTEND = 0x84;  syncdelay();
 
   //  bit7: 0
   //  bit6: INFM6  See TRM 15-29 (p.351): Signal line one clock earlier.