How to access 204-byte packets from DVB tuners using LinuxTV API?

Hey guys, I’m working on a project and I need some help with the LinuxTV API. I know we can get 188-byte transport stream packets from tuners, but I’m wondering if there’s a way to get the full 204-byte packets.

I’m particularly interested in this for ISDB-T and ISDB-Tb standards. The extra 16 bytes have some useful info about the modulation.

I’ve looked through the kernel docs and headers like frontend.h and dmx.h, but I can’t find anything about this. Has anyone figured out how to do this with the LinuxTV API?

It would be super helpful if someone could point me in the right direction. Thanks in advance!

// Example code snippet
struct dvb_frontend *fe;
struct dmx_pes_filter_params pesFilterParams;

// Initialize frontend
fe = dvb_attach(TUNER_DRIVER, TUNER_PARAMS);

// Set up PES filter
memset(&pesFilterParams, 0, sizeof(pesFilterParams));
pesFilterParams.pid = PID_TO_FILTER;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_TAP;
pesFilterParams.pes_type = DMX_PES_OTHER;

// How to modify this to get 204-byte packets?

hey there! i’ve dabvled with dvb tuners before, but haven’t tried getting 204-byte packets. have you looked into using raw_capture mode? it might bypass the usual 188-byte limitation. you could also check if your specific tuner hardware supports exposing the full 204-byte packets. good luck with your project!

I’ve encountered a similar challenge when working with DVB tuners. Unfortunately, the LinuxTV API doesn’t natively support accessing 204-byte packets. The API is designed to handle the standard 188-byte MPEG-TS packets, which are more commonly used.

However, you might consider exploring alternative approaches. One option is to modify the kernel driver for your specific tuner hardware to expose the raw 204-byte packets. This would require in-depth knowledge of kernel development and your tuner’s architecture.

Another possibility is to implement a custom userspace driver using direct hardware access methods, bypassing the LinuxTV API entirely. This approach is complex and may not be feasible for all tuner models.

If you absolutely need the extra 16 bytes, you might have to look into specialized hardware or consider reconstructing the information from other available data sources.

Hmm, interesting challenge! have u considered using a custom kernel module to intercept the raw data stream before it gets processed by the LinuxTV API? that might let you grab those elusive 204-byte packets. any chance you could share more about your specific tuner hardware? maybe theres some undocumented features we could exploit?