--- a/dfu.h
+++ b/dfu.h
@@ -25,6 +25,7 @@
 
 #ifdef HAVE_LIBUSB
 #if defined(HAVE_USB_H)
+#  include <sys/types.h>
 #  include <usb.h>
 #elif defined(HAVE_LUSB0_USB_H)
 #  include <lusb0_usb.h>
--- a/pickit2.c
+++ b/pickit2.c
@@ -50,6 +50,7 @@
 #include <string.h>
 #include <inttypes.h>
 #include <unistd.h>
+#include <sys/types.h>
 
 #include "avrdude.h"
 #include "libavrdude.h"
--- a/ser_avrdoper.c
+++ b/ser_avrdoper.c
@@ -248,6 +248,7 @@ static int usbGetReport(union filedescri
 /* ------------------------------------------------------------------------ */
 
 #if defined(HAVE_USB_H)
+#  include <sys/types.h>
 #  include <usb.h>
 #elif defined(HAVE_LUSB0_USB_H)
 #  include <lusb0_usb.h>
--- a/usbtiny.c
+++ b/usbtiny.c
@@ -40,6 +40,7 @@
 
 #if defined(HAVE_LIBUSB)      // we use LIBUSB to talk to the board
 #if defined(HAVE_USB_H)
+#  include <sys/types.h>
 #  include <usb.h>
 #elif defined(HAVE_LUSB0_USB_H)
 #  include <lusb0_usb.h>
--- a/usbasp.c
+++ b/usbasp.c
@@ -54,6 +54,7 @@
 # endif
 #else
 # if defined(HAVE_USB_H)
+#  include <sys/types.h>
 #  include <usb.h>
 # elif defined(HAVE_LUSB0_USB_H)
 #  include <lusb0_usb.h>
--- a/usb_libusb.c
+++ b/usb_libusb.c
@@ -36,6 +36,7 @@
 #include <sys/time.h>
 
 #if defined(HAVE_USB_H)
+#  include <sys/types.h>
 #  include <usb.h>
 #elif defined(HAVE_LUSB0_USB_H)
 #  include <lusb0_usb.h>
