diff --git a/src/syncterm/telnets.c b/src/syncterm/telnets.c
index 3d6c87f217f434882d8735b93ecc917f8dbda250..8b530ebb0036e1d947ba9240e0dcb50305273a01 100644
--- a/src/syncterm/telnets.c
+++ b/src/syncterm/telnets.c
@@ -12,6 +12,7 @@
 #include "sockwrap.h"
 #include "ssh.h"
 #include "syncterm.h"
+#include "telnet_io.h"
 #include "threadwrap.h"
 #include "uifcinit.h"
 #include "window.h"
@@ -245,6 +246,17 @@ telnets_connect(struct bbslist *bbs)
 	if (!bbs->hidepopups)
 		uifc.pop(NULL); // TODO: Why is this called twice?
 
+	// Suppress Go Aheads (both directions)
+	request_telnet_opt(TELNET_WILL, TELNET_SUP_GA);
+	request_telnet_opt(TELNET_DO, TELNET_SUP_GA);
+	if (!bbs->telnet_no_binary) {
+		// Enable binary mode (both directions)
+		request_telnet_opt(TELNET_WILL, TELNET_BINARY_TX);
+		request_telnet_opt(TELNET_DO, TELNET_BINARY_TX);
+	}
+	// Request that the server echos
+	request_telnet_opt(TELNET_DO, TELNET_ECHO);
+
 	return 0;
 }