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) :
Jivelite s'appuis sur une vieille version de LuaJIT et il va falloir utiliser une version récente compatible avec l'architecture du processeur
le code source de Jivelite doit être modifié pour recenser les bonnes bibliothèques et ne plus utiliser des fonctions obsolètes qui ont été remplacées dans la version la plus récente de Jivelite
et enfin, certains librairies ne sont pas installées par défaut ! On pourra résoudre ce point avec le gestionnaire de librairies de LuaJit.
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