diff --git a/briar b/briar
index 445ef0818cb80a4b7e4c1f4370293b0f869c2ece..bf091ef8547c25b5065eea9114931ebf88562c78 160000
--- a/briar
+++ b/briar
@@ -1 +1 @@
-Subproject commit 445ef0818cb80a4b7e4c1f4370293b0f869c2ece
+Subproject commit bf091ef8547c25b5065eea9114931ebf88562c78
diff --git a/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt b/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt
index b84cad40217f3d620789c9ec70c4ded843b7f3b9..87263e4879b368d3e630e5294085cf91215f7508 100644
--- a/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt
+++ b/src/main/kotlin/org/briarproject/briar/desktop/DesktopModule.kt
@@ -7,6 +7,8 @@ import org.briarproject.bramble.account.AccountModule
 import org.briarproject.bramble.api.FeatureFlags
 import org.briarproject.bramble.api.db.DatabaseConfig
 import org.briarproject.bramble.api.plugin.PluginConfig
+import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_CONTROL_PORT
+import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_SOCKS_PORT
 import org.briarproject.bramble.api.plugin.TorDirectory
 import org.briarproject.bramble.api.plugin.TransportId
 import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory
@@ -14,6 +16,8 @@ import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory
 import org.briarproject.bramble.battery.DefaultBatteryManagerModule
 import org.briarproject.bramble.event.DefaultEventExecutorModule
 import org.briarproject.bramble.network.JavaNetworkModule
+import org.briarproject.bramble.plugin.TorPorts
+import org.briarproject.bramble.plugin.TorPortsImpl
 import org.briarproject.bramble.plugin.tor.CircumventionModule
 import org.briarproject.bramble.plugin.tor.UnixTorPluginFactory
 import org.briarproject.bramble.socks.SocksModule
@@ -60,6 +64,12 @@ internal class DesktopModule(private val appDir: Path) {
         return DesktopDatabaseConfig(dbDir.toFile(), keyDir.toFile())
     }
 
+    @Provides
+    @Singleton
+    fun provideTorPorts(): TorPorts {
+        return TorPortsImpl(DEFAULT_SOCKS_PORT, DEFAULT_CONTROL_PORT)
+    }
+
     @Provides
     @TorDirectory
     internal fun provideTorDirectory(): File {
@@ -87,7 +97,7 @@ internal class DesktopModule(private val appDir: Path) {
         override fun shouldEnableImageAttachments() = false
         override fun shouldEnableProfilePictures() = false
         override fun shouldEnableDisappearingMessages() = false
-        override fun shouldEnableConnectViaBluetooth() = false
         override fun shouldEnableTransferData() = false
+        override fun shouldEnableShareAppViaOfflineHotspot() = false
     }
 }
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt b/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt
index 2253d221624e1b3dfdcb3a31e228becbb3242675..7a19894337e9e3056e64a52eafa7435f0bef0d65 100644
--- a/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt
+++ b/src/test/kotlin/org/briarproject/briar/desktop/DesktopTestModule.kt
@@ -7,6 +7,8 @@ import org.briarproject.bramble.account.AccountModule
 import org.briarproject.bramble.api.FeatureFlags
 import org.briarproject.bramble.api.db.DatabaseConfig
 import org.briarproject.bramble.api.plugin.PluginConfig
+import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_CONTROL_PORT
+import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_SOCKS_PORT
 import org.briarproject.bramble.api.plugin.TorDirectory
 import org.briarproject.bramble.api.plugin.TransportId
 import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory
@@ -14,6 +16,8 @@ import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory
 import org.briarproject.bramble.battery.DefaultBatteryManagerModule
 import org.briarproject.bramble.event.DefaultEventExecutorModule
 import org.briarproject.bramble.network.JavaNetworkModule
+import org.briarproject.bramble.plugin.TorPorts
+import org.briarproject.bramble.plugin.TorPortsImpl
 import org.briarproject.bramble.plugin.tor.CircumventionModule
 import org.briarproject.bramble.plugin.tor.UnixTorPluginFactory
 import org.briarproject.bramble.socks.SocksModule
@@ -50,7 +54,11 @@ import javax.inject.Singleton
         TestModule::class,
     ]
 )
-internal class DesktopTestModule(private val appDir: File) {
+internal class DesktopTestModule(
+    private val appDir: File,
+    private val socksPort: Int = DEFAULT_SOCKS_PORT,
+    private val controlPort: Int = DEFAULT_CONTROL_PORT
+) {
 
     @Provides
     @Singleton
@@ -64,6 +72,12 @@ internal class DesktopTestModule(private val appDir: File) {
         return DesktopDatabaseConfig(dbDir, keyDir)
     }
 
+    @Provides
+    @Singleton
+    fun provideTorPorts(): TorPorts {
+        return TorPortsImpl(socksPort, controlPort)
+    }
+
     @Provides
     @TorDirectory
     internal fun provideTorDirectory(): File {
@@ -91,8 +105,8 @@ internal class DesktopTestModule(private val appDir: File) {
         override fun shouldEnableImageAttachments() = false
         override fun shouldEnableProfilePictures() = false
         override fun shouldEnableDisappearingMessages() = false
-        override fun shouldEnableConnectViaBluetooth() = false
         override fun shouldEnableTransferData() = false
+        override fun shouldEnableShareAppViaOfflineHotspot() = false
     }
 
     @Provides
diff --git a/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt b/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt
index 88a3ab6770f3aed3a2136e04f4bf98112151e55f..1336ba996531747e3188d199186006c448c8209e 100644
--- a/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt
+++ b/src/test/kotlin/org/briarproject/briar/desktop/TestWithTwoTemporaryAccounts.kt
@@ -5,6 +5,8 @@ import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.window.ApplicationScope
 import androidx.compose.ui.window.application
 import org.briarproject.bramble.BrambleCoreEagerSingletons
+import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_CONTROL_PORT
+import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_SOCKS_PORT
 import org.briarproject.briar.BriarCoreEagerSingletons
 import org.briarproject.briar.desktop.utils.FileUtils
 import java.io.IOException
@@ -28,19 +30,19 @@ internal class TestWithTwoTemporaryAccounts() {
         LogManager.getLogManager().getLogger("").level = INFO
 
         application {
-            app(this, "alice")
-            app(this, "bob")
+            app(this, "alice", DEFAULT_SOCKS_PORT, DEFAULT_CONTROL_PORT)
+            app(this, "bob", DEFAULT_SOCKS_PORT + 2, DEFAULT_CONTROL_PORT + 2)
         }
     }
 
     @Composable
-    private fun app(applicationScope: ApplicationScope, name: String) {
+    private fun app(applicationScope: ApplicationScope, name: String, socksPort: Int, controlPort: Int) {
         val dataDir = getDataDir()
         LOG.info("Using data directory '$dataDir'")
 
         val app =
             DaggerBriarDesktopTestApp.builder().desktopTestModule(
-                DesktopTestModule(dataDir.toFile())
+                DesktopTestModule(dataDir.toFile(), socksPort, controlPort)
             ).build()
 
         app.getShutdownManager().addShutdownHook {