diff --git a/src/topologyd.c b/src/topologyd.c
index ffa3afd741c11ccd59938c943d875d443f3509f8..66f2809480aaf1cb66de901866374e7d514cd83d 100644
--- a/src/topologyd.c
+++ b/src/topologyd.c
@@ -795,6 +795,7 @@ void topologyd_dump_node(struct blob_buf *bb, struct node *p, int is_self)
 	char addr[16] = {0};
 	char addr_v6[40] = {0};
 	char oui[10] = {0};
+	char phy_variant[10] = {0};
 
 	hwaddr_ntoa(p->hwaddr, mac_str);
 	blobmsg_add_string(bb, "ieee1905_macaddr", mac_str);
@@ -877,7 +878,8 @@ void topologyd_dump_node(struct blob_buf *bb, struct node *p, int is_self)
 			p->node_intf[j].generic_phy_oui[0], p->node_intf[j].generic_phy_oui[1], p->node_intf[j].generic_phy_oui[2]);
 		oui[9] = '\0';
 		blobmsg_add_string(bb, "generic_phy_oui", oui);
-		blobmsg_add_u8(bb, "generic_phy_variant", p->node_intf[j].generic_phy_variant);
+		sprintf(phy_variant, "%02x",p->node_intf[j].generic_phy_variant);
+		blobmsg_add_string(bb, "generic_phy_variant", phy_variant);
 		blobmsg_add_string(bb, "generic_phy_url", p->node_intf[j].generic_phy_url);
 		blobmsg_add_u32(bb, "ap_channel_band", p->node_intf[j].ap_channel_band);
 		if (p->node_intf[j].media_specific_data_size == 10) {