--- a/src/gnome-mount.c
+++ b/src/gnome-mount.c
@@ -454,6 +454,39 @@
 	}
 }
 
+static void
+show_error_dialog_setup_crypto (const char *udi, LibHalVolume *volume, LibHalDrive *drive,
+                                const char *error_name, const char *error_detail)
+{
+	GtkWidget *w;
+
+	if (!opt_noui) {
+		w = gtk_message_dialog_new (NULL, 
+					    GTK_DIALOG_MODAL,
+					    GTK_MESSAGE_ERROR,
+					    GTK_BUTTONS_CLOSE,
+					    _("Unable to set up crypto device"));
+
+		if (strcmp (error_name, "org.freedesktop.Hal.Device.Volume.Crypto.SetupError") == 0 &&
+                    strstr (error_detail, "cryptsetup not found")) {
+			gtk_message_dialog_format_secondary_text (
+				GTK_MESSAGE_DIALOG (w),
+				_("You need to install the cryptsetup package."));
+		} else {
+
+			/* copout fallback; show exception name */
+
+			gtk_message_dialog_format_secondary_markup (
+				GTK_MESSAGE_DIALOG (w),
+				_("Error <i>%s</i>\n\n%s"),
+				error_name, error_detail);
+		}
+
+		gtk_dialog_run (GTK_DIALOG (w));
+		gtk_widget_unref (w);
+	}
+}
+
 
 /** Integrate a dbus mainloop. 
  *
@@ -2268,6 +2301,7 @@
 		if (strcmp (error.name, "org.freedesktop.Hal.Device.Volume.Crypto.SetupPasswordError") == 0) {
 			*password_error = TRUE;
 		}
+                show_error_dialog_setup_crypto(udi, volume, drive, error.name, error.message);
 		dbus_error_free (&error);
 		goto out;
 	}
