Sundtek DVB-S USB dongle armhf vs. arm64 Tvheadend incompatibility

It’s an S2 dongle.

There is very clearly armhf support in the script:

f_checkarmhf() {
	if [ -e /lib/ld-linux-armhf.so.3 ]; then
	  if [ ! -e /lib/ld-linux.so.3 ]; then
	      ln -s /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3
	  fi
	  /$tmp/.sundtek/chkarmsysvhf 1>/dev/null 2>&1
	  if [ "$?" != "0" ]; then
		return 1
	  fi
	  echo "ARM SYSV HF System detected"
	  if [ -e /proc/bus/nim_sockets ]; then
	      STBSYSTEM=1
	      echo "This seems to be a settopbox, also installing Settopbox extensions"
	  fi
	  SYSTEM="armsysvhf"
	  return 0
	fi
	return 1
}

So set your arch to armsysv… (override SYSTEM parameter at the end of all the checks)

To reiterate: there’s nothing for Sundtek to do or release. The support is already there and it works.

Ok, in the meantime I tried the armsysv build again, as that’s the only reasonable candidate in that list. And yes, it seems to be the right one:

libmediaclient.so: ELF 32-bit LSB shared object, ARM, EABI4 version 1 (SYSV), dynamically linked, stripped

Now I need to fix the remaining ld preload error:

ERROR: ld.so: object '/opt/lib/libmediaclient.so' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.

This is indeed a different error as the ELF/ABI mismatches I saw for the other builds - duh! Looking into it. We’re close…

Use readelf to verify

Hm, the ELF header of /opt/lib/libmediaclient.so and /usr/bin/tvheadend look fine/identical, yet the file attributes differ:

/opt/lib/libmediaclient.so:

  Tag_CPU_name: "ARM9TDMI"
  Tag_CPU_arch: v4T
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_optimization_goals: Aggressive Speed

/usr/bin/tvheadend:

  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_FP_arch: VFPv3-D16
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_rounding: Needed
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_VFP_args: VFP registers
  Tag_CPU_unaligned_access: v6

It’s obvious though, that /opt/bin/mediaclient fails to run as long as /opt/lib/libmediaclient.so isn’t preloaded. FYI, by “fails” in mean this, even when setting LD_PRELOAD explicitly (I commented out the entry in /etc/ld.so.preload):

$ LD_PRELOAD=/opt/lib/libmediaclient.so /opt/bin/mediaclient --start=4
-bash: /opt/bin/mediaclient: No such file or directory

Yes, the path is correct and the file is executable (755), go figure…

Oh, just noticed this in the ELF header of /opt/lib/libmediaclient.so:

Flags: 0x4000002, Version4 EABI, <unknown>

It doesn’t mention hard-float ABI so it might not be an armhf build after all…?

Progress! There’s an undocumented armsysvhf build “hidden” in the install script! Just run the installer with the option -system armsysvhf and you get what the Vero needs :beers:

But… Tvheadend still doesn’t see the adapters, despite this:

     FRONTEND: /dev/dvb/adapter0/frontend0
     DVR: /dev/dvb/adapter0/dvr0
     DMX: /dev/dvb/adapter0/demux0

Any idea? (see below)

The adapters are probably cached and you need to clean the tuner cache.

Also try rebooting.

Tried rebooting a couple of times. How do I scrub the tuner cache manually?

Finally!!! :beers: Marking the hidden option above as solution.

@Xanderzdad : at your service :wink:

2 Likes

Glad it’s working now. I’m sure this will help others in the future too.

That is great news. Unfortunately I don’t really understand anything you did!
I am just an ordinary user and was hoping for more of PnP solution.
Is there a simple (and I really mean that - bullet points etc) step by step guide to getting DVB-S working?

My knowledge is limited to being able to SSH into the Vero so is there a basic script I can copy and paste? I am sure this would open up a larger market for the Vero :grin:

It’s all in the post tagged as solution :sunglasses:

It boils down to this:

ssh osmc@vero
wget https://sundtek.de/media/sundtek_netinst.sh
chmod +x ./sundtek_netinst.sh
sudo ./sundtek_netinst.sh -system armsysvhf
sudo reboot

If you have an existing Tvheadend setup on your Vero and the Sundtek adapters don’t show up, go ahead and delete the old Tvheadend config and start from scratch (following the Tvheadend wizard) like this.

Let me know if you’ve further questions.

Thank you very much. I actually think I can do that. I really appreciate you taking the trouble.
Any suggestions on the best place to buy a sundtek DVB-S?

I don’t have Tvheadend installed as I haven’t bothered to buy a DVB-S yet - since I couldn’t find anyone (until you) you had managed to get it working :grinning:. Hopefully a clean install will work.
Thanks again

Any suggestions on the best place to buy a sundtek DVB-S?

Probably best from Sundtek themselves…?

Ha…that should have been obvious. Stressy day and my brain is not engaged. Thanks

There are also Dual DVB-S/S2/S2X USB Tuners available now.

I guess it would have been easier just to ask us about the drivers :wink:
Does this system use a 64bit kernel and 32bit environment?
I wonder why it didn’t detect the system properly, there must be a reason behind that.

Back then in early 2018 we still had tons of driver updates for the current fpga based multituners in the queue.

1 Like

There are also Dual DVB-S/S2/S2X USB Tuners available now.

Yep, saw that right after ordering two single ones. Oh well…

I guess it would have been easier just to ask us about the drivers

I tried that but no one could be reached via the support chat. I’m also still waiting for my forum account to be activated and, to be honest, the info there is scattered across various places, outdated and riddled with heaps of broken links (404s, due to changed request URL format, could have been converted). I like your hardware but the so called “manual” (forum) is barely usable, in particular for the non-IT pros, I imagine, trying to use your devices.

Does this system use a 64bit kernel and 32bit environment?
I wonder why it didn’t detect the system properly, there must be a reason behind that.

Yes, that’s right. Thus the architecture detection simply finds arm64 and installs that. Also, armsysvhf, the option eventually used here, is completely undocumented in the installers help page. Please add that.

Cheers

1 Like

The Support Chat is a public IRC channel (#sundtek) on irc.freenode.net, sometimes it takes some time to get an answer since it’s not a direct one to one chat.

arm64 is available since 2016
arm64musl is available since late 2018

If all Vero systems are the same we can add a check to the installer to use the 32bit build automatically instead of 64bit.

arm64 is available since 2016
arm64musl is available since late 2018

Not sure how that’s relevant in this context.

If all Vero systems are the same we can add a check to the installer to use the 32bit build automatically instead of 64bit.

I recommend two things:

  1. Add armsysvhf and arm64 to the (documented) -system options of the sundtek_netinst.sh installer script (see above)
  2. Try to detect if there’s an armhf userland if you detected an arm64 kernel. If so install armsysvhf instead, at least optionally.

Yet, @sam_nazarko should chime in here for an official recommendation.

1 Like