diff --git a/package/gluon-setup-mode/files/etc/hotplug.d/button/50-gluon-setup-mode b/package/gluon-setup-mode/files/etc/hotplug.d/button/50-gluon-setup-mode
index 314f8a4310153a6f4087486da90961d60057268c..83c0aa2df47de1abbe44aeea4af498775fec75ff 100755
--- a/package/gluon-setup-mode/files/etc/hotplug.d/button/50-gluon-setup-mode
+++ b/package/gluon-setup-mode/files/etc/hotplug.d/button/50-gluon-setup-mode
@@ -6,9 +6,7 @@ wait=3
 
 wait_setup_mode() {
 	sleep $wait
-	uci set 'gluon-setup-mode.@setup_mode[0].enabled=1'
-	uci commit gluon-setup-mode
-	reboot
+	gluon-enter-setup-mode
 }
 
 
diff --git a/package/gluon-setup-mode/files/usr/bin/gluon-enter-setup-mode b/package/gluon-setup-mode/files/usr/bin/gluon-enter-setup-mode
new file mode 100755
index 0000000000000000000000000000000000000000..e20f973d7927c5b69570a493bf48e33d91097748
--- /dev/null
+++ b/package/gluon-setup-mode/files/usr/bin/gluon-enter-setup-mode
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -euo pipefail
+
+echo "Entering setup mode and rebooting..."
+uci set gluon-setup-mode.@setup_mode[0].enabled='1'
+uci commit gluon-setup-mode
+reboot