Project

General

Profile

Bug #3547

SNR and Signal Strength problem

Added by s. steve almost 9 years ago. Updated almost 9 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
DVB
Target version:
-
Start date:
2016-02-02
Due date:
% Done:

0%

Estimated time:
Found in version:
4.0.7
Affected Versions:

Description

Hello,

I tried to install a Digital Devices Cine C2T2 V7 & DuoFlex C2T2 V3 (SET) - 4 Tuner DVB-C/C2/T/T2 for PCIe last week on my openSUSE Leap 42.1 x86_64 (4.1.13-5-default kernel) and TVHeadend v4.0.7 (from packman repo). I installed dddvb 0.9.22 driver from Digital Devices's github and it works with TVHeadend but it does not show the SNR and Signal Strength in Status window. I don't know BER zero value is truth or correct.

I tried to change "Force old status" to ON but anything not changed.

I ran dvbsnoop for some detailed information what data solved by Digital Devices Cine C2T2 tuners.

dvbsnoop -s signal -frontend /dev/dvb/adapter0/frontend0
cycle: 1732 d_time: 0.001 s Sig: 50 SNR: 320 BER: 0 UBLK: 0 Stat: 0x1f [SIG CARR VIT SYNC LOCK ]

It seems that tuner has some nominal values but tvheadend doesn't show it.

I posted this problem to forum but I think only developers can solve it. Thanks.


Files

SNR_Signal_Strength_problem.png (6 KB) SNR_Signal_Strength_problem.png s. steve, 2016-02-01 23:57
SNR_Signal_Strength.png (12.9 KB) SNR_Signal_Strength.png s. steve, 2016-02-03 20:57

History

#1

Updated by Jaroslav Kysela almost 9 years ago

No idea, the used ioctls are in src/input/mpegts/linuxdvb/linuxdvb_frontend.c - linuxdvb_frontend_monitor(). You may hack this code and provide your results back.

If you use "Force old status", then the same ioctls like dvbsnoop should be used, so it's not clear what's different. I would also report this to the driver developer (probably hw vendor in this case). But guessing from the other user reports - dd drivers are simply different (don't follow 100% the linux's dvbapi).

Also, you may check tvh's log for linuxdvb lines (errors/warnings).

#2

Updated by Robin Mitra almost 9 years ago

I have the same issue when I use the dd drivers. The proposed solution is to use the media build (also pointed to at their web site). The down side is that you get to build a whole new universe of kernel stuff and it uses (at least 3 days ago) the dd driver 0.9.18. The good side is, the snr values work. Also there are claims that the original dd drivers will not work side by side with other drivers for different cards, whereas the media build driver set while allow to work with TT... something.

#3

Updated by s. steve almost 9 years ago

Jaroslav Kysela wrote:

No idea, the used ioctls are in src/input/mpegts/linuxdvb/linuxdvb_frontend.c - linuxdvb_frontend_monitor(). You may hack this code and provide your results back.

Thank you for your advice, I found this
https://tvheadend.org/issues/1868

and I tried to hack linuxdvb_frontend.c

746 - mmi->tii_stats.signal = u16;
746 + mmi->tii_stats.signal = u16*100000/0xffff;

763 mmi->tii_stats.snr = u16;
763 + mmi->tii_stats.snr = u16*10000/0xffff;

but not solved the problem. I don't know what can I "hack" too...

Also, you may check tvh's log for linuxdvb lines (errors/warnings).

I don't found tvheadend's log, maybe I need to start debug?

#4

Updated by s. steve almost 9 years ago

Robin Mitra wrote:

I have the same issue when I use the dd drivers.

Can you solved the problem?

The proposed solution is to use the media build (also pointed to at their web site). The down side is that you get to build a whole new universe of kernel stuff and it uses (at least 3 days ago) the dd driver 0.9.18.

I installed dddriver 0.9.22 (https://github.com/DigitalDevices/dddvb/releases) and I didn't find there any other media link. What do you think about? Do I need to install something too?

The good side is, the snr values work. Also there are claims that the original dd drivers will not work side by side with other drivers for different cards, whereas the media build driver set while allow to work with TT... something.
Yes, I experienced it. I have an DVB-T tuner (Zarlink MT352 chip) and it doesn't work together DD Cine card.

Thank you.

#5

Updated by Robin Mitra almost 9 years ago

the media build drivers are pointed to here:
http://support.digital-devices.eu/knowledgebase.php?article=124

Note that the 'original' dd drivers work except for the signal values, and maybe they prevent you from using other tuners.
That seems more a general linux legacy that you can't easily build such a driver without building a myriad other things you don't know of/are not interested in.

#6

Updated by Robin Mitra almost 9 years ago

BTW, did you notice that ddbridge drivers dislike msi ?
Interestingly quite the opposite of the tbs drivers.

#7

Updated by s. steve almost 9 years ago

Robin Mitra wrote:

BTW, did you notice that ddbridge drivers dislike msi ?

I didn't know it I have Gigabytes Z77 series mobo.

I "hacked" linuxdvb_frontend.c again and something changed but I don't know it is correct.

- if(!gotprop && ioctl_check(lfe, 2)) {
- /* try old API */
- if (!ioctl(lfe->lfe_fe_fd, FE_READ_SIGNAL_STRENGTH, &u16)) {
- mmi->tii_stats.signal_scale = SIGNAL_STATUS_SCALE_RELATIVE;
- mmi->tii_stats.signal = u16;
}

+ if(!gotprop && ioctl_check(lfe, 2)) {
+ /* try old API */
+ if (!ioctl(lfe->lfe_fe_fd, FE_READ_SIGNAL_STRENGTH, &u16)) {
+ mmi->tii_stats.signal_scale = SIGNAL_STATUS_SCALE_RELATIVE;
+ mmi->tii_stats.signal = u16*1000;
+ }

- if(!gotprop && ioctl_check(lfe, 7)) {
- /* try old API */
- if (!ioctl(lfe->lfe_fe_fd, FE_READ_SNR, &u16)) {
- mmi->tii_stats.snr_scale = SIGNAL_STATUS_SCALE_RELATIVE;
- mmi->tii_stats.snr = u16;
- }

+ if(!gotprop && ioctl_check(lfe, 7)) {
+ /* try old API */
+ if (!ioctl(lfe->lfe_fe_fd, FE_READ_SNR, &u16)) {
+ mmi->tii_stats.snr_scale = SIGNAL_STATUS_SCALE_RELATIVE;
+ mmi->tii_stats.snr = u16*100;
+ }

I will try your recommended media_experimental packages but I don't know I can use it for DVB-C2/T2 or only S2 card...

#8

Updated by s. steve almost 9 years ago

s. steve wrote:

I will try your recommended media_experimental packages but I don't know I can use it for DVB-C2/T2 or only S2 card...

I removed DD's driver but it was some complicated first I needed to use rmmod ddbridge, dvb-core and cxd2099 then needed to remove "extra" dir from /lib/modules/kernel_version/

After, I installed media_build_experimental what you recommend here http://support.digital-devices.eu/knowledgebase.php?article=124. Very interest, tvheadend can recognize my old DVB-T tuner now. But this old DVB-T tuner show correct SNR and Signal Strength values and DD Cine tuners can't show any values...

I don't know what can I do that ecah tuner card can show correct values...

#9

Updated by Harald Nehring almost 9 years ago

As far as I understand the DD linux drivers (any package) don't support signal strength and SNR for DVB-C and DVB-S cards. You can read up all about them at http://www.vdr-portal.de/board18-vdr-hardware/board102-dvb-karten/124665-aktuelle-treiber-für-octopus-ddbridge-cines2-ngene-ddbridge-duoflex-s2-duoflex-ct-cinect-max-s8-sowie-tt-s2-6400-teil-3/, mostly in German, though.

#10

Updated by Robin Mitra almost 9 years ago

That isn't really 'readable' as it doesn't get to the point any time soon.
Anyway, AFAIK the values are read from the tuner module, (stv090x) aren't they?
However, every vendor is free to choose any reference point for those values acquired from the two registers. so it should be possible, if the ref point is known.
Also if you build the media_build drivers, you do get a value that seems to change somehow with your signal. So I guess they're just using a different tuner module?

I also seem to remember that the windows drivers changed the signal reporting sometime (long ago) from arbitary to NorDig (http://www.nordig.org/pdf/NorDig-Unified_Test_specification_ver_2.2.2.pdf)
Dunno if that is:
a) true,
b) useful,
c) actually the case for linux drivers too.

Also available in: Atom PDF