--- drivers/nutdrv_qx.c.orig	2016-03-08 12:01:11 UTC
+++ drivers/nutdrv_qx.c
@@ -561,9 +561,9 @@ static int	phoenix_command(const char *cmd, char *buf,
 		 * In order to read correct replies we need to flush the output buffers of the converter until we get no more data (ie, it times out). */
 		switch (ret)
 		{
-		case -EPIPE:		/* Broken pipe */
+		case LIBUSB_ERROR_PIPE:		/* Broken pipe */
 			usb_clear_halt(udev, 0x81);
-		case -ETIMEDOUT:	/* Connection timed out */
+		case LIBUSB_ERROR_TIMEOUT:	/* Connection timed out */
 			break;
 		}
 
@@ -635,7 +635,7 @@ static int	ippon_command(const char *cmd, char *buf, s
 		ret = usb_control_msg(udev, USB_ENDPOINT_OUT + USB_TYPE_CLASS + USB_RECIP_INTERFACE, 0x09, 0x2, 0, &tmp[i], 8, 1000);
 
 		if (ret <= 0) {
-			upsdebugx(3, "send: %s (%d)", (ret != -ETIMEDOUT) ? usb_strerror() : "Connection timed out", ret);
+			upsdebugx(3, "send: %s (%d)", (ret != LIBUSB_ERROR_TIMEOUT) ? usb_strerror() : "Connection timed out", ret);
 			return ret;
 		}
 
@@ -648,7 +648,7 @@ static int	ippon_command(const char *cmd, char *buf, s
 
 	/* Any errors here mean that we are unable to read a reply (which will happen after successfully writing a command to the UPS) */
 	if (ret <= 0) {
-		upsdebugx(3, "read: %s (%d)", (ret != -ETIMEDOUT) ? usb_strerror() : "Connection timed out", ret);
+		upsdebugx(3, "read: %s (%d)", (ret != LIBUSB_ERROR_TIMEOUT) ? usb_strerror() : "Connection timed out", ret);
 		return ret;
 	}
 
@@ -2124,38 +2124,28 @@ static int	qx_command(const char *cmd, char *buf, size
 
 		switch (ret)
 		{
-		case -EBUSY:		/* Device or resource busy */
+		case LIBUSB_ERROR_BUSY:		/* Device or resource busy */
 			fatal_with_errno(EXIT_FAILURE, "Got disconnected by another driver");
 
-		case -EPERM:		/* Operation not permitted */
-			fatal_with_errno(EXIT_FAILURE, "Permissions problem");
-
-		case -EPIPE:		/* Broken pipe */
+		case LIBUSB_ERROR_PIPE:		/* Broken pipe */
 			if (usb_clear_halt(udev, 0x81) == 0) {
 				upsdebugx(1, "Stall condition cleared");
 				break;
 			}
-	#ifdef ETIME
-		case -ETIME:		/* Timer expired */
-	#endif	/* ETIME */
 			if (usb_reset(udev) == 0) {
 				upsdebugx(1, "Device reset handled");
 			}
-		case -ENODEV:		/* No such device */
-		case -EACCES:		/* Permission denied */
-		case -EIO:		/* I/O error */
-		case -ENXIO:		/* No such device or address */
-		case -ENOENT:		/* No such file or directory */
+		case LIBUSB_ERROR_NO_DEVICE: /* No such device */
+		case LIBUSB_ERROR_ACCESS:    /* Permission denied */
+		case LIBUSB_ERROR_IO:        /* I/O error */
+		case LIBUSB_ERROR_NOT_FOUND: /* No such file or directory */
 			/* Uh oh, got to reconnect! */
 			usb->close(udev);
 			udev = NULL;
 			break;
 
-		case -ETIMEDOUT:	/* Connection timed out */
-		case -EOVERFLOW:	/* Value too large for defined data type */
-#ifdef EPROTO
-		case -EPROTO:		/* Protocol error */
-#endif
+		case LIBUSB_ERROR_TIMEOUT:  /* Connection timed out */
+		case LIBUSB_ERROR_OVERFLOW: /* Value too large for defined data type */
 		default:
 			break;
 		}