diff --git a/app/src/main/java/de/ccc/events/badge/card10/filetransfer/FileTransferFragment.kt b/app/src/main/java/de/ccc/events/badge/card10/filetransfer/FileTransferFragment.kt
index acc94330a9f8959ff025f0fd89a5cec0cc8dda5f..0730711d4eeae9413d1b3e3290e6844803863ffd 100644
--- a/app/src/main/java/de/ccc/events/badge/card10/filetransfer/FileTransferFragment.kt
+++ b/app/src/main/java/de/ccc/events/badge/card10/filetransfer/FileTransferFragment.kt
@@ -34,11 +34,14 @@ import android.widget.EditText
 import android.widget.ProgressBar
 import android.widget.TextView
 import androidx.annotation.UiThread
+import androidx.appcompat.app.AlertDialog
 import androidx.fragment.app.Fragment
 import de.ccc.events.badge.card10.CARD10_BLUETOOTH_MAC_PREFIX
 import de.ccc.events.badge.card10.R
+import de.ccc.events.badge.card10.common.ConnectionException
 import de.ccc.events.badge.card10.common.ConnectionService
 import de.ccc.events.badge.card10.common.GattListener
+import de.ccc.events.badge.card10.main.MainFragment
 import java.lang.Exception
 import java.lang.IllegalStateException
 
@@ -76,8 +79,15 @@ class FileTransferFragment : Fragment(), GattListener, FileTransferListener{
 
         buttonStartStop = view.findViewById(R.id.button_start_stop_transfer)
 
-        initConnection()
-        toggleControls()
+        try {
+            initConnection()
+            toggleControls()
+        } catch (e: ConnectionException) {
+            showError(e.message)
+        } catch (e: Exception) {
+            showError(getString(R.string.connection_error_generic))
+        }
+
     }
 
     private fun initConnection() {
@@ -160,4 +170,21 @@ class FileTransferFragment : Fragment(), GattListener, FileTransferListener{
         }
         toggleControls()
     }
+
+    private fun showError(message: String?) {
+        val ctx = context ?: throw IllegalStateException()
+        val fm = fragmentManager ?: throw IllegalStateException()
+
+        val errorDialog =
+            AlertDialog.Builder(ctx)
+                .setMessage(message ?: getString(R.string.connection_error_generic))
+                .setPositiveButton(R.string.dialog_action_ok) {
+                    dialog, _ -> dialog.dismiss()
+                    fm.beginTransaction()
+                        .replace(R.id.fragment_container, MainFragment())
+                        .addToBackStack(null)
+                        .commit()
+                }
+                .show()
+    }
 }
\ No newline at end of file