Hauppauge Win TV Dual HD (DVB) - Bulk vs Isochronous mode?
Added by Stephen Neal almost 3 years ago
I've got a pair of Hauppauge Win TV Dual HD USB DVB-C/T/T2 tuners, and with a modern kernel and the right firmware on a Raspberry Pi 3B+ or 4B they work OK.
However I recently discovered that you can run the tuner in one of two modes, Isochronous or Bulk. There is some discussion here : https://www.linuxtv.org/wiki/index.php/Hauppauge_WinTV-dualHD
Setting Transfer Mode to bulk
The stick supports two transfer modes: isochronous and bulk, whereas most revisions use the isochronous mode by default. This often leads to artifacts being shown in the video stream when both tuners are active (e.g. when a EPG scan is running in the background). This problem has been confirmed by many users of the VDR (German language, https://www.vdr-portal.de/forum/index.php?thread/133363-gel%C3%B6st-wintv-dualhd-moduloption-um-nur-einen-tuner-zu-nutzen/), but is very likely to occurr with other software as well. You can check the mode your stick is using with dmesg. When the stick is detected there is a line that reads "dvb set to isoc mode" when in isochronous mode, when bulk mode is active, an analogous message is shown. Currently there is no known way to change that mode using a linux command or passing options to the kernel module. The only way to change it is to use a free windows tool provided by the manufacturer Hauppauge: https://www.hauppauge.de/site/support/support_faq.php?n=FAQ.BulkOrIso Please install the windows driver for the stick first, because they need to be installed before running the tool. After changing the mode to "bulk" using this tool, please check the dmesg messages again and verify that it now states "dvb set to bulk mode".
I've tried the windows tool and it does allow me to switch my Dual HD from Isochronous to Bulk and dmesg confirms the tuner is in Bulk rather than Isochronous mode.
Does anyone have any views, experience etc. of which is the better mode to run in under Linux when both tuners are in use?
RE: Hauppauge Win TV Dual HD (DVB) - Bulk vs Isochronous mode? - Added by saen acro almost 3 years ago
Ask developer Brad Love
Maby he have idea how to do it.
RE: Hauppauge Win TV Dual HD (DVB) - Bulk vs Isochronous mode? - Added by Stephen Neal almost 3 years ago
Thanks for that tip - found a link to this https://github.com/b-rad-NDi/eeprom-tinker which discusses Bulk vs Isochronous mode and includes a tool with support for the Win TV Dual HD DVB model by the look of the code. (The tool produces the common required to make the change rather than making the change itself)
There's a suggestion that bulk mode may be a better bet for high bitrate situations (I guess were you to stream all of PSB3 and COM7 at the same time?)
RE: Hauppauge Win TV Dual HD (DVB) - Bulk vs Isochronous mode? - Added by Jason Keough over 2 years ago
Found a link to this. Look at the code.
https://github.com/b-rad-NDi/ slitherio eeprom-tinker
It shows Bulk and Isochronous mode.
RE: Hauppauge Win TV Dual HD (DVB) - Bulk vs Isochronous mode? - Added by Richard Musil over 2 years ago
Just for the record, as I have been wrapping my head around it for the past few days when I was trying TVHeadend on Raspbian (Buster) on RPi4 (with WinTV-dualHD DVB-T dual tuner). While working with DVB-T2 channels I registered a significant number of "Continuity errors".
It seemed to be a bit better on USB2 ports, though the errors were detected on both (USB3 and USB2) ports, not only in TVHeadend log, but also visible in the image as an intermittent pixelation and stuttering. For a comparison I have been running a same tuner (WinTV-dualHD) on the same source (both tuners connected through a passive Y-splitter) connected to RPi3B+. While even RPi3B+ showed some continuity errors, there were less of them, and they were not visible in the video (and I suspect they were mostly related to "channel switching").
RPi3B+ was also running Raspbian (Buster) updated to the same state and TVHeadend installed from the repo.
Eventually, I was also testing the same tuner (used with RPi4) on GTKing (Beelink, Amlogic 922X) with CoreElec 9.2.5 (and built in TVHeadend).
The conclusion was:
1) My tuner was originally set to isochronous mode as reported by `eeprom-tinker` (pointed out in this thread).
2) Using the tool I was able to switch it to bulk mode.
3) When running the bulk mode on RPi4 on both USB2 and USB3 ports it has led to significant reduction of "continuity errors" (though not to complete elimination), to the point that there is no degradation visible in the video.
The bulk mode also seems to improve an error rate on GTKing where previously it did not work very well on USB3 ports (but worked fine on the one and only USB2 port).
The only mystery is that the same tuner in isochronous mode works well on RPi3B+, which, technically, should be less capable (slower) than RPi4.