struct led_classdev home_led;
        enum joycon_ctlr_state ctlr_state;
        spinlock_t lock;
+       u8 mac_addr[6];
+       char *mac_addr_str;
 
        /* The following members are used for synchronous sends/receives */
        enum joycon_msg_type msg_type;
        ctlr->input->id.vendor = hdev->vendor;
        ctlr->input->id.product = hdev->product;
        ctlr->input->id.version = hdev->version;
+       ctlr->input->uniq = ctlr->mac_addr_str;
        ctlr->input->name = name;
        input_set_drvdata(ctlr->input, ctlr);
 
        return power_supply_powers(ctlr->battery, &hdev->dev);
 }
 
+static int joycon_read_mac(struct joycon_ctlr *ctlr)
+{
+       int ret;
+       int i;
+       int j;
+       struct joycon_subcmd_request req = { 0 };
+       struct joycon_input_report *report;
+
+       req.subcmd_id = JC_SUBCMD_REQ_DEV_INFO;
+       ret = joycon_send_subcmd(ctlr, &req, 0, HZ);
+       if (ret) {
+               hid_err(ctlr->hdev, "Failed to get joycon info; ret=%d\n", ret);
+               return ret;
+       }
+
+       report = (struct joycon_input_report *)ctlr->input_buf;
+
+       for (i = 4, j = 0; j < 6; i++, j++)
+               ctlr->mac_addr[j] = report->reply.data[i];
+
+       ctlr->mac_addr_str = devm_kasprintf(&ctlr->hdev->dev, GFP_KERNEL,
+                                           "%02X:%02X:%02X:%02X:%02X:%02X",
+                                           ctlr->mac_addr[0],
+                                           ctlr->mac_addr[1],
+                                           ctlr->mac_addr[2],
+                                           ctlr->mac_addr[3],
+                                           ctlr->mac_addr[4],
+                                           ctlr->mac_addr[5]);
+       if (!ctlr->mac_addr_str)
+               return -ENOMEM;
+       hid_info(ctlr->hdev, "controller MAC = %s\n", ctlr->mac_addr_str);
+
+       return 0;
+}
+
 /* Common handler for parsing inputs */
 static int joycon_ctlr_read_handler(struct joycon_ctlr *ctlr, u8 *data,
                                                              int size)
                goto err_mutex;
        }
 
+       ret = joycon_read_mac(ctlr);
+       if (ret) {
+               hid_err(hdev, "Failed to retrieve controller MAC; ret=%d\n",
+                       ret);
+               goto err_mutex;
+       }
+
        mutex_unlock(&ctlr->output_mutex);
 
        /* Initialize the leds */