--- a/main.c
+++ b/main.c
@@ -187,6 +187,17 @@ static void sighandler(int signum) {
 	signal(signum, SIG_DFL);
 }
 
+// Waits for nonzero MAC
+static void get_nonzero_mac(u8_t mac[], u32_t timeout_ms) {
+	u32_t wait_timeout = gettime_ms() + timeout_ms;
+	do{
+		get_mac(mac);
+		if ((mac[0]+mac[1]+mac[2]+mac[3]+mac[4]+mac[5]) != 0) {
+			break;
+		}
+	}while(wait_timeout > gettime_ms());
+}
+
 int main(int argc, char **argv) {
 	char *server = NULL;
 	char *output_device = "default";
@@ -240,7 +251,8 @@ int main(int argc, char **argv) {
 #define MAXCMDLINE 512
 	char cmdline[MAXCMDLINE] = "";
 
-	get_mac(mac);
+	// Waits for nonzero MAC
+	get_nonzero_mac(mac,10000);
 
 	for (i = 0; i < argc && (strlen(argv[i]) + strlen(cmdline) + 2 < MAXCMDLINE); i++) {
 		strcat(cmdline, argv[i]);
