diff --git a/src/bs11_config.c b/src/bs11_config.c
index e05c609..0be7f7b 100644
--- a/src/bs11_config.c
+++ b/src/bs11_config.c
@@ -180,10 +180,8 @@
 			   sizeof(struct abis_om_hdr))
 		fprintf(stderr, "Invalied header byte 1(len): %u\n",
 			msg->data[1]);
-	printf("length = %u\n", msg->data[1]);
 
 	while (msg->len < 2 + msg->data[1]) {
-		printf("msg->len(%u), waiting for %u\n", msg->len, 2 + msg->data[1] - msg->len);
 		rc = read(serial_fd, msg->tail, 2 + msg->data[1] - msg->len);
 		if (rc < 0) {
 			perror("reading from serial port");
@@ -235,7 +233,8 @@
 		if (file_is_readable(fname_safety))
 			abis_nm_software_load(g_bts, fname_safety, 8);
 		else
-			fprintf(stderr, "No valid Safety Load file\n");
+			fprintf(stderr, "No valid Safety Load file \"%s\"\n",
+				fname_safety);
 		break;
 	case BS11_STATE_WAIT_MIN_CFG:
 	case BS11_STATE_WAIT_MIN_CFG_2:
@@ -248,7 +247,8 @@
 		if (file_is_readable(fname_software))
 			abis_nm_software_load(g_bts, fname_software, 8);
 		else
-			fprintf(stderr, "No valid Software file\n");
+			fprintf(stderr, "No valid Software file \"%s\"\n",
+				fname_software);
 		break;
 	case BS11_STATE_NORMAL:
 		printf("Normal...\n");
@@ -319,10 +319,18 @@
 	}
 }
 
+enum bs11_state {
+	STATE_NONE,
+	STATE_LOGON_WAIT,
+	STATE_LOGON_ACK,
+	STATE_SWLOAD,
+};
+
 int main(int argc, char **argv)
 {
 	struct gsm_network *gsmnet;
 	struct termios tio;
+	enum bs11_state state = STATE_NONE;
 	int rc;
 
 	handle_options(argc, argv);
@@ -341,7 +349,11 @@
 	}
 	cfsetispeed(&tio, B19200);
 	cfsetospeed(&tio, B19200);
-	tio.c_cflag |= CREAD | CLOCAL;
+	tio.c_cflag |=  (CREAD | CLOCAL | CS8);
+	tio.c_cflag &= ~(PARENB | CSTOPB | CSIZE | CRTSCTS);
+	tio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
+	tio.c_iflag |=  (INPCK | ISTRIP);
+	tio.c_iflag &= ~(ISTRIP | IXON | IXOFF | IGNBRK | INLCR | ICRNL | IGNCR);
 	rc = tcsetattr(serial_fd, TCSADRAIN, &tio);
 	if (rc < 0) {
 		perror("tcsetattr()");
@@ -368,6 +380,12 @@
 		oh = (struct abis_om_hdr *) msgb_l2(rx_msg);
 		foh = (struct abis_om_fom_hdr *) oh->data;
 		switch (foh->msg_type) {
+		case NM_MT_BS11_FACTORY_LOGON_ACK:
+			printf("FACTORY LOGON: ACK\n");
+			if (state == STATE_NONE)
+				state = STATE_LOGON_ACK;
+			rc = 0;
+			break;
 		case NM_MT_BS11_GET_STATE_ACK:
 			rc = handle_state_resp(foh->data[2]);
 			break;
@@ -380,6 +398,17 @@
 		}
 		if (rc == 1)
 			break;
+
+		switch (state) {
+		case STATE_NONE:
+			abis_nm_bs11_factory_logon(g_bts, 1);
+			break;
+		case STATE_LOGON_ACK:
+			abis_nm_bs11_get_state(g_bts);
+			break;
+		default:
+			break;
+		}
 	}
 
 	abis_nm_bs11_factory_logon(g_bts, 0);
