It perfectly works!
/*
struct libusb_device_handle *handle = libusb_open_device_with_vid_pid(...);
*/
if(libusb_kernel_driver_active(handle,1)==1) //Determine if a kernel driver is active on an interface.
{
if(libusb_detach_kernel_driver(handle,1)!=0) //Try to detach a kernel driver from an interface.
{
printf("Cant detach_kernel_driver\n");
exit(1);
}
}
if(libusb_claim_interface(handle,1)!=0) //Claim an interface on a given device handle.
{
printf("Cant claim\n");
}
struct libusb_transfer *u_trans;
unsigned char m_command[] = {0x9F, 0x18, 0x00, 0x20, 0x1F, 0x70, 0x2E,
0x40, 0x3E, 0x20, 0x1F, 0x70, 0x2E, 0x40, 0x3E, 0x20, 0x1F,
0x70, 0x2E, 0x40, 0x3E, 0x20, 0x1F, 0x70, 0x2E, 0x40, 0x3E,
0x20, 0x1F, 0x70, 0x2E, 0x40, 0x3E, 0x20, 0x1F, 0x70, 0x2E,
0x40, 0x3E, 0x20, 0x1F, 0x70, 0x2E, 0x40, 0x3E, 0x20, 0x1F,
0x70, 0x2E, 0x40, 0x3E}; // The prepared SerialInterface command for Mini-Maestro 24
u_trans = libusb_alloc_transfer(0);
if (!u_trans)
{
printf("!!!");
exit(1);
}
u_trans->flags=LIBUSB_TRANSFER_FREE_TRANSFER;
libusb_fill_bulk_transfer(u_trans,handle,/*(2 | LIBUSB_ENDPOINT_OUT)*/ 0x2, m_command,sizeof(m_command),
NULL,NULL,1000);
libusb_submit_transfer(u_trans);
if(libusb_release_interface(handle,1)==0)
{
printf("Cant release_interface\n");
}
if(libusb_kernel_driver_active(handle,1)==0)
{
if(libusb_attach_kernel_driver(handle,1)!=0)
{
printf("Cant attach_kernel_driver\n");
}
}
