#include <linux/netdevice.h>
 #include <linux/utsname.h>
 #include <generated/utsrelease.h>
+#include <linux/ctype.h>
 
 #include "ionic.h"
 #include "ionic_bus.h"
        }
        mutex_unlock(&ionic->dev_cmd_lock);
 
-       dev_info(ionic->dev, "FW: %s\n", idev->dev_info.fw_version);
-
        if (err) {
-               dev_err(ionic->dev, "Cannot identify ionic: %dn", err);
+               dev_err(ionic->dev, "Cannot identify ionic: %d\n", err);
                goto err_out;
        }
 
+       if (isprint(idev->dev_info.fw_version[0]) &&
+           isascii(idev->dev_info.fw_version[0]))
+               dev_info(ionic->dev, "FW: %.*s\n",
+                        (int)(sizeof(idev->dev_info.fw_version) - 1),
+                        idev->dev_info.fw_version);
+       else
+               dev_info(ionic->dev, "FW: (invalid string) 0x%02x 0x%02x 0x%02x 0x%02x ...\n",
+                        (u8)idev->dev_info.fw_version[0],
+                        (u8)idev->dev_info.fw_version[1],
+                        (u8)idev->dev_info.fw_version[2],
+                        (u8)idev->dev_info.fw_version[3]);
+
        err = ionic_lif_identify(ionic, IONIC_LIF_TYPE_CLASSIC,
                                 &ionic->ident.lif);
        if (err) {