Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: umodem(4) with "no pointer to data interface"



On Tue, Jan 21, 2014 at 07:49:18PM +0900, Ryo ONODERA wrote:
> 
> Here is output of
> # ./probe_usb /dev/ugen0.00
> 
> There is two interfaces.
> 

Yes, that is fine.  Lots of usb devices have more than one interface.


> 
> Interface 0:
>   Length: 9
>   Descriptor Type: 4
>   Interface No: 0
>   Alt Setting: 0
>   Num Endpoints: 1
>   Interface Class: 2
>   Interface SubClass: 2
>   Interface Protocol: 1
>   Interface: 0
>   Endpoint 0:
>     Length: 7
>     Length: 5
>     Length: (0x81) 1 (in)
>     Attributes: (0x3) interrupt 
>     Max Packet Size: -9228
>     Interval: 128
> 

Interface class is UICLASS_CDC, subclass UISUBCLASS_ABSTRACT_CONTROL_MODEL
protocol is UIPROTO_CDC_AT.  Umodem should attach on this.  Maybe I
borked the match... try changing:

        if (uaa->class != UICLASS_CDC ||
            uaa->subclass != UISUBCLASS_ABSTRACT_CONTROL_MODEL ||
            !(uaa->proto == UIPROTO_CDC_NOCLASS || uaa->proto == 
UIPROTO_CDC_AT))

in umodem_match to:

        if (uaa->class != UICLASS_CDC ||
            uaa->subclass != UISUBCLASS_ABSTRACT_CONTROL_MODEL ||
            uaa->proto != UIPROTO_CDC_AT)


see if that attaches... if it does then perhaps try:

        if (uaa->class != UICLASS_CDC ||
            uaa->subclass != UISUBCLASS_ABSTRACT_CONTROL_MODEL ||
            (uaa->proto != UIPROTO_CDC_NOCLASS && uaa->proto != UIPROTO_CDC_AT))

see if that works better... what we need to do is attach if the protocol
is NOCLASS or CDC_AT (arduino serial connections come up as NOCLASS).  I
never was certain I had the negative boolean logic right :(

> Interface 1:
>   Length: 9
>   Descriptor Type: 4
>   Interface No: 1
>   Alt Setting: 0
>   Num Endpoints: 2
>   Interface Class: 10
>   Interface SubClass: 0
>   Interface Protocol: 0
>   Interface: 0
>   Endpoint 0:
>     Length: 7
>     Length: 5
>     Length: (0x82) 2 (in)
>     Attributes: (0x2) bulk 
>     Max Packet Size: -9228
>     Interval: 1
>   Endpoint 1:
>     Length: 7
>     Length: 5
>     Length: (0x2) 2 (out)
>     Attributes: (0x2) bulk 
>     Max Packet Size: -9228
>     Interval: 1
> 

Interface class is UICLASS_CDC_DATA, interface subclass is UISUBCLASS_DATA
this is the data interface for the modem.

-- 
Brett Lymn
Staple Guns: because duct tape doesn't make that KerCHUNK sound - xkcd.com


Home | Main Index | Thread Index | Old Index