-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
windows_winusb libusb_get_device_list: bus numbers are defined and assigned to root hubs directly during the hub pass, by enforcing the defintion of root hub as being a hub without parent. #1202
windows_winusb libusb_get_device_list: bus numbers are defined and assigned to root hubs directly during the hub pass, by enforcing the defintion of root hub as being a hub without parent. #1202
Conversation
I think this is a interesting idea and a good idea. |
2b43ecf
to
f6727a5
Compare
I'm afraid I don't have the scope to be roped in back into libusb, and I don't want to leave some kind of seal of approval for what would be, at best, a half-assed review, since the Windows libusb enumeration code has changed quite a bit from my time. I will make the two following remarks though:
Oh, and there's a typo with |
Thanks a lot for sharing your views. I understand that this needs more detailed review. |
Got it, thanks @pbatard . I will do what you said regarding the description of the changes. Regarding testing: I did my best to test this changes under Windows, but of course my scope is limited, it is difficult to guarantee 100% safety, though the changes affecting a root part of the enumeration, my guess would be that we should quite easily detect issues.. |
The first difference is that bus number is now different. This is probably okay and as intended.
|
xusb example seems to work fine.
|
I also test using avrdude with the above usbasp programmer (USB Composite Device -- WinUSB + HID).
|
@mcuee : thanks for testing. Yes, bus numberx are different with my changes. From what I understood, I think it is ok, given those number are anyway arbitrary. They only have to be unique and stable from one enumeration to the other. |
We should mention in the release notes that bus numbers might change, so it can be helpful to mention it in the commit message in the first place. There are setups where identical USB devices are identified by where they are plugged in. About commit messages, they should ideally be formatted to 72 chars width and have a free-standing summary line (see for instance Commit Guidelines on https://git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project). |
The |
In the It seems fine that the bus numbers will change from previous libusb versions, but if this is just an unnecessary off-by-one issue, this is not there yet. |
Thanks for poiting this out, I'll check ASAP |
Great. BTW, for copyright reasons it would be preferable to have your full name if possible as commit author (and eventually in AUTHORS). |
Pre-build binary for Windows on ARM64, using VS2022. |
f6727a5
to
34e1d78
Compare
I am not so sure if the following patch is correct or not but it will give the same bus_number as git HEAD.
|
I was a bit unclear here. By "eventually" I mean that the names in the commit log will eventually end up in the AUTHORS list, when we update that list manually once before release. Please don't touch the AUTHORS file in patches and PRs. Just make sure you have your proper, real name as commit author. |
@tormodvolden : oups, sorry, OK I'll remove that change (I felt a little bit presomptuous to add my own name to the author list anyway). For the other remaining question: (changes or not in bus numbers): sorry, I have been diverted from this PR by other tasks, but I'll come back as soon as possible with a final proposal. I am not sure I will be able to gurantee same bus numbers as head and the fact that my implementation was giving bus numbers equal to head + 1 in one of the run above seems like a coincidence to me. Basically the way to come up with bus number changed completely from one abritrary set of number to another one. By "arbitrary" I mean that it basically depends on how the system orders its object internally, not "random". |
Yes, if the numbers change around a bit that is not a blocker. However that the numbers always started at 1 before and now starts at 2 is not good. If you cannot answer where the number 1 went, you don't understand your patch well enough, and I will be reluctant to merge it :) |
Dear @mcuee, Apart from an exe run-test, is there anything specific you would like me to test on WinARM64 (v10.0.22621)?
|
Thanks for the help. It is great that we can see "bus 1` from your test.
It will be great that you can test xusb with a device with the WinUSB driver. As of now, Zadig does not work under Windows on ARM, so you need a generic device which use WinUSB driver to test it out. The best is probably those generic USB device with the WCID descriptor. Ref: |
Here you go @mcuee Android phone (MTP mode)WinUSB (v10.0.22621.608) drivers coming along with Windows 11 v22H2 (ARM64) C:\Temp\bin_pr1202_Win_Arm64\bin>xusb 1004:633E
Using libusb v1.0.26.11760
Opening device 1004:633E...
Reading device descriptor:
length: 18
device class: 0
S/N: 3
VID:PID: 1004:633E
bcdDevice: 0232
iMan:iProd:iSer: 1:2:3
nb confs: 1
Reading BOS descriptor: libusb: error [winusbx_claim_interface] could not access interface 0: [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 1 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 2 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 3 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 4 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 5 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 6 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 7 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 8 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 9 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 10 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 11 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 12 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 13 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 14 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 15 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 16 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 17 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 18 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 19 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 20 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 21 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 22 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 23 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 24 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 25 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 26 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 27 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 28 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 29 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 30 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 31 with WinUSB): [1] Unzulõssige Funktion.
libusb: error [auto_claim] could not auto-claim any interface
libusb: error [libusb_get_bos_descriptor] failed to read BOS (-5)
no descriptor
Reading first configuration descriptor:
total length: 39
descriptor length: 9
nb interfaces: 1
interface[0]: id = 0
interface[0].altsetting[0]: num endpoints = 3
Class.SubClass.Protocol: FF.FF.00
endpoint[0].address: 81
max packet size: 0200
polling interval: 00
endpoint[1].address: 01
max packet size: 0200
polling interval: 00
endpoint[2].address: 82
max packet size: 001C
polling interval: 06
Kernel driver attached for interface 0: -12
Claiming interface 0...
libusb: error [winusbx_claim_interface] could not access interface 0: [1] Unzulõssige Funktion.
Failed.
Reading string descriptors:
libusb: error [winusbx_claim_interface] could not access interface 0: [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 1 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 2 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 3 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 4 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 5 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 6 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 7 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 8 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 9 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 10 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 11 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 12 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 13 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 14 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 15 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 16 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 17 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 18 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 19 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 20 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 21 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 22 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 23 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 24 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 25 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 26 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 27 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 28 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 29 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 30 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 31 with WinUSB): [1] Unzulõssige Funktion.
libusb: error [auto_claim] could not auto-claim any interface
libusb: error [winusbx_claim_interface] could not access interface 0: [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 1 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 2 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 3 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 4 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 5 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 6 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 7 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 8 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 9 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 10 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 11 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 12 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 13 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 14 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 15 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 16 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 17 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 18 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 19 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 20 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 21 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 22 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 23 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 24 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 25 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 26 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 27 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 28 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 29 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 30 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 31 with WinUSB): [1] Unzulõssige Funktion.
libusb: error [auto_claim] could not auto-claim any interface
libusb: error [winusbx_claim_interface] could not access interface 0: [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 1 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 2 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 3 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 4 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 5 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 6 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 7 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 8 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 9 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 10 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 11 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 12 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 13 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 14 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 15 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 16 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 17 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 18 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 19 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 20 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 21 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 22 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 23 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 24 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 25 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 26 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 27 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 28 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 29 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 30 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 31 with WinUSB): [1] Unzulõssige Funktion.
libusb: error [auto_claim] could not auto-claim any interface
Reading OS string descriptor:libusb: error [winusbx_claim_interface] could not access interface 0: [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 1 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 2 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 3 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 4 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 5 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 6 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 7 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 8 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 9 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 10 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 11 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 12 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 13 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 14 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 15 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 16 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 17 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 18 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 19 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 20 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 21 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 22 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 23 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 24 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 25 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 26 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 27 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 28 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 29 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 30 with WinUSB): [1] Unzulõssige Funktion.
libusb: warning [winusbx_claim_interface] failed to auto-claim interface 0 (required to claim 31 with WinUSB): [1] Unzulõssige Funktion.
libusb: error [auto_claim] could not auto-claim any interface
no descriptor
Releasing interface 0...
Closing device... TV tuner (DVB)Drivers created by Zadig and modified (ARM64) using solely the winusb.sys (v10.0.22621.608) C:\Temp\bin_pr1202_Win_Arm64\bin>xusb 045E:02D5
Using libusb v1.0.26.11760
Opening device 045E:02D5...
Reading device descriptor:
length: 18
device class: 0
S/N: 3
VID:PID: 045E:02D5
bcdDevice: 0110
iMan:iProd:iSer: 1:2:3
nb confs: 1
Reading BOS descriptor: no descriptor
Reading first configuration descriptor:
total length: 46
descriptor length: 9
nb interfaces: 1
interface[0]: id = 0
interface[0].altsetting[0]: num endpoints = 4
Class.SubClass.Protocol: FF.00.00
endpoint[0].address: 01
max packet size: 0200
polling interval: 01
endpoint[1].address: 81
max packet size: 0200
polling interval: 01
endpoint[2].address: 82
max packet size: 0200
polling interval: 01
endpoint[3].address: 83
max packet size: 0200
polling interval: 01
Kernel driver attached for interface 0: -12
Claiming interface 0...
Reading string descriptors:
String (0x01): "Microsoft Corp."
String (0x02): "Xbox USB Tuner"
String (0x03): "001129070415"
Reading OS string descriptor: no descriptor
Releasing interface 0...
Closing device... |
We need a few clarifications from you. For the DVB TV tuners, the output looks good. How did you create the driver by Zadig and then modify it for ARM64 to use winusb.sys (v10.0.22621.608) driver? Normally you need signed driver package to work with Windows. For the Android phone, the output does not seem to be good. Is the device really using WinUSB driver? |
Of course, @mcuee **For the Android phone, ... Is the device really using WinUSB driver?**You are correct, although Winusb.sys is included the main driver is a different one. **For the DVB TV tuners, ... How did you create the driver by Zadig and then modify it for ARM64 to use winusb.sys ?**I took the ... original.INF created by Zadig; Xbox_USB_Tuner.inf
; Copyright (c) 2010-2016 Pete Batard <pete@akeo.ie> (GNU LGPL)
[Strings]
DeviceName = "Xbox USB Tuner"
VendorName = "Microsoft Corp."
SourceName = "Xbox USB Tuner Install Disk"
DeviceID = "VID_045E&PID_02D5"
DeviceGUID = "{876534DC-3BBB-4EB3-AB52-161E9A1174FE}"
[Version]
Signature = "$Windows NT$"
Class = "USBDevice"
ClassGuid = {88bae032-5a81-49f0-bc3d-a4ff138216d6}
Provider = "libwdi"
CatalogFile = Xbox_USB_Tuner.cat
DriverVer = 06/02/2012, 6.1.7600.16385
[ClassInstall32]
Addreg = WinUSBDeviceClassReg
[WinUSBDeviceClassReg]
HKR,,,0,"Universal Serial Bus devices"
HKR,,Icon,,-20
[Manufacturer]
%VendorName% = libusbDevice_WinUSB,NTx86,NTamd64,NTarm
[libusbDevice_WinUSB.NTx86]
%DeviceName% = USB_Install, USB\%DeviceID%
[libusbDevice_WinUSB.NTamd64]
%DeviceName% = USB_Install, USB\%DeviceID%
[libusbDevice_WinUSB.NTarm]
%DeviceName% = USB_Install, USB\%DeviceID%
[USB_Install]
Include = winusb.inf
Needs = WINUSB.NT
[USB_Install.Services]
Include = winusb.inf
AddService = WinUSB,0x00000002,WinUSB_ServiceInstall
[WinUSB_ServiceInstall]
DisplayName = "WinUSB - Kernel Driver 06/02/2012 6.1.7600.16385"
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %12%\WinUSB.sys
[USB_Install.Wdf]
KmdfService = WINUSB, WinUsb_Install
[WinUSB_Install]
KmdfLibraryVersion = 1.11
[USB_Install.HW]
AddReg = AddDeviceInterfaceGUID
[NoDeviceInterfaceGUID]
; Avoids adding a DeviceInterfaceGUID for generic driver
[AddDeviceInterfaceGUID]
HKR,,DeviceInterfaceGUIDs,0x10000,%DeviceGUID%
[USB_Install.CoInstallers]
AddReg = CoInstallers_AddReg
CopyFiles = CoInstallers_CopyFiles
[CoInstallers_AddReg]
HKR,,CoInstallers32,0x00010000,"WdfCoInstaller01011.dll,WdfCoInstaller","WinUSBCoInstaller2.dll"
[CoInstallers_CopyFiles]
WinUSBCoInstaller2.dll
WdfCoInstaller01011.dll
[DestinationDirs]
CoInstallers_CopyFiles = 11
[SourceDisksNames]
1 = %SourceName%
[SourceDisksFiles.x86]
WinUSBCoInstaller2.dll = 1,x86
WdfCoInstaller01011.dll = 1,x86
[SourceDisksFiles.amd64]
WinUSBCoInstaller2.dll = 1,amd64
WdfCoInstaller01011.dll = 1,amd64
[SourceDisksFiles.arm]
WinUSBCoInstaller2.dll = 1,arm
WdfCoInstaller01011.dll = 1,arm
; and created a modified.INF for ARM64 manual/forced installationbascially by discarding the "non-essential" DLLs & signature ; Xbox_USB_Tuner.inf
; Copyright (c) 2010-2016 Pete Batard <pete@akeo.ie> (GNU LGPL)
[Strings]
DeviceName = "Xbox USB Tuner"
VendorName = "Microsoft Corp."
SourceName = "Xbox USB Tuner Install Disk"
DeviceID = "VID_045E&PID_02D5"
DeviceGUID = "{876534DC-3BBB-4EB3-AB52-161E9A1174FE}"
[Version]
Signature = "$Windows NT$"
Class = "USBDevice"
ClassGuid = {88bae032-5a81-49f0-bc3d-a4ff138216d6}
Provider = "libwdi"
DriverVer = 06/02/2012, 6.1.7600.16385
[ClassInstall32]
Addreg = WinUSBDeviceClassReg
[WinUSBDeviceClassReg]
HKR,,,0,"Universal Serial Bus devices"
HKR,,Icon,,-20
[Manufacturer]
%VendorName% = libusbDevice_WinUSB,NTarm64
[libusbDevice_WinUSB.NTarm64]
%DeviceName% = USB_Install, USB\%DeviceID%
[USB_Install]
Include = winusb.inf
Needs = WINUSB.NT
[USB_Install.Services]
Include = winusb.inf
AddService = WinUSB,0x00000002,WinUSB_ServiceInstall
[WinUSB_ServiceInstall]
DisplayName = "WinUSB - Kernel Driver 06/02/2012 6.1.7600.16385"
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %12%\WinUSB.sys
[USB_Install.Wdf]
KmdfService = WINUSB, WinUsb_Install
[WinUSB_Install]
KmdfLibraryVersion = 1.11
[USB_Install.HW]
AddReg = AddDeviceInterfaceGUID
[NoDeviceInterfaceGUID]
; Avoids adding a DeviceInterfaceGUID for generic driver
[AddDeviceInterfaceGUID]
HKR,,DeviceInterfaceGUIDs,0x10000,%DeviceGUID%
; |
Thanks a lot for the detailed info. Just wondering how you carry out manual/forced installation for the DVB TV Tuner driver package you created. In paticular, what do you mean by Edit: Info given here. |
8e7ad93
to
c08f1fd
Compare
Somehow latest MSYS2 clang32/clang64 build failed. |
c08f1fd
to
e5c7566
Compare
Now it is fine. |
And the outpput of this PR is the same as git HEAD now.
git master:
|
e5c7566
to
e87569a
Compare
@tormodvolden : I just pushed the missing space, thanks. Thank you for your comments and patience. |
The commit summary line is too long, see for instance "Commit Guidelines" on https://git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project or https://cbea.ms/git-commit/ about how to make well-formed commit messages. (I am drafting a HACKING file with such stuff :) ) |
e87569a
to
02a17c9
Compare
02a17c9
to
284fd01
Compare
Bus numbers are defined and assigned to root hubs directly during the hub pass of winusb libusb_get_device_list, using the definition of a root hub as being a hub without parent at port 0. Therefore the HCD pass is no longer used for defining root hubs. Note: assigned bus number values for a given setup are not guaranteed to remain constant when migrating from previous implementation to this one. The rational behind this change is that: - Implementation using CM_Get_Child from HCD to get root hub devInst is not working when using "FabulaTech Virtual USB Host Controller" (USB-Ethernet bridge) under Hyper-V virtual machine. - This new way of enumerating is inspired by "USB Device Viewer" Microsoft driver sample code which is capable of correctly enumerating hubs and devices in the above mentioned configuration as well as in regular configurations.
284fd01
to
e504d17
Compare
windows: define bus numbers without using HCD
Bus numbers are defined and assigned to root hubs directly
during the hub pass of winusb libusb_get_device_list, using the
definition of a root hub as being a hub without parent at port 0.
Therefore the HCD pass is no longer used for defining root hubs.
Note: assigned bus number values for a given setup are not guaranteed
to remain constant when migrating from previous implementation to this
one.
The rational behind this change is that:
Implementation using CM_Get_Child from HCD to get root hub devInst is
not working when using "FabulaTech Virtual USB Host Controller"
(USB-Ethernet bridge) under Hyper-V virtual machine.
This new way of enumerating is inspired by "USB Device Viewer" Microsoft
driver sample code which is capable of correctly enumerating hubs and
devices in the above mentioned configuration as well as in regular
configurations.