def METHOD_NAME(params, session, devs):
    """
    Verify usb device information in the guest.
    :param params: Dictionary with the test parameters.
    :param session: Session object.
    :return: A tuple (status, output) where status is the verification result
             and output is the detail information
    """
    def _verify_guest_usb():
        output = session.cmd_output(params["chk_usb_info_cmd"],
                                    float(params["cmd_timeout"]))
        # For usb-hub, '-v' must be used to get the expected usb info.
        # For non usb-hub, refer to 'chk_usb_info_cmd', two situations:
        # '-v' must be used to get expected info
        # '-v' must not be used to avoid duplicate info in output and affect the device count.
        if "Hub" in str(devs) and os_type == "linux":
            hub_output = session.cmd_output("lsusb -v",
                                            float(params["cmd_timeout"]))
        # each dev must in the output
        for dev in devs:
            if "Hub" in dev[1] and os_type == "linux":
                o = hub_output
            else:
                o = output
            if dev[1] not in o:
                LOG_JOB.info("%s does not exist", dev[1])
                return False
        # match number of devices
        dev_list = [dev[1] for dev in devs]
        dev_nums = dict((i, dev_list.count(i)) for i in dev_list)
        for k, v in dev_nums.items():
            LOG_JOB.info("the number of %s is %s", k, v)
            if "Hub" in k and os_type == "linux":
                o = hub_output
            else:
                o = output
            count = o.count(k)
            if count != v:
                LOG_JOB.info("expected %s %s, got %s in the guest",
                             v, k, count)
                return False
        return True
    os_type = params.get("os_type")
    if os_type == "linux":
        LOG_JOB.info("checking if there is I/O error in dmesg")
        output = session.cmd_output("dmesg | grep -i usb",
                                    float(params["cmd_timeout"]))
        for line in output.splitlines():
            if "error" in line or "ERROR" in line:
                return (False, "error found in guest's dmesg: %s " % line)
    res = utils_misc.wait_for(_verify_guest_usb,
                              float(params["cmd_timeout"]),
                              step=5.0,
                              text="wait for getting guest usb devices info"
                              )
    if res:
        return (True, "all given devices are verified in the guest")
    else:
        return (False, "failed to verify usb devices in guest")