diff --git a/README.md b/README.md
index 4af811c..ee5360f 100644
--- a/README.md
+++ b/README.md
@@ -19,6 +19,7 @@ Please see [the official Gluon repository](https://github.com/freifunk-gluon/glu
 
 #### Gluon versions used for specific Hamburg Freifunk Firmware builds
 
+- 0.9.2: site-ffhh: v0.9.2, gluon: v2017.1.8
 - 0.9.1: site-ffhh: v0.9.1, gluon: v2017.1.5
 - 0.9.0: site-ffhh: 60f30382209ffc050baa82be9bad3622a1d88d5b, gluon: v2017.1.x (9295abcea7b016b0fe4b05c534ea0731b48ef593) (never rolled out due to 0.9.1)
 - 0.8.6: v2016.2.7 Fix gw01-new key, add 3.ntp.services.ffhh to NTP servers, add Firmware signing keys for Alexander and Olli, remove old domain
diff --git a/build.sh b/build.sh
index ad86111..2f8f21a 100755
--- a/build.sh
+++ b/build.sh
@@ -1,36 +1,70 @@
-#!/bin/bash -e
+#!/usr/bin/env bash
+set -e
 
 function announce () {
 	echo '############################' $* >&2
 }
-
-proc=$(nproc)
-gluon_out="${HOME}/firmware"
-
-while getopts g:j:l:o:s:u:bmv opt; do
-	case "$opt" in
-		g) gluon_path="$OPTARG" ;;
-		l) sites="$OPTARG" ;;
-		o) gluon_out="$OPTARG" ;;
-		s) signature="$OPTARG" ;;
-		u) uploadscript="$OPTARG" ;;
-		b) export BROKEN=1 ;;
-		m) dont_make_sites=1 ;;
-		j) proc="$OPTARG" ;;
-		v) verbose=V=s ;;
-	esac
-done
-if [ -z "${gluon_path}" ]; then
+function usage () {
 	echo "Usage: $0 -g GLUON_PATH" >&2
 	echo "       -g GLUON_PATH   Path to a checkout of the gluon repository." >&2
 	echo "       -l SITES        Comma separated list of sites to build" >&2
 	echo "       -o OUT_PATH     Path to the firmware output directory. Default: ${gluon_out}" >&2
 	echo "       -s SIGNATURE    Sign firmware with signature" >&2
-	echo "       -u UPLOADSCRIPT Run UPLOADSCRIPT after building. Argument: $gluon_out/<GLUON_RELEASE>" >&2
+	echo "       -u UPLOADSCRIPT Run UPLOADSCRIPT after building. Will be run with one argument: $gluon_out/<GLUON_RELEASE>" >&2
 	echo "       -b              BROKEN=1" >&2
 	echo "       -m              Do not regenerate the sites" >&2
 	echo "       -v              verbose" >&2
 	echo "       -j JOBS         Run build with -jJOBS. Default: ${proc}" >&2
+}
+
+proc=$(nproc)
+gluon_out="${HOME}/firmware"
+
+while [ $# -gt 0 ]; do
+	case "$1" in
+		-g)
+			gluon_path="$2"
+			shift
+			;;
+		-l)
+			sites="$2"
+			shift
+			;;
+		-o)
+			gluon_out="$2"
+			shift
+			;;
+		-s)
+			signature="$2"
+			shift
+			;;
+		-u)
+			uploadscript="$2"
+			shift
+			;;
+		-b)
+			export BROKEN=1
+			;;
+		-m)
+			dont_make_sites=1
+			;;
+		-j)
+			proc="$2"
+			shift
+			;;
+		-v)
+			verbose=V=s
+			;;
+		*)
+			usage
+			exit 1
+			;;
+	esac
+	shift
+done
+
+if [ -z "$gluon_path" ]; then
+	usage
 	exit 1
 fi
 
diff --git a/config/defaults.erb b/config/defaults.erb
index 59c18c8..85e28f3 100644
--- a/config/defaults.erb
+++ b/config/defaults.erb
@@ -1,7 +1,7 @@
 <%
 gluon_branch = "stable"
 #gluon_branch = "experimental"
-gluon_release = "0.9.1"
+gluon_release = "0.9.2"
 
 # Add the +exp and current date if this is an experimental release
 gluon_release += "~exp" + Time.new.strftime("%Y%m%d") if gluon_branch == "experimental"