Skip to content

Libusb missing Byte on reception #977

@TH3R3ch1

Description

@TH3R3ch1

Hi, so I'm trying to Send/receive Data to an HID Device. This uses an vendor specific request as I'm (to some extend) in
control of the FW of the device. This is running on Win10 using VSCode.
Below you can find the function calls, the debug Logs, the Data on the Bus (using HW sniffer) as well as the return value
and Buffer contents after the command. the first Call (transmitting the Read Command) works fine, but on the following
2 (receiving the requested Data) somewhere the last Byte is lost. I don't have that much experience using libusb, so maybe
some of you can spot that misstake ?

[timestamp] [threadID] facility level [function call] <message>
--------------------------------------------------------------------------------
libusb_control_transfer(workinghandle, 0x21, 0x09, 0x0200, 0x0000, bufIn, 32, 10000);
[20.034603] [00000ecc] libusb: debug [libusb_alloc_transfer] transfer 0101C130
[20.034629] [00000ecc] libusb: debug [libusb_submit_transfer] transfer 0101C130
[20.034642] [00000ecc] libusb: debug [add_to_flying_list] arm timer for timeout in 10000ms (first in line)
[20.034668] [00000ecc] libusb: debug [libusb_claim_interface] interface 0
[20.034686] [00000ecc] libusb: debug [hid_claim_interface] claimed interface 0
[20.034712] [00000ecc] libusb: debug [windows_assign_endpoints] (re)assigned endpoint 81 to interface 0
[20.034725] [00000ecc] libusb: debug [windows_assign_endpoints] (re)assigned endpoint 02 to interface 0
[20.034742] [00000ecc] libusb: debug [auto_claim] auto-claimed interface 0 for control request
[20.034753] [00000ecc] libusb: debug [hid_submit_control_transfer] will use interface 0
[20.034769] [00000ecc] libusb: debug [_hid_set_report] report ID: 0x00
[20.035104] [00000ecc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[20.035135] [00000ecc] libusb: debug [usbi_wait_for_events] WaitForMultipleObjects() for 2 HANDLEs with timeout in 60000ms
[20.035266] [000006b0] libusb: debug [windows_iocp_thread] transfer 0101C130 completed, length 32
[20.035303] [00000ecc] libusb: debug [usbi_wait_for_events] WaitForMultipleObjects() returned 0
[20.035322] [00000ecc] libusb: debug [handle_event_trigger] event triggered
[20.035362] [00000ecc] libusb: debug [windows_handle_transfer_completion] handling transfer 0101C130 completion with errcode 0, length 32
[20.035388] [00000ecc] libusb: debug [libusb_release_interface] interface 0
[20.035401] [00000ecc] libusb: debug [auto_release] auto-released interface 0
[20.035413] [00000ecc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[20.035439] [00000ecc] libusb: debug [usbi_handle_transfer_completion] transfer 0101C130 has callback 7B487910
[20.035455] [00000ecc] libusb: debug [sync_transfer_cb] actual_length=32
[20.035477] [00000ecc] libusb: debug [libusb_free_transfer] transfer 0101C130
BUS:
	Setup:	21 09 00 02 00 00 20 00
	Write:	00 05 D0 84 00 00 10 CC CC CC CC CC CC CC CC CC
			CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC
Software:
	Length reported: 32
	Buffer: 00 05 D0 84 00 00 10 CC CC CC CC CC CC CC CC CC
			CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC

libusb_control_transfer(workinghandle, 0xA1, 0x01, 0x0100, 0x0000, bufIn, 32, 10000);
[20.640819] [00000ecc] libusb: debug [libusb_alloc_transfer] transfer 01023D88
[20.640890] [00000ecc] libusb: debug [libusb_submit_transfer] transfer 01023D88
[20.640919] [00000ecc] libusb: debug [add_to_flying_list] arm timer for timeout in 10000ms (first in line)
[20.640977] [00000ecc] libusb: debug [libusb_claim_interface] interface 0
[20.641025] [00000ecc] libusb: debug [hid_claim_interface] claimed interface 0
[20.641086] [00000ecc] libusb: debug [windows_assign_endpoints] (re)assigned endpoint 81 to interface 0
[20.641117] [00000ecc] libusb: debug [windows_assign_endpoints] (re)assigned endpoint 02 to interface 0
[20.641149] [00000ecc] libusb: debug [auto_claim] auto-claimed interface 0 for control request
[20.641194] [00000ecc] libusb: debug [hid_submit_control_transfer] will use interface 0
[20.641225] [00000ecc] libusb: debug [_hid_get_report] report ID: 0x00
[20.641619] [00000ecc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[20.641678] [00000ecc] libusb: debug [usbi_wait_for_events] WaitForMultipleObjects() for 2 HANDLEs with timeout in 60000ms
[20.641626] [000006b0] libusb: debug [windows_iocp_thread] transfer 01023D88 completed, length 32
[20.641808] [00000ecc] libusb: debug [usbi_wait_for_events] WaitForMultipleObjects() returned 0
[20.641862] [00000ecc] libusb: debug [handle_event_trigger] event triggered
[20.641887] [00000ecc] libusb: debug [windows_handle_transfer_completion] handling transfer 01023D88 completion with errcode 0, length 32
[20.641928] [00000ecc] libusb: debug [libusb_release_interface] interface 0
[20.641955] [00000ecc] libusb: debug [auto_release] auto-released interface 0
[20.641976] [00000ecc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[20.642046] [00000ecc] libusb: debug [usbi_handle_transfer_completion] transfer 01023D88 has callback 7B487910
[20.642078] [00000ecc] libusb: debug [sync_transfer_cb] actual_length=31
[20.642143] [00000ecc] libusb: debug [libusb_free_transfer] transfer 01023D88
BUS:
	Setup:	A1 01 00 01 00 00 20 00
	Read:	00 22 05 05 03 04 07 07 03 04 05 05 03 04 07 07
			03 04 07 07 03 04 05 05 03 04 07 07 03 04 05 05
Software:			
	Length reported: 31
	Buffer:	00 22 05 05 03 04 07 07 03 04 05 05 03 04 07 07
			03 04 07 07 03 04 05 05 03 04 07 07 03 04 05 CC

libusb_control_transfer(workinghandle, 0xA1, 0x01, 0x0100, 0x0000, bufIn, 32, 10000);
[21.258102] [00000ecc] libusb: debug [libusb_alloc_transfer] transfer 01023D88
[21.258130] [00000ecc] libusb: debug [libusb_submit_transfer] transfer 01023D88
[21.258141] [00000ecc] libusb: debug [add_to_flying_list] arm timer for timeout in 10000ms (first in line)
[21.258155] [00000ecc] libusb: debug [libusb_claim_interface] interface 0
[21.258164] [00000ecc] libusb: debug [hid_claim_interface] claimed interface 0
[21.258178] [00000ecc] libusb: debug [windows_assign_endpoints] (re)assigned endpoint 81 to interface 0
[21.258184] [00000ecc] libusb: debug [windows_assign_endpoints] (re)assigned endpoint 02 to interface 0
[21.258192] [00000ecc] libusb: debug [auto_claim] auto-claimed interface 0 for control request
[21.258197] [00000ecc] libusb: debug [hid_submit_control_transfer] will use interface 0
[21.258203] [00000ecc] libusb: debug [_hid_get_report] report ID: 0x00
[21.258550] [00000ecc] libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
[21.258621] [00000ecc] libusb: debug [usbi_wait_for_events] WaitForMultipleObjects() for 2 HANDLEs with timeout in 60000ms
[21.258650] [000006b0] libusb: debug [windows_iocp_thread] transfer 01023D88 completed, length 32
[21.258674] [00000ecc] libusb: debug [usbi_wait_for_events] WaitForMultipleObjects() returned 0
[21.258695] [00000ecc] libusb: debug [handle_event_trigger] event triggered
[21.258767] [00000ecc] libusb: debug [windows_handle_transfer_completion] handling transfer 01023D88 completion with errcode 0, length 32
[21.258794] [00000ecc] libusb: debug [libusb_release_interface] interface 0
[21.258813] [00000ecc] libusb: debug [auto_release] auto-released interface 0
[21.258829] [00000ecc] libusb: debug [arm_timer_for_next_timeout] no timeouts, disarming timer
[21.258909] [00000ecc] libusb: debug [usbi_handle_transfer_completion] transfer 01023D88 has callback 7B487910
[21.258928] [00000ecc] libusb: debug [sync_transfer_cb] actual_length=31
[21.258949] [00000ecc] libusb: debug [libusb_free_transfer] transfer 01023D88
BUS:
	Setup:	A1 01 00 01 00 00 20 00
	Read:	00 22 03 04 90 00 00 00 00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00		
Software:
	Length reported: 31
	Buffer:	00 22 03 04 90 00 00 00 00 00 00 00 00 00 00 00
			00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 CC

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions