OPZ3 Jivelite

La Orange Pi Zero 3 est une carte économique et performante qui présente l’avantage d'exister dans des versions de 1 à 4Go, de quoi s'amuser ! Dans l'article ci-dessous, on va installer Jivelite, une application de visualisation permettant de contrôler les lecteurs connectés au Logitech Media Server.

La Orange Pi Zero 3 est la descendante de la Orange Pi Zero 2 que j'utilise depuis plus de 4 ans comme serveur Logitech Media Serveur. Avec la Zero 3, le processeur H616 est remplacé par un H618 aux performances équivalentes. 

Par contre, passer de 1Go à 4Go de RAM représente une belle évolution. Et en novembre 2023 la carte est disponible pour 25€+5€FDP, de quoi vraiment se régaler (avec un bon Linux) pour 30€ !

Système

Sur ce lien on peut télécharger une image de Debian bookworm avec un kernel 6.1 : c'est vraiment sympa d'avoir une version de Linux récente. Pour avoir un système qui démarre, il faut télécharger l'image de la version de Debian, décompresser le fichier et "flasher" une SD Card avec un logiciel tel que Raspi-Imager.

En matière de sécurité on changera les mots de passes de root et de l'utilisateur "orangepi" (dont le password est orangepi) et personnellement je crée un user "renaud".

A noter que de nombreux paramètres de la machine sont modifiés via orangepi-config avec la commande :

sudo orangepi-config

C'est avec cette application que l'on configure le Wifi, le clavier, la timezone etc...

L'application est aussi utile pour activer les ports I2C etc sur les GPIOs, mais ce n'est pas (encore) notre sujet.

Trois difficultés à l'installation de Jivelite 

L'installation de JiveLite selon les recettes utilisées avec les vieilles Raspberry et un OS en 32 bits ne fonctionnent plus. Jivelite s'appuie sur LuaJit pour fonctionner et sur la carte il faut réussier à compiler LuaJit puis Jivelite !

En résumé, voici les trois difficultés à résoudre pour installer Jivelite sur la Orange Pi Zero 3 (et d'autres cartes récentes) :

En avant !

Installation de LuaJit

Neofetch nous informe que nous avons une architecture aarch64. La page suivante nous indique qu'il nous faut la version v2.1 !

La page suivante nous indique comment récupérer localement la dernière version de LuaJit :

git clone https://luajit.org/git/luajit.git

disponible depuis le repo de LuaJIT.

Une fois le repo téléchargé, on compile :

cd luajit/

make && sudo make install

ou make && sudo make install PREFIX=/usr/local

Voilà, la question de LuaJIT est résolue.

Jivelite : modifier le code source

Le code source de ralph irving se trouve sur un repo git que l'on peut télécharger :

git clone https://github.com/ralph-irving/jivelite.git

Ensuite, il faut modifier 5 fichiers :

lib-src/lua-cjson-2.1.0/lua_cjson.c

lib-src/luaexpat-1.2.0/src/lxplib.c

src/common.h

src/jive.h

src/jive_framework.c

Ensuite

cd jivelite/

git submodule update --init --recursive

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src" LDFLAGS="-L/home/renaud/luajit/src -lluajit-5.2 -lm"

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src" LDFLAGS="-L/home/renaud/luajit/src -lluajit -lm"

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src -I/usr/include/SDL" LDFLAGS="-L/home/renaud/luajit/src -lluajit -lm -lSDL -lSDL_ttf" 

sudo apt-get install libsdl-ttf2.0-dev libsdl1.2-dev

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src" LDFLAGS="-L/home/renaud/luajit/src"

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src -I/usr/include/SDL" LDFLAGS="-L/home/renaud/luajit/src -lluajit -lm -lSDL -lSDL_ttf" 

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src" LDFLAGS="-L/home/renaud/luajit/src"

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src" LDFLAGS="-L/home/renaud/luajit/src"

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src -I/usr/include/SDL" LDFLAGS="-L/home/renaud/luajit/src -lluajit -lm -lSDL -lSDL_ttf"

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src -I/usr/include/SDL" LDFLAGS="-L/home/renaud/luajit/src -lluajit -lSDL -lSDL_ttf -lm"

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src -I/usr/include/SDL" LDFLAGS="-L/home/renaud/luajit/src -lluajit -lSDL -lSDL_ttf -lSDL_image -lm"

sudo apt-get install libsdl-gfx1.2-dev

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src -I/usr/include/SDL" LDFLAGS="-L/home/renaud/luajit/src -lluajit -lSDL -lSDL_ttf -lSDL_image -lSDL_gfx -lm"

sudo find / -name lxplib.c 2>/dev/null

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src -I/usr/include/SDL" LDFLAGS="-L/home/renaud/luajit/src -lluajit -lSDL -lSDL_ttf -lSDL_image -lSDL_gfx -lm"

make PREFIX=/usr CFLAGS="-I/home/renaud/luajit/src" LDFLAGS="-L/home/renaud/luajit/src"

cd bin

sudo apt install luarocks

sudo luarocks install luasocket

sudo luarocks install luafilesystem

./jivelite