plugin.video.quasar icon indicating copy to clipboard operation
plugin.video.quasar copied to clipboard

Good ol' binary not found on Raspberry Pi3 armv7

Open GoodMorgenFreeman opened this issue 7 years ago • 10 comments

When starting Kodi, the Quasar plugin crashes by saying "Unable to find quasar binary". Now this sort of thing has been reported before, and people seem to solve this issue by just installing the right version of Quasar.

So for my example case of Raspberry Pi 3 that would be linux_armv7 package. Easy. Problem is even after deleting every quasar related plugin and reinstalling the armv7 package, I still got the same error when booting.

Did some poking around and I found a couple of things:

  1. The binary .kodi/addons/plugin.video.quasar/resources/bin/linux_armv7/quasar was in it's right place as expected
  2. The quasar logs in kodi were referring to the host system as arm and therefore they were looking for linux_arm binaries, Whereas I would expect "linux_armv7"

So after digging around between the issues opened on the repo I came across this one #331 which seem to be dealing with a similar problem. In the commits on the issue I saw that support for armv7 was added, so all should work. I tried a uname -a and this is what I got:

4.9.29-13-osmc #1 SMP PREEMPT Thu Dec 21 17:18:07 UTC 2017 armv7l GNU/Linux

Wtf is armv7l? Surely enough the python script also returned armv7l which threw off this, which was expecting armv7.

Now I understand that l is some kind of flag, so armv7 is still applicable. Once I added ret["arch"] = "armv7" before the function return in .kodi/addons/plugin.video.quasar/resources/site-packages/quasar/osarch.py everything started working again!

I guess some tweak is needed in osarch.py so that armv7l (or armv7 followed by any other flag for that matter) would also map to armv7

This happened using: plugin.video.quasar-0.9.78.linux_armv7 Kodi 17.6 running on OSMC (4.9.29-13-osmc) HW: Raspberry Pi 3

GoodMorgenFreeman avatar Jan 14 '18 16:01 GoodMorgenFreeman

Having the exact same issue with the same HW and SW. Your quick fix helped!

bjarnemagnussen avatar Jan 14 '18 19:01 bjarnemagnussen

Exactly the same problem for me with exactly the same configuration.

BinaryNumber avatar Jan 15 '18 09:01 BinaryNumber

The same happened to me.

I installed the linux_arm release and it's working, at least for now.

deadlyjinx avatar Jan 16 '18 19:01 deadlyjinx

Exactly same here. Fix worked.

mcsdodo avatar Jan 19 '18 10:01 mcsdodo

Nice catch, thank you. Just in case somebody does not understand. The change works on line 31 of the file.

ghost avatar Jan 20 '18 23:01 ghost

^^ not really. To be sure, one should put it right before return, because it might be overwritten by following statements/or not even hit if put before. Example here osarch.py. To keep correct indent of the statement is important (4 spaces).

mcsdodo avatar Jan 21 '18 16:01 mcsdodo

Mmmm this works for me too, but now I have another issue and I open a thread here https://github.com/scakemyer/plugin.video.quasar/issues/920

Is anyone of you guys also having that problem?

ceso avatar Jan 21 '18 18:01 ceso

Thanks guys, worked for me. As always after a Osmc update, something stops working... frustrating.....

cacafuti8888 avatar Jan 22 '18 00:01 cacafuti8888

Interestingly platform.machine() returns different values when run inside Kodi and different when run for python 2.7:

In Kodi 17.6, when debugging Quasar script:

osmc@osmc:~$ telnet localhost 4444
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
> /home/osmc/.kodi/addons/plugin.video.quasar/resources/site-packages/quasar/osarch.py(7)get_platform()
-> build = xbmc.getInfoLabel("System.BuildVersion")
(Pdb) platform.machine()
'arm'
(Pdb) print(platform.python_version())
2.7.13
(Pdb) print platform.__file__
/usr/lib/python2.7/platform.py

Directly from python 2.7:

osmc@osmc:~$ python2.7 
Python 2.7.13 (default, Nov 24 2017, 17:33:09) 
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> platform.machine()
'armv7l'
>>> print(platform.python_version())
2.7.13
>>> print platform.__file__
/usr/lib/python2.7/platform.pyc

There's a difference in the __file__ value returned and the machine() output. Any ideas? It seems this is not Quasar fault, but rather the OS?

EDIT: I debugged further and the difference starts in the os.uname() call. In kodi addon it returns arm, in python it returns armv7l. No idea why.

maciex avatar Jan 22 '18 23:01 maciex

@GoodMorgenFreeman @maciex Thanks for sharing this info. I checked further, Look like issue with OS. In unix forum it is suggested that if you run this on 64 bit processor it will give armv8

https://unix.stackexchange.com/questions/136407/is-my-linux-arm-32-or-64-bit?answertab=votes#tab-top

jokercomic12 avatar Jan 28 '18 06:01 jokercomic12