Manjaro ARM | RPi4 | Multilib? | raspberrypi-firmware

Hi,

I'm trying to get Raspi Check to work with a RPi4 running Manjaro ARM.
I'm getting an error about vcgencmd not being present, this package helps with the android widget broadcasting temperature and workload etc. After a quick search I found this forum post:

https://archlinuxarm.org/forum/viewtopic.php?f=60&t=12746

Basically, there's an option on Ubuntu called libraspberrypi-bin and the archlinux equivalent is called raspberrypi-firmware but trying to install it using pacman gave me the usual "it's not available for you architecture" shpiel.

sudo pacman -Syy

Returned core, extra and community but no multilib
So I added

[multilib]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

to

/etc/pacman.conf

as per the previously mentioned post.
and then

sudo pacman -Syyu raspberrypi-firmware

but just got error with regards to multilib:

error: failed retrieving file 'multilib.db' from manjaro-arm.moson.eu : The requested URL returned error: 404
error: failed retrieving file 'multilib.db' from mirrors.dotsrc.org : The requested URL returned error: 404
error: failed retrieving file 'multilib.db' from y0sh.co : The requested URL returned error: 404
error: failed retrieving file 'multilib.db' from www.uex.dk : The requested URL returned error: 404
error: failed retrieving file 'multilib.db' from mirror.scachemaille.ch : The requested URL returned error: 404
error: failed to update multilib (failed to retrieve some files)
error: failed to synchronize all databases

I also tried without the SigLevel = PackageRequired line in the .conf with the same results.

Is arm8 not backwards compatible with arm7?
Is there any way to get this package on an RPi4?
In general, is there multilib support for Manjaro ARM?

Sorry if I'm noobish but couldn't find anything about this on ARM specifically.

Cheers! :upside_down_face:

Some things are. It depends on the distro. Manjaro ARM does not support Armv7.

No, because upstream (Raspberry Pi foundation) does not compile them for aarch64 architecture. Only armv6 and armv7.

No. The Manjaro ARM repository only contains aarch64 packages.

2 Likes

Hi,
You can make it to work with manjaro on the RPi4.
https://github.com/raspberrypi/userland
According to the github page "some of the libraries will work for it".
Here are some things that work:

[root@rasp4 ~]# cat /etc/*release
DISTRIB_ID=Manjaro-ARM
DISTRIB_RELEASE=19.12
DISTRIB_CODENAME=
DISTRIB_DESCRIPTION="Manjaro ARM Linux"
NAME="Manjaro-ARM"
ID=manjaro-arm
PRETTY_NAME="Manjaro ARM"
ANSI_COLOR="1;32"
HOME_URL="https://www.manjaro.org/"
SUPPORT_URL="https://archived.forum.manjaro.org/c/manjaro-arm/"

[root@rasp4 ~]# vcgencmd get_mem gpu
gpu=64M
[root@rasp4 ~]# vcgencmd measure_temp
temp=41.0'C
[root@rasp4 ~]# vcgencmd measure_clock arm
frequency(48)=700154304
[root@rasp4 ~]# vcgencmd bootloader_version
Sep 10 2019 10:41:50
version f626c772b15ba1b7e0532a8d50a761b3ccbdf3bb (release)
timestamp 1568112110

You might want to give it a try, if I remember correctly, I build it from their github with the --aarch64 argument (have a look at the buildme there). It's been some days ago, I believe something went wrong during the build process but the /opt/vc/bin/vcgencmd binary was there and working, so I didn't investigate. Still had to set

PATH=/opt/vc/bin/
LD_LIBRARY_PATH=/opt/vc/lib

in /etc/environment

I tried the android app you mentioned, it finds the vcgencmd binary but it looks like its unable to parse its output.
Manual execution in bash works though.

I hope that helps,
Cheers

Amazing!
I'll have a go at this c:

Edit: I followed these instructions and got vcgencmd installed as well as getting the raspicheck to parse some information. <: Here are some screenies comparing the raspicheck app results from my rpi4 headless server and the results from the desktop running Manjaro ARM.

img_eggsif_3702746988661784288
img_eggsif_5521393589718443871 img_eggsif_7853536971463034653
img_eggsif_8616275864119529876

I added the ssh user to the user group "video" (as per request by the original error message pointing me to get vcgencmd installed) but seems like that user group might have slightly different permissions under arch & manjaro as opposed to raspbian.

the most recent log file looks like this:

00:17:01.417 [main] WARN  d.e.r.activity.SettingsActivity - Enabling debug logging. Be warned that the log file can get huge because of this.
00:17:01.423 [main] DEBUG d.e.r.activity.helper.LoggingHelper - Logging was configured, debug logging enabled: true
00:17:13.201 [main] DEBUG d.e.rpicheck.activity.MainActivity - Load average preference: ONE_MINUTE
*bunch of keystore and signature lines omitted*
00:17:13.240 [AsyncTask #26] INFO  d.e.rpicheck.ssh.impl.RaspiQuery - Initialiazed new RaspiQuery for host aurorapi on port 22
00:17:13.240 [AsyncTask #26] INFO  d.e.rpicheck.ssh.impl.RaspiQuery - Connecting to host 'aurorapi' on port '22'.
00:17:13.246 [AsyncTask #26] INFO  d.e.rpicheck.ssh.impl.RaspiQuery - Using no host key verification.
00:17:14.964 [AsyncTask #26] DEBUG d.e.rpicheck.ssh.impl.RaspiQuery - Querying vcgencmd...
00:17:15.277 [AsyncTask #26] DEBUG d.e.rpicheck.ssh.impl.RaspiQuery - Checking vcgencmd location: vcgencmd
00:17:15.305 [AsyncTask #26] DEBUG d.e.rpicheck.ssh.impl.RaspiQuery - Path check output: usage: vcgencmd [-t] command
send a command to the videocore and print the result.

  -t          time how long the command takes to complete
  -h, --help  show this information

use the command 'vcgencmd commands' to get a list of available commands

exit status:
   0    command completed successfully
  -1    problem with vchi
  -2    videocore returned an error

for further documentation please see
https://www.raspberrypi.org/documentation/raspbian/applications/vcgencmd.md


00:17:15.306 [AsyncTask #26] INFO  d.e.rpicheck.ssh.impl.RaspiQuery - Found vcgencmd in path: vcgencmd.
00:17:15.452 [AsyncTask #26] INFO  d.e.rpicheck.ssh.impl.RaspiQuery - Querying core volts...
00:17:15.606 [AsyncTask #26] DEBUG d.e.r.ssh.impl.queries.FirmwareQuery - Querying firmware version, vcgencmd path=vcgencmd
00:17:15.680 [AsyncTask #26] DEBUG d.e.r.ssh.impl.queries.FirmwareQuery - Firmware version: aabb1fb5c19d80db268aeccd67b9f4e0f3d48a2a (clean) (release) (start)
00:17:15.681 [AsyncTask #26] INFO  d.e.r.s.i.queries.LoadAverageQuery - Querying load average for time period ONE_MINUTE
00:17:15.763 [AsyncTask #26] DEBUG d.e.r.s.i.queries.LoadAverageQuery - Checking line: bash: cat: command not found
00:17:15.764 [AsyncTask #26] DEBUG d.e.r.s.i.queries.LoadAverageQuery - Skipping line: bash: cat: command not found
00:17:15.764 [AsyncTask #26] DEBUG d.e.r.s.i.queries.LoadAverageQuery - Skipping line: bash: cat: command not found
00:17:15.764 [AsyncTask #26] DEBUG d.e.r.s.i.queries.LoadAverageQuery - Checking line: bash: cat: command not found
00:17:15.765 [AsyncTask #26] DEBUG d.e.r.s.i.queries.LoadAverageQuery - Skipping line: bash: cat: command not found
00:17:15.765 [AsyncTask #26] DEBUG d.e.r.s.i.queries.LoadAverageQuery - Skipping line: bash: cat: command not found
00:17:15.765 [AsyncTask #26] DEBUG d.e.r.s.i.queries.LoadAverageQuery - Checking line: bash: grep: command not found
00:17:15.765 [AsyncTask #26] DEBUG d.e.r.s.i.queries.LoadAverageQuery - Skipping line: bash: grep: command not found
00:17:15.765 [AsyncTask #26] DEBUG d.e.r.s.i.queries.LoadAverageQuery - Skipping line: bash: grep: command not found
00:17:15.766 [AsyncTask #26] DEBUG d.e.r.s.i.queries.LoadAverageQuery - Checking line: bash: wc: command not found
00:17:15.766 [AsyncTask #26] DEBUG d.e.r.s.i.queries.LoadAverageQuery - Skipping line: bash: wc: command not found
00:17:15.766 [AsyncTask #26] DEBUG d.e.r.s.i.queries.LoadAverageQuery - Skipping line: bash: wc: command not found
00:17:15.766 [AsyncTask #26] ERROR d.e.r.s.i.queries.LoadAverageQuery - Expected a different output of command: cat /proc/loadavg; cat /proc/stat | grep cpu | wc -l
00:17:15.767 [AsyncTask #26] ERROR d.e.r.s.i.queries.LoadAverageQuery - Actual output was: bash: cat: command not found
bash: cat: command not found
bash: grep: command not found
bash: wc: command not found

00:17:15.767 [AsyncTask #26] INFO  d.e.r.ssh.impl.queries.UptimeQuery - Querying uptime...
00:17:15.839 [AsyncTask #26] DEBUG d.e.r.ssh.impl.queries.UptimeQuery - Skipping line: 
00:17:15.839 [AsyncTask #26] ERROR d.e.r.ssh.impl.queries.UptimeQuery - Expected a different output of command: cat /proc/uptime
00:17:15.840 [AsyncTask #26] ERROR d.e.r.ssh.impl.queries.UptimeQuery - Actual output was: 
00:17:15.840 [AsyncTask #26] INFO  d.e.r.ssh.impl.queries.MemoryQuery - Querying memory information...
00:17:15.915 [AsyncTask #26] ERROR d.e.r.ssh.impl.queries.MemoryQuery - Expected a different output of command: cat /proc/meminfo | tr -s " "
00:17:15.915 [AsyncTask #26] ERROR d.e.r.ssh.impl.queries.MemoryQuery - Output was : 
00:17:15.916 [AsyncTask #26] ERROR d.e.r.ssh.impl.queries.MemoryQuery - Expected a different output of command: cat /proc/meminfo | tr -s " "
00:17:15.916 [AsyncTask #26] ERROR d.e.r.ssh.impl.queries.MemoryQuery - Output was : Memory information could not be queried. See the log for details.
00:17:15.916 [AsyncTask #26] INFO  d.e.r.ssh.impl.queries.SerialNoQuery - Querying serial number...
00:17:15.990 [AsyncTask #26] ERROR d.e.r.ssh.impl.queries.SerialNoQuery - Could not query cpu serial number. Expected another output of 'cat /proc/cpuinfo | grep Serial'.
00:17:15.991 [AsyncTask #26] ERROR d.e.r.ssh.impl.queries.SerialNoQuery - Output of 'cat /proc/cpuinfo | grep Serial': 

00:17:15.991 [AsyncTask #26] INFO  d.e.rpicheck.ssh.impl.RaspiQuery - Querying running processes...
00:17:16.066 [AsyncTask #26] INFO  d.e.r.s.i.q.NetworkInformationQuery - Querying network interfaces...
00:17:16.143 [AsyncTask #26] DEBUG d.e.r.s.i.q.NetworkInformationQuery - Found interface .
00:17:16.144 [AsyncTask #26] INFO  d.e.r.s.i.q.NetworkInformationQuery - Available interfaces: []
00:17:16.144 [AsyncTask #26] INFO  d.e.r.s.i.q.NetworkInformationQuery - Checking carrier of ...
00:17:16.220 [AsyncTask #26] DEBUG d.e.r.s.i.q.NetworkInformationQuery -  has no carrier.
00:17:16.222 [AsyncTask #26] INFO  d.e.rpicheck.ssh.impl.RaspiQuery - Querying disk usage...
00:17:16.296 [AsyncTask #26] WARN  d.e.rpicheck.ssh.impl.RaspiQuery - Expected another output of df -h. Skipping line: 
00:17:16.297 [AsyncTask #26] DEBUG d.e.rpicheck.ssh.impl.RaspiQuery - Disks: []
00:17:16.297 [AsyncTask #26] INFO  d.e.rpicheck.ssh.impl.RaspiQuery - Querying distribution name...
00:17:16.373 [AsyncTask #26] ERROR d.e.rpicheck.ssh.impl.RaspiQuery - Could not parse distribution. Make sure 'cat /etc/*-release' works on your distribution.
00:17:16.374 [AsyncTask #26] ERROR d.e.rpicheck.ssh.impl.RaspiQuery - Output of cat /etc/*-release | grep PRETTY_NAME: 

00:17:16.374 [AsyncTask #26] DEBUG d.e.r.ssh.impl.queries.FirmwareQuery - Querying system time via 'date --rfc-2822'.
00:17:16.453 [AsyncTask #26] DEBUG d.e.r.ssh.impl.queries.FirmwareQuery - System time: 
00:17:16.454 [AsyncTask #26] INFO  d.e.rpicheck.ssh.impl.RaspiQuery - Disconnecting from host a.

It's a bit odd it doesn't find cat, grep or wc..
I'm gonna cross post this to the raspicheck git, but as far as I'm concerned this issue is solved as I could get the temp showing which is what I was after. c:

Cheers!

1 Like

The main issues are :

    • no symlink from /usr/bin to /opt/vc/bin (but if you add /opt/vc/bin it should work)
    • and the rights and owner for /dev/vchiq
  Fichier : /dev/vchiq
   Taille : 0           Blocs : 0          Blocs d'E/S : 4096   fichier spécial de caractères
Périphérique : 6h/6d    Inœud : 3874        Liens : 1     Type de périph. : ed,0
Accès : (0600/crw-------)  UID : (    0/    root)   GID : (    0/    root)

On raspbian, the user is part of the "video" group and /dev/vchiq has the following rights and group :

  Fichier : /dev/vchiq
   Taille : 0           Blocs : 0          Blocs d'E/S : 4096   fichier spécial de caractères
Périphérique : 6h/6d    Inœud : 1153        Liens : 1     Type de périph. : f3,0
Accès : (0660/crw-rw----)  UID : (    0/    root)   GID : (   44/   video)

So if you change that device to 660 and owns by the video group and now it works fine !

file /opt/vc/bin/vcgencmd

/opt/vc/bin/vcgencmd: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=83fcfac8220c4834d010780148f028f6ae7c68a6, for GNU/Linux 3.7.0, stripped

I've made these changes on my installation and now I can use it with my user and not only with root on bash and it also works on the Raspi Check android app.
sudo chgrp video /dev/vchiq
sudo chmod g+rw /dev/vchiq

To commit changes permanently you should add a rule for that device in a file like this :

cat /etc/udev/rules.d/raspberrypi.rules 
SUBSYSTEM=="vchiq", GROUP="video", MODE="0660"

This topic was automatically closed after 90 days. New replies are no longer allowed.

Forum kindly sponsored by