Hi Juan,

Great news.

On the Windows side are you using a generic Windows Driver or a Zaurus 
driver??

Cheers

Grahame Jordan

Juan Luis López wrote:
> Finally this works.......!!!!
> Thank you  for your help.
> I made it work with the David Brownell patch plus changin product and 
> vendor ID.
> Do not mark the RNDIS option in the kernel.
> I act as if i were a zaurus :
> //#define    SIMPLE_VENDOR_NUM    0x049f
> //#define    SIMPLE_PRODUCT_NUM    0x505a
> #define    SIMPLE_VENDOR_NUM    0x04DD
> #define    SIMPLE_PRODUCT_NUM    0x8007
> In the window side use Zaurus Drivers driver and everything works 
> properly. I used (i think) the C860 ones.
> At last we have PXA27x connecting with linux and windows host .
> Here is the final patch i used.
>
> Cheers
>
> Juan Luis Lopez Blazquez
>
> VIVA GAJATES!!!!!!
> VIVA GAJATES!!!!!!
> VIVA GAJATES!!!!!!
>
>
> David Brownell escribió:
>
>> On Sunday 14 January 2007 2:01 am, Grahame Jordan wrote:
>>  
>>
>>> Hi,
>>>
>>> I tried using RNDIS on PXA255 but found it unreliable. Ended up 
>>> using a commercial driver from MCCI, similar to the Zaurus driver.  
>>> I believe the gadget/ether.c patch is coming out on 2.6.20. I am 
>>> using a patched 2.6.18.
>>>   
>>
>> The patch to gadget/ether.c will merge (I think) in 2.6.21 but is
>> in Greg's patch archive now, and is in linux-usb-devel archives; I
>> posted the patch on 11-Dec, subject "[patch 2.6.19-git] ethernet
>> gadget interop with MCCI Windows driver".  No reason it couldn't
>> be in 2.6.20 other than timing, IMO.
>>
>>
>>  
>>
>>> I know that MCCI are working with another customer on PXA270.
>>>   
>>
>> I'd expect that adding that patch to the gadget/ether.c driver
>> on a PXA 270 should let folk use MCCI's MS-Windows driver too.
>> (That's more or less what the Zaurus PDAs ship with.)
>>
>> PXA 270 USB peripheral support has been pretty painful, and I'm
>> hoping someone minimizes the ongoing pain by submitting a patch
>> for upstrea kernels that just makes it look to drivers like a
>> PXA 255, rather than trying to take advantage of Intel's dubious
>> hardware features to manage configurations and altsettings.
>>
>> - Dave
>>
>>
>>
>>  
>>
>>> Let me know if you need details.
>>>
>>> Cheers
>>>
>>> Grahame Jordan
>>>
>>> Juan Luis López wrote:
>>>   
>>>> Hi all
>>>> I am new in the list.
>>>> I want to connect a propietary board using pxa270 with machines 
>>>> running windows.
>>>> I have no problems connecting with linux hosts over usb.
>>>> My kernel is 2.6.19,  and use the file pxa27x_udc.c provided by 
>>>> Handhelds slightly modified.
>>>> I would know if anyone achieved to connect th pxa27x with windows 
>>>> machines.
>>>> I dont mind if it is with RNDIS or by a windows driver that support 
>>>> this kernel.
>>>>
>>>> Any help will be useful.
>>>> Thank you very much in advance.
>>>> ________________________
>>>> ________________________
>>>> Juan Luis Lopez Blazquez
>>>> [EMAIL PROTECTED]
>>>>     
>>
>>  
>>
>
> ------------------------------------------------------------------------
>
> 75,85c75,77
> <  * link-level setup only requires activating the configuration.  Only the
> <  * endpoint descriptors, and product/vendor IDs, are relevant; no control
> <  * operations are available.  Linux supports it, but other host operating
> <  * systems may not.  (This is a subset of CDC Ethernet.)
> <  *
> <  * It turns out that if you add a few descriptors to that "CDC Subset",
> <  * then some host side drivers from MCCI can treat it as one submode of
> <  * a proprietary scheme called "SAFE".  So we do that, making it easier
> <  * to use those MS-Windows drivers.  Those added descriptors make it look
> <  * like a CDC MDLM device, but they don't change device behavior at all.
> <  * (MCCI Engineering report 950198 "SAFE Networking Functions".)
> ---
>   
>>  * link-level setup only requires activating the configuration.
>>  * Linux supports it, but other host operating systems may not.
>>  * (This is a subset of CDC Ethernet.)
>>     
> 177,181c169,170
> < //#define   SIMPLE_VENDOR_NUM       0x049f
> < //#define   SIMPLE_PRODUCT_NUM      0x505a
> < //Act as if we were a zaurus
> < #define     SIMPLE_VENDOR_NUM       0x04DD
> < #define     SIMPLE_PRODUCT_NUM      0x8007
> ---
>   
>> #define      SIMPLE_VENDOR_NUM       0x049f
>> #define      SIMPLE_PRODUCT_NUM      0x505a
>>     
> 270,273d258
> < #ifdef CONFIG_USB_GADGET_S3C2410
> < #define DEV_CONFIG_CDC
> < #endif
> < 
> 302a288,290
>   
>> #ifdef CONFIG_USB_GADGET_S3C2410
>> #define DEV_CONFIG_CDC
>> #endif
>>     
> 506,510d493
> <  *
> <  * To interop with some MCCI MS-Windows drivers (MSFT's RNDIS drivers
> <  * are buggy) we add some more descriptors to advertise as a CDC-MDLM
> <  * variant (not strictly conformant) called "SAFE".  That borrows a
> <  * little from CDC Ethernet, and a little from CDC MDLM.
> 543a527,528
>   
>> #if defined(DEV_CONFIG_CDC) || defined(CONFIG_USB_ETH_RNDIS)
>>
>>     
> 552,553d536
> < #if defined(DEV_CONFIG_CDC) || defined(CONFIG_USB_ETH_RNDIS)
> < 
> 586,623c569
> < #ifndef     DEV_CONFIG_CDC
> < 
> < /* "SAFE" loosely follows CDC WMC MDLM, violating the spec in various
> <  * ways:  data endpoints live in the control interface, there's no data
> <  * interface, and it's not used to talk to a cell phone radio.
> <  */
> < 
> < static const struct usb_cdc_mdlm_desc mdlm_desc = {
> <     .bLength =              sizeof mdlm_desc,
> <     .bDescriptorType =      USB_DT_CS_INTERFACE,
> <     .bDescriptorSubType =   USB_CDC_MDLM_TYPE,
> < 
> <     .bcdVersion =           __constant_cpu_to_le16(0x0100),
> <     /*.bGUID = {
> <             0xd8, 0xdd, 0x1a, 0x5a, 0xda, 0xa4, 0x11, 0xd6,
> <             0x87, 0x7e, 0x00, 0x00, 0x86, 0x3b, 0x02, 0x30,
> <     },*/
> <     .bGUID = {
> <             0x5d, 0x34, 0xcf, 0x66, 0x11, 0x18, 0x11, 0xd6,
> <             0xa2, 0x1a, 0x00, 0x01, 0x02, 0xca, 0x9a, 0x7f,
> <     },
> < };
> < 
> < /* since "usb_cdc_mdlm_detail_desc" is a variable length structure, we
> <  * can't realy use its struct.  All we do here is say that we're using
> <  * the submode of "SAFE" which directly matches the CDC Subset.
> <  */
> < static const u8 mdlm_detail_desc[] = {
> <     6,
> <     USB_DT_CS_INTERFACE,
> <     USB_CDC_MDLM_DETAIL_TYPE,
> < 
> <     0,      /* "SAFE" */
> <     0,      /* network control capabilities (none) */
> <     0,      /* network data capabilities ("raw" encapsulation) */
> < };
> < 
> < #endif
> ---
>   
>> #ifdef       DEV_CONFIG_CDC
>>     
> 637a584
>   
>> #endif
>>     
> 730,732d676
> <  *
> <  * To assist host side drivers, we fancy it up a bit, and add descriptors
> <  * so some host side drivers will understand it as a "SAFE" variant.
> 743,744c687,688
> <     .bInterfaceClass =      USB_CLASS_COMM,
> <     .bInterfaceSubClass =   USB_CDC_SUBCLASS_MDLM,
> ---
>   
>>      .bInterfaceClass =      USB_CLASS_VENDOR_SPEC,
>>      .bInterfaceSubClass =   0,
>>     
> 792d735
> <     /* behavior is "CDC Subset"; extra descriptors say "SAFE" */
> 794,800c737,739
> <     fs_eth_function[2] = (struct usb_descriptor_header *) &header_desc;
> <     fs_eth_function[3] = (struct usb_descriptor_header *) &mdlm_desc;
> <     fs_eth_function[4] = (struct usb_descriptor_header *) &mdlm_detail_desc;
> <     fs_eth_function[5] = (struct usb_descriptor_header *) &ether_desc;
> <     fs_eth_function[6] = (struct usb_descriptor_header *) &fs_source_desc;
> <     fs_eth_function[7] = (struct usb_descriptor_header *) &fs_sink_desc;
> <     fs_eth_function[8] = NULL;
> ---
>   
>>      fs_eth_function[2] = (struct usb_descriptor_header *) &fs_source_desc;
>>      fs_eth_function[3] = (struct usb_descriptor_header *) &fs_sink_desc;
>>      fs_eth_function[4] = NULL;
>>     
> 894d832
> <     /* behavior is "CDC Subset"; extra descriptors say "SAFE" */
> 896,902c834,836
> <     hs_eth_function[2] = (struct usb_descriptor_header *) &header_desc;
> <     hs_eth_function[3] = (struct usb_descriptor_header *) &mdlm_desc;
> <     hs_eth_function[4] = (struct usb_descriptor_header *) &mdlm_detail_desc;
> <     hs_eth_function[5] = (struct usb_descriptor_header *) &ether_desc;
> <     hs_eth_function[6] = (struct usb_descriptor_header *) &hs_source_desc;
> <     hs_eth_function[7] = (struct usb_descriptor_header *) &hs_sink_desc;
> <     hs_eth_function[8] = NULL;
> ---
>   
>>      hs_eth_function[2] = (struct usb_descriptor_header *) &fs_source_desc;
>>      hs_eth_function[3] = (struct usb_descriptor_header *) &fs_sink_desc;
>>      hs_eth_function[4] = NULL;
>>     
> 948a883
>   
>> #ifdef       DEV_CONFIG_CDC
>>     
> 950a886
>   
>> #endif
>>     
> 958d893
> <     { STRING_ETHADDR,       ethaddr, },
> 960a896
>   
>>      { STRING_ETHADDR,       ethaddr, },
>>     
> 1055c991
> <     dev->in = ep_desc(gadget, &hs_source_desc, &fs_source_desc);
> ---
>   
>>      dev->in = ep_desc (dev->gadget, &hs_source_desc, &fs_source_desc);
>>     
> 1058c994
> <     dev->out = ep_desc(gadget, &hs_sink_desc, &fs_sink_desc);
> ---
>   
>>      dev->out = ep_desc (dev->gadget, &hs_sink_desc, &fs_sink_desc);
>>     
> 2347,2348c2283
> <      * drivers aren't widely available.  (That may be improved by
> <      * supporting one submode of the "SAFE" variant of MDLM.)
> ---
>   
>>       * drivers aren't widely available.
>>     
> 2350a2286
>   
>>              device_desc.bDeviceClass = USB_CLASS_VENDOR_SPEC;
>>     
> 2477,2480d2412
> < 
> <             /* use functions to set these up, in case we're built to work
> <              * with multiple controllers and must override CDC Ethernet.
> <              */
> 2544,2546c2476
> <      * ends up in a persistent config database.  It's not clear if
> <      * the host sides for the SAFE thing cares -- its original BLAN
> <      * thing didn't, Sharp didn't assign those addresses to Zaurii.
> ---
>   
>>       * ends up in a persistent config database.
>>     
> 2551,2557c2481,2491
> <     if (get_ether_addr(host_addr, dev->host_mac))
> <             dev_warn(&gadget->dev,
> <                     "using random %s ethernet address\n", "host");
> <     snprintf (ethaddr, sizeof ethaddr, "%02X%02X%02X%02X%02X%02X",
> <             dev->host_mac [0], dev->host_mac [1],
> <             dev->host_mac [2], dev->host_mac [3],
> <             dev->host_mac [4], dev->host_mac [5]);
> ---
>   
>>      if (cdc || rndis) {
>>              if (get_ether_addr(host_addr, dev->host_mac))
>>                      dev_warn(&gadget->dev,
>>                              "using random %s ethernet address\n", "host");
>> #ifdef       DEV_CONFIG_CDC
>>              snprintf (ethaddr, sizeof ethaddr, "%02X%02X%02X%02X%02X%02X",
>>                      dev->host_mac [0], dev->host_mac [1],
>>                      dev->host_mac [2], dev->host_mac [3],
>>                      dev->host_mac [4], dev->host_mac [5]);
>> #endif
>>      }
>>     


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
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