Note de ce sujet :
  • Moyenne : 5 (1 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Installation de HQPe/NAA/Diretta ALSA drivers sous Fedora
#1
Bonjour,

Voici les scripts que j'utilise pour installer HQPlayer Embedded / NAA sous Fedora.
Ces scripts permettent aussi de compiler automatiquement les drivers ALSA de Diretta.

Les deux scripts doivent être dans le répertoire /home/xxx de Fedora 37.
Le premier sous le nom que vous souhaiterez, le deuxième sous le nom extract-vmlinux.sh

Le driver ALSA de Diretta est téléchargé depuis le site de Diretta.

N'oubliez pas de les rendre exécutables (chmod +x xxxx.sh)

Mise à disposition gracieuse et sans aucune garantie.
À vos risques et périls. Enjoy Big Grin

Code :
#!/bin/sh
# Install_HQPe
# GPL 2.0
# Mis à disposition sans garantie d'aucune sorte
# bear at forum-hifi.fr
#

RELEASE=$(uname -r)
echo "Current kernel release is: $RELEASE"
USER=$(whoami)
echo "Current user is: $USER"
sudo dnf update
echo ""

echo "You will be offered the opportunity to achieve certain tasks:"
echo "Please choose among the following"
echo ""
echo "LastKernel install the latest version of Fedora Kernel (be careful, as this is 'bleeding edge')"
echo "Diretta: install and compile the Diretta ALSA drivers"
echo "NAA: install HQPlayers's Network Audio Adapter"
echo "HQPe: install HQPlayer Embedded for Fedora"
echo "Network: change parameters of Diretta network interface"
echo "Optimize: remove certain unnecessary services"
echo "reboot"
echo "exit"
echo ""

echo "Which task would you like to achieve?"
select option in "LastKernel" "Diretta" "NAA" "HQPe" "Network" "Optimize" "reboot" "exit" ; do
   case $option in

LastKernel )
sudo dnf install fedora-repos-rawhide
sudo dnf upgrade kernel* --enablerepo=rawhide

;;

Diretta )
sudo dnf install -y kernel-devel make dwarves tar zstd rsync curl
cd /home/$USER

/bin/bash /home/$USER/extract-vmlinux.sh /boot/vmlinuz-$RELEASE > vmlinux
sudo cp vmlinux /usr/src/kernels/$RELEASE/.

DIR="/home/$USER/DirettaALSAdriver"
if [ -d "$DIR" ]; then
 # Take action if $DIR exists. #
 echo "Saving previous DirettaALSAdriver directory"
 DIRBAK="/home/$USER/DirettaALSAdriver_backup"
 mv $DIR $DIRBAK
fi

# downloading latest version of driver
curl 'https://www.diretta.link/download/DirettaALSAdriver.tar.zst' --output DirettaALSAdriver.tar.zst
# uncompressing Diretta drivers' directory
tar --use-compress-program=unzstd -xvf DirettaALSAdriver.tar.zst

cd DirettaALSAdriver/driver
touch alsa_bridge.c
sudo make KERNELDIR=/usr/src/kernels/$RELEASE/
sudo insmod alsa_bridge.ko

cd /home/$USER
x='\/home\/user'
y="\/home\/$USER"

sed -i -e "s/$x/$y/g" /home/$USER/DirettaALSAdriver/diretta_bridge_driver.service
sed -i -e "s/$x/$y/g" /home/$USER/DirettaALSAdriver/diretta_bridge_host.service

sudo cp /home/$USER/DirettaALSAdriver/diretta_bridge_driver.service /etc/systemd/system
sudo cp /home/$USER/DirettaALSAdriver/diretta_bridge_host.service /etc/systemd/system

sudo systemctl enable diretta_bridge_driver
sudo systemctl enable diretta_bridge_host

        ;;

NAA )
sudo dnf install https://www.sonarnerd.net/src/fc36/libgmpris-2.2.1-6.fc36.x86_64.rpm
sudo dnf install https://www.signalyst.eu/bins/naa/linux/fc36/networkaudiod-4.4.0-14.fc36.x86_64.rpm
sudo systemctl enable networkaudiod
sudo systemctl start networkaudiod

;;


HQPe )
sudo dnf install https://www.sonarnerd.net/src/fc37/libgmpris-2.2.1-6.fc37.x86_64.rpm
sudo dnf install https://www.signalyst.eu/bins/hqplayerd/fc37/hqplayerd-5.0.3-3.fc37.x86_64.rpm  
sudo systemctl enable hqplayerd
sudo systemctl start hqplayerd
read -p "Please enter the password you want to use for HQPlayer's web interface: " PWD
echo ""
echo "The username you will be using is $USER"
echo "The password you entered is: $PWD"
echo "Is this correct ?"
select yn in "Yes" "No" ; do
case $yn in
Yes )
sudo hqplayerd -s $USER $PWD

break ;;

No )

break ;;

   esac
done

;;


Network )
nmcli -f DEVICE,TYPE,IP4-CONNECTIVITY,CONNECTION device

read -p "Please enter the interface names you want to bridge together: " ifname1 ifname2
echo "The interface name you entered is: $ifname1 $ifname2"
echo "Is this correct ?"
select yn in "Yes" "No" ; do
case $yn in
Yes )
sudo nmcli con add ifname br0 type bridge con-name br0
sudo nmcli con add type bridge-slave ifname $ifname1 master br0
sudo nmcli con add type bridge-slave ifname $ifname2 master br0
sudo nmcli con mod br0 ipv4.method static ipv4.address 192.168.1.24/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8,8.8.4.4
sudo nmcli con mod br0 ipv6.method link-local ipv6.route-metric 100 connection.autoconnect yes
sudo nmcli con down $ifname1; sudo nmcli con down $ifname2; sudo nmcli con up br0

break ;;

No )
break ;;

   esac
done

;;

Optimize )
sudo systemctl disable auditd
sudo systemctl stop firewalld
sudo dnf remove firewalld
sudo dnf remove selinux-policy
sudo systemctl disable systemd-journald
sudo systemctl stop systemd-journald
sudo systemctl disable systemd-oomd
sudo systemctl stop systemd-oomd
sudo systemctl disable systemd-homed
sudo systemctl stop systemd-homed

sudo dnf install dropbear
sudo systemctl enable dropbear
sudo systemctl start dropbear

sudo systemctl disable sshd
sudo systemctl stop sshd
sudo dnf install htop

;;

reboot )
sudo reboot

;;

exit )
exit

;;

   esac
done

et

Code :
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-only
# ----------------------------------------------------------------------
# extract-vmlinux - Extract uncompressed vmlinux from a kernel image
#
# Inspired from extract-ikconfig
# (c) 2009,2010 Dick Streefland <dick@streefland.net>
#
# (c) 2011      Corentin Chary <corentin.chary@gmail.com>
#
# ----------------------------------------------------------------------

check_vmlinux()
{
# Use readelf to check if it's a valid ELF
# TODO: find a better to way to check that it's really vmlinux
#       and not just an elf
readelf -h $1 > /dev/null 2>&1 || return 1

cat $1
exit 0
}

try_decompress()
{
# The obscure use of the "tr" filter is to work around older versions of
# "grep" that report the byte offset of the line instead of the pattern.

# Try to find the header ($1) and decompress from here
for pos in `tr "$1\n$2" "\n$2=" < "$img" | grep -abo "^$2"`
do
pos=${pos%%:*}
tail -c+$pos "$img" | $3 > $tmp 2> /dev/null
check_vmlinux $tmp
done
}

# Check invocation:
me=${0##*/}
img=$1
if [ $# -ne 1 -o ! -s "$img" ]
then
echo "Usage: $me <kernel-image>" >&2
exit 2
fi

# Prepare temp files:
tmp=$(mktemp /tmp/vmlinux-XXX)
trap "rm -f $tmp" 0

# That didn't work, so retry after decompression.
try_decompress '\037\213\010' xy    gunzip
try_decompress '\3757zXZ\000' abcde unxz
try_decompress 'BZh'          xy    bunzip2
try_decompress '\135\0\0\0'   xxx   unlzma
try_decompress '\211\114\132' xy    'lzop -d'
try_decompress '\002!L\030'   xxx   'lz4 -d'
try_decompress '(\265/\375'   xxx   unzstd

# Finally check for uncompressed images or objects:
check_vmlinux $img

# Bail out:
echo "$me: Cannot find vmlinux." >&2
Répondre
#2
Même si je reste sous Windows (moins casse tête que Linux) je te remercie pour le partage ?
Répondre
#3
(02-16-2022, 06:32 PM)Marcus a écrit : Même si je reste sous Windows (moins casse tête que Linux) je te remercie pour le partage ?

Merci Marcus Smile

La complexité de Linux n'est qu'apparente, en comparaison des acrobaties auxquelles ont doit se livrer pour faire fonctionner Windows avec peu de services, etc... En sus, dans l'architecture HQPlayer, Jussi rend les choses simples, en offrant une image de HQPe et une autre de NAA prêtes à l'emploi. Si donc on n'a pas l'élan de mettre les mains dans le cambouis comme je l'ai fait, il n'y a rien à faire d'autre que de graver une clé USB.
Répondre
#4
Et des solutions clés en main comme gentooplayer et audiolinux sont simples et efficaces : Jibem le vit tous les jours :-)
Répondre
#5
Désolé de mon ignorance   Sad  Donc après avoir installé Fedora, il suffit de coller tes codes dans le dossier adhoc sans rien faire d’autre ? Et je ne comprends pas le principe, HQPe est sur la machine avec le « gros » cpu et le NAA sur un autre pc ?! Et où se place Diretta dans tout ça ? Encore beaucoup de choses à apprendre moi  Blush
Répondre
#6
(02-17-2022, 12:13 PM)Marcus a écrit : Désolé de mon ignorance   Sad  Donc après avoir installé Fedora, il suffit de coller tes codes dans le dossier adhoc sans rien faire d’autre ? Et je ne comprends pas le principe, HQPe est sur la machine avec le « gros » cpu et le NAA sur un autre pc ?! Et où se place Diretta dans tout ça ? Encore beaucoup de choses à apprendre moi  Blush

Bonjour Marcus,

Tu n'as aucunement à être désolé ; mon installation est un peu en dehors des clous je le reconnais volontiers...

Si tu voulais mettre en oeuvre un NAA avec Diretta, il suffirait effectivement de réaliser une installation minimale de Fedora 35, de recopier les deux scripts que j'ai fournis dans le répertoire utilisateur, ainsi que le driver ALSA de Diretta, et d'exécuter le premier script qui te guiderait dans l'installation des drivers.

Pour expliciter les deux installations possibles, voici un schéma:

[Image: Schema-source.jpg]

Le schéma du haut représente une installation typique HQPlayer avec NAA. Dans cette installation, les deux machines peuvent fonctionner avec une image faite par Jussi ; aucune nécessité, si ce n'est par plaisir, de faire une installation spécifique. Comme l'indiquait Ludovic ci-dessus, tu peux aussi mettre AudioLinux ou GentooPlayer qui embarque HQPlayer Embedded.

Le schéma du bas représente mon installation. En lieu et place du NAA simple proposé par Jussi, j'ai opté pour un NAA un peu plus sophistiqué, car doté de 2 interfaces réseau, une pour connecter le NAA au switch, l'autre pour le connecter à Diretta. C'est sur cette machine que le script proposé fait du sens.

Hope this helps Smile
Répondre
#7
Merci Bear pour ces explications, c'est beaucoup plus clair  Wink Je pensais que le NAA devait être branché directement au DAC.
Quand j'aurai un peu plus de temps, j'essayerai de mettre en œuvre ta configuration.

@+
Marc
Répondre
#8
Scripts mis à jour Smile
Répondre
#9
Bonjour Bear,

Peut-être une question idiote mais a t’on besoin de NAA ou est-ce que l’on peut envoyer directement sur le lucia depuis hqp?

Merci,

Charlie
Solution en cours d'élaboration







Répondre
#10
(05-19-2023, 11:49 PM)CharlieR a écrit : Bonjour Bear,

Peut-être une question idiote mais a t’on besoin de NAA ou est-ce que l’on peut envoyer directement sur le lucia depuis hqp?

Merci,

Charlie

Bonjour Charlie,

Dslé, j'étais passé à coté de ta question. La question n'est pas idiote du tout. On peut très bien installer le driver Diretta directement sur la machine HQPlayer, à condition que celle-ci soit sous Windows ou Linux. Sous Windows c'est facile. Sous Linux, tu as une illustration du travail à réaliser en regardant mes scripts, mais je viens de réinstaller un serveur sous HQPe et Diretta en moins d'une 1/2h cette semaine, installation de Fedora comprise. C'est facile et sans difficulté majeure.

Sous Windows, le driver ASIO de Diretta va présenter ta carte Lucia comme une option Diretta à HQP. Sous Linux, le driver ALSA de Diretta va présenter la même carte comme un option ALSA backend à HQPe.

Enfin, la solution du NAA est une façon de contourner l'absence de driver Diretta pour MacOS. Elle permet de sortir de HQP sous MacOS en NAA et d'avoir un driver ALSA sur le NAA pour envoyer le flux Diretta sur le Lucia.

N'hésite pas à consulter ce fil qui est plus complet: http://forum-hifi.fr/thread-19836.html
Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  ENGINEERED fermé ou service client sous l'eau ? Moxa 15 2,369 01-27-2024, 02:26 PM
Dernier message: thomasv
  Carte Mère SOtM - sMB-Q370 pour TARGET DIRETTA jean-luc 117 25,526 01-04-2024, 07:22 AM
Dernier message: Patatorz
Music Room Shaper sous Win avec Roon et HQPlayer zaurux 4 1,317 11-10-2023, 12:43 AM
Dernier message: ds21
  Vos Target PC Diretta Pascal64 142 46,976 11-02-2023, 11:03 PM
Dernier message: Olivier
  Diretta Lucia Development kit Olivier 126 44,032 06-29-2023, 05:08 PM
Dernier message: hug!

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)