diff --git a/examples/utilities.c b/examples/utilities.c
index 70f57b2..379ad0a 100644
--- a/examples/utilities.c
+++ b/examples/utilities.c
@@ -27,14 +27,40 @@ FpDevice *
 discover_device (GPtrArray * devices)
 {
   FpDevice *dev;
+  int i;
 
   if (!devices->len)
     return NULL;
 
-  dev = g_ptr_array_index (devices, 0);
-  g_print ("Found device %s (%s) claimed by %s driver\n",
+  if (devices->len == 1)
+    {
+      i = 0;
+    }
+  else
+    {
+      g_print ("Multiple devices found, choose one\n");
+
+      for (i = 0; i < devices->len; ++i)
+        {
+          dev = g_ptr_array_index (devices, i);
+          g_print ("[%d] %s (%s) - driver %s\n", i,
+                   fp_device_get_device_id (dev), fp_device_get_name (dev),
+                   fp_device_get_driver (dev));
+        }
+
+      g_print ("> ");
+      if (!scanf ("%d%*c", &i))
+        return NULL;
+
+      if (i < 0 || i >= devices->len)
+        return NULL;
+    }
+
+  dev = g_ptr_array_index (devices, i);
+  g_print ("Selected device %s (%s) claimed by %s driver\n",
            fp_device_get_device_id (dev), fp_device_get_name (dev),
            fp_device_get_driver (dev));
+
   return dev;
 }