Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

T2 scanning - missing bouqet #59

Open
Reiner1210 opened this issue Dec 21, 2024 · 19 comments
Open

T2 scanning - missing bouqet #59

Reiner1210 opened this issue Dec 21, 2024 · 19 comments

Comments

@Reiner1210
Copy link

Hello,
I think that w_scan2 does not find all channels when scanning T2 (Germany).
I have compared it to Kaffeine (automatic search)

@stefantalpalaru
Copy link
Owner

Which version and what arguments did you use?

@Reiner1210
Copy link
Author

w_scan2 -vvv -a 0 -cDE -ft2 -X -R0 -E0 -O0 -F -t3 > channels_t.conf 2> scan.log
scan.log

Missing:
wscan

@Reiner1210
Copy link
Author

Reiner1210 commented Dec 24, 2024

Next problem:
tzap does not understand the output:
ERROR: error while parsing transmission_mode (syntax error)
TRANSMISSION_MODE_32K is not understand by tzap

@Reiner1210
Copy link
Author

Do you need some more informations ?

@stefantalpalaru
Copy link
Owner

I can't figure out what the scanning problem is, because I don't see any clue in the logs.

As for the tzap problem, it's known since at least 2018:

"Since the newer dvb-t2 channels would need 32K then tzap won't work - too old as it only appears to support 2K or 8K." - https://www.linuxquestions.org/questions/linux-software-2/scan-tune-to-dvb-t2-tv-at-the-command-line-4175644365/#post5940330

You can probably replace "TRANSMISSION_MODE_32K" with "TRANSMISSION_MODE_AUTO", to let tzap parse it, but a better solution is to move to dvbv5-zap.

@Reiner1210
Copy link
Author

Yes this was I have done.
Scanning problem: I have tried it with 2 sticks (Haupauge Dual and Sundtek)
Kaffeine works with Haupauge stick and finds all channels - what do they use ?

@stefantalpalaru
Copy link
Owner

@Reiner1210
Copy link
Author

Reiner1210 commented Dec 30, 2024

```cpp // Seek for DVB-T2 transponders
if ((autoScanSource == QLatin1String("AUTO-T2-Normal")) ||
	   (autoScanSource == QLatin1String("AUTO-T2-Offsets"))) {
	bool offsets = (autoScanSource == QLatin1String("AUTO-T2-Offsets"));

	for (int frequency = 177500000; frequency <= 226500000; frequency += 7000000) {
		DvbTransponder currentTransponder(DvbTransponderBase::DvbT2);
		DvbT2Transponder *dvbT2Transponder = currentTransponder.as<DvbT2Transponder>();
		dvbT2Transponder->frequency = frequency;
		dvbT2Transponder->bandwidth = DvbT2Transponder::Bandwidth7MHz;
		dvbT2Transponder->modulation = DvbT2Transponder::ModulationAuto;
		dvbT2Transponder->fecRateHigh = DvbT2Transponder::FecAuto;
		dvbT2Transponder->fecRateLow = DvbT2Transponder::FecNone;
		dvbT2Transponder->transmissionMode = DvbT2Transponder::TransmissionModeAuto;
		dvbT2Transponder->guardInterval = DvbT2Transponder::GuardIntervalAuto;
		dvbT2Transponder->hierarchy = DvbT2Transponder::HierarchyNone;
		dvbT2Transponder->streamId = 0;
		transponders.append(currentTransponder);
	}

	for (int frequency = 474000000; frequency <= 858000000; frequency += 8000000) {
		for (int i = 0; i < 3; ++i) {
			if ((i != 0) && (!offsets)) {
				break;
			}

			int offset = 0;

			if (i == 1) {
				offset = -167000;
			} else if (i == 2) {
				offset = 167000;
			}

			DvbTransponder currentTransponder(DvbTransponderBase::DvbT2);
			DvbT2Transponder *dvbT2Transponder = currentTransponder.as<DvbT2Transponder>();
			dvbT2Transponder->frequency = frequency + offset;
			dvbT2Transponder->bandwidth = DvbT2Transponder::Bandwidth8MHz;
			dvbT2Transponder->modulation = DvbT2Transponder::ModulationAuto;
			dvbT2Transponder->fecRateHigh = DvbT2Transponder::FecAuto;
			dvbT2Transponder->fecRateLow = DvbT2Transponder::FecNone;
			dvbT2Transponder->transmissionMode = DvbT2Transponder::TransmissionModeAuto;
			dvbT2Transponder->guardInterval = DvbT2Transponder::GuardIntervalAuto;
			dvbT2Transponder->hierarchy = DvbT2Transponder::HierarchyNone;
			dvbT2Transponder->streamId = 0;
			transponders.append(currentTransponder);
		}
	}
</code>

@Reiner1210
Copy link
Author

Reiner1210 commented Dec 30, 2024

So the missing stuff will be found from the 2. loop - without offset.
Where are your loops ? Can't see them quickly

@stefantalpalaru
Copy link
Owner

This is the transponder tuning function:

__tune_to_transponder(int frontend_fd, struct transponder *t, int v)

@Reiner1210
Copy link
Author

Ok and from where do you get the frequencies ?

@stefantalpalaru
Copy link
Owner

initial_tune(int frontend_fd, int tuning_data)

@Reiner1210
Copy link
Author

Reiner1210 commented Dec 30, 2024

In my logfile I found the following

parse_T2_delivery_system_descriptor:1367 f578000 system_id7766 plp_id1 SISO/MISO=SISO B8.0 G19128 T16 other_frequency1 TFS0
1 cells:
cell 577: center_frequency 578.000
find_transponder(8468:12352:16498): -> not found.
find_transponder_by_freq(QAM_AUTO f = 578000 kHz I999B8C999D0T16G19128Y0P1 (8468:12352:16498)) -> not found. (line 585)
find_transponder_by_freq(QAM_AUTO f = 578000 kHz I999B8C999D0T16G19128Y0P1 (8468:12352:16498)) -> not found. (line 585)
new transponder: (QAM_AUTO f = 578000 kHz I999B8C999D0T16G19128Y0P1 (8468:12352:16498)) 0x4004
cell577: center_frequency578000000

578000 is the frequency !

later:

578000: skipped (already known transponder)

@stefantalpalaru
Copy link
Owner

stefantalpalaru commented Dec 30, 2024

That's the part where it gets new transponder frequencies from old ones. Plenty of duplicates there.

What we need is the part where it tunes to that specific frequency and fails to get a lock, after the timeout:

tune to: QAM_AUTO f = 578000 kHz I999B8C999D0T16G19128Y0P1 (8468:12352:16498) (time: 02:43.949) 
 (0.356sec): SC 
 (1.026sec):  
 (1.332sec): SC 
 (1.996sec):  
 (2.302sec): SC 
 (2.947sec):  
 (3.252sec): SC 
----------no signal----------
tune to: QAM_AUTO f = 578000 kHz I999B8C999D0T999G999Y0P1 (8468:12352:16498) (time: 02:47.814)  (no signal)
 (0.407sec): SC 
 (1.003sec):  
 (1.361sec): SC 
 (1.973sec):  
 (2.126sec): SC 
 (2.921sec):  
 (3.074sec): SC 
 (3.891sec):  
----------no signal----------
        find_transponder_by_freq(QAM_AUTO f = 578000 kHz I999B8C999D0T999G999Y0P1 (8468:12352:16498))             matches tn center

@stefantalpalaru
Copy link
Owner

w_scan2/src/scan.c

Lines 2577 to 2579 in 212f116

ret & FE_HAS_SIGNAL ? "S" : "",
ret & FE_HAS_CARRIER ? "C" : "",
ret & FE_HAS_LOCK ? "L" : "");

So "SC" means we have a signal and carrier, but no lock.

@Reiner1210
Copy link
Author

By the way: Which format must be chossen to use dvbv5-zap instead of tzap ?

@stefantalpalaru
Copy link
Owner

Which format must be chossen to use dvbv5-zap instead of tzap ?

Both use the same format.

@Reiner1210
Copy link
Author

Don't think so
dvbv5-zap -c channels_t2.conf zdf
Demultiplexer »dvb0.demux0« wird verwendet.
Kanäle werden aus Datei »channels_t2.conf« gelesen.
FEHLER Schlüssel/Wert ohne eine Kanalgruppe beim Auswerten der Zeile 1 von channels_t2.conf

@stefantalpalaru
Copy link
Owner

You need to add "-I ZAP" to its command line.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants