[linux-dvb] usb-dvb and endpoints question

Dennis Noordsij dennis.noordsij at movial.fi
Sat May 31 15:12:40 CEST 2008


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.

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).

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? :-)

Cheers,
Dennis




More information about the linux-dvb mailing list