 +			tmp = be32toh(i); /* ID */
  			memcpy(send_pkg.data + 28, &tmp, 4);
 -			avalon2_init_pkg(&send_pkg, AVA2_P_POLLING, 1, 1);
-+			if (info->led_red[i] && mm_cmp_1204(info, i)) {
++			if (info->led_red[i] && mm_cmp_1404(info, i)) {
 +				avalon2_init_pkg(&send_pkg, AVA2_P_TEST, 1, 1);
 +				while (avalon2_send_pkg(info->fd, &send_pkg, thr) != AVA2_SEND_OK)
 +					;

 	submit_nonce(thr, work, nonce);
 	free_work(work);
diff --git a/driver-avalon2.c b/driver-avalon2.c
index 1a318ab..3da93ce 100644
--- a/driver-avalon2.c
+++ b/driver-avalon2.c
@@ -42,6 +42,8 @@

+	info->fan_pwm = get_fan_pwm(3 * t - 110);
+}
+
+static inline int mm_cmp_1404(struct avalon2_info *info, int modular)
+{
+	char *mm_1404 = "1404";
+	return strncmp(info->mm_version[modular] + 2, mm_1404, 4) >= 0 ? 0 : 1;
+}
+
+extern void submit_nonce2_nonce(struct thr_info *thr, struct pool *pool, struct pool *real_pool, uint32_t nonce2, uint32_t nonce);
