[linux-dvb] usb-dvb and endpoints question

Antti Palosaari crope at iki.fi
Sat May 31 16:01:08 CEST 2008


Dennis Noordsij wrote:
> Hi list,
> 
> I am writing a driver for the TerraTec Piranha DVB-T USB stick (actually
> the Sanio SMS-1000 chipset). From reading USB logs I have a working
> libusb prototype which can tune and receive the transport stream, and
> use the hardware PID filter.
> 
> Porting it to a proper linux DVB driver I have the following question:
> 
> This device has exactly 2 bulk endpoints, as follows:
> 
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x02  EP 2 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
> 
> All control messages go out over EP2. All responses, as well as the
> transport stream, come in over EP1.

uh, very crazy solution :o

> All incoming packets have a small header which allows it to be mapped
> back to the corresponding request (excepting TS data which can be read
> spontaneously, but which is still marked with an additional header).
> 
> Does this mean that I can not really use the dvb-usb framework ? (since
> there is no generic_bulk_ctrl_endpoint, and since the TS stream also
> does not come on its own endpoint and even needs additional depackatizing).

Looks like it is not possible to use dvb-framework very much...

...But you can use generic_bulk_ctrl_endpoint & generic_write to write 
data if you can use dvb-framework partially. But reading data could be 
very hard to implement.

> Since incoming data is mixed with TS packets, you can no longer just
> write a command and read the next response. TS data will be streaming in
> and every time you make some request you will probably get some TS data
> first, and only then your response. How to solve?
> 
> Any pointers in the right direction? :-)

Other thoughts, wMaxPacketSize 0x0040 1x 64 bytes looks rather small for TS.

Can you provide sample usb-sniff from windows? Parsed with usb-replay 
parser.pl -script would be enough if whole sniff is very large.

> Cheers,
> Dennis

regards
Antti
-- 
http://palosaari.fi/



More information about the linux-dvb mailing list