On Sun, 30 Jan 2005, Dmitry Nezhevenko wrote:

> Hello,
> 
> I am trying to write driver (but now not kernel module, only user mode) for 
> Motorola C380/C650 Mobile phone. After plug in in Linux (Kernel 2.6.10), it 
> works as ACM modem (cdc-acm module). I send "AT+MODE=8" AT command. Phone 
> change's Product id, so it became not ACM device. Here is output of lsusb -a:
> 
> 
> I have some information about protocol. (I get it via UsbSnoop in M$). 
> Windows 
> program use Interface Number 8 (Motorola Test Command), which has no 
> endpoints (except standart). So, it must use only CONTROL TRANSFER. Now i use 
> libusb and try to create user mode program. Here is one of packet (UsbSnoop):
> 
> --------------------------------------
> 00000002šššššššš11:02:45šššššššš>>>>>>> URB 18 going down...šššš
> 00000003šššššššš11:02:45šššššššš-- URB_FUNCTION_VENDOR_INTERFACE:ššššššš
> 00000004šššššššš11:02:45šššššššš šTransferFlags š š š š š= 00000002 
> (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK)ššššššš
> 00000005šššššššš11:02:45šššššššš šTransferBufferLength = 00000008ššššššš
> 00000006šššššššš11:02:45šššššššš šTransferBuffer š š š = 81752ff0ššššššš
> 00000007šššššššš11:02:45šššššššš šTransferBufferMDL š š= 00000000ššššššš
> 00000008šššššššš11:02:45šššššššš ššššššš
> 00000009šššššššš11:02:45šššššššš š š0000:ššššššš
> 00000010šššššššš11:02:45šššššššš 00ššššš
> 00000011šššššššš11:02:45šššššššš 07ššššš
> 00000012šššššššš11:02:45šššššššš 00ššššš
> 00000013šššššššš11:02:45šššššššš 22ššššš
> 00000014šššššššš11:02:45šššššššš 00ššššš
> 00000015šššššššš11:02:45šššššššš 00ššššš
> 00000016šššššššš11:02:45šššššššš 00ššššš
> 00000017šššššššš11:02:45šššššššš 00ššššš
> 00000018šššššššš11:02:45šššššššš ššššššš
> 00000019šššššššš11:02:45šššššššš šUrbLink š š š š š š š š = 00000000šššš
> 00000020šššššššš11:02:45šššššššš šRequestTypeReservedBits = 00šš
> 00000021šššššššš11:02:45šššššššš šRequest š š š š š š š š = 02šš
> 00000022šššššššš11:02:45šššššššš šValue š š š š š š š š š = 0000šššššššš
> 00000023šššššššš11:02:45šššššššš šIndex š š š š š š š š š = 0008šššššššš
> 00000024šššššššš11:02:45šššššššš ššššššš
> 00000025šššššššš11:02:45šššššššš<<<<<<< URB 18 coming back...ššš
> 00000026šššššššš11:02:45šššššššš-- URB_FUNCTION_CONTROL_TRANSFER:ššššššš
> 00000027šššššššš11:02:45šššššššš šPipeHandle š š š š š = ffa86c00ššššššš
> 00000028šššššššš11:02:45šššššššš šTransferFlags š š š š= 0000000a 
> (USBD_TRANSFER_DIRECTION_OUT, USBD_SHORT_TRANSFER_OK)š
> 00000029šššššššš11:02:45šššššššš šTransferBufferLength = 00000008ššššššš
> 00000030šššššššš11:02:45šššššššš šTransferBuffer š š š = 81752ff0ššššššš
> 00000031šššššššš11:02:45šššššššš šTransferBufferMDL š š= 817ac150ššššššš
> 00000032šššššššš11:02:45šššššššš šUrbLink š š š š š š š= 00000000ššššššš
> 00000033šššššššš11:02:45šššššššš šSetupPacket š š š š š:šššššššš
> 00000034šššššššš11:02:45šššššššš 41ššššš
> 00000035šššššššš11:02:45šššššššš 02ššššš
> 00000036šššššššš11:02:45šššššššš 00ššššš
> 00000037šššššššš11:02:45šššššššš 00ššššš
> 00000038šššššššš11:02:45šššššššš 08ššššš
> 00000039šššššššš11:02:45šššššššš 00ššššš
> 00000040šššššššš11:02:45šššššššš 08ššššš
> 00000041šššššššš11:02:45šššššššš 00ššššš
> 00000042šššššššš11:02:45šššššššš ššššššš
> 00000043šššššššš11:02:45ššššššššUsbSnoop - IRP_MJ_INTERNAL_DEVICE_CONTROL, 
> IOCTL_INTERNAL_USB_SUBMIT_URBšššššššš
> 00000044šššššššš11:02:45šš
> -----------------------------------------
> 
> Have you any idea, how can i send same packet with libusb or another way.
> 
> I try to use usb_control_msg function:
> 
> int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, int 
> value, int index, char *bytes, int size, int timeout);
> 
> requesttype is 00, request=0x02, value=0, index=0x8. bytes is array of {00 07 
> 00 22 00 00 00 00}. But phone don't accept this packet. libusb says, that 
> pipe is broken. 
> 
> Can i send this packet this way?

It's hard for me to read your message because of character set translation
problems.  But I think the problem is that the log for URB 18 going down
doesn't report the full bRequestType value; it only reports the reserved
bits.  You need to use the bRequestType value reported in the Setup Packet
for URB 18 coming back: 0x41.

Alan Stern



-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to