Superb quality and spec AB-Com PULSe 4K SE. Crazy offer! Only £99! FREE UK DELIVERY! 4K UHD, Enigma 2, Multiboot 4 images & more!...
Superb quality and spec AB-Com PULSe 4K Rev II Twin Satellite tuner only £149! FREE UK DELIVERY! 4K UHD, Enigma 2, SATA HDD facility, Multiboot 4 images & more!...

[VU+ Ultimo4K] ABM scans after running DVB-T frequency finder.

Some muxes are incomplete, so they will always run to the timeout.

That is not the case with either of your examples, but is with some other providers.

Do you mean providers other than freeview?

The other possible solution which I've mentioned a few times now, is for DVB-T frequency finder to select the lowest frequency mux, rather than the highest.

bbc1 sd tends to broadcast on the low frequencies.
 
Last edited:
.... edited my previous post.
 
The other possible solution which I've mentioned a few times now, is for DVB-T frequency finder to select the lowest frequency mux, rather than the highest.
That is a hack, because...

  1. We don't know for sure BBC mux will always be on a lower frequency (now or at any point in the future).
  2. We don't know if BBC mux might have faulty tables at some point in the future.
  3. We are no longer choosing the strongest mux so may choose a mux that belongs to another region.
 
That is a hack, because...

  1. We don't know for sure BBC mux will always be on a lower frequency (now or at any point in the future).
  2. We don't know if BBC mux might have faulty tables at some point in the future.
  3. We are no longer choosing the strongest mux so may choose a mux that belongs to another region.

It's no more of a hack than choosing the highest frequency.

I wish I'd included "with the highest signal quality" in that last post, I have every time before.

So, the highest frequency doesn't work for me, the lowest frequency does, but can't possibly be selected because ...

1) it might not be the bbc mux in the future
2) it might have faulty tables in the future
3) I never suggested using a weaker mux in the first place.

Let's forget I ever started this thread.
 
Last edited:
It's no more of a hack than choosing the highest frequency.
The sort is by SNR, not frequency. There is no logic in the code to force to the highest frequency.
https://github.com/oe-alliance/Auto...uetsMaker/src/scanner/frequencyfinder.py#L621

As the SNR is the same for all members of the dict the output will remain the same as the input. Please remember Python dicts are not ordered, so any order is possible for the input.

You could see the order of the input like this...
Code:
	def iterateUniqueTranspondersBySignalQuality(self):
		# returns an iterator list for self.transponders_unique in SignalQuality order ascending
		sort_list = [(x[0], x[1]["signalQuality"]) for x in list(self.transponders_unique.items())]
		return [x[0] for x in sorted(sort_list, key=self.sortitem]

	def sortitem(self, x):
		print(self.transponders_unique[x[0]])
		return x[1]
 
I'd seen this line which I assumed was called at some point to put the list in frequency order, low to high, so the mux eventually chosen would always be the highest frequency.

https://github.com/oe-alliance/Auto...uetsMaker/src/scanner/frequencyfinder.py#L614

Code:
	def iterateUniqueTranspondersByFrequency(self):
		# returns an iterator list for self.transponders_unique in frequency order ascending
		sort_list = [(x[0], x[1]["frequency"]) for x in list(self.transponders_unique.items())]
		return [x[0] for x in sorted(sort_list, key=lambda listItem: listItem[1])]
 
The sort is by SNR, not frequency.

SNR wouldn't be an issue, as the "problem" mux SNR is lower than the others, but doesn't it use signal quality, which is the same for all mux's (which becomes a subtle issue when sorting).
 
You could see the order of the input like this...
Code:
	def iterateUniqueTranspondersBySignalQuality(self):
		# returns an iterator list for self.transponders_unique in SignalQuality order ascending
		sort_list = [(x[0], x[1]["signalQuality"]) for x in list(self.transponders_unique.items())]
		return [x[0] for x in sorted(sort_list, key=self.sortitem[COLOR="#FF0000"])[/COLOR]]

	def sortitem(self, x):
		print(self.transponders_unique[x[0]])
		return x[1]

Thanks, I managed to get that working, handy as it happens.:)

This is what frequency finder comes up with, transponders in signal quality order, low to high, so the last system 0 one is selected.

Code:
12:31:21.7597 {'frequency': 482000000, 'tsid': 4175, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
12:31:21.7598 {'frequency': 490000000, 'tsid': 20544, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
12:31:21.7599 {'frequency': 506000000, 'tsid': 8219, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
12:31:21.7600 {'frequency': 514000000, 'tsid': 24640, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
12:31:21.7600 {'frequency': 530000000, 'tsid': 16521, 'onid': 9018, 'system': 1, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': True}
12:31:21.7602 {'frequency': 545833000, 'tsid': 12294, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
[COLOR="#FF0000"]12:31:21.7602 {'frequency': 562000000, 'tsid': 32769, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}[/COLOR]
12:31:21.7603 {'frequency': 746000000, 'tsid': 40960, 'onid': 9018, 'system': 1, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'Com7 National', 'custom_transponder_needed': True}

If I reverse the signal quality sort order, so highest to lowest, I get this (because P3 maintains sort stability, good old google :p)


Code:
13:04:32.1077 {'frequency': 482000000, 'tsid': 4175, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
13:04:32.1078 {'frequency': 490000000, 'tsid': 20544, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
13:04:32.1078 {'frequency': 506000000, 'tsid': 8219, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
13:04:32.1079 {'frequency': 514000000, 'tsid': 24640, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
13:04:32.1080 {'frequency': 530000000, 'tsid': 16521, 'onid': 9018, 'system': 1, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': True}
13:04:32.1081 {'frequency': 545833000, 'tsid': 12294, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
13:04:32.1081 {'frequency': 562000000, 'tsid': 32769, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
13:04:32.1082 {'frequency': 746000000, 'tsid': 40960, 'onid': 9018, 'system': 1, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'Com7 National', 'custom_transponder_needed': True}

I can then select the first system 0 transponder, and everything works. Two simple changes to frequencyfinder.py.

So the highest signal quality and lowest frequency.

I'm sure you'll be able to pick holes in it.

Code:
		for tsidOnidKey in self.iterateUniqueTranspondersBySignalQuality()[COLOR="#FF0000"][::-1][/COLOR]: # iterate in reverse order and select the first system 0 transponder

		for tsidOnidKey in self.iterateUniqueTranspondersBySignalQuality(): # iterate in order and select the first system 0 transponder

Code:
	def iterateUniqueTranspondersBySignalQuality(self):
		# returns an iterator list for self.transponders_unique in SignalQuality order ascending
		sort_list = [(x[0], x[1]["signalQuality"]) for x in list(self.transponders_unique.items())]
		return [x[0] for x in sorted(sort_list, key=lambda listItem: listItem[1])]

	def iterateUniqueTranspondersBySignalQuality(self):
		# returns an iterator list for self.transponders_unique in SignalQuality order descending
		sort_list = [(x[0], x[1]["signalQuality"]) for x in list(self.transponders_unique.items())]
		return [x[0] for x in sorted(sort_list, key=lambda listItem: listItem[1][COLOR="#FF0000"], reverse=True[/COLOR])]
 
Snr and signal quality same thing.

OK, but I see a lower snr on one of the mux's (the "wrong" mux as it happens), but frequency finder comes up with the same value for all of them.
 

Attachments

  • snr_high.webp
    snr_high.webp
    29.3 KB · Views: 10
  • snr_low.webp
    snr_low.webp
    20.9 KB · Views: 10
Last edited:
Ok. I don't get it. And in your xml file shows 65335, I.e. a 16 bit integer maxed out. But the infobar shows 50%?
 
Ok. I don't get it. And in your xml file shows 65335, I.e. a 16 bit integer maxed out. But the infobar shows 50%?

Yes, the same on my ET10K/P2, all 65335, but snr's vary.

I have noticed one value lower than 65335, just once in about 100 creations of the file.
 
I'll look at this later. Probably something to do with Vu not having snrdb available.
 
Code:
<e2frontendstatus>
<e2snrdb>15.06 dB</e2snrdb>
<e2snr>51 %</e2snr>
<e2ber>0</e2ber>
<e2acg>99 %</e2acg>
</e2frontendstatus>
 
I'd seen this line which I assumed was called at some point to put the list in frequency order, low to high, so the mux eventually chosen would always be the highest frequency.

https://github.com/oe-alliance/Auto...uetsMaker/src/scanner/frequencyfinder.py#L614

Code:
	def iterateUniqueTranspondersByFrequency(self):
		# returns an iterator list for self.transponders_unique in frequency order ascending
		sort_list = [(x[0], x[1]["frequency"]) for x in list(self.transponders_unique.items())]
		return [x[0] for x in sorted(sort_list, key=lambda listItem: listItem[1])]
That just sets the order of the custom transponders in the xml file.
Code:
	<customtransponders>
		<!-- customtransponder key="custom" frequency="482000000" transport_stream_id="104f" system="0"/ --><!-- original_network_id="233a" signalQuality="65535" channel="22" -->
		<!-- customtransponder key="custom" frequency="490000000" transport_stream_id="5040" system="0"/ --><!-- original_network_id="233a" signalQuality="65535" channel="23" -->
		<!-- customtransponder key="custom" frequency="506000000" transport_stream_id="201b" system="0"/ --><!-- original_network_id="233a" signalQuality="65535" channel="25" -->
		<!-- customtransponder key="custom" frequency="514000000" transport_stream_id="6040" system="0"/ --><!-- original_network_id="233a" signalQuality="65535" channel="26" -->
		<customtransponder key="custom" frequency="530000000" transport_stream_id="4089" system="1"/><!-- original_network_id="233a" signalQuality="65535" channel="28" -->
		<!-- customtransponder key="custom" frequency="545833000" transport_stream_id="3006" system="0"/ --><!-- original_network_id="233a" signalQuality="65535" channel="30" -->
		<!-- customtransponder key="custom" frequency="562000000" transport_stream_id="8001" system="0"/ --><!-- original_network_id="233a" signalQuality="65535" channel="32" -->
		<customtransponder key="custom" frequency="746000000" transport_stream_id="a000" system="1"/><!-- original_network_id="233a" signalQuality="65535" channel="55" -->
	</customtransponders>
 
duplicated.
 
Last edited:
Thanks, I managed to get that working, handy as it happens.:)

This is what frequency finder comes up with, transponders in signal quality order, low to high, so the last system 0 one is selected.

Code:
12:31:21.7597 {'frequency': 482000000, 'tsid': 4175, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
12:31:21.7598 {'frequency': 490000000, 'tsid': 20544, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
12:31:21.7599 {'frequency': 506000000, 'tsid': 8219, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
12:31:21.7600 {'frequency': 514000000, 'tsid': 24640, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
12:31:21.7600 {'frequency': 530000000, 'tsid': 16521, 'onid': 9018, 'system': 1, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': True}
12:31:21.7602 {'frequency': 545833000, 'tsid': 12294, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
[COLOR="#FF0000"]12:31:21.7602 {'frequency': 562000000, 'tsid': 32769, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}[/COLOR]
12:31:21.7603 {'frequency': 746000000, 'tsid': 40960, 'onid': 9018, 'system': 1, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'Com7 National', 'custom_transponder_needed': True}

If I reverse the signal quality sort order, so highest to lowest, I get this (because P3 maintains sort stability, good old google :p)


Code:
13:04:32.1077 {'frequency': 482000000, 'tsid': 4175, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
13:04:32.1078 {'frequency': 490000000, 'tsid': 20544, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
13:04:32.1078 {'frequency': 506000000, 'tsid': 8219, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
13:04:32.1079 {'frequency': 514000000, 'tsid': 24640, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
13:04:32.1080 {'frequency': 530000000, 'tsid': 16521, 'onid': 9018, 'system': 1, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': True}
13:04:32.1081 {'frequency': 545833000, 'tsid': 12294, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
13:04:32.1081 {'frequency': 562000000, 'tsid': 32769, 'onid': 9018, 'system': 0, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'East Yorks & Lincs', 'custom_transponder_needed': False}
13:04:32.1082 {'frequency': 746000000, 'tsid': 40960, 'onid': 9018, 'system': 1, 'bandwidth': 8, 'signalQuality': 65535, 'network_name': 'Com7 National', 'custom_transponder_needed': True}

I can then select the first system 0 transponder, and everything works. Two simple changes to frequencyfinder.py.

So the highest signal quality and lowest frequency.

I'm sure you'll be able to pick holes in it.

Code:
		for tsidOnidKey in self.iterateUniqueTranspondersBySignalQuality()[COLOR="#FF0000"][::-1][/COLOR]: # iterate in reverse order and select the first system 0 transponder

		for tsidOnidKey in self.iterateUniqueTranspondersBySignalQuality(): # iterate in order and select the first system 0 transponder

Code:
	def iterateUniqueTranspondersBySignalQuality(self):
		# returns an iterator list for self.transponders_unique in SignalQuality order ascending
		sort_list = [(x[0], x[1]["signalQuality"]) for x in list(self.transponders_unique.items())]
		return [x[0] for x in sorted(sort_list, key=lambda listItem: listItem[1])]

	def iterateUniqueTranspondersBySignalQuality(self):
		# returns an iterator list for self.transponders_unique in SignalQuality order descending
		sort_list = [(x[0], x[1]["signalQuality"]) for x in list(self.transponders_unique.items())]
		return [x[0] for x in sorted(sort_list, key=lambda listItem: listItem[1][COLOR="#FF0000"], reverse=True[/COLOR])]

So this looks like a complicated way to do this, (not tested):
Code:
-sort_list = [(x[0], x[1]["signalQuality"]) for x in list(self.transponders_unique.items())]
+sort_list = [(x[0], (x[1]["signalQuality"], x[1]["frequency"])) for x in list(self.transponders_unique.items())]

But it is a hack, because:
  • We don't know the BBC mux will always be at a lower frequency.
  • We don't know the repeat interval of the BBC mux complies with the timeout.

If you want to use logic, you could check the timeout of each SDT.
 
Last edited:

OpenViX Feeds Status

Back
Top