diff --git a/tools/bccmd.c b/tools/bccmd.c
index 1605d1c..5655bb5 100755
--- a/tools/bccmd.c
+++ b/tools/bccmd.c
@@ -555,6 +555,37 @@ static int cmd_radiotest(int transport, int argc, char *argv[])
 	return transport_write(transport, CSR_VARID_RADIOTEST, array, 8);
 }
 
+static int cmd_fullradiotest(int transport, int argc, char *argv[])
+{
+	uint8_t array[8];
+	uint16_t testID;
+	uint16_t word1;
+	uint16_t word2;
+	uint16_t word3;
+
+	OPT_HELP(4, NULL);
+
+	testID = atoi(argv[0]);
+	word1 = atoi(argv[1]);
+	word2 = atoi(argv[2]);
+	word3 = atoi(argv[3]);
+
+	printf("TestID %u, word1 %u, word2 %u, word3 %u\n",
+		testID, word1, word2, word3);
+
+	memset(array, 0, sizeof(array));
+	array[0] = testID & 0xff;
+	array[1] = testID >> 8;
+	array[2] = word1 & 0xff;
+	array[3] = word1 >> 8;
+	array[4] = word2 & 0xff;
+	array[5] = word2 >> 8;
+	array[6] = word3 & 0xff;
+	array[7] = word3 >> 8;
+
+	return transport_write(transport, CSR_VARID_RADIOTEST, array, 8);
+}
+
 static int cmd_memtypes(int transport, int argc, char *argv[])
 {
 	uint8_t array[8];
@@ -1176,6 +1207,7 @@ static struct {
 	{ "hoppingon", cmd_hoppingon, "",                    "Revert to channel hopping"      },
 	{ "rttxdata1", cmd_rttxdata1, "<freq> <level>",      "TXData1 radio test"             },
 	{ "radiotest", cmd_radiotest, "<freq> <level> <id>", "Run radio tests"                },
+	{ "fullradiotest", cmd_fullradiotest,"<id> <w1> <w2> <w3>", "Run full radio tests"    },
 	{ "memtypes",  cmd_memtypes,  NULL,                  "Get memory types"               },
 	{ "psget",     cmd_psget,     "<key>",               "Get value for PS key"           },
 	{ "psset",     cmd_psset,     "<key> <value>",       "Set value for PS key"           },
