diff -up system-config-printer-1.5.7/cupshelpers/cupshelpers.py.device-sorting system-config-printer-1.5.7/cupshelpers/cupshelpers.py
--- system-config-printer-1.5.7/cupshelpers/cupshelpers.py.device-sorting	2015-04-23 16:05:58.000000000 +0100
+++ system-config-printer-1.5.7/cupshelpers/cupshelpers.py	2015-05-26 09:57:43.583569255 +0100
@@ -547,68 +547,68 @@ class Device:
         Compare devices by order of preference.
         """
         if other == None:
-            return 1
+            return True
 
         if self.is_class != other.is_class:
             if other.is_class:
-                return 1
-            return -1
+                return True
+            return False
         if not self.is_class and (self.type != other.type):
             # "hp"/"hpfax" before "usb" before * before "parallel" before
             # "serial"
             if other.type == "serial":
-                return 1
+                return True
             if self.type == "serial":
-                return -1
+                return False
             if other.type == "parallel":
-                return 1
+                return True
             if self.type == "parallel":
-                return -1
+                return False
             if other.type == "hp":
-                return -1
+                return False
             if self.type == "hp":
-                return 1
+                return True
             if other.type == "hpfax":
-                return -1
+                return False
             if self.type == "hpfax":
-                return 1
+                return True
             if other.type == "dnssd":
-                return -1
+                return False
             if self.type == "dnssd":
-                return 1
+                return True
             if other.type == "socket":
-                return -1
+                return False
             if self.type == "socket":
-                return 1
+                return True
             if other.type == "lpd":
-                return -1
+                return False
             if self.type == "lpd":
-                return 1
+                return True
             if other.type == "ipps":
-                return -1
+                return False
             if self.type == "ipps":
-                return 1
+                return True
             if other.type == "ipp":
-                return -1
+                return False
             if self.type == "ipp":
-                return 1
+                return True
             if other.type == "usb":
-                return -1
+                return False
             if self.type == "usb":
-                return 1
+                return True
         if self.type == "dnssd" and other.type == "dnssd":
             if other.uri.find("._pdl-datastream") != -1: # Socket
-                return -1
+                return False
             if self.uri.find("._pdl-datastream") != -1:
-                return 1
+                return True
             if other.uri.find("._printer") != -1: # LPD
-                return -1
+                return False
             if self.uri.find("._printer") != -1:
-                return 1
+                return True
             if other.uri.find("._ipp") != -1: # IPP
-                return -1
+                return False
             if self.uri.find("._ipp") != -1:
-                return 1
+                return True
         result = bool(self.id) < bool(other.id)
         if not result:
             result = self.info < other.info
diff -up system-config-printer-1.5.7/test_PhysicalDevice.py.device-sorting system-config-printer-1.5.7/test_PhysicalDevice.py
--- system-config-printer-1.5.7/test_PhysicalDevice.py.device-sorting	2015-04-23 16:22:28.000000000 +0100
+++ system-config-printer-1.5.7/test_PhysicalDevice.py	2015-05-26 09:57:43.583569255 +0100
@@ -49,3 +49,21 @@ def run_test():
     phys.add_device (device)
     devices = phys.get_devices ()
     assert devices[0].uri.startswith ("hp")
+
+    dev1 = cupshelpers.Device("hp:/usb/HP_Color_LaserJet_CP3525?serial=CNCTC8G0QX",
+                              **{'device-id':'MFG:Hewlett-Packard;CMD:PJL,MLC,BIDI-ECP,PJL,PCLXL,PCL,POSTSCRIPT,PDF;MDL:HP Color LaserJet CP3525;CLS:PRINTER;DES:Hewlett-Packard Color LaserJet CP3525;',
+                                 'device-make-and-model':'HP Color LaserJet CP3525',
+                                 'device-class':'direct'})
+    phys = PhysicalDevice (dev1)
+    dev2 = cupshelpers.Device('usb://HP/Color%20LaserJet%20CP3525?serial=CNCTC8G0QX',
+                              **{'device-id':'MFG:Hewlett-Packard;CMD:PJL,MLC,BIDI-ECP,PJL,PCLXL,PCL,POSTSCRIPT,PDF;MDL:HP Color LaserJet CP3525;CLS:PRINTER;DES:Hewlett-Packard Color LaserJet CP3525;',
+                                 'device-make-and-model':'HP Color LaserJet CP3525',
+                                 'device-class':'direct'})
+
+    # hp device should sort < usb device
+    assert dev1 < dev2
+
+    phys.add_device (dev2)
+    devices = phys.get_devices ()
+    assert devices[0] < devices[1]
+    assert devices[0].uri.startswith ("hp")