diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 96fae75f..ca8587e0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,6 @@ include: - local: '.gitlab-ci/libfprint-templates.yaml' - - project: 'wayland/ci-templates' + - project: 'freedesktop/ci-templates' ref: master file: '/templates/fedora.yml' - remote: 'https://gitlab.gnome.org/GNOME/citemplates/-/raw/master/flatpak/flatpak_ci_initiative.yml' @@ -9,6 +9,7 @@ variables: extends: .libfprint_common_variables FDO_DISTRIBUTION_TAG: latest FDO_DISTRIBUTION_VERSION: rawhide + FDO_UPSTREAM_REPO: "libfprint/$CI_PROJECT_NAME" FEDORA_IMAGE: "$CI_REGISTRY/libfprint/$CI_PROJECT_NAME/fedora/$FDO_DISTRIBUTION_VERSION:$FDO_DISTRIBUTION_TAG" BUNDLE: "org.freedesktop.libfprint.Demo.flatpak" LAST_ABI_BREAK: "056ea541ddc97f5806cffbd99a12dc87e4da3546" @@ -19,7 +20,7 @@ stages: - test - flatpak -image: "$FEDORA_IMAGE" +image: $FEDORA_IMAGE .build_one_driver_template: &build_one_driver script: @@ -159,6 +160,7 @@ container_fedora_build: - $CI_PIPELINE_SOURCE == "schedule" && $CRON_TASK == "BUILD_CI_IMAGES" variables: GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image + FDO_FORCE_REBUILD: 1 # a list of packages to install FDO_DISTRIBUTION_PACKAGES: $LIBFPRINT_DEPENDENCIES diff --git a/.gitlab-ci/libfprint-templates.yaml b/.gitlab-ci/libfprint-templates.yaml index 280a21f5..ace3f7b4 100644 --- a/.gitlab-ci/libfprint-templates.yaml +++ b/.gitlab-ci/libfprint-templates.yaml @@ -26,3 +26,4 @@ uncrustify valgrind clang-analyzer + diffutils diff --git a/NEWS b/NEWS index 0866bfc7..cf96ff33 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,17 @@ This file lists notable changes in each release. For the full history of all changes, see ChangeLog. -2021-06-30: v1.94.0 release +2021-09-24: v1.94.1 release + +Highlights: + * Ship a simple script to create new CI tests using tshark + * Added CI tests for elan, uru4000, aes2501 + * goodixmoc: Remove duplicate checking during enroll and let fprintd handle it + * uru4000: Fix USB transfer type + * synaptics: Support for new PIDs + * goodixmoc: Support for new PIDs + +2021-08-20: v1.94.0 release Highlights: * Implement suspend/resume handling including USB wakeup configuration. diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb index 04cd1438..42d22ca7 100644 --- a/data/autosuspend.hwdb +++ b/data/autosuspend.hwdb @@ -4,6 +4,7 @@ # Supported by libfprint driver aes1610 usb:v08FFp1600* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver aes1660 usb:v08FFp1660* @@ -24,16 +25,19 @@ usb:v08FFp168D* usb:v08FFp168E* usb:v08FFp168F* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver aes2501 usb:v08FFp2500* usb:v08FFp2580* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver aes2550 usb:v08FFp2550* usb:v08FFp2810* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver aes2660 usb:v08FFp2660* @@ -55,19 +59,23 @@ usb:v08FFp268E* usb:v08FFp268F* usb:v08FFp2691* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver aes3500 usb:v08FFp5731* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver aes4000 usb:v5501p08FF* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver egis0570 usb:v1C7Ap0570* usb:v1C7Ap0571* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver elan usb:v04F3p0903* @@ -131,14 +139,18 @@ usb:v04F3p0C63* usb:v04F3p0C6E* usb:v04F3p0C58* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver elanmoc +usb:v04F3p0C7D* usb:v04F3p0C7E* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver etes603 usb:v1C7Ap0603* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver goodixmoc usb:v27C6p5840* @@ -146,6 +158,8 @@ usb:v27C6p609C* usb:v27C6p60A2* usb:v27C6p639C* usb:v27C6p63AC* +usb:v27C6p63BC* +usb:v27C6p63CC* usb:v27C6p6496* usb:v27C6p6584* usb:v27C6p658C* @@ -154,10 +168,12 @@ usb:v27C6p6594* usb:v27C6p659C* usb:v27C6p6A94* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver nb1010 usb:v298Dp1010* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver synaptics usb:v06CBp00BD* @@ -169,22 +185,29 @@ usb:v06CBp00C9* usb:v06CBp0100* usb:v06CBp00F0* usb:v06CBp0103* +usb:v06CBp0123* +usb:v06CBp0126* +usb:v06CBp0129* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver upeksonly usb:v147Ep2016* usb:v147Ep1000* usb:v147Ep1001* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver upektc usb:v0483p2015* usb:v147Ep3001* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver upektc_img usb:v147Ep2020* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver uru4000 usb:v045Ep00BC* @@ -194,23 +217,28 @@ usb:v05BAp0007* usb:v05BAp0008* usb:v05BAp000A* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver vcom5s usb:v061Ap0110* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver vfs0050 usb:v138Ap0050* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver vfs101 usb:v138Ap0001* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver vfs301 usb:v138Ap0005* usb:v138Ap0008* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver vfs5011 usb:v138Ap0010* @@ -219,10 +247,12 @@ usb:v138Ap0015* usb:v138Ap0017* usb:v138Ap0018* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Supported by libfprint driver vfs7552 usb:v138Ap0091* ID_AUTOSUSPEND=1 + ID_PERSIST=0 # Known unsupported devices usb:v04F3p036B* @@ -254,6 +284,7 @@ usb:v0A5Cp5840* usb:v0A5Cp5841* usb:v0A5Cp5842* usb:v0A5Cp5843* +usb:v0A5Cp5844* usb:v0A5Cp5845* usb:v10A5p0007* usb:v1188p9545* @@ -296,3 +327,4 @@ usb:v2808p9338* usb:v298Dp2033* usb:v3538p0930* ID_AUTOSUSPEND=1 + ID_PERSIST=0 diff --git a/libfprint/drivers/elanmoc/elanmoc.c b/libfprint/drivers/elanmoc/elanmoc.c index 447182f9..69700a0c 100644 --- a/libfprint/drivers/elanmoc/elanmoc.c +++ b/libfprint/drivers/elanmoc/elanmoc.c @@ -25,6 +25,7 @@ G_DEFINE_TYPE (FpiDeviceElanmoc, fpi_device_elanmoc, FP_TYPE_DEVICE) static const FpIdEntry id_table[] = { + { .vid = 0x04f3, .pid = 0x0c7d, }, { .vid = 0x04f3, .pid = 0x0c7e, }, { .vid = 0, .pid = 0, .driver_data = 0 }, /* terminating entry */ }; @@ -806,7 +807,7 @@ elanmoc_enroll (FpDevice *device) FpPrint *print = NULL; GVariant *data = NULL; GVariant *uid = NULL; - g_autofree gchar *user_id; + g_autofree gchar *user_id = NULL; gsize user_id_len; guint8 *userdata = g_malloc0 (ELAN_USERDATE_SIZE); diff --git a/libfprint/drivers/goodixmoc/goodix.c b/libfprint/drivers/goodixmoc/goodix.c index d012d46f..15a85323 100644 --- a/libfprint/drivers/goodixmoc/goodix.c +++ b/libfprint/drivers/goodixmoc/goodix.c @@ -56,7 +56,6 @@ struct _FpiDeviceGoodixMoc gint max_stored_prints; GPtrArray *list_result; guint8 template_id[TEMPLATE_ID_SIZE]; - gboolean is_enroll_identify; gboolean is_power_button_shield_on; }; @@ -79,6 +78,44 @@ static gboolean parse_print_data (GVariant *data, gsize *tid_len, const guint8 **user_id, gsize *user_id_len); + +static FpPrint * +fp_print_from_template (FpiDeviceGoodixMoc *self, template_format_t *template) +{ + FpPrint *print; + GVariant *data; + GVariant *tid; + GVariant *uid; + g_autofree gchar *userid = NULL; + + userid = g_strndup ((gchar *) template->payload.data, template->payload.size); + + print = fp_print_new (FP_DEVICE (self)); + + tid = g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE, + template->tid, + TEMPLATE_ID_SIZE, + 1); + + uid = g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE, + template->payload.data, + template->payload.size, + 1); + + data = g_variant_new ("(y@ay@ay)", + template->finger_index, + tid, + uid); + + fpi_print_set_type (print, FPI_PRINT_RAW); + fpi_print_set_device_stored (print, TRUE); + g_object_set (print, "fpi-data", data, NULL); + g_object_set (print, "description", userid, NULL); + fpi_print_fill_from_user_id (print, userid); + + return print; +} + /****************************************************************************** * * fp_cmd_xxx Function @@ -385,6 +422,7 @@ fp_verify_cb (FpiDeviceGoodixMoc *self, { g_autoptr(GPtrArray) templates = NULL; FpDevice *device = FP_DEVICE (self); + FpPrint *match = NULL; FpPrint *print = NULL; gint cnt = 0; gboolean find = false; @@ -396,6 +434,8 @@ fp_verify_cb (FpiDeviceGoodixMoc *self, } if (resp->verify.match) { + match = fp_print_from_template (self, &resp->verify.template); + if (fpi_device_get_current_action (device) == FPI_DEVICE_ACTION_VERIFY) { templates = g_ptr_array_sized_new (1); @@ -409,22 +449,9 @@ fp_verify_cb (FpiDeviceGoodixMoc *self, } for (cnt = 0; cnt < templates->len; cnt++) { - g_autoptr(GVariant) data = NULL; - guint8 finger; - const guint8 *user_id; - gsize user_id_len = 0; - const guint8 *tid; - gsize tid_len = 0; print = g_ptr_array_index (templates, cnt); - g_object_get (print, "fpi-data", &data, NULL); - if (!parse_print_data (data, &finger, &tid, &tid_len, &user_id, &user_id_len)) - { - fpi_ssm_mark_failed (self->task_ssm, - fpi_device_error_new_msg (FP_DEVICE_ERROR_DATA_INVALID, - "Parse print error")); - return; - } - if (memcmp (&resp->verify.template.tid, tid, TEMPLATE_ID_SIZE) == 0) + + if (fp_print_equal (print, match)) { find = true; break; @@ -434,9 +461,9 @@ fp_verify_cb (FpiDeviceGoodixMoc *self, if (find) { if (fpi_device_get_current_action (device) == FPI_DEVICE_ACTION_VERIFY) - fpi_device_verify_report (device, FPI_MATCH_SUCCESS, NULL, error); + fpi_device_verify_report (device, FPI_MATCH_SUCCESS, match, error); else - fpi_device_identify_report (device, print, print, error); + fpi_device_identify_report (device, print, match, error); } } @@ -622,28 +649,6 @@ fp_enroll_enum_cb (FpiDeviceGoodixMoc *self, fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_CAPTURE); } -static void -fp_enroll_identify_cb (FpiDeviceGoodixMoc *self, - gxfp_cmd_response_t *resp, - GError *error) -{ - if (error) - { - fpi_ssm_mark_failed (self->task_ssm, error); - return; - } - if (resp->verify.match) - { - fpi_ssm_mark_failed (self->task_ssm, - fpi_device_error_new_msg (FP_DEVICE_ERROR_DATA_DUPLICATE, - "Finger is too similar to another, try use a different finger")); - // maybe need fpi_device_enroll_report_message ... - return; - } - fpi_ssm_next_state (self->task_ssm); - -} - static void fp_enroll_init_cb (FpiDeviceGoodixMoc *self, gxfp_cmd_response_t *resp, @@ -697,11 +702,6 @@ fp_enroll_capture_cb (FpiDeviceGoodixMoc *self, fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_CAPTURE); return; } - if (self->is_enroll_identify) - { - self->is_enroll_identify = false; - fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_IDENTIFY); - } else { fpi_ssm_next_state (self->task_ssm); @@ -867,19 +867,6 @@ fp_enroll_sm_run_state (FpiSsm *ssm, FpDevice *device) } break; - case FP_ENROLL_IDENTIFY: - { - dummy[0] = 0x01; - dummy[1] = self->sensorcfg->config[10]; - dummy[2] = self->sensorcfg->config[11]; - goodix_sensor_cmd (self, MOC_CMD0_IDENTIFY, MOC_CMD1_DEFAULT, - false, - (const guint8 *) &self->template_id, - TEMPLATE_ID_SIZE, - fp_enroll_identify_cb); - } - break; - case FP_ENROLL_CREATE: { goodix_sensor_cmd (self, MOC_CMD0_ENROLL_INIT, MOC_CMD1_DEFAULT, @@ -1224,36 +1211,10 @@ fp_template_list_cb (FpiDeviceGoodixMoc *self, for (int n = 0; n < resp->finger_list_resp.finger_num; n++) { - GVariant *data = NULL; - GVariant *tid = NULL; - GVariant *uid = NULL; FpPrint *print; - gchar *userid; - userid = (gchar *) resp->finger_list_resp.finger_list[n].payload.data; + print = fp_print_from_template (self, &resp->finger_list_resp.finger_list[n]); - print = fp_print_new (FP_DEVICE (self)); - - tid = g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE, - resp->finger_list_resp.finger_list[n].tid, - TEMPLATE_ID_SIZE, - 1); - - uid = g_variant_new_fixed_array (G_VARIANT_TYPE_BYTE, - resp->finger_list_resp.finger_list[n].payload.data, - resp->finger_list_resp.finger_list[n].payload.size, - 1); - - data = g_variant_new ("(y@ay@ay)", - resp->finger_list_resp.finger_list[n].finger_index, - tid, - uid); - - fpi_print_set_type (print, FPI_PRINT_RAW); - fpi_print_set_device_stored (print, TRUE); - g_object_set (print, "fpi-data", data, NULL); - g_object_set (print, "description", userid, NULL); - fpi_print_fill_from_user_id (print, userid); g_ptr_array_add (self->list_result, g_object_ref_sink (print)); } @@ -1320,6 +1281,8 @@ gx_fp_probe (FpDevice *device) case 0x609C: case 0x639C: case 0x63AC: + case 0x63BC: + case 0x63CC: case 0x6A94: self->max_enroll_stage = 12; break; @@ -1459,7 +1422,6 @@ gx_fp_enroll (FpDevice *device) FpiDeviceGoodixMoc *self = FPI_DEVICE_GOODIXMOC (device); self->enroll_stage = 0; - self->is_enroll_identify = true; self->task_ssm = fpi_ssm_new_full (device, fp_enroll_sm_run_state, FP_ENROLL_NUM_STATES, @@ -1543,6 +1505,8 @@ static const FpIdEntry id_table[] = { { .vid = 0x27c6, .pid = 0x60A2, }, { .vid = 0x27c6, .pid = 0x639C, }, { .vid = 0x27c6, .pid = 0x63AC, }, + { .vid = 0x27c6, .pid = 0x63BC, }, + { .vid = 0x27c6, .pid = 0x63CC, }, { .vid = 0x27c6, .pid = 0x6496, }, { .vid = 0x27c6, .pid = 0x6584, }, { .vid = 0x27c6, .pid = 0x658C, }, diff --git a/libfprint/drivers/goodixmoc/goodix_proto.h b/libfprint/drivers/goodixmoc/goodix_proto.h index bcd1cdd0..000be2fe 100644 --- a/libfprint/drivers/goodixmoc/goodix_proto.h +++ b/libfprint/drivers/goodixmoc/goodix_proto.h @@ -113,14 +113,16 @@ typedef struct _gxfp_enroll_init #pragma pack(push, 1) typedef struct _template_format { + uint8_t _0x43_byte; uint8_t type; uint8_t finger_index; + uint8_t pad0; uint8_t accountid[32]; uint8_t tid[32]; struct { - uint32_t size; - uint8_t data[56]; + uint8_t size; + uint8_t data[56]; } payload; uint8_t reserve[2]; } template_format_t, *ptemplate_format_t; diff --git a/libfprint/drivers/synaptics/synaptics.c b/libfprint/drivers/synaptics/synaptics.c index 16d5afd8..98627ed7 100644 --- a/libfprint/drivers/synaptics/synaptics.c +++ b/libfprint/drivers/synaptics/synaptics.c @@ -40,6 +40,9 @@ static const FpIdEntry id_table[] = { { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0100, }, { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x00F0, }, { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0103, }, + { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0123, }, + { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0126, }, + { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0129, }, { .vid = 0, .pid = 0, .driver_data = 0 }, /* terminating entry */ }; diff --git a/libfprint/drivers/uru4000.c b/libfprint/drivers/uru4000.c index f8f64793..138673c8 100644 --- a/libfprint/drivers/uru4000.c +++ b/libfprint/drivers/uru4000.c @@ -360,9 +360,9 @@ start_irq_handler (FpImageDevice *dev) transfer = fpi_usb_transfer_new (FP_DEVICE (dev)); transfer->ssm = NULL; transfer->short_is_error = TRUE; - fpi_usb_transfer_fill_bulk (transfer, - EP_INTR, - IRQ_LENGTH); + fpi_usb_transfer_fill_interrupt (transfer, + EP_INTR, + IRQ_LENGTH); fpi_usb_transfer_submit (transfer, 0, self->irq_cancellable, irq_handler, NULL); } diff --git a/libfprint/fp-context.c b/libfprint/fp-context.c index 49e91654..a5b45e8f 100644 --- a/libfprint/fp-context.c +++ b/libfprint/fp-context.c @@ -585,7 +585,7 @@ fp_context_enumerate (FpContext *context) * * Get all devices. fp_context_enumerate() will be called as needed. * - * Returns: (transfer none) (element-type FpDevice): a new #GPtrArray of #GUsbDevice's. + * Returns: (transfer none) (element-type FpDevice): a new #GPtrArray of #FpDevice's. */ GPtrArray * fp_context_get_devices (FpContext *context) diff --git a/libfprint/fp-device.c b/libfprint/fp-device.c index 4d19bf0e..35e2f2b8 100644 --- a/libfprint/fp-device.c +++ b/libfprint/fp-device.c @@ -245,6 +245,7 @@ fp_device_get_property (GObject *object, { FpDevice *self = FP_DEVICE (object); FpDevicePrivate *priv = fp_device_get_instance_private (self); + FpDeviceClass *cls = FP_DEVICE_GET_CLASS (self); switch (prop_id) { @@ -284,6 +285,24 @@ fp_device_get_property (GObject *object, g_value_set_boolean (value, priv->is_removed); break; + case PROP_FPI_USB_DEVICE: + g_value_set_object (value, priv->usb_device); + break; + + case PROP_FPI_UDEV_DATA_SPIDEV: + if (cls->type == FP_DEVICE_TYPE_UDEV) + g_value_set_string (value, g_strdup (priv->udev_data.spidev_path)); + else + g_value_set_string (value, NULL); + break; + + case PROP_FPI_UDEV_DATA_HIDRAW: + if (cls->type == FP_DEVICE_TYPE_UDEV) + g_value_set_string (value, g_strdup (priv->udev_data.hidraw_path)); + else + g_value_set_string (value, NULL); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -530,7 +549,7 @@ fp_device_class_init (FpDeviceClass *klass) "USB Device", "Private: The USB device for the device", G_USB_TYPE_DEVICE, - G_PARAM_STATIC_STRINGS | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY); + G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); /** * FpDevice::fpi-udev-data-spidev: (skip) * @@ -543,7 +562,7 @@ fp_device_class_init (FpDeviceClass *klass) "Udev data: spidev path", "Private: The path to /dev/spidevN.M", NULL, - G_PARAM_STATIC_STRINGS | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY); + G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); /** * FpDevice::fpi-udev-data-hidraw: (skip) * @@ -556,7 +575,7 @@ fp_device_class_init (FpDeviceClass *klass) "Udev data: hidraw path", "Private: The path to /dev/hidrawN", NULL, - G_PARAM_STATIC_STRINGS | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY); + G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); /** * FpDevice::fpi-driver-data: (skip) diff --git a/libfprint/fprint-list-udev-hwdb.c b/libfprint/fprint-list-udev-hwdb.c index dadb303c..d271752a 100644 --- a/libfprint/fprint-list-udev-hwdb.c +++ b/libfprint/fprint-list-udev-hwdb.c @@ -58,6 +58,7 @@ static const FpIdEntry whitelist_id_table[] = { { .vid = 0x0a5c, .pid = 0x5841 }, { .vid = 0x0a5c, .pid = 0x5842 }, { .vid = 0x0a5c, .pid = 0x5843 }, + { .vid = 0x0a5c, .pid = 0x5844 }, { .vid = 0x0a5c, .pid = 0x5845 }, { .vid = 0x10a5, .pid = 0x0007 }, { .vid = 0x1188, .pid = 0x9545 }, @@ -166,7 +167,10 @@ print_driver (const FpDeviceClass *cls) } if (num_printed > 0) - g_print (" ID_AUTOSUSPEND=1\n"); + { + g_print (" ID_AUTOSUSPEND=1\n"); + g_print (" ID_PERSIST=0\n"); + } } static int diff --git a/meson.build b/meson.build index e9de2967..d5c28772 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('libfprint', [ 'c', 'cpp' ], - version: '1.94.0+tod1', + version: '1.94.1+tod1', license: 'LGPLv2.1+', default_options: [ 'buildtype=debugoptimized', diff --git a/tests/README.md b/tests/README.md index 20fdf9f2..3012cbc4 100644 --- a/tests/README.md +++ b/tests/README.md @@ -3,72 +3,42 @@ `umockdev` tests use fingerprint devices mocked by [`umockdev` toolchain][umockdev]. -This document describes how to create a 'capture' test: a test that -captures a picture of a fingerprint from the device (mocked by -`umockdev`) and compares it with the standard one. +This document describes how to create test cases (for USB devices). Many of +these tests are tests for image devices, where a single image is captured +and stored. Other kinds of `umockdev` tests can be created in a similar manner. For match-on-chip devices you would instead create a test specific `custom.py` script, capture it and store the capture to `custom.pcapng`. -'Capture' Test Creation ------------------------ -A new 'capture' test is created by means of `capture.py` script: +'capture' and 'custom' Test Creation +------------------------------------ -1. Create (if needed) a directory for the driver under `tests` - directory: +For image devices the `capture.py` script will be used to capture one reference +image. If the driver is a non-image driver, then a `custom.py` script should be +created in advance, which will be run instead. - `mkdir DRIVER` +1. Make sure that libfprint is built with support for the device driver + that you want to create a test case for. - Note that the name must be the exact name of the libfprint driver, - or the exact name of the driver followed by a `-` and a unique identifier - of your choosing. +2. From the build directory, run tests/create-driver-test.py as root. Note + that if you're capturing data for a driver which already has a test case + but the hardware is slightly different, you might want to pass a variant + name as a command-line options, for example: +```sh +$ sudo tests/create-driver-test.py driver [variant] +``` -2. Prepare your execution environment. +3. If the capture is not successful, run the tool again to start another capture. - In the next step a working and up to date libfprint is needed. This can be - achieved by installing it into your system. Alternatively, you can set - the following environment variables to run a local build: - - `export LD_PRELOAD=/libfprint/libfprint-2.so` - - `export GI_TYPELIB_PATH=/libfprint` +4. Add driver test name to `drivers_tests` in the `meson.build`, as instructed, + and change the ownership of the just-created test directory in the source. - Also, sometimes the driver must be adapted to the emulated environment - (mainly if it uses random numbers, see `synaptics.c` for an example). - Set the following environment variable to enable this adaptation: - - `export FP_DEVICE_EMULATION=1` +5. Check whether `meson test` passes with this new test. - Run the next steps in the same terminal. - -3. Find the real USB fingerprint device with `lsusb`, e.g.: - - `Bus 001 Device 005: ID 138a:0090 Validity Sensors, Inc. VFS7500 Touch Fingerprint Sensor` - - The following USB device is used in the example above: - `/dev/bus/usb/001/005`. - - For the following commands, it is assumed that the user that's - running the commands has full access to the device node, whether - by running the commands as `root`, or changing the permissions for - that device node. - -4. Record information about this device: - - `umockdev-record /dev/bus/usb/001/005 > DRIVER/device` - -5. Record interaction of `capture.py` (or other test) with the device. To do - so, start wireshark and record `usbmonX` (where X is the bus number). Then - run the test script: - - `python3 ./capture.py DRIVER/capture.png` - - Save the wireshark recording as `capture.pcapng`. The command will create - `capture.png`. - -6. Add driver's name to `drivers_tests` in the `meson.build`. -7. Check whether everything works as expected. - -**Note.** To avoid submitting a real fingerprint, the side of finger, -arm, or anything else producing an image with the device can be used. +**Note.** To avoid submitting a real fingerprint when creating a 'capture' test, +the side of finger, arm, or anything else producing an image with the device +can be used. Possible Issues diff --git a/tests/aes2501/capture.pcapng b/tests/aes2501/capture.pcapng new file mode 100644 index 00000000..78b63c3f Binary files /dev/null and b/tests/aes2501/capture.pcapng differ diff --git a/tests/aes2501/capture.png b/tests/aes2501/capture.png new file mode 100644 index 00000000..0d570518 Binary files /dev/null and b/tests/aes2501/capture.png differ diff --git a/tests/aes2501/device b/tests/aes2501/device new file mode 100644 index 00000000..7f21d817 --- /dev/null +++ b/tests/aes2501/device @@ -0,0 +1,223 @@ +P: /devices/pci0000:00/0000:00:14.0/usb1/1-10 +N: bus/usb/001/044=12011001FFFFFF08FF08802523060001000109022000010100A0320904000002FFFFFF000705810220000007050202080000 +E: DEVNAME=/dev/bus/usb/001/044 +E: DEVTYPE=usb_device +E: DRIVER=usb +E: PRODUCT=8ff/2580/623 +E: TYPE=255/255/255 +E: BUSNUM=001 +E: DEVNUM=044 +E: MAJOR=189 +E: MINOR=43 +E: SUBSYSTEM=usb +E: ID_VENDOR=08ff +E: ID_VENDOR_ENC=08ff +E: ID_VENDOR_ID=08ff +E: ID_MODEL=Fingerprint_Sensor +E: ID_MODEL_ENC=Fingerprint\x20Sensor +E: ID_MODEL_ID=2580 +E: ID_REVISION=0623 +E: ID_SERIAL=08ff_Fingerprint_Sensor +E: ID_BUS=usb +E: ID_USB_INTERFACES=:ffffff: +E: ID_VENDOR_FROM_DATABASE=AuthenTec, Inc. +E: ID_AUTOSUSPEND=1 +E: ID_MODEL_FROM_DATABASE=AES2501 Fingerprint Sensor +E: ID_PATH=pci-0000:00:14.0-usb-0:10 +E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_10 +E: LIBFPRINT_DRIVER=AuthenTec AES2501 +A: authorized=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=ff\n +A: bDeviceProtocol=ff\n +A: bDeviceSubClass=ff\n +A: bMaxPacketSize0=8\n +A: bMaxPower=100mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0623\n +A: bmAttributes=a0\n +A: busnum=1\n +A: configuration= +H: descriptors=12011001FFFFFF08FF08802523060001000109022000010100A0320904000002FFFFFF000705810220000007050202080000 +A: dev=189:43\n +A: devnum=44\n +A: devpath=10\n +L: driver=../../../../../bus/usb/drivers/usb +L: firmware_node=../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:4c/device:4d/device:57 +A: idProduct=2580\n +A: idVendor=08ff\n +A: ltm_capable=no\n +A: maxchild=0\n +L: port=../1-0:1.0/usb1-port10 +A: power/active_duration=10573\n +A: power/autosuspend=2\n +A: power/autosuspend_delay_ms=2000\n +A: power/connected_duration=23441\n +A: power/control=auto\n +A: power/level=auto\n +A: power/persist=0\n +A: power/runtime_active_time=10430\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=12771\n +A: power/wakeup=disabled\n +A: power/wakeup_abort_count=\n +A: power/wakeup_active=\n +A: power/wakeup_active_count=\n +A: power/wakeup_count=\n +A: power/wakeup_expire_count=\n +A: power/wakeup_last_time_ms=\n +A: power/wakeup_max_time_ms=\n +A: power/wakeup_total_time_ms=\n +A: product=Fingerprint Sensor\n +A: quirks=0x0\n +A: removable=removable\n +A: rx_lanes=1\n +A: speed=12\n +A: tx_lanes=1\n +A: urbnum=13241\n +A: version= 1.10\n + +P: /devices/pci0000:00/0000:00:14.0/usb1 +N: bus/usb/001/001=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C +E: DEVNAME=/dev/bus/usb/001/001 +E: DEVTYPE=usb_device +E: DRIVER=usb +E: PRODUCT=1d6b/2/513 +E: TYPE=9/0/1 +E: BUSNUM=001 +E: DEVNUM=001 +E: MAJOR=189 +E: MINOR=0 +E: SUBSYSTEM=usb +E: ID_VENDOR=Linux_5.13.12-200.fc34.x86_64_xhci-hcd +E: ID_VENDOR_ENC=Linux\x205.13.12-200.fc34.x86_64\x20xhci-hcd +E: ID_VENDOR_ID=1d6b +E: ID_MODEL=xHCI_Host_Controller +E: ID_MODEL_ENC=xHCI\x20Host\x20Controller +E: ID_MODEL_ID=0002 +E: ID_REVISION=0513 +E: ID_SERIAL=Linux_5.13.12-200.fc34.x86_64_xhci-hcd_xHCI_Host_Controller_0000:00:14.0 +E: ID_SERIAL_SHORT=0000:00:14.0 +E: ID_BUS=usb +E: ID_USB_INTERFACES=:090000: +E: ID_VENDOR_FROM_DATABASE=Linux Foundation +E: ID_AUTOSUSPEND=1 +E: ID_MODEL_FROM_DATABASE=2.0 root hub +E: ID_PATH=pci-0000:00:14.0 +E: ID_PATH_TAG=pci-0000_00_14_0 +E: ID_FOR_SEAT=usb-pci-0000_00_14_0 +E: TAGS=:seat: +E: CURRENT_TAGS=:seat: +A: authorized=1\n +A: authorized_default=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=09\n +A: bDeviceProtocol=01\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=64\n +A: bMaxPower=0mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0513\n +A: bmAttributes=e0\n +A: busnum=1\n +A: configuration= +H: descriptors=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C +A: dev=189:0\n +A: devnum=1\n +A: devpath=0\n +L: driver=../../../../bus/usb/drivers/usb +L: firmware_node=../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:4c/device:4d +A: idProduct=0002\n +A: idVendor=1d6b\n +A: interface_authorized_default=1\n +A: ltm_capable=no\n +A: manufacturer=Linux 5.13.12-200.fc34.x86_64 xhci-hcd\n +A: maxchild=16\n +A: power/active_duration=767293591\n +A: power/autosuspend=0\n +A: power/autosuspend_delay_ms=0\n +A: power/connected_duration=767293591\n +A: power/control=auto\n +A: power/level=auto\n +A: power/runtime_active_time=767293588\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/wakeup=disabled\n +A: power/wakeup_abort_count=\n +A: power/wakeup_active=\n +A: power/wakeup_active_count=\n +A: power/wakeup_count=\n +A: power/wakeup_expire_count=\n +A: power/wakeup_last_time_ms=\n +A: power/wakeup_max_time_ms=\n +A: power/wakeup_total_time_ms=\n +A: product=xHCI Host Controller\n +A: quirks=0x0\n +A: removable=unknown\n +A: rx_lanes=1\n +A: serial=0000:00:14.0\n +A: speed=480\n +A: tx_lanes=1\n +A: urbnum=1086\n +A: version= 2.00\n + +P: /devices/pci0000:00/0000:00:14.0 +E: DRIVER=xhci_hcd +E: PCI_CLASS=C0330 +E: PCI_ID=8086:A36D +E: PCI_SUBSYS_ID=17AA:312A +E: PCI_SLOT_NAME=0000:00:14.0 +E: MODALIAS=pci:v00008086d0000A36Dsv000017AAsd0000312Abc0Csc03i30 +E: SUBSYSTEM=pci +E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller +E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller +E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI +E: ID_VENDOR_FROM_DATABASE=Intel Corporation +E: ID_MODEL_FROM_DATABASE=Cannon Lake PCH USB 3.1 xHCI Host Controller +A: ari_enabled=0\n +A: broken_parity_status=0\n +A: class=0x0c0330\n +H: config=86806DA3060490021030030C00008000040032B1000000000000000000000000000000000000000000000000AA172A31000000007000000000000000FF010000FD0134808FC6FF8300000000000000007F6DDC0F00000000560BBD0700000000316000000000000000000000000000000180C2C1080000000000000000000000059087009802E0FE0000000000000000090014F01000400100000000C10A080000080E00001800008F400200000100006000000008020000010000000400000090000000001800000005000000000000000300000C0000004000000080000000030000000000000000000000000000000000000000000000B50F110112000000 +A: consistent_dma_mask_bits=64\n +A: d3cold_allowed=1\n +A: dbc=disabled\n +A: device=0xa36d\n +A: dma_mask_bits=64\n +L: driver=../../../bus/pci/drivers/xhci_hcd +A: driver_override=(null)\n +A: enable=1\n +L: firmware_node=../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:4c +A: index=3\n +A: irq=125\n +A: label=Onboard - Other\n +A: local_cpulist=0-5\n +A: local_cpus=3f\n +A: modalias=pci:v00008086d0000A36Dsv000017AAsd0000312Abc0Csc03i30\n +A: msi_bus=1\n +A: msi_irqs/125=msi\n +A: numa_node=-1\n +A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 15 20 2112 20\nxHCI ring segments 46 76 4096 76\nbuffer-2048 0 32 2048 16\nbuffer-512 0 32 512 4\nbuffer-128 3 32 128 1\nbuffer-32 0 128 32 1\n +A: power/control=on\n +A: power/runtime_active_time=767293736\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/wakeup=enabled\n +A: power/wakeup_abort_count=0\n +A: power/wakeup_active=0\n +A: power/wakeup_active_count=59\n +A: power/wakeup_count=0\n +A: power/wakeup_expire_count=59\n +A: power/wakeup_last_time_ms=763021754\n +A: power/wakeup_max_time_ms=108\n +A: power/wakeup_total_time_ms=6149\n +A: power_state=D0\n +A: resource=0x00000000b1320000 0x00000000b132ffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n +A: revision=0x10\n +A: subsystem_device=0x312a\n +A: subsystem_vendor=0x17aa\n +A: vendor=0x8086\n + diff --git a/tests/create-driver-test.py.in b/tests/create-driver-test.py.in new file mode 100755 index 00000000..3eabb78d --- /dev/null +++ b/tests/create-driver-test.py.in @@ -0,0 +1,169 @@ +#!/usr/bin/python3 + +BUILDDIR='@BUILDDIR@' +SRCDIR='@SRCDIR@' + +import os +import sys +import signal +library_path = BUILDDIR + '/libfprint/' + +# Relaunch ourselves with a changed environment so +# that we're loading the development version of libfprint +if 'LD_LIBRARY_PATH' not in os.environ or not library_path in os.environ['LD_LIBRARY_PATH']: + os.environ['LD_LIBRARY_PATH'] = library_path + os.environ['GI_TYPELIB_PATH'] = f'{BUILDDIR}/libfprint/' + os.environ['FP_DEVICE_EMULATION'] = '1' + try: + os.execv(sys.argv[0], sys.argv) + except Exception as e: + print('Could not run script with new library path') + sys.exit(1) + +import gi +gi.require_version('FPrint', '2.0') +from gi.repository import FPrint + +gi.require_version('GUsb', '1.0') +from gi.repository import GUsb + +import re +import shutil +import subprocess +import tempfile +import time + +def print_usage(): + print(f'Usage: {sys.argv[0]} driver [test-variant-name]') + print('A test variant name is optional, and must be all lower case letters, or dashes, with no spaces') + print(f'The captured data will be stored in {SRCDIR}/tests/[driver name]-[test variant name]') + print(f'Create custom.py prior to execution for non image device tests.') + +if len(sys.argv) > 3: + print_usage() + sys.exit(1) + +driver_name = sys.argv[1] +os.environ['FP_DRIVERS_WHITELIST'] = driver_name + +test_variant = None +if len(sys.argv) == 3: + valid_re = re.compile('[a-z-]*') + test_variant = sys.argv[2] + if (not valid_re.match(test_variant) or + test_variant.startswith('-') or + test_variant.endswith('-')): + print(f'Invalid variant name {test_variant}\n') + print_usage() + sys.exit(1) + +# Check that running as root + +if os.geteuid() != 0: + print(f'{sys.argv[0]} is expected to be run as root') + sys.exit(1) + +# Check that tshark is available + +tshark = shutil.which('tshark') +if not tshark: + print("The 'tshark' WireShark command-line tool must be installed to capture USB traffic") + sys.exit(1) + +# Find the fingerprint reader +ctx = FPrint.Context() +ctx.enumerate() +devices = ctx.get_devices() +if len(devices) == 0: + print('Could not find a supported fingerprint reader') + sys.exit(1) +elif len(devices) > 1: + print('Capture requires a single supported fingerprint reader to be plugged in') + sys.exit(1) + +test_name = driver_name +if test_variant: + test_name = driver_name + '-' + test_variant +usb_device = devices[0].get_property('fpi-usb-device') +bus_num = usb_device.get_bus() +device_num = usb_device.get_address() + +print(f'### Detected USB device /dev/bus/usb/{bus_num:03d}/{device_num:03d}') + +# Make directory + +test_dir = SRCDIR + '/tests/' + test_name +os.makedirs(test_dir, mode=0o775, exist_ok=True) + +# Capture device info + +args = ['umockdev-record', f'/dev/bus/usb/{bus_num:03d}/{device_num:03d}'] +device_out = open(test_dir + '/device', 'w') +process = subprocess.Popen(args, stdout=device_out) +process.wait() + +# Run capture +# https://osqa-ask.wireshark.org/questions/53919/how-can-i-precisely-specify-a-usb-device-to-capture-with-tshark/ + +print(f'### Starting USB capture on usbmon{bus_num}') +capture_pid = os.fork() +assert(capture_pid >= 0) + +unfiltered_cap_path = os.path.join(tempfile.gettempdir(), 'capture-unfiltered.pcapng') +if capture_pid == 0: + os.setpgrp() + args = ['tshark', '-q', '-i', f'usbmon{bus_num}', '-w', unfiltered_cap_path] + os.execv(tshark, args) + +# Wait 1 sec to settle (we can assume setpgrp happened) +time.sleep(1) + +print('### Capturing fingerprint, please swipe or press your finger on the reader') +cmd = ['python3', SRCDIR + '/tests/capture.py', test_dir + '/capture.png'] +capture_file = 'capture.pcapng' # capture for "capture" test +if os.path.exists(os.path.join(test_dir, "custom.py")): + cmd = ['python3', os.path.join(test_dir, "custom.py")] + capture_file = "custom.pcapng" + +with subprocess.Popen(cmd) as capture_process: + capture_process.wait() + if capture_process.returncode != 0: + print('Failed to capture fingerprint') + os.killpg(capture_pid, signal.SIGKILL) + sys.exit(1) + +def t_waitpid(pid, timeout): + timeout = time.time() + timeout + r = os.waitpid(pid, os.WNOHANG) + while timeout > time.time() and r[0] == 0: + time.sleep(0.1) + r = os.waitpid(pid, os.WNOHANG) + + return r + +os.kill(capture_pid, signal.SIGTERM) +try: + r = t_waitpid(capture_pid, 2) + # Kill if nothing died + if r[0] == 0: + os.kill(capture_pid, signal.SIGKILL) +except ChildProcessError: + pass + +try: + while True: + r = t_waitpid(-capture_pid, timeout=2) + # Kill the process group, if nothing died (and there are children) + if r[0] == 0: + os.killpg(capture_pid, signal.SIGKILL) +except ChildProcessError: + pass + +# Filter the capture +print(f'\n### Saving USB capture as test case {test_name}') +args = ['tshark', '-r', unfiltered_cap_path, '-Y', f'usb.bus_id == {bus_num} and usb.device_address == {device_num}', + '-w', os.path.join(test_dir, capture_file)] +with subprocess.Popen(args, stderr=subprocess.DEVNULL) as filter_process: + filter_process.wait() + +print(f"\nDone! Don't forget to add {test_name} to tests/meson.build") diff --git a/tests/egis0570/device b/tests/egis0570/device index e22dcf1e..5247b785 100644 --- a/tests/egis0570/device +++ b/tests/egis0570/device @@ -25,63 +25,63 @@ E: ID_VENDOR_FROM_DATABASE=LighTuning Technology Inc. E: ID_PATH=pci-0000:00:14.0-usb-0:9 E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_9 E: LIBFPRINT_DRIVER=Hardcoded whitelist -A: authorized=1 -A: avoid_reset_quirk=0 -A: bConfigurationValue=1 -A: bDeviceClass=00 -A: bDeviceProtocol=00 -A: bDeviceSubClass=00 -A: bMaxPacketSize0=8 -A: bMaxPower=100mA -A: bNumConfigurations=1 -A: bNumInterfaces= 1 -A: bcdDevice=1041 -A: bmAttributes=a0 -A: busnum=1 -A: configuration= +A: authorized=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=00\n +A: bDeviceProtocol=00\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=8\n +A: bMaxPower=100mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=1041\n +A: bmAttributes=a0\n +A: busnum=1\n +A: configuration=\n H: descriptors=12011001000000087A1C700541100102030109022000010100A0320904000002FF0000000705830240000007050402400003 -A: dev=189:4 -A: devnum=5 -A: devpath=9 +A: dev=189:4\n +A: devnum=5\n +A: devpath=9\n L: driver=../../../../../bus/usb/drivers/usb -A: idProduct=0570 -A: idVendor=1c7a -A: ltm_capable=no -A: manufacturer=EgisTec -A: maxchild=0 +A: idProduct=0570\n +A: idVendor=1c7a\n +A: ltm_capable=no\n +A: manufacturer=EgisTec\n +A: maxchild=0\n L: port=../1-0:1.0/usb1-port9 -A: power/active_duration=362352 -A: power/async=enabled -A: power/autosuspend=2 -A: power/autosuspend_delay_ms=2000 -A: power/connected_duration=5526124 -A: power/control=auto -A: power/level=auto -A: power/persist=1 -A: power/runtime_active_kids=0 -A: power/runtime_active_time=365097 -A: power/runtime_enabled=enabled -A: power/runtime_status=active -A: power/runtime_suspended_time=5160752 -A: power/runtime_usage=0 -A: power/wakeup=disabled -A: power/wakeup_abort_count= -A: power/wakeup_active= -A: power/wakeup_active_count= -A: power/wakeup_count= -A: power/wakeup_expire_count= -A: power/wakeup_last_time_ms= -A: power/wakeup_max_time_ms= -A: power/wakeup_total_time_ms= -A: product=EgisTec Touch Fingerprint Sensor -A: quirks=0x0 -A: removable=fixed -A: rx_lanes=1 -A: serial=W700B41B -A: speed=12 -A: tx_lanes=1 -A: urbnum=8040 -A: version= 1.10 +A: power/active_duration=362352\n +A: power/async=enabled\n +A: power/autosuspend=2\n +A: power/autosuspend_delay_ms=2000\n +A: power/connected_duration=5526124\n +A: power/control=auto\n +A: power/level=auto\n +A: power/persist=1\n +A: power/runtime_active_kids=0\n +A: power/runtime_active_time=365097\n +A: power/runtime_enabled=enabled\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=5160752\n +A: power/runtime_usage=0\n +A: power/wakeup=disabled\n +A: power/wakeup_abort_count=\n +A: power/wakeup_active=\n +A: power/wakeup_active_count=\n +A: power/wakeup_count=\n +A: power/wakeup_expire_count=\n +A: power/wakeup_last_time_ms=\n +A: power/wakeup_max_time_ms=\n +A: power/wakeup_total_time_ms=\n +A: product=EgisTec Touch Fingerprint Sensor\n +A: quirks=0x0\n +A: removable=fixed\n +A: rx_lanes=1\n +A: serial=W700B41B\n +A: speed=12\n +A: tx_lanes=1\n +A: urbnum=8040\n +A: version= 1.10\n P: /devices/pci0000:00/0000:00:14.0/usb1 N: bus/usb/001/001=12010002090001406B1D020008050302010109021900010100E0000904000001090000000705810304000C @@ -112,63 +112,63 @@ E: ID_PATH=pci-0000:00:14.0 E: ID_PATH_TAG=pci-0000_00_14_0 E: ID_FOR_SEAT=usb-pci-0000_00_14_0 E: TAGS=:seat: -A: authorized=1 -A: authorized_default=1 -A: avoid_reset_quirk=0 -A: bConfigurationValue=1 -A: bDeviceClass=09 -A: bDeviceProtocol=01 -A: bDeviceSubClass=00 -A: bMaxPacketSize0=64 -A: bMaxPower=0mA -A: bNumConfigurations=1 -A: bNumInterfaces= 1 -A: bcdDevice=0508 -A: bmAttributes=e0 -A: busnum=1 -A: configuration= +A: authorized=1\n +A: authorized_default=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=09\n +A: bDeviceProtocol=01\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=64\n +A: bMaxPower=0mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0508\n +A: bmAttributes=e0\n +A: busnum=1\n +A: configuration=\n H: descriptors=12010002090001406B1D020008050302010109021900010100E0000904000001090000000705810304000C -A: dev=189:0 -A: devnum=1 -A: devpath=0 +A: dev=189:0\n +A: devnum=1\n +A: devpath=0\n L: driver=../../../../bus/usb/drivers/usb -A: idProduct=0002 -A: idVendor=1d6b -A: interface_authorized_default=1 -A: ltm_capable=no -A: manufacturer=Linux 5.8.0-59-generic xhci-hcd -A: maxchild=12 -A: power/active_duration=378024 -A: power/async=enabled -A: power/autosuspend=0 -A: power/autosuspend_delay_ms=0 -A: power/connected_duration=5527220 -A: power/control=auto -A: power/level=auto -A: power/runtime_active_kids=1 -A: power/runtime_active_time=377962 -A: power/runtime_enabled=enabled -A: power/runtime_status=active -A: power/runtime_suspended_time=5149253 -A: power/runtime_usage=0 -A: power/wakeup=disabled -A: power/wakeup_abort_count= -A: power/wakeup_active= -A: power/wakeup_active_count= -A: power/wakeup_count= -A: power/wakeup_expire_count= -A: power/wakeup_last_time_ms= -A: power/wakeup_max_time_ms= -A: power/wakeup_total_time_ms= -A: product=xHCI Host Controller -A: quirks=0x0 -A: removable=unknown -A: rx_lanes=1 -A: serial=0000:00:14.0 -A: speed=480 -A: tx_lanes=1 -A: urbnum=956 -A: version= 2.00 +A: idProduct=0002\n +A: idVendor=1d6b\n +A: interface_authorized_default=1\n +A: ltm_capable=no\n +A: manufacturer=Linux 5.8.0-59-generic xhci-hcd\n +A: maxchild=12\n +A: power/active_duration=378024\n +A: power/async=enabled\n +A: power/autosuspend=0\n +A: power/autosuspend_delay_ms=0\n +A: power/connected_duration=5527220\n +A: power/control=auto\n +A: power/level=auto\n +A: power/runtime_active_kids=1\n +A: power/runtime_active_time=377962\n +A: power/runtime_enabled=enabled\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=5149253\n +A: power/runtime_usage=0\n +A: power/wakeup=disabled\n +A: power/wakeup_abort_count=\n +A: power/wakeup_active=\n +A: power/wakeup_active_count=\n +A: power/wakeup_count=\n +A: power/wakeup_expire_count=\n +A: power/wakeup_last_time_ms=\n +A: power/wakeup_max_time_ms=\n +A: power/wakeup_total_time_ms=\n +A: product=xHCI Host Controller\n +A: quirks=0x0\n +A: removable=unknown\n +A: rx_lanes=1\n +A: serial=0000:00:14.0\n +A: speed=480\n +A: tx_lanes=1\n +A: urbnum=956\n +A: version= 2.00\n P: /devices/pci0000:00/0000:00:14.0 E: DRIVER=xhci_hcd @@ -183,46 +183,46 @@ E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI E: ID_VENDOR_FROM_DATABASE=Intel Corporation E: ID_MODEL_FROM_DATABASE=Sunrise Point-LP USB 3.0 xHCI Controller -A: ari_enabled=0 -A: broken_parity_status=0 -A: class=0x0c0330 +A: ari_enabled=0\n +A: broken_parity_status=0\n +A: class=0x0c0330\n H: config=86802F9D060490022130030C00008000040021A400000000000000000000000000000000000000000000000025108E11000000007000000000000000FF010000 -A: consistent_dma_mask_bits=64 -A: d3cold_allowed=1 -A: dbc=disabled -A: device=0x9d2f -A: dma_mask_bits=64 +A: consistent_dma_mask_bits=64\n +A: d3cold_allowed=1\n +A: dbc=disabled\n +A: device=0x9d2f\n +A: dma_mask_bits=64\n L: driver=../../../bus/pci/drivers/xhci_hcd -A: driver_override=(null) -A: enable=1 -A: irq=127 -A: local_cpulist=0-7 -A: local_cpus=ff -A: modalias=pci:v00008086d00009D2Fsv00001025sd0000118Ebc0Csc03i30 -A: msi_bus=1 -A: msi_irqs/127=msi -A: numa_node=-1 -A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 9 10 2112 10\nxHCI ring segments 32 36 4096 36\nbuffer-2048 1 2 2048 1\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0 -A: power/async=enabled -A: power/control=on -A: power/runtime_active_kids=1 -A: power/runtime_active_time=5524703 -A: power/runtime_enabled=forbidden -A: power/runtime_status=active -A: power/runtime_suspended_time=3373 -A: power/runtime_usage=1 -A: power/wakeup=enabled -A: power/wakeup_abort_count=0 -A: power/wakeup_active=0 -A: power/wakeup_active_count=0 -A: power/wakeup_count=0 -A: power/wakeup_expire_count=0 -A: power/wakeup_last_time_ms=0 -A: power/wakeup_max_time_ms=0 -A: power/wakeup_total_time_ms=0 -A: resource=0x00000000a4210000 0x00000000a421ffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000 -A: revision=0x21 -A: subsystem_device=0x118e -A: subsystem_vendor=0x1025 -A: vendor=0x8086 +A: driver_override=(null)\n +A: enable=1\n +A: irq=127\n +A: local_cpulist=0-7\n +A: local_cpus=ff\n +A: modalias=pci:v00008086d00009D2Fsv00001025sd0000118Ebc0Csc03i30\n +A: msi_bus=1\n +A: msi_irqs/127=msi\n +A: numa_node=-1\n +A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 9 10 2112 10\nxHCI ring segments 32 36 4096 36\nbuffer-2048 1 2 2048 1\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\n +A: power/async=enabled\n +A: power/control=on\n +A: power/runtime_active_kids=1\n +A: power/runtime_active_time=5524703\n +A: power/runtime_enabled=forbidden\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=3373\n +A: power/runtime_usage=1\n +A: power/wakeup=enabled\n +A: power/wakeup_abort_count=0\n +A: power/wakeup_active=0\n +A: power/wakeup_active_count=0\n +A: power/wakeup_count=0\n +A: power/wakeup_expire_count=0\n +A: power/wakeup_last_time_ms=0\n +A: power/wakeup_max_time_ms=0\n +A: power/wakeup_total_time_ms=0\n +A: resource=0x00000000a4210000 0x00000000a421ffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n +A: revision=0x21\n +A: subsystem_device=0x118e\n +A: subsystem_vendor=0x1025\n +A: vendor=0x8086\n diff --git a/tests/elan-cobo/capture.pcapng b/tests/elan-cobo/capture.pcapng new file mode 100644 index 00000000..f70431d4 Binary files /dev/null and b/tests/elan-cobo/capture.pcapng differ diff --git a/tests/elan-cobo/capture.png b/tests/elan-cobo/capture.png new file mode 100644 index 00000000..b5780d9c Binary files /dev/null and b/tests/elan-cobo/capture.png differ diff --git a/tests/elan-cobo/device b/tests/elan-cobo/device new file mode 100644 index 00000000..df3e2ae9 --- /dev/null +++ b/tests/elan-cobo/device @@ -0,0 +1,217 @@ +P: /devices/pci0000:00/0000:00:14.0/usb1/1-10 +N: bus/usb/001/045=1201000200000008F304260C40010102000109023E0001010080320904000005FF0000000921100100012215000705810240000107050102400001070582024000010705830240000107050302400001 +E: DEVNAME=/dev/bus/usb/001/045 +E: DEVTYPE=usb_device +E: DRIVER=usb +E: PRODUCT=4f3/c26/140 +E: TYPE=0/0/0 +E: BUSNUM=001 +E: DEVNUM=045 +E: MAJOR=189 +E: MINOR=44 +E: SUBSYSTEM=usb +E: ID_VENDOR=ELAN +E: ID_VENDOR_ENC=ELAN +E: ID_VENDOR_ID=04f3 +E: ID_MODEL=ELAN:Fingerprint +E: ID_MODEL_ENC=ELAN:Fingerprint +E: ID_MODEL_ID=0c26 +E: ID_REVISION=0140 +E: ID_SERIAL=ELAN_ELAN:Fingerprint +E: ID_BUS=usb +E: ID_USB_INTERFACES=:ff0000: +E: ID_VENDOR_FROM_DATABASE=Elan Microelectronics Corp. +E: ID_AUTOSUSPEND=1 +E: ID_PATH=pci-0000:00:14.0-usb-0:10 +E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_10 +E: LIBFPRINT_DRIVER=ElanTech Fingerprint Sensor +E: ID_FOR_SEAT=usb-pci-0000_00_14_0-usb-0_10 +E: TAGS=:seat: +E: CURRENT_TAGS=:seat: +A: authorized=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=00\n +A: bDeviceProtocol=00\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=8\n +A: bMaxPower=100mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0140\n +A: bmAttributes=80\n +A: busnum=1\n +A: configuration= +H: descriptors=1201000200000008F304260C40010102000109023E0001010080320904000005FF0000000921100100012215000705810240000107050102400001070582024000010705830240000107050302400001 +A: dev=189:44\n +A: devnum=45\n +A: devpath=10\n +L: driver=../../../../../bus/usb/drivers/usb +L: firmware_node=../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:4c/device:4d/device:57 +A: idProduct=0c26\n +A: idVendor=04f3\n +A: ltm_capable=no\n +A: manufacturer=ELAN\n +A: maxchild=0\n +L: port=../1-0:1.0/usb1-port10 +A: power/active_duration=21526\n +A: power/autosuspend=2\n +A: power/autosuspend_delay_ms=2000\n +A: power/connected_duration=96442\n +A: power/control=auto\n +A: power/level=auto\n +A: power/persist=0\n +A: power/runtime_active_time=21572\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=74628\n +A: product=ELAN:Fingerprint\n +A: quirks=0x0\n +A: removable=removable\n +A: rx_lanes=1\n +A: speed=12\n +A: tx_lanes=1\n +A: urbnum=103\n +A: version= 2.00\n + +P: /devices/pci0000:00/0000:00:14.0/usb1 +N: bus/usb/001/001=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C +E: DEVNAME=/dev/bus/usb/001/001 +E: DEVTYPE=usb_device +E: DRIVER=usb +E: PRODUCT=1d6b/2/513 +E: TYPE=9/0/1 +E: BUSNUM=001 +E: DEVNUM=001 +E: MAJOR=189 +E: MINOR=0 +E: SUBSYSTEM=usb +E: ID_VENDOR=Linux_5.13.12-200.fc34.x86_64_xhci-hcd +E: ID_VENDOR_ENC=Linux\x205.13.12-200.fc34.x86_64\x20xhci-hcd +E: ID_VENDOR_ID=1d6b +E: ID_MODEL=xHCI_Host_Controller +E: ID_MODEL_ENC=xHCI\x20Host\x20Controller +E: ID_MODEL_ID=0002 +E: ID_REVISION=0513 +E: ID_SERIAL=Linux_5.13.12-200.fc34.x86_64_xhci-hcd_xHCI_Host_Controller_0000:00:14.0 +E: ID_SERIAL_SHORT=0000:00:14.0 +E: ID_BUS=usb +E: ID_USB_INTERFACES=:090000: +E: ID_VENDOR_FROM_DATABASE=Linux Foundation +E: ID_AUTOSUSPEND=1 +E: ID_MODEL_FROM_DATABASE=2.0 root hub +E: ID_PATH=pci-0000:00:14.0 +E: ID_PATH_TAG=pci-0000_00_14_0 +E: ID_FOR_SEAT=usb-pci-0000_00_14_0 +E: TAGS=:seat: +E: CURRENT_TAGS=:seat: +A: authorized=1\n +A: authorized_default=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=09\n +A: bDeviceProtocol=01\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=64\n +A: bMaxPower=0mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0513\n +A: bmAttributes=e0\n +A: busnum=1\n +A: configuration= +H: descriptors=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C +A: dev=189:0\n +A: devnum=1\n +A: devpath=0\n +L: driver=../../../../bus/usb/drivers/usb +L: firmware_node=../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:4c/device:4d +A: idProduct=0002\n +A: idVendor=1d6b\n +A: interface_authorized_default=1\n +A: ltm_capable=no\n +A: manufacturer=Linux 5.13.12-200.fc34.x86_64 xhci-hcd\n +A: maxchild=16\n +A: power/active_duration=767973436\n +A: power/autosuspend=0\n +A: power/autosuspend_delay_ms=0\n +A: power/connected_duration=767973436\n +A: power/control=auto\n +A: power/level=auto\n +A: power/runtime_active_time=767973433\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/wakeup=disabled\n +A: power/wakeup_abort_count=\n +A: power/wakeup_active=\n +A: power/wakeup_active_count=\n +A: power/wakeup_count=\n +A: power/wakeup_expire_count=\n +A: power/wakeup_last_time_ms=\n +A: power/wakeup_max_time_ms=\n +A: power/wakeup_total_time_ms=\n +A: product=xHCI Host Controller\n +A: quirks=0x0\n +A: removable=unknown\n +A: rx_lanes=1\n +A: serial=0000:00:14.0\n +A: speed=480\n +A: tx_lanes=1\n +A: urbnum=1174\n +A: version= 2.00\n + +P: /devices/pci0000:00/0000:00:14.0 +E: DRIVER=xhci_hcd +E: PCI_CLASS=C0330 +E: PCI_ID=8086:A36D +E: PCI_SUBSYS_ID=17AA:312A +E: PCI_SLOT_NAME=0000:00:14.0 +E: MODALIAS=pci:v00008086d0000A36Dsv000017AAsd0000312Abc0Csc03i30 +E: SUBSYSTEM=pci +E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller +E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller +E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI +E: ID_VENDOR_FROM_DATABASE=Intel Corporation +E: ID_MODEL_FROM_DATABASE=Cannon Lake PCH USB 3.1 xHCI Host Controller +A: ari_enabled=0\n +A: broken_parity_status=0\n +A: class=0x0c0330\n +H: config=86806DA3060490021030030C00008000040032B1000000000000000000000000000000000000000000000000AA172A31000000007000000000000000FF010000FD0134808FC6FF8300000000000000007F6DDC0F00000000420DD90700000000316000000000000000000000000000000180C2C1080000000000000000000000059087009802E0FE0000000000000000090014F01000400100000000C10A080000080E00001800008F400200000100006000000008020000010000000400000090000000001800000005000000000000000300000C0000004000000080000000030000000000000000000000000000000000000000000000B50F110112000000 +A: consistent_dma_mask_bits=64\n +A: d3cold_allowed=1\n +A: dbc=disabled\n +A: device=0xa36d\n +A: dma_mask_bits=64\n +L: driver=../../../bus/pci/drivers/xhci_hcd +A: driver_override=(null)\n +A: enable=1\n +L: firmware_node=../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:4c +A: index=3\n +A: irq=125\n +A: label=Onboard - Other\n +A: local_cpulist=0-5\n +A: local_cpus=3f\n +A: modalias=pci:v00008086d0000A36Dsv000017AAsd0000312Abc0Csc03i30\n +A: msi_bus=1\n +A: msi_irqs/125=msi\n +A: numa_node=-1\n +A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 15 20 2112 20\nxHCI ring segments 52 76 4096 76\nbuffer-2048 0 32 2048 16\nbuffer-512 0 32 512 4\nbuffer-128 3 32 128 1\nbuffer-32 0 128 32 1\n +A: power/control=on\n +A: power/runtime_active_time=767973582\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/wakeup=enabled\n +A: power/wakeup_abort_count=0\n +A: power/wakeup_active=0\n +A: power/wakeup_active_count=59\n +A: power/wakeup_count=0\n +A: power/wakeup_expire_count=59\n +A: power/wakeup_last_time_ms=763021754\n +A: power/wakeup_max_time_ms=108\n +A: power/wakeup_total_time_ms=6149\n +A: power_state=D0\n +A: resource=0x00000000b1320000 0x00000000b132ffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n +A: revision=0x10\n +A: subsystem_device=0x312a\n +A: subsystem_vendor=0x17aa\n +A: vendor=0x8086\n + diff --git a/tests/elanmoc/device b/tests/elanmoc/device index 8d47c2da..ef3400dd 100644 --- a/tests/elanmoc/device +++ b/tests/elanmoc/device @@ -23,62 +23,62 @@ E: ID_USB_INTERFACES=:ff0000: E: ID_VENDOR_FROM_DATABASE=Elan Microelectronics Corp. E: ID_PATH=pci-0000:00:14.0-usb-0:1 E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_1 -A: authorized=1 -A: avoid_reset_quirk=0 -A: bConfigurationValue=1 -A: bDeviceClass=00 -A: bDeviceProtocol=00 -A: bDeviceSubClass=00 -A: bMaxPacketSize0=64 -A: bMaxPower=100mA -A: bNumConfigurations=1 -A: bNumInterfaces= 1 -A: bcdDevice=0305 -A: bmAttributes=a0 -A: busnum=1 -A: configuration=add909c9-e67e-4126-a6f7-1e31179e27d9 +A: authorized=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=00\n +A: bDeviceProtocol=00\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=64\n +A: bMaxPower=100mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0305\n +A: bmAttributes=a0\n +A: busnum=1\n +A: configuration=add909c9-e67e-4126-a6f7-1e31179e27d9\n H: descriptors=1201000200000040F3047E0C05030102000109025300010103A0320904000008FF0000000921100100012215000705810240000107050102400001070582024000010705020240000107058302400001070503024000010705840240000107050402400001 -A: dev=189:9 -A: devnum=10 -A: devpath=1 +A: dev=189:9\n +A: devnum=10\n +A: devpath=1\n L: driver=../../../../../bus/usb/drivers/usb -A: idProduct=0c7e -A: idVendor=04f3 -A: ltm_capable=no -A: manufacturer=ELAN -A: maxchild=0 +A: idProduct=0c7e\n +A: idVendor=04f3\n +A: ltm_capable=no\n +A: manufacturer=ELAN\n +A: maxchild=0\n L: port=../1-0:1.0/usb1-port1 -A: power/active_duration=94712 -A: power/async=enabled -A: power/autosuspend=2 -A: power/autosuspend_delay_ms=2000 -A: power/connected_duration=94712 -A: power/control=on -A: power/level=on -A: power/persist=1 -A: power/runtime_active_kids=0 -A: power/runtime_active_time=94436 -A: power/runtime_enabled=forbidden -A: power/runtime_status=active -A: power/runtime_suspended_time=0 -A: power/runtime_usage=1 -A: power/wakeup=disabled -A: power/wakeup_abort_count= -A: power/wakeup_active= -A: power/wakeup_active_count= -A: power/wakeup_count= -A: power/wakeup_expire_count= -A: power/wakeup_last_time_ms= -A: power/wakeup_max_time_ms= -A: power/wakeup_total_time_ms= -A: product=ELAN:ARM-M4 -A: quirks=0x0 -A: removable=removable -A: rx_lanes=1 -A: speed=12 -A: tx_lanes=1 -A: urbnum=12 -A: version= 2.00 +A: power/active_duration=94712\n +A: power/async=enabled\n +A: power/autosuspend=2\n +A: power/autosuspend_delay_ms=2000\n +A: power/connected_duration=94712\n +A: power/control=on\n +A: power/level=on\n +A: power/persist=1\n +A: power/runtime_active_kids=0\n +A: power/runtime_active_time=94436\n +A: power/runtime_enabled=forbidden\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/runtime_usage=1\n +A: power/wakeup=disabled\n +A: power/wakeup_abort_count=\n +A: power/wakeup_active=\n +A: power/wakeup_active_count=\n +A: power/wakeup_count=\n +A: power/wakeup_expire_count=\n +A: power/wakeup_last_time_ms=\n +A: power/wakeup_max_time_ms=\n +A: power/wakeup_total_time_ms=\n +A: product=ELAN:ARM-M4\n +A: quirks=0x0\n +A: removable=removable\n +A: rx_lanes=1\n +A: speed=12\n +A: tx_lanes=1\n +A: urbnum=12\n +A: version= 2.00\n P: /devices/pci0000:00/0000:00:14.0/usb1 N: bus/usb/001/001=12010002090001406B1D020004050302010109021900010100E0000904000001090000000705810304000C @@ -109,63 +109,63 @@ E: ID_PATH=pci-0000:00:14.0 E: ID_PATH_TAG=pci-0000_00_14_0 E: ID_FOR_SEAT=usb-pci-0000_00_14_0 E: TAGS=:seat: -A: authorized=1 -A: authorized_default=1 -A: avoid_reset_quirk=0 -A: bConfigurationValue=1 -A: bDeviceClass=09 -A: bDeviceProtocol=01 -A: bDeviceSubClass=00 -A: bMaxPacketSize0=64 -A: bMaxPower=0mA -A: bNumConfigurations=1 -A: bNumInterfaces= 1 -A: bcdDevice=0504 -A: bmAttributes=e0 -A: busnum=1 -A: configuration= +A: authorized=1\n +A: authorized_default=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=09\n +A: bDeviceProtocol=01\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=64\n +A: bMaxPower=0mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0504\n +A: bmAttributes=e0\n +A: busnum=1\n +A: configuration=\n H: descriptors=12010002090001406B1D020004050302010109021900010100E0000904000001090000000705810304000C -A: dev=189:0 -A: devnum=1 -A: devpath=0 +A: dev=189:0\n +A: devnum=1\n +A: devpath=0\n L: driver=../../../../bus/usb/drivers/usb -A: idProduct=0002 -A: idVendor=1d6b -A: interface_authorized_default=1 -A: ltm_capable=no -A: manufacturer=Linux 5.4.0-42-generic xhci-hcd -A: maxchild=12 -A: power/active_duration=74604360 -A: power/async=enabled -A: power/autosuspend=0 -A: power/autosuspend_delay_ms=0 -A: power/connected_duration=74606456 -A: power/control=auto -A: power/level=auto -A: power/runtime_active_kids=4 -A: power/runtime_active_time=74605838 -A: power/runtime_enabled=enabled -A: power/runtime_status=active -A: power/runtime_suspended_time=0 -A: power/runtime_usage=0 -A: power/wakeup=disabled -A: power/wakeup_abort_count= -A: power/wakeup_active= -A: power/wakeup_active_count= -A: power/wakeup_count= -A: power/wakeup_expire_count= -A: power/wakeup_last_time_ms= -A: power/wakeup_max_time_ms= -A: power/wakeup_total_time_ms= -A: product=xHCI Host Controller -A: quirks=0x0 -A: removable=unknown -A: rx_lanes=1 -A: serial=0000:00:14.0 -A: speed=480 -A: tx_lanes=1 -A: urbnum=490 -A: version= 2.00 +A: idProduct=0002\n +A: idVendor=1d6b\n +A: interface_authorized_default=1\n +A: ltm_capable=no\n +A: manufacturer=Linux 5.4.0-42-generic xhci-hcd\n +A: maxchild=12\n +A: power/active_duration=74604360\n +A: power/async=enabled\n +A: power/autosuspend=0\n +A: power/autosuspend_delay_ms=0\n +A: power/connected_duration=74606456\n +A: power/control=auto\n +A: power/level=auto\n +A: power/runtime_active_kids=4\n +A: power/runtime_active_time=74605838\n +A: power/runtime_enabled=enabled\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/runtime_usage=0\n +A: power/wakeup=disabled\n +A: power/wakeup_abort_count=\n +A: power/wakeup_active=\n +A: power/wakeup_active_count=\n +A: power/wakeup_count=\n +A: power/wakeup_expire_count=\n +A: power/wakeup_last_time_ms=\n +A: power/wakeup_max_time_ms=\n +A: power/wakeup_total_time_ms=\n +A: product=xHCI Host Controller\n +A: quirks=0x0\n +A: removable=unknown\n +A: rx_lanes=1\n +A: serial=0000:00:14.0\n +A: speed=480\n +A: tx_lanes=1\n +A: urbnum=490\n +A: version= 2.00\n P: /devices/pci0000:00/0000:00:14.0 E: DRIVER=xhci_hcd @@ -180,46 +180,46 @@ E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI E: ID_VENDOR_FROM_DATABASE=Intel Corporation E: ID_MODEL_FROM_DATABASE=Cannon Point-LP USB 3.1 xHCI Controller -A: ari_enabled=0 -A: broken_parity_status=0 -A: class=0x0c0330 +A: ari_enabled=0\n +A: broken_parity_status=0\n +A: class=0x0c0330\n H: config=8680ED9D060490023030030C00008000040030A10000000000000000000000000000000000000000000000003C10EF85000000007000000000000000FF010000FD0134808FC6FF8300000000000000007F6DDC0F00000000181C030400000000316000000000000000000000000000000180C2C1080000000000000000000000059087007802E0FE0000000000000000090014F01000400100000000C10A080000080E00001800008F40020000010000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000B50F300112000000 -A: consistent_dma_mask_bits=64 -A: d3cold_allowed=1 -A: dbc=disabled -A: device=0x9ded -A: dma_mask_bits=64 +A: consistent_dma_mask_bits=64\n +A: d3cold_allowed=1\n +A: dbc=disabled\n +A: device=0x9ded\n +A: dma_mask_bits=64\n L: driver=../../../bus/pci/drivers/xhci_hcd -A: driver_override=(null) -A: enable=1 -A: irq=124 -A: local_cpulist=0-3 -A: local_cpus=f -A: modalias=pci:v00008086d00009DEDsv0000103Csd000085EFbc0Csc03i30 -A: msi_bus=1 -A: msi_irqs/124=msi -A: numa_node=-1 -A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 32 128 1\nbuffer-32 0 0 32 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 11 12 2112 12\nxHCI ring segments 54 54 4096 54\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 9 32 128 1\nbuffer-32 0 0 32 0 -A: power/async=enabled -A: power/control=auto -A: power/runtime_active_kids=1 -A: power/runtime_active_time=74606194 -A: power/runtime_enabled=enabled -A: power/runtime_status=active -A: power/runtime_suspended_time=0 -A: power/runtime_usage=0 -A: power/wakeup=enabled -A: power/wakeup_abort_count=0 -A: power/wakeup_active=0 -A: power/wakeup_active_count=0 -A: power/wakeup_count=0 -A: power/wakeup_expire_count=0 -A: power/wakeup_last_time_ms=0 -A: power/wakeup_max_time_ms=0 -A: power/wakeup_total_time_ms=0 -A: resource=0x00000000a1300000 0x00000000a130ffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000 -A: revision=0x30 -A: subsystem_device=0x85ef -A: subsystem_vendor=0x103c -A: vendor=0x8086 +A: driver_override=(null)\n +A: enable=1\n +A: irq=124\n +A: local_cpulist=0-3\n +A: local_cpus=f\n +A: modalias=pci:v00008086d00009DEDsv0000103Csd000085EFbc0Csc03i30\n +A: msi_bus=1\n +A: msi_irqs/124=msi\n +A: numa_node=-1\n +A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 32 128 1\nbuffer-32 0 0 32 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 11 12 2112 12\nxHCI ring segments 54 54 4096 54\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 9 32 128 1\nbuffer-32 0 0 32 0\n +A: power/async=enabled\n +A: power/control=auto\n +A: power/runtime_active_kids=1\n +A: power/runtime_active_time=74606194\n +A: power/runtime_enabled=enabled\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/runtime_usage=0\n +A: power/wakeup=enabled\n +A: power/wakeup_abort_count=0\n +A: power/wakeup_active=0\n +A: power/wakeup_active_count=0\n +A: power/wakeup_count=0\n +A: power/wakeup_expire_count=0\n +A: power/wakeup_last_time_ms=0\n +A: power/wakeup_max_time_ms=0\n +A: power/wakeup_total_time_ms=0\n +A: resource=0x00000000a1300000 0x00000000a130ffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n +A: revision=0x30\n +A: subsystem_device=0x85ef\n +A: subsystem_vendor=0x103c\n +A: vendor=0x8086\n diff --git a/tests/goodixmoc/custom.ioctl b/tests/goodixmoc/custom.ioctl deleted file mode 100644 index 496b43c4..00000000 --- a/tests/goodixmoc/custom.ioctl +++ /dev/null @@ -1,217 +0,0 @@ -@DEV /dev/bus/usb/003/008 -USBDEVFS_GET_CAPABILITIES 0 FD010000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 13 13 0 D00000000500BA4500611A297F - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00000008009D6200D00000239572F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 192 0 D0000001850067980002FE4150500000000000303130303032343744454C4C00000000474D3138384230004746353238380000312E30342E30352E31302E3530000000000000000000000000000000000000005553420000000000564253000000000030303030303030330000000000000000000000000000000000000000000000000000000000003B5CB43C000000000000555342000000000056425300000000003030303030303033000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 140 140 0 C001000184008E71000064500F41080A1800002300000101000101010100010105050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B737316F0558B152 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00000208004BB400C001005F5A6B1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 C00100030700D12E0014140342C8AE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 12 12 0 E00100020400BE41BBC7BACE - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA000004080036C900E00101C26FC596000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 E0010005080054AB00141441240D0ECF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 13 13 0 A6000003050022DD00CA3B9C30 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000060800E01F00A60001BCF2ED17000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A60000070600B64900007A6860130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A20000040700BA45000F41625785F3 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000080800CC3300A20001BA8679AC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A20000090C00BC430054640027004D0084CD5EED0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 44 44 0 A500000524009F60000000000000000000000000000000000000000000000000000000000000000048D9D8CB - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00000A08001AE500A5000172CD1245000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A500000B050008F703C6DBFA26000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 13 13 0 A100000605003DC200632D10DE - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00000C0800679800A100014526FF87000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A100000D25007F8000D7843025CC713EA1543DF81EBAAF6BE244543EB9F4BC6FA74E8F246A711CD8C3EA54665F00000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A2000007070007F8000F41630A457A - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00000E0800B14E00A2000151C59D69000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A200000F0C00C13E003E620027005900101FD1980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A0000008070012ED016450F8E6B5D9 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00001008003FC000A0000187F37724000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A000001107008A7500000002FCFB4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 13 13 0 B0020009050009F6004270904E - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000120800E91600B00201386F43E6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 128 0 B002001345007788008A009C009400880008009A0099008B00080008009100850000000000000000008F00A4009B0090008F00A100A000940088009A0097008D000000000000000000BEDDBBB29400880008009A0099008B00080008009100850000000000000000008F00A4009B0090008F00A100A000940088009A0097008D -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A200000A07009669000F41D397DA08 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000140800946B00A200014F39330E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A20000150C00E41B004E640027004F00755632510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A000000B0700AF50016450F9BB7550 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA000016080042BD00A000016CB093E1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A00000170700F708000000BAA9831600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 13 13 0 B002000C0500C93600FFA00844 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00001808006E9100B0020144AD1E73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 128 0 B00200194500F00F008C009C009600080086009D0097008E00810092009100850000000000000000008F00A4009A008F008E00A1009F00920087009A0096008C000000000000000000E3A1F2A19600080086009D0097008E00810092009100850000000000000000008F00A4009A008F008E00A1009F00920087009A0096008C -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A200000D0700807F000F41ABF4CD98 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00001A0800B84700A2000195E5AEB2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A200001B0C00C8370048640027005A00021B15CE0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A000000E07006F9001645040B3CD87 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00001C0800C53A00A000011072CE74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A000001D0700708F003A000B89A2D100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 13 13 0 B002000F0500748B00E76F715E - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00001E080013EC00B00201AFEEFAB6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 128 0 B002001F45008D720008009900920086008800960097008D007F0091008D00850000000000000000008F00A4009B0090008F00A100A000930087009A0096008D00000000000000000069C4E77C920086008800960097008D007F0091008D00850000000000000000008F00A4009B0090008F00A100A000930087009A0096008D -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A20000100700B34C000F4148456C7B - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000200800DE2100A2000173C16EC1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A20000210C00AE510048640027005500DD002B870000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A000001107008A750164506269C323 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA000022080008F700A000015048CE2E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A00000230700BD420000008C0CEEF100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 13 13 0 B0020012050047B8005B407F33 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000240800758A00B0020149CA3AC5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 128 0 B00200254500EB14008D00A100900087000800980099008C00080008000800080000000000000000008F00A3009A008F008E00A0009F00930087009A0096008C0000000000000000000F8D1061900087000800980099008C00080008000800080000000000000000008F00A3009A008F008E00A0009F00930087009A0096008C -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A200001307000EF1000F414918ACF2 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000260800A35C00A2000198828A04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A20000270C00D32C0057640027004E0017D2351D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A000001407004AB5016450DB617BF4 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00002808008F7000A000012C8A93BB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A000002907003AC500000044F2661300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 13 13 0 B0020015050051AE00F61A492A - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00002A080059A600B002019316A779000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 128 0 B002002B4500C7380089009C00920008008A00990098008A007F0093008E00860000000000000000008F00A4009A008F008E00A100A000930087009A0096008D000000000000000000A0269EE8920008008A00990098008A007F0093008E00860000000000000000008F00A4009A008F008E00A100A000930087009A0096008D -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A20000160700CE31000F41F0101425 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00002C080024DB00A20001E440D791000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A200002D0C0054AB004A64002700590057B20D220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A00000170700F708016450DA3CBB7D - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00002E0800F20D00A00001C7C9777E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A000002F070047B8004C4C4EAAB86E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 13 13 0 B00200180500C03F00B4605C02 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00003008007C8300B002018DEA091E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 128 0 B00200314500E21D00080008000800080088009A0096008F00820092009000080000000000000000008F00A3009A008F008E00A000A000930087009A0096008C000000000000000000E0BA753D0800080088009A0096008F00820092009000080000000000000000008F00A3009A008F008E00A000A000930087009A0096008C -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A200001907008976000F4181E62410 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000320800AA5500A200015CA2B9DF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A20000330C00DA25005464002700500088A694DC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A000001A070066990164506AA1240F - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000340800D72800A00001D935D919000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A00000350700629D0000006775A83E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 13 13 0 B002001B05007D8200ACAF2518 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA000036080001FE00B0020166A9EDDB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 128 0 B002003745009F600008000800080008008600970095000800830090008D00880000000000000000008F00A3009A008F008E00A100A000930087009A0096008C000000000000000000F054EC42080008008600970095000800830090008D00880000000000000000008F00A3009A008F008E00A100A000930087009A0096008C -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A200001C070049B6000F4138EE9CC7 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00003808002DD200A200012060E44A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A20000390C005DA2004A640027004F005D569D1A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A000001D0700708F01645012C2339F - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00003A0800FB0400A0000103E944A5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A000003B07004EB1000000D6B5F7C500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A300001E0700B649000F41F8F75650 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00003C0800867900A30001B114E662000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A300003D0500629D009DDA98C4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 114 114 0 A400001F6A001EE1640043010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E4650312D30303030303030302D302D30303030303030302D6E6F626F647900E6F6BD05 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00003E080050AF00A40001795F8D8B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A400003F05006B940099962233000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 12 12 0 E0000020040049B6AEA0E8AB - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00004008001BE400E00001D5F1C38E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 E000004108001BE400000000315A099D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 13 13 0 A60000210500B74800B39B168D - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000420800CD3200A60001EA5DF016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 128 0 A60000436C00EC130001640043010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E4650312D30303030303030302D302D30303030303030302D6E6F626F647900FA60A49A000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 12 12 0 E00100220400FD0253E4FA3B - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000440800B04F00E0010132DE18BE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 E00100450800D22D000000002B1189D3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A20000230700EF100100238AF5F029 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000460800669900A2000190EB3938000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A20000470C0016E9004C640027004D005C10F4310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 44 44 0 A50000242400B7480000000000000000000000000000000000000000000000000000000000000000664B5D3F - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00004808004AB500A50001CF21EB81000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 192 0 A50000499200D22D004C642A00000000640043010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E4650312D30303030303030302D302D30303030303030302D6E6F626F647900954F9F36EAEDD0364E04D4A2B430F0D25BF63D97E631EC0F0F86A6A3DCDEF50C82BB7E8C2D30303030303030302D302D30303030303030302D6E6F626F647900954F9F36EAEDD0364E04 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 12 12 0 E000002504008976203A9633 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00004A08009C6300E00001A9339E1B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 E000004B08009C63004C642A9C8BFEAB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 12 12 0 E0010026040056A9D15D8DC2 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00004C0800E11E00E00101034161C7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 E001004D0800837C004C642ACB9D5A09000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 15 15 0 A2000027070044BB010023F3CB2730 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00004E080037C800A20001A1744041000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A200004F0C0047B80052640027004D00E19CE96F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 44 44 0 A500002824004DB200000000000000000000000000000000000000000000000000000000000000003DB8032C - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA0000500800B94600A500019C80610A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 192 0 A5000051920021DE0052642A00000000640043010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E4650312D30303030303030302D302D30303030303030302D6E6F626F647900954F9F36EAEDD0364E04D4A2B430F0D25BF63D97E631EC0F0F86A6A3DCDEF50CCC7D08E82D30303030303030302D302D30303030303030302D6E6F626F647900954F9F36EAEDD0364E04 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 12 12 0 E00000290400738C14C55D45 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA00005208006F9000E00001FA921490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 E000005308006F900052642AB5A4CC36000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -USBDEVFS_REAPURBNDELAY 0 3 1 0 0 114 114 0 A700002A6A0044BB640043010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E4650312D30303030303030302D302D30303030303030302D6E6F626F6479001CF66539 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 AA000054080012ED00A70001544A2520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 0 0 - USBDEVFS_REAPURBNDELAY 0 3 131 0 0 2048 64 0 A7000055050052AD00C5D5FE86000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/tests/goodixmoc/custom.pcapng b/tests/goodixmoc/custom.pcapng new file mode 100644 index 00000000..eb58d865 Binary files /dev/null and b/tests/goodixmoc/custom.pcapng differ diff --git a/tests/goodixmoc/device b/tests/goodixmoc/device index a076caa1..9fb39e59 100644 --- a/tests/goodixmoc/device +++ b/tests/goodixmoc/device @@ -1,108 +1,105 @@ -P: /devices/pci0000:00/0000:00:14.0/usb3/3-2 -N: bus/usb/003/008=12010002EF000040C627405800010102030109022000010103A0320904000002FF0000040705830240000007050102400000 -E: DEVNAME=/dev/bus/usb/003/008 +P: /devices/pci0000:00/0000:00:14.0/usb1/1-3 +N: bus/usb/001/053=12010002EF000040C627966400010102030109022000010103A0320904000002FF0000040705830240000007050102400000 +E: DEVNAME=/dev/bus/usb/001/053 E: DEVTYPE=usb_device E: DRIVER=usb -E: PRODUCT=27c6/5840/100 +E: PRODUCT=27c6/6496/100 E: TYPE=239/0/0 -E: BUSNUM=003 -E: DEVNUM=008 +E: BUSNUM=001 +E: DEVNUM=053 E: MAJOR=189 -E: MINOR=263 +E: MINOR=52 E: SUBSYSTEM=usb E: ID_VENDOR=Goodix_Technology_Co.__Ltd. E: ID_VENDOR_ENC=Goodix\x20Technology\x20Co.\x2c\x20Ltd. E: ID_VENDOR_ID=27c6 E: ID_MODEL=Goodix_USB2.0_MISC E: ID_MODEL_ENC=Goodix\x20USB2.0\x20MISC -E: ID_MODEL_ID=5840 +E: ID_MODEL_ID=6496 E: ID_REVISION=0100 -E: ID_SERIAL=Goodix_Technology_Co.__Ltd._Goodix_USB2.0_MISC_UIDE1AD5CBA_XXXX_MOC_B0 -E: ID_SERIAL_SHORT=UIDE1AD5CBA_XXXX_MOC_B0 +E: ID_SERIAL=Goodix_Technology_Co.__Ltd._Goodix_USB2.0_MISC_XXXX_MOC_B0 +E: ID_SERIAL_SHORT=XXXX_MOC_B0 E: ID_BUS=usb E: ID_USB_INTERFACES=:ff0000: E: ID_VENDOR_FROM_DATABASE=Shenzhen Goodix Technology Co.,Ltd. -E: ID_PATH=pci-0000:00:14.0-usb-0:2 -E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_2 -E: LIBFPRINT_DRIVER=Goodix MOC Fingerprint Sensor -A: authorized=1 -A: avoid_reset_quirk=0 -A: bConfigurationValue=1 -A: bDeviceClass=ef -A: bDeviceProtocol=00 -A: bDeviceSubClass=00 -A: bMaxPacketSize0=64 -A: bMaxPower=100mA -A: bNumConfigurations=1 -A: bNumInterfaces= 1 -A: bcdDevice=0100 -A: bmAttributes=a0 -A: busnum=3\n -A: configuration=UIDE1AD5CBA_XXXX_MOC_B0 -H: descriptors=12010002EF000040C627405800010102030109022000010103A0320904000002FF0000040705830240000007050102400000 -A: dev=189:263 -A: devnum=8\n -A: devpath=2 +E: ID_AUTOSUSPEND=1 +E: ID_PATH=pci-0000:00:14.0-usb-0:3 +E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_3 +A: authorized=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=ef\n +A: bDeviceProtocol=00\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=64\n +A: bMaxPower=100mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0100\n +A: bmAttributes=a0\n +A: busnum=1\n +A: configuration=XXXX_MOC_B0\n +H: descriptors=12010002EF000040C627966400010102030109022000010103A0320904000002FF0000040705830240000007050102400000 +A: dev=189:52\n +A: devnum=53\n +A: devpath=3\n L: driver=../../../../../bus/usb/drivers/usb -A: idProduct=5840 -A: idVendor=27c6 -A: ltm_capable=no -A: manufacturer=Goodix Technology Co., Ltd. -A: maxchild=0 -L: port=../3-0:1.0/usb3-port2 -A: power/active_duration=2684 -A: power/async=enabled -A: power/autosuspend=2 -A: power/autosuspend_delay_ms=2000 -A: power/connected_duration=54348 -A: power/control=auto -A: power/level=auto -A: power/persist=1 -A: power/runtime_active_kids=0 -A: power/runtime_active_time=2518 -A: power/runtime_enabled=enabled -A: power/runtime_status=active -A: power/runtime_suspended_time=51550 -A: power/runtime_usage=0 -A: power/wakeup=disabled -A: power/wakeup_abort_count= -A: power/wakeup_active= -A: power/wakeup_active_count= -A: power/wakeup_count= -A: power/wakeup_expire_count= -A: power/wakeup_last_time_ms= -A: power/wakeup_max_time_ms= -A: power/wakeup_total_time_ms= -A: product=Goodix USB2.0 MISC -A: quirks=0x0 -A: removable=removable -A: rx_lanes=1 -A: serial=UIDE1AD5CBA_XXXX_MOC_B0 -A: speed=12 -A: tx_lanes=1 -A: urbnum=15 -A: version= 2.00 +L: firmware_node=../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1c/device:1d/device:20 +A: idProduct=6496\n +A: idVendor=27c6\n +A: ltm_capable=no\n +A: manufacturer=Goodix Technology Co., Ltd.\n +A: maxchild=0\n +L: port=../1-0:1.0/usb1-port3 +A: power/active_duration=29262\n +A: power/autosuspend=2\n +A: power/autosuspend_delay_ms=2000\n +A: power/connected_duration=57399\n +A: power/control=auto\n +A: power/level=auto\n +A: power/persist=1\n +A: power/runtime_active_time=29308\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=27850\n +A: power/wakeup=disabled\n +A: power/wakeup_abort_count=\n +A: power/wakeup_active=\n +A: power/wakeup_active_count=\n +A: power/wakeup_count=\n +A: power/wakeup_expire_count=\n +A: power/wakeup_last_time_ms=\n +A: power/wakeup_max_time_ms=\n +A: power/wakeup_total_time_ms=\n +A: product=Goodix USB2.0 MISC\n +A: quirks=0x0\n +A: removable=removable\n +A: rx_lanes=1\n +A: serial=XXXX_MOC_B0\n +A: speed=12\n +A: tx_lanes=1\n +A: urbnum=394\n +A: version= 2.00\n -P: /devices/pci0000:00/0000:00:14.0/usb3 -N: bus/usb/003/001=12010002090001406B1D020008050302010109021900010100E0000904000001090000000705810304000C -E: DEVNAME=/dev/bus/usb/003/001 +P: /devices/pci0000:00/0000:00:14.0/usb1 +N: bus/usb/001/001=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C +E: DEVNAME=/dev/bus/usb/001/001 E: DEVTYPE=usb_device E: DRIVER=usb -E: PRODUCT=1d6b/2/508 +E: PRODUCT=1d6b/2/513 E: TYPE=9/0/1 -E: BUSNUM=003 +E: BUSNUM=001 E: DEVNUM=001 E: MAJOR=189 -E: MINOR=256 +E: MINOR=0 E: SUBSYSTEM=usb -E: ID_VENDOR=Linux_5.8.0-38-generic_xhci-hcd -E: ID_VENDOR_ENC=Linux\x205.8.0-38-generic\x20xhci-hcd +E: ID_VENDOR=Linux_5.13.15-200.fc34.x86_64_xhci-hcd +E: ID_VENDOR_ENC=Linux\x205.13.15-200.fc34.x86_64\x20xhci-hcd E: ID_VENDOR_ID=1d6b E: ID_MODEL=xHCI_Host_Controller E: ID_MODEL_ENC=xHCI\x20Host\x20Controller E: ID_MODEL_ID=0002 -E: ID_REVISION=0508 -E: ID_SERIAL=Linux_5.8.0-38-generic_xhci-hcd_xHCI_Host_Controller_0000:00:14.0 +E: ID_REVISION=0513 +E: ID_SERIAL=Linux_5.13.15-200.fc34.x86_64_xhci-hcd_xHCI_Host_Controller_0000:00:14.0 E: ID_SERIAL_SHORT=0000:00:14.0 E: ID_BUS=usb E: ID_USB_INTERFACES=:090000: @@ -113,62 +110,114 @@ E: ID_PATH=pci-0000:00:14.0 E: ID_PATH_TAG=pci-0000_00_14_0 E: ID_FOR_SEAT=usb-pci-0000_00_14_0 E: TAGS=:seat: -A: authorized=1 -A: authorized_default=1 -A: avoid_reset_quirk=0 -A: bConfigurationValue=1 -A: bDeviceClass=09 -A: bDeviceProtocol=01 -A: bDeviceSubClass=00 -A: bMaxPacketSize0=64 -A: bMaxPower=0mA -A: bNumConfigurations=1 -A: bNumInterfaces= 1 -A: bcdDevice=0508 -A: bmAttributes=e0 -A: busnum=3\n -A: configuration= -H: descriptors=12010002090001406B1D020008050302010109021900010100E0000904000001090000000705810304000C -A: dev=189:256 +E: CURRENT_TAGS=:seat: +A: authorized=1\n +A: authorized_default=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=09\n +A: bDeviceProtocol=01\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=64\n +A: bMaxPower=0mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0513\n +A: bmAttributes=e0\n +A: busnum=1\n +A: configuration=\n +H: descriptors=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C +A: dev=189:0\n A: devnum=1\n -A: devpath=0 +A: devpath=0\n L: driver=../../../../bus/usb/drivers/usb -A: idProduct=0002 -A: idVendor=1d6b -A: interface_authorized_default=1 -A: ltm_capable=no -A: manufacturer=Linux 5.8.0-38-generic xhci-hcd -A: maxchild=4 -A: power/active_duration=2790916 -A: power/async=enabled -A: power/autosuspend=0 -A: power/autosuspend_delay_ms=0 -A: power/connected_duration=15607832 -A: power/control=auto -A: power/level=auto -A: power/runtime_active_kids=1 -A: power/runtime_active_time=2790874 -A: power/runtime_enabled=enabled -A: power/runtime_status=active -A: power/runtime_suspended_time=12816956 -A: power/runtime_usage=0 -A: power/wakeup=disabled -A: power/wakeup_abort_count= -A: power/wakeup_active= -A: power/wakeup_active_count= -A: power/wakeup_count= -A: power/wakeup_expire_count= -A: power/wakeup_last_time_ms= -A: power/wakeup_max_time_ms= -A: power/wakeup_total_time_ms= -A: product=xHCI Host Controller -A: quirks=0x0 -A: removable=unknown -A: rx_lanes=1 -A: serial=0000:00:14.0 -A: speed=480 -A: tx_lanes=1 -A: urbnum=584 -A: version= 2.00 +L: firmware_node=../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1c/device:1d +A: idProduct=0002\n +A: idVendor=1d6b\n +A: interface_authorized_default=1\n +A: ltm_capable=no\n +A: manufacturer=Linux 5.13.15-200.fc34.x86_64 xhci-hcd\n +A: maxchild=12\n +A: power/active_duration=219578717\n +A: power/autosuspend=0\n +A: power/autosuspend_delay_ms=0\n +A: power/connected_duration=219649620\n +A: power/control=auto\n +A: power/level=auto\n +A: power/runtime_active_time=219589127\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/wakeup=disabled\n +A: power/wakeup_abort_count=\n +A: power/wakeup_active=\n +A: power/wakeup_active_count=\n +A: power/wakeup_count=\n +A: power/wakeup_expire_count=\n +A: power/wakeup_last_time_ms=\n +A: power/wakeup_max_time_ms=\n +A: power/wakeup_total_time_ms=\n +A: product=xHCI Host Controller\n +A: quirks=0x0\n +A: removable=unknown\n +A: rx_lanes=1\n +A: serial=0000:00:14.0\n +A: speed=480\n +A: tx_lanes=1\n +A: urbnum=4325\n +A: version= 2.00\n +P: /devices/pci0000:00/0000:00:14.0 +E: DRIVER=xhci_hcd +E: PCI_CLASS=C0330 +E: PCI_ID=8086:9DED +E: PCI_SUBSYS_ID=17AA:2292\n +E: PCI_SLOT_NAME=0000:00:14.0 +E: MODALIAS=pci:v00008086d00009DEDsv000017AAsd00002292bc0Csc03i30 +E: SUBSYSTEM=pci +E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller +E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller +E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI +E: ID_VENDOR_FROM_DATABASE=Intel Corporation +E: ID_AUTOSUSPEND=1 +E: ID_MODEL_FROM_DATABASE=Cannon Point-LP USB 3.1 xHCI Controller +A: ari_enabled=0\n +A: broken_parity_status=0\n +A: class=0x0c0330\n +H: config=8680ED9D060490021130030C00008000040022EA000000000000000000000000000000000000000000000000AA179222000000007000000000000000FF010000FD0134808FC6FF8300000000000000007F6DDC0F000000004C084B0100000000316000000000000000000000000000000180C2C1080000000000000000000000059087001803E0FE0000000000000000090014F01000400100000000C10A080000080E00001800008F40020000010000000000000000000008000000040000000000000000000000000000000000000000000000000000000800000004000000000000000000000000000000000000000000000000000000B50F320112000000 +A: consistent_dma_mask_bits=64\n +A: d3cold_allowed=1\n +A: dbc=disabled\n +A: device=0x9ded\n +A: dma_mask_bits=64\n +L: driver=../../../bus/pci/drivers/xhci_hcd +A: driver_override=(null)\n +A: enable=1\n +L: firmware_node=../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1c +A: irq=128\n +A: local_cpulist=0-7\n +A: local_cpus=ff\n +A: modalias=pci:v00008086d00009DEDsv000017AAsd00002292bc0Csc03i30\n +A: msi_bus=1\n +A: msi_irqs/128=msi\n +A: numa_node=-1\n +A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 11 12 2112 12\nxHCI ring segments 46 50 4096 50\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 6 32 128 1\nbuffer-32 0 0 32 0\n +A: power/control=on\n +A: power/runtime_active_time=219589302\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/wakeup=enabled\n +A: power/wakeup_abort_count=0\n +A: power/wakeup_active=0\n +A: power/wakeup_active_count=0\n +A: power/wakeup_count=0\n +A: power/wakeup_expire_count=0\n +A: power/wakeup_last_time_ms=0\n +A: power/wakeup_max_time_ms=0\n +A: power/wakeup_total_time_ms=0\n +A: power_state=D0\n +A: resource=0x00000000ea220000 0x00000000ea22ffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n +A: revision=0x11\n +A: subsystem_device=0x2292\n +A: subsystem_vendor=0x17aa\n +A: vendor=0x8086\n diff --git a/tests/meson.build b/tests/meson.build index f49028dc..e1eaedc8 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -22,12 +22,16 @@ envs.set('FP_DRIVERS_WHITELIST', ':'.join([ envs.set('NO_AT_BRIDGE', '1') drivers_tests = [ + 'aes2501', 'aes3500', 'elan', + 'elan-cobo', 'elanmoc', 'elanspi', 'synaptics', 'upektc_img', + 'uru4000-msv2', + 'uru4000-4500', 'vfs0050', 'vfs301', 'vfs5011', @@ -37,6 +41,15 @@ drivers_tests = [ 'egis0570', ] +if get_option('introspection') + conf = configuration_data() + conf.set('SRCDIR', meson.source_root()) + conf.set('BUILDDIR', meson.build_root()) + configure_file(configuration: conf, + input: 'create-driver-test.py.in', + output: 'create-driver-test.py') +endif + if get_option('introspection') envs.prepend('GI_TYPELIB_PATH', join_paths(meson.build_root(), 'libfprint')) virtual_devices_tests = [ @@ -86,11 +99,7 @@ if get_option('introspection') endforeach foreach driver_test: drivers_tests - if driver_test.contains('-') - driver_name = driver_test.split('-')[0] - else - driver_name = driver_test - endif + driver_name = driver_test.split('-')[0] driver_envs = envs driver_envs.set('FP_DRIVERS_WHITELIST', driver_name) diff --git a/tests/umockdev-test.py b/tests/umockdev-test.py index 2419eed2..b70f3ee2 100755 --- a/tests/umockdev-test.py +++ b/tests/umockdev-test.py @@ -18,7 +18,7 @@ try: if version < (0, 13, 2): print('umockdev is too old for test to be reliable, expect random failures!') print('Please update umockdev to at least 0.13.2.') - pcap_supported = version >= (0, 16, 2) or os.getenv('CI_PROJECT_NAME') == "libfprint" + pcap_supported = version >= (0, 16, 3) or os.getenv('CI_PROJECT_NAME') == "libfprint" spi_supported = version >= (0, 16) or os.getenv('CI_PROJECT_NAME') == "libfprint" except FileNotFoundError: diff --git a/tests/uru4000-4500/capture.pcapng b/tests/uru4000-4500/capture.pcapng new file mode 100644 index 00000000..5e0168f1 Binary files /dev/null and b/tests/uru4000-4500/capture.pcapng differ diff --git a/tests/uru4000-4500/capture.png b/tests/uru4000-4500/capture.png new file mode 100644 index 00000000..0e13efc6 Binary files /dev/null and b/tests/uru4000-4500/capture.png differ diff --git a/tests/uru4000-4500/device b/tests/uru4000-4500/device new file mode 100644 index 00000000..c53b21f8 --- /dev/null +++ b/tests/uru4000-4500/device @@ -0,0 +1,220 @@ +P: /devices/pci0000:00/0000:00:14.0/usb1/1-10 +N: bus/usb/001/050=1201000200000040BA050A000301010203010902200001010080640904000002FFFFFF000705810340000807058202400000 +E: DEVNAME=/dev/bus/usb/001/050 +E: DEVTYPE=usb_device +E: DRIVER=usb +E: PRODUCT=5ba/a/103 +E: TYPE=0/0/0 +E: BUSNUM=001 +E: DEVNUM=050 +E: MAJOR=189 +E: MINOR=49 +E: SUBSYSTEM=usb +E: ID_VENDOR=DigitalPersona__Inc. +E: ID_VENDOR_ENC=DigitalPersona\x2c\x20Inc. +E: ID_VENDOR_ID=05ba +E: ID_MODEL=U.are.U®_4500_Fingerprint_Reader +E: ID_MODEL_ENC=U.are.U®\x204500\x20Fingerprint\x20Reader +E: ID_MODEL_ID=000a +E: ID_REVISION=0103 +E: ID_SERIAL=DigitalPersona__Inc._U.are.U®_4500_Fingerprint_Reader__FB0B9071-2E08-7742-BC16-2FAA247CEF66_ +E: ID_SERIAL_SHORT=_FB0B9071-2E08-7742-BC16-2FAA247CEF66_ +E: ID_BUS=usb +E: ID_USB_INTERFACES=:ffffff: +E: ID_VENDOR_FROM_DATABASE=DigitalPersona, Inc. +E: ID_AUTOSUSPEND=1 +E: ID_MODEL_FROM_DATABASE=Fingerprint Reader +E: ID_PATH=pci-0000:00:14.0-usb-0:10 +E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_10 +E: LIBFPRINT_DRIVER=Digital Persona U.are.U 4000/4000B/4500 +E: ID_FOR_SEAT=usb-pci-0000_00_14_0-usb-0_10 +E: TAGS=:seat: +E: CURRENT_TAGS=:seat: +A: authorized=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=00\n +A: bDeviceProtocol=00\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=64\n +A: bMaxPower=200mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0103\n +A: bmAttributes=80\n +A: busnum=1\n +A: configuration= +H: descriptors=1201000200000040BA050A000301010203010902200001010080640904000002FFFFFF000705810340000807058202400000 +A: dev=189:49\n +A: devnum=50\n +A: devpath=10\n +L: driver=../../../../../bus/usb/drivers/usb +L: firmware_node=../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:4c/device:4d/device:57 +A: idProduct=000a\n +A: idVendor=05ba\n +A: ltm_capable=no\n +A: manufacturer=DigitalPersona, Inc.\n +A: maxchild=0\n +L: port=../1-0:1.0/usb1-port10 +A: power/active_duration=2761\n +A: power/autosuspend=2\n +A: power/autosuspend_delay_ms=2000\n +A: power/connected_duration=118841\n +A: power/control=auto\n +A: power/level=auto\n +A: power/persist=0\n +A: power/runtime_active_time=2616\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=115982\n +A: product=U.are.U\302\256 4500 Fingerprint Reader\n +A: quirks=0x0\n +A: removable=removable\n +A: rx_lanes=1\n +A: serial={FB0B9071-2E08-7742-BC16-2FAA247CEF66}\n +A: speed=12\n +A: tx_lanes=1\n +A: urbnum=13\n +A: version= 2.00\n + +P: /devices/pci0000:00/0000:00:14.0/usb1 +N: bus/usb/001/001=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C +E: DEVNAME=/dev/bus/usb/001/001 +E: DEVTYPE=usb_device +E: DRIVER=usb +E: PRODUCT=1d6b/2/513 +E: TYPE=9/0/1 +E: BUSNUM=001 +E: DEVNUM=001 +E: MAJOR=189 +E: MINOR=0 +E: SUBSYSTEM=usb +E: ID_VENDOR=Linux_5.13.12-200.fc34.x86_64_xhci-hcd +E: ID_VENDOR_ENC=Linux\x205.13.12-200.fc34.x86_64\x20xhci-hcd +E: ID_VENDOR_ID=1d6b +E: ID_MODEL=xHCI_Host_Controller +E: ID_MODEL_ENC=xHCI\x20Host\x20Controller +E: ID_MODEL_ID=0002 +E: ID_REVISION=0513 +E: ID_SERIAL=Linux_5.13.12-200.fc34.x86_64_xhci-hcd_xHCI_Host_Controller_0000:00:14.0 +E: ID_SERIAL_SHORT=0000:00:14.0 +E: ID_BUS=usb +E: ID_USB_INTERFACES=:090000: +E: ID_VENDOR_FROM_DATABASE=Linux Foundation +E: ID_AUTOSUSPEND=1 +E: ID_MODEL_FROM_DATABASE=2.0 root hub +E: ID_PATH=pci-0000:00:14.0 +E: ID_PATH_TAG=pci-0000_00_14_0 +E: ID_FOR_SEAT=usb-pci-0000_00_14_0 +E: TAGS=:seat: +E: CURRENT_TAGS=:seat: +A: authorized=1\n +A: authorized_default=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=09\n +A: bDeviceProtocol=01\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=64\n +A: bMaxPower=0mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0513\n +A: bmAttributes=e0\n +A: busnum=1\n +A: configuration= +H: descriptors=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C +A: dev=189:0\n +A: devnum=1\n +A: devpath=0\n +L: driver=../../../../bus/usb/drivers/usb +L: firmware_node=../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:4c/device:4d +A: idProduct=0002\n +A: idVendor=1d6b\n +A: interface_authorized_default=1\n +A: ltm_capable=no\n +A: manufacturer=Linux 5.13.12-200.fc34.x86_64 xhci-hcd\n +A: maxchild=16\n +A: power/active_duration=837797629\n +A: power/autosuspend=0\n +A: power/autosuspend_delay_ms=0\n +A: power/connected_duration=837797629\n +A: power/control=auto\n +A: power/level=auto\n +A: power/runtime_active_time=837797626\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/wakeup=disabled\n +A: power/wakeup_abort_count=\n +A: power/wakeup_active=\n +A: power/wakeup_active_count=\n +A: power/wakeup_count=\n +A: power/wakeup_expire_count=\n +A: power/wakeup_last_time_ms=\n +A: power/wakeup_max_time_ms=\n +A: power/wakeup_total_time_ms=\n +A: product=xHCI Host Controller\n +A: quirks=0x0\n +A: removable=unknown\n +A: rx_lanes=1\n +A: serial=0000:00:14.0\n +A: speed=480\n +A: tx_lanes=1\n +A: urbnum=1498\n +A: version= 2.00\n + +P: /devices/pci0000:00/0000:00:14.0 +E: DRIVER=xhci_hcd +E: PCI_CLASS=C0330 +E: PCI_ID=8086:A36D +E: PCI_SUBSYS_ID=17AA:312A +E: PCI_SLOT_NAME=0000:00:14.0 +E: MODALIAS=pci:v00008086d0000A36Dsv000017AAsd0000312Abc0Csc03i30 +E: SUBSYSTEM=pci +E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller +E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller +E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI +E: ID_VENDOR_FROM_DATABASE=Intel Corporation +E: ID_MODEL_FROM_DATABASE=Cannon Lake PCH USB 3.1 xHCI Host Controller +A: ari_enabled=0\n +A: broken_parity_status=0\n +A: class=0x0c0330\n +H: config=86806DA3060490021030030C00008000040032B1000000000000000000000000000000000000000000000000AA172A31000000007000000000000000FF010000FD0134808FC6FF8300000000000000007F6DDC0F000000009A1CF40100000000316000000000000000000000000000000180C2C1080000000000000000000000059087009802E0FE0000000000000000090014F01000400100000000C10A080000080E00001800008F400200000100006000000008020000010000000400000090000000001800000005000000000000000300000C0000004000000080000000030000000000000000000000000000000000000000000000B50F110112000000 +A: consistent_dma_mask_bits=64\n +A: d3cold_allowed=1\n +A: dbc=disabled\n +A: device=0xa36d\n +A: dma_mask_bits=64\n +L: driver=../../../bus/pci/drivers/xhci_hcd +A: driver_override=(null)\n +A: enable=1\n +L: firmware_node=../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:4c +A: index=3\n +A: irq=125\n +A: label=Onboard - Other\n +A: local_cpulist=0-5\n +A: local_cpus=3f\n +A: modalias=pci:v00008086d0000A36Dsv000017AAsd0000312Abc0Csc03i30\n +A: msi_bus=1\n +A: msi_irqs/125=msi\n +A: numa_node=-1\n +A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 15 20 2112 20\nxHCI ring segments 46 76 4096 76\nbuffer-2048 0 32 2048 16\nbuffer-512 0 32 512 4\nbuffer-128 3 32 128 1\nbuffer-32 0 128 32 1\n +A: power/control=on\n +A: power/runtime_active_time=837797789\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/wakeup=enabled\n +A: power/wakeup_abort_count=0\n +A: power/wakeup_active=0\n +A: power/wakeup_active_count=67\n +A: power/wakeup_count=0\n +A: power/wakeup_expire_count=67\n +A: power/wakeup_last_time_ms=835747082\n +A: power/wakeup_max_time_ms=108\n +A: power/wakeup_total_time_ms=6974\n +A: power_state=D0\n +A: resource=0x00000000b1320000 0x00000000b132ffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n +A: revision=0x10\n +A: subsystem_device=0x312a\n +A: subsystem_vendor=0x17aa\n +A: vendor=0x8086\n + diff --git a/tests/uru4000-msv2/capture.pcapng b/tests/uru4000-msv2/capture.pcapng new file mode 100644 index 00000000..abe18687 Binary files /dev/null and b/tests/uru4000-msv2/capture.pcapng differ diff --git a/tests/uru4000-msv2/capture.png b/tests/uru4000-msv2/capture.png new file mode 100644 index 00000000..f6a43863 Binary files /dev/null and b/tests/uru4000-msv2/capture.png differ diff --git a/tests/uru4000-msv2/device b/tests/uru4000-msv2/device new file mode 100644 index 00000000..f3237b2d --- /dev/null +++ b/tests/uru4000-msv2/device @@ -0,0 +1,220 @@ +P: /devices/pci0000:00/0000:00:14.0/usb1/1-10 +N: bus/usb/001/047=12010002000000405E04CA000001010203010902200001010080820904000002FFFFFF000705810340000807058202400000 +E: DEVNAME=/dev/bus/usb/001/047 +E: DEVTYPE=usb_device +E: DRIVER=usb +E: PRODUCT=45e/ca/100 +E: TYPE=0/0/0 +E: BUSNUM=001 +E: DEVNUM=047 +E: MAJOR=189 +E: MINOR=46 +E: SUBSYSTEM=usb +E: ID_VENDOR=Microsoft +E: ID_VENDOR_ENC=Microsoft +E: ID_VENDOR_ID=045e +E: ID_MODEL=Microsoft®_Fingerprint_Reader +E: ID_MODEL_ENC=Microsoft®\x20Fingerprint\x20Reader +E: ID_MODEL_ID=00ca +E: ID_REVISION=0100 +E: ID_SERIAL=Microsoft_Microsoft®_Fingerprint_Reader__BE815DAD-15E4-0745-AA30-41DEBCAC5913_ +E: ID_SERIAL_SHORT=_BE815DAD-15E4-0745-AA30-41DEBCAC5913_ +E: ID_BUS=usb +E: ID_USB_INTERFACES=:ffffff: +E: ID_VENDOR_FROM_DATABASE=Microsoft Corp. +E: ID_AUTOSUSPEND=1 +E: ID_MODEL_FROM_DATABASE=Fingerprint Reader +E: ID_PATH=pci-0000:00:14.0-usb-0:10 +E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_10 +E: LIBFPRINT_DRIVER=Digital Persona U.are.U 4000/4000B/4500 +E: ID_FOR_SEAT=usb-pci-0000_00_14_0-usb-0_10 +E: TAGS=:seat: +E: CURRENT_TAGS=:seat: +A: authorized=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=00\n +A: bDeviceProtocol=00\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=64\n +A: bMaxPower=260mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0100\n +A: bmAttributes=80\n +A: busnum=1\n +A: configuration= +H: descriptors=12010002000000405E04CA000001010203010902200001010080820904000002FFFFFF000705810340000807058202400000 +A: dev=189:46\n +A: devnum=47\n +A: devpath=10\n +L: driver=../../../../../bus/usb/drivers/usb +L: firmware_node=../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:4c/device:4d/device:57 +A: idProduct=00ca\n +A: idVendor=045e\n +A: ltm_capable=no\n +A: manufacturer=Microsoft\n +A: maxchild=0\n +L: port=../1-0:1.0/usb1-port10 +A: power/active_duration=31642\n +A: power/autosuspend=2\n +A: power/autosuspend_delay_ms=2000\n +A: power/connected_duration=1177852\n +A: power/control=auto\n +A: power/level=auto\n +A: power/persist=0\n +A: power/runtime_active_time=31877\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=1145731\n +A: product=Microsoft\302\256 Fingerprint Reader\n +A: quirks=0x0\n +A: removable=removable\n +A: rx_lanes=1\n +A: serial={BE815DAD-15E4-0745-AA30-41DEBCAC5913}\n +A: speed=12\n +A: tx_lanes=1\n +A: urbnum=183\n +A: version= 2.00\n + +P: /devices/pci0000:00/0000:00:14.0/usb1 +N: bus/usb/001/001=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C +E: DEVNAME=/dev/bus/usb/001/001 +E: DEVTYPE=usb_device +E: DRIVER=usb +E: PRODUCT=1d6b/2/513 +E: TYPE=9/0/1 +E: BUSNUM=001 +E: DEVNUM=001 +E: MAJOR=189 +E: MINOR=0 +E: SUBSYSTEM=usb +E: ID_VENDOR=Linux_5.13.12-200.fc34.x86_64_xhci-hcd +E: ID_VENDOR_ENC=Linux\x205.13.12-200.fc34.x86_64\x20xhci-hcd +E: ID_VENDOR_ID=1d6b +E: ID_MODEL=xHCI_Host_Controller +E: ID_MODEL_ENC=xHCI\x20Host\x20Controller +E: ID_MODEL_ID=0002 +E: ID_REVISION=0513 +E: ID_SERIAL=Linux_5.13.12-200.fc34.x86_64_xhci-hcd_xHCI_Host_Controller_0000:00:14.0 +E: ID_SERIAL_SHORT=0000:00:14.0 +E: ID_BUS=usb +E: ID_USB_INTERFACES=:090000: +E: ID_VENDOR_FROM_DATABASE=Linux Foundation +E: ID_AUTOSUSPEND=1 +E: ID_MODEL_FROM_DATABASE=2.0 root hub +E: ID_PATH=pci-0000:00:14.0 +E: ID_PATH_TAG=pci-0000_00_14_0 +E: ID_FOR_SEAT=usb-pci-0000_00_14_0 +E: TAGS=:seat: +E: CURRENT_TAGS=:seat: +A: authorized=1\n +A: authorized_default=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=09\n +A: bDeviceProtocol=01\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=64\n +A: bMaxPower=0mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=0513\n +A: bmAttributes=e0\n +A: busnum=1\n +A: configuration= +H: descriptors=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C +A: dev=189:0\n +A: devnum=1\n +A: devpath=0\n +L: driver=../../../../bus/usb/drivers/usb +L: firmware_node=../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:4c/device:4d +A: idProduct=0002\n +A: idVendor=1d6b\n +A: interface_authorized_default=1\n +A: ltm_capable=no\n +A: manufacturer=Linux 5.13.12-200.fc34.x86_64 xhci-hcd\n +A: maxchild=16\n +A: power/active_duration=775798957\n +A: power/autosuspend=0\n +A: power/autosuspend_delay_ms=0\n +A: power/connected_duration=775798957\n +A: power/control=auto\n +A: power/level=auto\n +A: power/runtime_active_time=775798954\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/wakeup=disabled\n +A: power/wakeup_abort_count=\n +A: power/wakeup_active=\n +A: power/wakeup_active_count=\n +A: power/wakeup_count=\n +A: power/wakeup_expire_count=\n +A: power/wakeup_last_time_ms=\n +A: power/wakeup_max_time_ms=\n +A: power/wakeup_total_time_ms=\n +A: product=xHCI Host Controller\n +A: quirks=0x0\n +A: removable=unknown\n +A: rx_lanes=1\n +A: serial=0000:00:14.0\n +A: speed=480\n +A: tx_lanes=1\n +A: urbnum=1381\n +A: version= 2.00\n + +P: /devices/pci0000:00/0000:00:14.0 +E: DRIVER=xhci_hcd +E: PCI_CLASS=C0330 +E: PCI_ID=8086:A36D +E: PCI_SUBSYS_ID=17AA:312A +E: PCI_SLOT_NAME=0000:00:14.0 +E: MODALIAS=pci:v00008086d0000A36Dsv000017AAsd0000312Abc0Csc03i30 +E: SUBSYSTEM=pci +E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller +E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller +E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI +E: ID_VENDOR_FROM_DATABASE=Intel Corporation +E: ID_MODEL_FROM_DATABASE=Cannon Lake PCH USB 3.1 xHCI Host Controller +A: ari_enabled=0\n +A: broken_parity_status=0\n +A: class=0x0c0330\n +H: config=86806DA3060490021030030C00008000040032B1000000000000000000000000000000000000000000000000AA172A31000000007000000000000000FF010000FD0134808FC6FF8300000000000000007F6DDC0F00000000970B083900000000316000000000000000000000000000000180C2C1080000000000000000000000059087009802E0FE0000000000000000090014F01000400100000000C10A080000080E00001800008F400200000100006000000008020000010000000400000090000000001800000005000000000000000300000C0000004000000080000000030000000000000000000000000000000000000000000000B50F110112000000 +A: consistent_dma_mask_bits=64\n +A: d3cold_allowed=1\n +A: dbc=disabled\n +A: device=0xa36d\n +A: dma_mask_bits=64\n +L: driver=../../../bus/pci/drivers/xhci_hcd +A: driver_override=(null)\n +A: enable=1\n +L: firmware_node=../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:4c +A: index=3\n +A: irq=125\n +A: label=Onboard - Other\n +A: local_cpulist=0-5\n +A: local_cpus=3f\n +A: modalias=pci:v00008086d0000A36Dsv000017AAsd0000312Abc0Csc03i30\n +A: msi_bus=1\n +A: msi_irqs/125=msi\n +A: numa_node=-1\n +A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 15 20 2112 20\nxHCI ring segments 46 76 4096 76\nbuffer-2048 0 32 2048 16\nbuffer-512 0 32 512 4\nbuffer-128 3 32 128 1\nbuffer-32 0 128 32 1\n +A: power/control=on\n +A: power/runtime_active_time=775799103\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=0\n +A: power/wakeup=enabled\n +A: power/wakeup_abort_count=0\n +A: power/wakeup_active=0\n +A: power/wakeup_active_count=61\n +A: power/wakeup_count=0\n +A: power/wakeup_expire_count=61\n +A: power/wakeup_last_time_ms=773160682\n +A: power/wakeup_max_time_ms=108\n +A: power/wakeup_total_time_ms=6358\n +A: power_state=D0\n +A: resource=0x00000000b1320000 0x00000000b132ffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n +A: revision=0x10\n +A: subsystem_device=0x312a\n +A: subsystem_vendor=0x17aa\n +A: vendor=0x8086\n +