Hello,

I have a device not listed in "usb.ids":

---8<-----------

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 18 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=1004 ProdID=6005 Rev= 1.00
S:  Manufacturer=LG Electronicst
S:  Product=LG Mobile Agent
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=200mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=ff
Driver=usbserial_generic
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=85(I) Atr=03(Int.) MxPS=   1 Ivl=1ms
I:  If#= 0 Alt= 1 #EPs= 5 Cls=ff(vend.) Sub=00 Prot=ff
Driver=usbserial_generic
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=83(I) Atr=01(Isoc) MxPS=  64 Ivl=1ms
E:  Ad=04(O) Atr=01(Isoc) MxPS=  64 Ivl=1ms
E:  Ad=85(I) Atr=03(Int.) MxPS=   1 Ivl=1ms

---8<-----------

First, just in case, does anyone know of succesfully using this device
with Linux ?

It has bulks in and out so i could load usbserial with vendor and
product options... however, i couldn't do much more, as it doesn't use
AT like commands, like with the serial interface.

In syslog i have this message:
---8<-----------
Aug 11 10:03:37 XxX kernel: drivers/usb/serial/usb-serial.c: the device
claims to support interrupt in transfers, but read_int_callback is not
defined
---8<-----------

Should this be implemented in a custom driver (anyway, i'm not really
sure this interrupt endpoint is used) ?

I took traces with usbsnoop: it seems the phone needs to know how much
data will be sent to it, before sending something to the bulk / a
"command"
Usb sniff shows that a "URB_VENDOR_FUNCTION_DEVICE" is present before
each "URB_FUNCTION_BULK".

How do I copy this behaviour , using "usb_control_msg" ?
Should a module be written, or can i use libusb to control this device ?

Thanks in advance,

Best regards,

Guillaume B.

PS:
part of usbsnoop log follows
---8<-----------
  Interface[0]: Length            = 116
  Interface[0]: InterfaceNumber   = 0
  Interface[0]: AlternateSetting  = 1
  Interface[0]: Class             = 0x000000ff
  Interface[0]: SubClass          = 0x00000000
  Interface[0]: Protocol          = 0x000000ff
  Interface[0]: InterfaceHandle   = 0x80d247c8
  Interface[0]: NumberOfPipes     = 5
  Interface[0]: Pipes[0] : MaximumPacketSize = 0x00000040
  Interface[0]: Pipes[0] : EndpointAddress   = 0x00000081
  Interface[0]: Pipes[0] : Interval          = 0x00000000
  Interface[0]: Pipes[0] : PipeType          = 0x00000002
(UsbdPipeTypeBulk)
  Interface[0]: Pipes[0] : PipeHandle        = 0x80d247e4
  Interface[0]: Pipes[0] : MaxTransferSize   = 0x00001000
  Interface[0]: Pipes[0] : PipeFlags         = 0x00000000
  Interface[0]: Pipes[1] : MaximumPacketSize = 0x00000040
  Interface[0]: Pipes[1] : EndpointAddress   = 0x00000002
  Interface[0]: Pipes[1] : Interval          = 0x00000000
  Interface[0]: Pipes[1] : PipeType          = 0x00000002
(UsbdPipeTypeBulk)
  Interface[0]: Pipes[1] : PipeHandle        = 0x80d24804
  Interface[0]: Pipes[1] : MaxTransferSize   = 0x00001000
  Interface[0]: Pipes[1] : PipeFlags         = 0x00000000
  Interface[0]: Pipes[2] : MaximumPacketSize = 0x00000040
  Interface[0]: Pipes[2] : EndpointAddress   = 0x00000083
  Interface[0]: Pipes[2] : Interval          = 0x00000001
  Interface[0]: Pipes[2] : PipeType          = 0x00000001
(UsbdPipeTypeIsochronous)
  Interface[0]: Pipes[2] : PipeHandle        = 0x80d24824
  Interface[0]: Pipes[2] : MaxTransferSize   = 0x00001000
  Interface[0]: Pipes[2] : PipeFlags         = 0x00000000
  Interface[0]: Pipes[3] : MaximumPacketSize = 0x00000040
  Interface[0]: Pipes[3] : EndpointAddress   = 0x00000004
  Interface[0]: Pipes[3] : Interval          = 0x00000001
  Interface[0]: Pipes[3] : PipeType          = 0x00000001
(UsbdPipeTypeIsochronous)
  Interface[0]: Pipes[3] : PipeHandle        = 0x80d24844
  Interface[0]: Pipes[3] : MaxTransferSize   = 0x00001000
  Interface[0]: Pipes[3] : PipeFlags         = 0x00000000
  Interface[0]: Pipes[4] : MaximumPacketSize = 0x00000001
  Interface[0]: Pipes[4] : EndpointAddress   = 0x00000085
  Interface[0]: Pipes[4] : Interval          = 0x00000001
  Interface[0]: Pipes[4] : PipeType          = 0x00000003
(UsbdPipeTypeInterrupt)
  Interface[0]: Pipes[4] : PipeHandle        = 0x80d24864
  Interface[0]: Pipes[4] : MaxTransferSize   = 0x00001000
  Interface[0]: Pipes[4] : PipeFlags         = 0x00000000
[..cut...]
[70534 ms]  >>>  URB 4 going down  >>>
-- URB_FUNCTION_VENDOR_DEVICE:
  TransferFlags          = 00000000 (USBD_TRANSFER_DIRECTION_OUT,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000000
  TransferBuffer       = 00000000
  TransferBufferMDL    = 00000000

    no data supplied
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000013
  Value                   = 00000006
  Index                   = 00000000
[72173 ms] UsbSnoop - MyInternalIOCTLCompletion(faf4cdb0) :
fido=00000000, Irp=ffba7798, Context=80d44590, IRQL=2
[72173 ms]  <<<  URB 4 coming back  <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 80dcf978
  TransferFlags        = 0000000a (USBD_TRANSFER_DIRECTION_OUT,
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000000
  TransferBuffer       = 00000000
  TransferBufferMDL    = 00000000
  UrbLink              = 00000000
  SetupPacket          =
    00000000: 40 13 06 00 00 00 00 00
[72174 ms] UsbSnoop - DispatchAny(faf4b610) :
IRP_MJ_INTERNAL_DEVICE_CONTROL
[72174 ms] UsbSnoop - MyDispatchInternalIOCTL(faf4ce80) : fdo=ffaa79c0,
Irp=ffba7798, IRQL=0
[72175 ms]  >>>  URB 5 going down  >>>
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 80d24804 [endpoint 0x00000002]
  TransferFlags        = 00000000 (USBD_TRANSFER_DIRECTION_OUT,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000006
  TransferBuffer       = 00000000
  TransferBufferMDL    = 80e4b1c8
    00000000: 02 00 00 00 00 00
  UrbLink              = 00000000
[72180 ms] UsbSnoop - MyInternalIOCTLCompletion(faf4cdb0) :
fido=00000000, Irp=ffba7798, Context=80e1b420, IRQL=2
[72180 ms]  <<<  URB 5 coming back  <<<
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 80d24804 [endpoint 0x00000002]
  TransferFlags        = 00000000 (USBD_TRANSFER_DIRECTION_OUT,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000006
  TransferBuffer       = 00000000
  TransferBufferMDL    = 80e4b1c8
  UrbLink              = 00000000
[72181 ms] UsbSnoop - DispatchAny(faf4b610) :
IRP_MJ_INTERNAL_DEVICE_CONTROL
[72181 ms] UsbSnoop - MyDispatchInternalIOCTL(faf4ce80) : fdo=ffaa79c0,
Irp=ffba7798, IRQL=0

---8<-----------




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to