Skip to content
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

UsbDK support #99

Open
wynwxst opened this issue May 10, 2024 · 3 comments
Open

UsbDK support #99

wynwxst opened this issue May 10, 2024 · 3 comments

Comments

@wynwxst
Copy link

wynwxst commented May 10, 2024

Dear vpelletier,
Is there any way to force usbDK support?
I've seen the pyusb conversation about it here
However, when I use python-libusb1 to set option to 1:
image
I understand UsbDK is unstable but I need to use it for the project I'm working on.

EDIT: libusb_set_option returns -5 and the device I am trying to access is under libusbK

Code:

        mayRaiseUSBError(libusb1.libusb_init(byref(self.__context_p)))
        self.set_option = libusb1.libusb_set_option(self.__context_p,1)
        print(self.set_option)

EDIT: it seems to suddenly now return 0 instead of -5, perhaps because the device isn't connected, I'll check

EDIT:
Now it works but at parts requiring libusb_reset_device and then device.close() #usb1.USBDevice, the code randomly breaks off with a chance of moving to the next step ctx.close() # usb1.USBContext before breaking off.
Code:

        mayRaiseUSBError(libusb1.libusb_init(byref(self.__context_p)))

        self.set_option = libusb1.libusb_set_option(self.__context_p,1,3)
        assert self.set_option == 0

Threading seems to be somewhat effective if done in a daemon form

@vpelletier
Copy link
Owner

In the temporary "next" branch, I pushed a few weeks back several libusb features that I was not wrapping yet. One of which is libusb_init_context, exposed as new arguments to USBContext.__init__, especially use_usbdk which takes a boolean (false by default). libusb_init_context allows side-stepping the libusb_set_option variadic topic.

Could you try that branch and report whether it works, and how usable it looks to you ?

One caveat: as this is not released yet, I consider I am still allowed to change the newly introduced API. Basically, the argument name could change or it could have to be provided in another way. But I think I am happy enough with the current implementation.

And on another level: I am currently very busy on a personal level, so I have basically no time to work on the next release. Things should hopefully calm down in the next few months, freeing some time.

@wynwxst
Copy link
Author

wynwxst commented May 12, 2024

In the temporary "next" branch, I pushed a few weeks back several libusb features that I was not wrapping yet. One of which is libusb_init_context, exposed as new arguments to USBContext.__init__, especially use_usbdk which takes a boolean (false by default). libusb_init_context allows side-stepping the libusb_set_option variadic topic.

Could you try that branch and report whether it works, and how usable it looks to you ?

One caveat: as this is not released yet, I consider I am still allowed to change the newly introduced API. Basically, the argument name could change or it could have to be provided in another way. But I think I am happy enough with the current implementation.

And on another level: I am currently very busy on a personal level, so I have basically no time to work on the nex

Sure, don't worry about being busy or anything else and focus on whatever you need to. It's also perfectly fine if it changes. I'll let you know how it goes after trying it.

@wynwxst
Copy link
Author

wynwxst commented May 15, 2024

In the temporary "next" branch, I pushed a few weeks back several libusb features that I was not wrapping yet. One of which is libusb_init_context, exposed as new arguments to USBContext.__init__, especially use_usbdk which takes a boolean (false by default). libusb_init_context allows side-stepping the libusb_set_option variadic topic.

Could you try that branch and report whether it works, and how usable it looks to you ?

One caveat: as this is not released yet, I consider I am still allowed to change the newly introduced API. Basically, the argument name could change or it could have to be provided in another way. But I think I am happy enough with the current implementation.

And on another level: I am currently very busy on a personal level, so I have basically no time to work on the next release. Things should hopefully calm down in the next few months, freeing some time.

Apologies for the late reply:
It doesn't seem to work as now what happens is

libusb: error [windows_set_option] UsbDk backend not available
# error traceback
  result = self.getByVendorIDAndProductID(
    self.open()
mayRaiseUSBError(libusb1.libusb_init_context(
raise __STATUS_TO_EXCEPTION_DICT.get(value, __USBError)(value)
LIBUSB_ERROR_NOT_FOUND [-5]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants