pthread_join(reader_thread, NULL);
 
 #ifdef DEBUG
-               DPRINTF("write: ");
-               hexdump(writebuf, writepos-writebuf);
-               DPRINTF("read: ");
-               hexdump(readbuf, i);
+               hexdump(writebuf, writepos-writebuf, "->");
+               hexdump(readbuf, i, "<-");
 #endif
 
                writepos = writebuf;
 
 
 #define NO_WINDRVR 1
 
-void hexdump(unsigned char *buf, int len) {
+void hexdump(unsigned char *buf, int len, char *prefix) {
        int i;
 
+       fprintf(stderr, "%s ", prefix);
        for(i=0; i<len; i++) {
                fprintf(stderr,"%02x ", buf[i]);
                if ((i % 16) == 15)
-                       fprintf(stderr,"\n");
+                       fprintf(stderr,"\n%s ", prefix);
        }
        fprintf(stderr,"\n");
 }
                                ut->dwUniqueID, ut->dwPipeNum, ut->fRead,
                                ut->dwOptions, ut->dwBufferSize, ut->dwTimeout);
                                if (ut->dwPipeNum == 0) {
-                                       DPRINTF("-> setup packet: ");
-                                       hexdump(ut->SetupPacket, 8);
+                                       DPRINTF("-> setup packet:");
+                                       hexdump(ut->SetupPacket, 8, "");
                                }
 
                                if (!ut->fRead && ut->dwBufferSize)
                                {
-                                       hexdump(ut->pBuffer, ut->dwBufferSize);
+                                       hexdump(ut->pBuffer, ut->dwBufferSize, "->");
                                }
 #endif
 
                                DPRINTF("Transferred: %lu (%s)\n",ut->dwBytesTransferred, (ut->fRead?"read":"write"));
                                if (ut->fRead && ut->dwBytesTransferred)
                                {
-                                       DPRINTF("<- Read: ");
-                                       hexdump(ut->pBuffer, ut->dwBytesTransferred);
+                                       hexdump(ut->pBuffer, ut->dwBytesTransferred, "<-");
                                }
 #endif
                        }
 
 #define DPRINTF(format, args...)
 #endif
 
-void __attribute__ ((visibility ("hidden"))) hexdump(unsigned char *buf, int len);
+void __attribute__ ((visibility ("hidden"))) hexdump(unsigned char *buf, int len, char *prefix);
 
 #define WDU_GET_MAX_PACKET_SIZE(x)                ((unsigned short) (((x) & 0x7ff) * (1 + (((x) & 0x1800) >> 11))))