Hi again,

Did a little more research. I found out the console command lsusb -vv to
analyze the device, runned it, got this:

Bus 002 Device 030: ID 04d8:0020 Microchip Technology, Inc.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x04d8 Microchip Technology, Inc.
  idProduct          0x0020
  bcdDevice            1.00
  iManufacturer           1 DZE
  iProduct                2 CDI TEST v1.0
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           41
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      32
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
      *  bEndpointAddress     0x81  EP 1 IN*
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
       * bEndpointAddress     0x01  EP 1 OUT*
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
Device Status:     0x0001
  Self Powered

-----------------------------

so I modified the script to use those endpoints:

#prueba.py

import usb.core

dev = usb.core.find(idVendor=1240,idProduct=32)
if dev is None:
    raise ValueError('Device not found')

interface = dev.get_interface_altsetting()
if dev.is_kernel_driver_active(interface.bInterfaceNumber) is True:
        dev.detach_kernel_driver(interface.bInterfaceNumber)

dev.set_configuration()

msg = '\x02\x03\x00'
dev.write(1, msg, 0)
ret = dev.read(0x81, len(msg), 0)
print ret

Now the device start blinking its leds like it's working but I get:

Traceback (most recent call last):
  File "prueba.py", line 27, in <module>
    ret = dev.read(0x81, len(msg), 0)
  File "/home/administrador/pyusb-1.0.0-a0/usb/core.py", line 624, in read
    self.__get_timeout(timeout)
  File "/home/administrador/pyusb-1.0.0-a0/usb/_debug.py", line 53, in
do_trace
    return f(*args, **named_args)
  File "/home/administrador/pyusb-1.0.0-a0/usb/backend/libusb10.py", line
501, in intr_read
    timeout)
  File "/home/administrador/pyusb-1.0.0-a0/usb/backend/libusb10.py", line
581, in __read
    timeout))
  File "/home/administrador/pyusb-1.0.0-a0/usb/backend/libusb10.py", line
353, in _check
    raise USBError(_str_error[retval.value])
*usb.core.USBError: Operation timed out*

Tried changing the timeout value and didn't work :(.

Any ideas ?

Thanks !

On Tue, Dec 14, 2010 at 3:32 PM, Marcos Wolff <wmar...@gmail.com> wrote:

> Follow-up: Santiago:
>
> Also found the method doesn't exists in pyusb 1.0 apparently it manages
> interface claiming automatically.
>
> source:
> http://www.mail-archive.com/pyusb-users@lists.sourceforge.net/msg00374.html
>
> On Tue, Dec 14, 2010 at 3:30 PM, Marcos Wolff <wmar...@gmail.com> wrote:
>
>> Hi Santiago,
>>
>> Following this tutorial it doesn't seem to be needed:
>>
>> http://pyusb.sourceforge.net/docs/1.0/tutorial.htm#talk-to-me-honey
>>
>> Anyway I've tried (kind of desperate here) and didn't work :(
>>
>> thank for the quick answer !
>>
>>
>> On Tue, Dec 14, 2010 at 3:18 PM, Santiago Palomino Sanchez-Manjavacas <
>> sps...@gmail.com> wrote:
>>
>>> missing claimInterface() before using the control endpoint?
>>>
>>> Just a guess
>>>
>>> On Tue, Dec 14, 2010 at 18:54, Marcos Wolff <wmar...@gmail.com> wrote:
>>>
>>>> Hi everyone,
>>>>
>>>> I'm having trouble comunicating with a custom made (from a PIC 18f4550
>>>> micro-controller) HID device. Nowadays is used with windows and the default
>>>> HID driver in vb6 but I would like to port it to linux (ubuntu 10.10) and
>>>> pyusb (1.0a).
>>>>
>>>> The device is simple, when it receives 3 bytes via HID it responses 3
>>>> bytes back with data. The people who made it told me that everything is
>>>> handled via end point 0 and default config).
>>>>
>>>> As I want to port it to linux I read this tutorial
>>>> http://pyusb.sourceforge.net/docs/1.0/tutorial.html and tried to
>>>> communicate via default config endpoint configuration:
>>>>
>>>> #prueba.py
>>>>
>>>> import usb.core
>>>>
>>>> #busco dispositivo
>>>> dev = usb.core.find(idVendor=1240,idProduct=32)
>>>> if dev is None:
>>>>     raise ValueError('Device not found')
>>>>
>>>> interface = dev.get_interface_altsetting()
>>>> if dev.is_kernel_driver_active(interface.bInterfaceNumber) is True:
>>>>         dev.detach_kernel_driver(interface.bInterfaceNumber)
>>>>
>>>>
>>>> dev.set_configuration()
>>>>
>>>> #mensaje de 3 bytes
>>>> msg = '\x02\x03\x00'
>>>>
>>>> #bmRequestType y bRequest as said in
>>>> http://www.jungo.com/st/support/documentation/windriver/811/wdusb_man_mhtml/node55.html#usb_standard_dev_req_codes
>>>>
>>>>
>>>> dev.ctrl_transfer(0x40, 0x02, 0, 0, msg)
>>>>
>>>>
>>>> and I get this error which I don't fully understand:
>>>>
>>>> Traceback (most recent call last):
>>>>   File "ejemplo.py", line 39, in <module>
>>>>     print  dev.ctrl_transfer(0x40, 0x02, 0, 0, msg)
>>>>   File "/home/administrador/pyusb-1.0.0-a0/usb/core.py", line 668, in
>>>> ctrl_transfer
>>>>     self.__get_timeout(timeout)
>>>>   File "/home/administrador/pyusb-1.0.0-a0/usb/_debug.py", line 53, in
>>>> do_trace
>>>>     return f(*args, **named_args)
>>>>   File "/home/administrador/pyusb-1.0.0-a0/usb/backend/libusb10.py",
>>>> line 538, in ctrl_transfer
>>>>     timeout))
>>>>   File "/home/administrador/pyusb-1.0.0-a0/usb/backend/libusb10.py",
>>>> line 353, in _check
>>>>     raise USBError(_str_error[retval.value])
>>>>   *usb.core.USBError: Pipe error*
>>>>
>>>> Could someone guide me ? help me see what I'm doing wrong ?
>>>>
>>>> Thanks in advance !
>>>> Marcos.
>>>>
>>>>
>>>> PD: I tried to sniff usb ports with this tutorial
>>>> http://biot.com/blog/usb-sniffing-on-linux but nothing seems to be
>>>> happening excepto when I reset the device.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Lotusphere 2011
>>>> Register now for Lotusphere 2011 and learn how
>>>> to connect the dots, take your collaborative environment
>>>> to the next level, and enter the era of Social Business.
>>>> http://p.sf.net/sfu/lotusphere-d2d
>>>> _______________________________________________
>>>> pyusb-users mailing list
>>>> pyusb-users@lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/pyusb-users
>>>>
>>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Lotusphere 2011
>>> Register now for Lotusphere 2011 and learn how
>>> to connect the dots, take your collaborative environment
>>> to the next level, and enter the era of Social Business.
>>> http://p.sf.net/sfu/lotusphere-d2d
>>> _______________________________________________
>>> pyusb-users mailing list
>>> pyusb-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/pyusb-users
>>>
>>>
>>
>
------------------------------------------------------------------------------
Lotusphere 2011
Register now for Lotusphere 2011 and learn how
to connect the dots, take your collaborative environment
to the next level, and enter the era of Social Business.
http://p.sf.net/sfu/lotusphere-d2d
_______________________________________________
pyusb-users mailing list
pyusb-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pyusb-users

Reply via email to