diff --git a/src/dummy_message_processor.cpp b/src/dummy_message_processor.cpp
index 91ff2ca..f0e570b 100644
--- a/src/dummy_message_processor.cpp
+++ b/src/dummy_message_processor.cpp
@@ -28,7 +28,7 @@ DummyMessageProcessor::DummyMessageProcessor()
 void
 DummyMessageProcessor::send(const XboxGenericMsg& msg, int msec_delta)
 {
-  log_info << msg << std::endl;
+  // do nothing as the XboxdrvThread is already doing the printing
 }
 
 void
diff --git a/src/xboxdrv.cpp b/src/xboxdrv.cpp
index a69ca00..9ddccb2 100644
--- a/src/xboxdrv.cpp
+++ b/src/xboxdrv.cpp
@@ -24,6 +24,7 @@
 #include <stdio.h>
 
 #include "command_line_options.hpp"
+#include "dummy_message_processor.hpp"
 #include "default_message_processor.hpp"
 #include "evdev_controller.hpp"
 #include "helper.hpp"
@@ -456,15 +457,23 @@ Xboxdrv::run_main(const Options& opts)
 
     global_exit_xboxdrv = false;
 
-    ControllerSlotConfigPtr config_set = ControllerSlotConfig::create(*uinput, 
-                                                                      0, opts.extra_devices,
-                                                                      opts.get_controller_slot());
+    std::auto_ptr<MessageProcessor> message_proc;
+    if (uinput.get())
+    {
+      ControllerSlotConfigPtr config_set = ControllerSlotConfig::create(*uinput, 
+                                                                        0, opts.extra_devices,
+                                                                        opts.get_controller_slot());
 
-    // After all the ControllerConfig registered their events, finish up
-    // the device creation
-    uinput->finish();
+      // After all the ControllerConfig registered their events, finish up
+      // the device creation
+      uinput->finish();
 
-    std::auto_ptr<MessageProcessor> message_proc(new DefaultMessageProcessor(*uinput, config_set, opts));
+      message_proc.reset(new DefaultMessageProcessor(*uinput, config_set, opts));
+    }
+    else
+    {
+      message_proc.reset(new DummyMessageProcessor);
+    }
 
     XboxdrvThread loop(message_proc, controller, opts);
     loop.controller_loop(opts);