Can i install this app?

Im trying to set alexa to be able to play music from minidlna using the skill (app) ourjukebox

ourjukebox needs to index the media files and provides tools todo so
http://ourjukebox.io/setup.html

Is it possible to install the linux or raspberry pi app onto openwrt?

i tried to follow the instructions at the bottom

First unzip and install ourjukebox:
tar -xf ourjukebox-armv7.tar.gz -C .ourjukebox
sudo install -m 755 .ourjukebox/ourjukebox /usr/local/bin

To index every morning at 1am, run crontab -e and add the line:
0 1 * * * /usr/local/bin/ourjukebox index-server

however install isnt an openwrt command
and i wasnt sure which build to try (linux or Raspberry Pi)
or if its even worth my time (if its not going to work due to platform differences)

Of course it isn't...neither is sudo.

What happens when you execute the file, like any other file that can be ran on a compatible machine?

2 Likes

There isn't much to install with an application that consists of a single executable file. Just copy it into a directory and give it permission.

But it's distributed as an ARMv7 binary. That means that at the least your OpenWrt router hardware must have an ARM CPU of v7 or higher. Also it almost certainly depends on libraries that are on the Pi (Raspbian most likely) but likely not OpenWrt.

4 Likes

looking at status page i have an arm7 v2 cpu

Model Linksys WRT1900AC
Architecture ARMv7 Processor rev 2 (v7l)

i extract out ourjukebox-armv7.tar from the downloaded gz file
i chmod it 777
but im not sure how to run it, i try:

root@Skittles: ./ourjukebox-armv7.tar
./ourjukebox-armv7.tar: line 1: syntax error: unexpected "("

You need to extract that .tar file too, of course. Also chmod 755 should be enough (not on the tar, but whatever you extract from the tar… assuming it's a binary. :wink: )

1 Like

thank you guys, obviously ive never done this before, always used opkg

so extracted the .tar file and in there is ourjukebox as well as a readme and version file

i try to run the ourjukebox but get another error:

root@Skittles:/mnt/usb1/shareroot/software/openwrt/app/ourjukebox-armv7# ls
ourjukebox readme.txt version.txt
root@Skittles:/mnt/usb1/shareroot/software/openwrt/app/ourjukebox-armv7# chmod 755 ourjukebox
root@Skittles:/mnt/usb1/shareroot/software/openwrt/app/ourjukebox-armv7# ./ourjukebox
-ash: ./ourjukebox: not found

You didn't try to run it - as the file wasn't executable yet!

@Owengerig, let's take this step by step...

  • first, untar the archive

Screenshot from 2020-05-06 12-03-24

  • make it executable: chmod +x ourjukebox
  • execute it: ./ourjukebox

(You may need to install something like the C/C++ Library; but you will get more information on that when executing.)

ash: not found means the executable did start, but it references a dynamically linked library which could not be loaded.

2 Likes

same error :frowning:

root@Skittles:/mnt/usb1/shareroot/software/openwrt/app/ourjukebox-armv7# chmod +x ourjukebox
root@Skittles:/mnt/usb1/shareroot/software/openwrt/app/ourjukebox-armv7# ./ourjukebox
-ash: ./ourjukebox: not found

is there any way to see which linked library failed to load?
maybe i should install the c/c++ lib stuff and try again?

You need to recompile it from sources with the C lib used in OpenWrt (musl-libc).
It is a minimised libc for embedded devices.

1 Like

ok thats a bit much for me i think

thank you though, ill try their other clients (windows and mac)

Or could he try:

opkg update
opkg install libstdcpp6
./ourjukebox

:question:

This works when I cross compile C/C++ programs.

https://openwrt.org/packages/pkgdata/libstdcpp6

(BTW, on older versions, the package name was libstdcpp.)

same error unfortunately

You might try ldd to see which libs are referenced:

For example "collectd":

root@router1:~# ldd /usr/sbin/collectd
        /lib/ld-musl-armhf.so.1 (0xb6f71000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb6f4e000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb6f32000)
        libc.so => /lib/ld-musl-armhf.so.1 (0xb6f71000)
1 Like

sorry for the late reply
tried again today to run the file and ran into all the same problems
I'm not sure I'm using ldd correctly or what the output is saying


root@OpenWrt:/# root@router1:~# ldd /usr/sbin/collectd
-ash: root@router1:~#: not found
root@OpenWrt:/#         /lib/ld-musl-armhf.so.1 (0xb6f71000)
-ash: syntax error: unexpected word (expecting ")")
-ash: syntax error: unexpected ")"
root@OpenWrt:/#         libz.so.1 => /usr/lib/libz.so.1 (0xb6f4e000)
-ash: syntax error: unexpected "("
root@OpenWrt:/#         libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb6f32000)
-ash: syntax error: unexpected "("
root@OpenWrt:/#         libc.so => /lib/ld-musl-armhf.so.1 (0xb6f71000)
-ash: syntax error: unexpected "("

ldd ourjukebox

obviously ...

Well, if you copy paste also the command prompt and output from my example, no wonder that the shell throws you errors...

The actual command in my example was just

You should do the same for your app.

haha sorry normally i know better

root@OpenWrt:/mnt/usb1/shareroot/software/openwrt/packages/ourjukebox/pi (armv7)# ldd ourjuk
ebox
        /lib/ld-linux-armhf.so.3 (0xb6eeb000)
        libdl.so.2 => /lib/ld-linux-armhf.so.3 (0xb6eeb000)
        librt.so.1 => /lib/ld-linux-armhf.so.3 (0xb6eeb000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb6de1000)
        libm.so.6 => /lib/ld-linux-armhf.so.3 (0xb6eeb000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb6dc6000)
        libpthread.so.0 => /lib/ld-linux-armhf.so.3 (0xb6eeb000)
        libc.so.6 => /lib/ld-linux-armhf.so.3 (0xb6eeb000)
Error relocating ourjukebox: __register_atfork: symbol not found
Error relocating ourjukebox: __strdup: symbol not found
Error relocating ourjukebox: gnu_get_libc_version: symbol not found
Error relocating ourjukebox: setcontext: symbol not found
Error relocating ourjukebox: backtrace: symbol not found
Error relocating ourjukebox: makecontext: symbol not found
Error relocating ourjukebox: getcontext: symbol not found

Hi,

were you able to solve this issue?