diff --git a/src/mumble/AudioWizard.cpp b/src/mumble/AudioWizard.cpp
index e8d9d9f0a2b..d691aeb89e1 100644
--- a/src/mumble/AudioWizard.cpp
+++ b/src/mumble/AudioWizard.cpp
@@ -44,24 +44,6 @@ AudioWizard::AudioWizard(QWidget *p) : QWizard(p) {
 	qcbUsage->setChecked(Global::get().s.bUsage);
 
 	// Device
-	if (AudioInputRegistrar::qmNew) {
-		foreach (AudioInputRegistrar *air, *AudioInputRegistrar::qmNew) {
-			qcbInput->addItem(air->name);
-			if (air->name == AudioInputRegistrar::current) {
-				qcbInput->setCurrentIndex(qcbInput->count() - 1);
-				EchoCancelOptionID echoCancelOptionId = firstUsableEchoCancellation(air, qcbOutput->currentText());
-				if (echoCancelOptionId != EchoCancelOptionID::DISABLED) {
-					qcbEcho->setEnabled(true);
-					qcbEcho->setChecked(Global::get().s.echoOption != EchoCancelOptionID::DISABLED);
-				}
-			}
-			QList< audioDevice > ql = air->getDeviceChoices();
-		}
-	}
-	if (qcbInput->count() < 2) {
-		qcbInput->setEnabled(false);
-	}
-
 	if (AudioOutputRegistrar::qmNew) {
 		foreach (AudioOutputRegistrar *aor, *AudioOutputRegistrar::qmNew) {
 			qcbOutput->addItem(aor->name);
@@ -73,11 +55,24 @@ AudioWizard::AudioWizard(QWidget *p) : QWizard(p) {
 			QList< audioDevice > ql = aor->getDeviceChoices();
 		}
 	}
-
 	if (qcbOutput->count() < 2) {
 		qcbOutput->setEnabled(false);
 	}
 
+	if (AudioInputRegistrar::qmNew) {
+		foreach (AudioInputRegistrar *air, *AudioInputRegistrar::qmNew) {
+			qcbInput->addItem(air->name);
+			if (air->name == AudioInputRegistrar::current) {
+				qcbInput->setCurrentIndex(qcbInput->count() - 1);
+				updateEchoCheckbox(air);
+			}
+			QList< audioDevice > ql = air->getDeviceChoices();
+		}
+	}
+	if (qcbInput->count() < 2) {
+		qcbInput->setEnabled(false);
+	}
+
 	qcbHighContrast->setChecked(Global::get().s.bHighContrast);
 	on_qcbHighContrast_clicked(Global::get().s.bHighContrast);
 #ifdef Q_OS_WIN
@@ -243,8 +238,7 @@ void AudioWizard::on_qcbInputDevice_activated(int) {
 		air->setDeviceChoice(qcbInputDevice->itemData(idx), Global::get().s);
 	}
 
-	EchoCancelOptionID echoCancelOptionId = firstUsableEchoCancellation(air, qcbOutput->currentText());
-	qcbEcho->setEnabled(echoCancelOptionId != EchoCancelOptionID::DISABLED);
+	updateEchoCheckbox(air);
 
 	Global::get().ai = AudioInputPtr(air->create());
 	Global::get().ai->start(QThread::HighestPriority);
@@ -284,9 +278,8 @@ void AudioWizard::on_qcbOutputDevice_activated(int) {
 		bDelay = aor->usesOutputDelay();
 	}
 
-	AudioInputRegistrar *air              = AudioInputRegistrar::qmNew->value(qcbInput->currentText());
-	EchoCancelOptionID echoCancelOptionId = firstUsableEchoCancellation(air, qcbOutput->currentText());
-	qcbEcho->setEnabled(echoCancelOptionId != EchoCancelOptionID::DISABLED);
+	AudioInputRegistrar *air = AudioInputRegistrar::qmNew->value(qcbInput->currentText());
+	updateEchoCheckbox(air);
 
 	Global::get().ao = AudioOutputPtr(aor->create());
 	Global::get().ao->start(QThread::HighPriority);
@@ -767,6 +760,18 @@ void AudioWizard::on_qrbQualityCustom_clicked() {
 	restartAudio(true);
 }
 
+void AudioWizard::updateEchoCheckbox(AudioInputRegistrar *air) {
+	bool echoCancelPossible =
+		firstUsableEchoCancellation(air, qcbOutput->currentText()) != EchoCancelOptionID::DISABLED;
+
+	qcbEcho->setEnabled(echoCancelPossible);
+	if (echoCancelPossible) {
+		qcbEcho->setChecked(Global::get().s.echoOption != EchoCancelOptionID::DISABLED);
+	} else {
+		qcbEcho->setChecked(false);
+	}
+}
+
 EchoCancelOptionID AudioWizard::firstUsableEchoCancellation(AudioInputRegistrar *air, const QString outputSys) {
 	for (EchoCancelOptionID ecoid : air->echoOptions) {
 		if (air->canEcho(ecoid, outputSys)) {
diff --git a/src/mumble/AudioWizard.h b/src/mumble/AudioWizard.h
index 52850cefc03..c0e3ef2cfb5 100644
--- a/src/mumble/AudioWizard.h
+++ b/src/mumble/AudioWizard.h
@@ -20,6 +20,8 @@ class AudioWizard : public QWizard, public Ui::AudioWizard {
 	Q_OBJECT
 	Q_DISABLE_COPY(AudioWizard)
 
+	void updateEchoCheckbox(AudioInputRegistrar *air);
+
 	/// Which echo cancellation is usable depends on the audio backend and the device combination.
 	/// This function will iterate through the list of available echo cancellation in the audio backend and check with
 	/// the backend whether this echo cancellation option works for current device combination.