diff -urN cups-1.3.7-orig/backend/usb-unix.c cups-1.3.7/backend/usb-unix.c
--- cups-1.3.7-orig/backend/usb-unix.c	2009-03-04 12:06:50.000000000 +0800
+++ cups-1.3.7/backend/usb-unix.c	2009-03-04 12:16:03.000000000 +0800
@@ -320,12 +320,25 @@
   if (!strncmp(uri, "usb:/dev/", 9))
 #ifdef __linux
   {
+#if 0
    /*
     * Do not allow direct devices anymore...
     */
-
     errno = ENODEV;
     return (-1);
+#else
+    if (*use_bc)
+      fd = open(uri + 4, O_RDWR | O_EXCL);
+    else
+      fd = -1;
+
+    if (fd < 0)
+    {
+      fd = open(uri + 4, O_WRONLY | O_EXCL);
+      *use_bc = 0;
+    }
+    return (fd);
+#endif
   }
   else if (!strncmp(uri, "usb://", 6))
   {
