scakemyer / plugin.video.quasar

Quasar add-on for Kodi
https://quasar.surge.sh/
346 stars 94 forks source link

Good ol' binary not found on Raspberry Pi3 armv7 #918

Open GoodMorgenFreeman opened 6 years ago

GoodMorgenFreeman commented 6 years ago

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

bjarnemagnussen commented 6 years ago

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

BinaryNumber commented 6 years ago

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

deadlyjinx commented 6 years ago

The same happened to me.

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

mcsdodo commented 6 years ago

Exactly same here. Fix worked.

ghost commented 6 years ago

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

mcsdodo commented 6 years ago

^^ 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).

ceso commented 6 years ago

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?

cacafuti8888 commented 6 years ago

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

maciex commented 6 years ago

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.

jokercomic12 commented 6 years ago

@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