Αντικατάσταση PulseAudio με PipeWire

To PipeWire είναι το μέλλον στον ήχο (αλλά και στο βίντεο) του Linux. Κάποιες τολμηρές διανομές έχουν κάνει ήδη την μετάβαση, κάποιες άλλες όχι ακόμα. Στον μικρό οδηγό αυτό θα δούμε πως μπορείς να αντικαταστήσεις το PulseAudio με το Pipewire.

Για τους βιαστικούς

Προεργασία

Πριν κάνω μια τέτοια δραστική αλλαγή πήρα πρώτα ένα αντίγραφο με το TimeShift. Οι αλλαγές δεν είναι δραστικές και μπορείς να επιστρέψεις εύκολα πίσω, αλλά ποτέ δεν βλάπτει. Στην συνέχεια ας δούμε από που ξεκινάμε

pactl info
Server String: /run/user/1001/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 9
Tile Size: 65472
User Name: talos
Host Name: pop-os
Server Name: pulseaudio
Server Version: 15.0
Default Sample Specification: s16le 2ch 44100Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.usb-0d8c_USB_Sound_Device-00.analog-stereo
Default Source: alsa_input.usb-0d8c_USB_Sound_Device-00.analog-stereo
Cookie: 47e6:5dea

Προσέξτε την γραμμή που λέει Server Name: pulseaudio. Τρέχουμε ένα καθαρό σύστημα PulseAudio.

Εγκατάσταση PipeWire ppa

Υπάρχει ένα PPA για το PipeWire που θα προσθέσουμε στο σύστημα και θα κάνουμε αναβαθμίσεις. Λογικά θα δουλέψει και σε Ubuntu 18.04 – 21.10.

sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream -y
sudo apt update
sudo apt upgrade -y

Τρέχω το τελευταίο PopOS και υπήρξε κάποιο πρόβλημα με το Lutris. Οπότε τροποποίησα την εντολή σε

sudo apt upgrade -y –allow-downgrades

και η αναβάθμιση απέτυχε. Πέσαμε δυστυχώς πάνω στην ίδια περίπτωση.

Συμβαίνουν αυτά :innocent: Λίγες μέρες μετά …

Εγκατάσταση PipeWire

Σε αναβαθμισμένο σύστημα χωρίς το ppa (να ναι καλά το timeshift) το ξαναπρόσθεσα και η εγκατάσταση ήταν ομαλή αυτή την φορά.

sudo apt install pipewire gstreamer1.0-pipewire pipewire-pulse libspa-0.2-bluetooth libspa-0.2-jack -y

Προαιρετικά για λίγο διάβασμα

sudo apt install pipewire-doc

Ενεργοποίηση PipeWire

Ο δαίμονας του ήχου είναι μια υπηρεσία χρήστη του systemd, και όχι κάποια υπηρεσία συστήματος. Δηλαδή ξεκινά και τερματίζει ακολουθώντας την συνεδρία κάθε χρήστη. Οπότε θα πρέπει να απενεργοποιήσουμε την υπηρεσία του pulseaudio και να ενεργοποιήσουμε το pipewire-media-session.

Η διαδικασία αυτή θα πρέπει να γίνει για κάθε χρήστη

Στο τερματικό:

systemctl --user mask pulseaudio 
systemctl --user --now disable pulseaudio.service pulseaudio.socket
systemctl --user --now enable pipewire-media-session.service

Τώρα θα μπορούσα να ξεκινήσω αμέσως να το χρησιμοποιώ, αλλά προτίμησα να κάνω μια επανεκκίνηση.

Χρήση ήχου με PipeWire

Στις λίγες δοκιμές που έκανα δεν προέκυψε κάποιο πρόβλημα, σε όσα παιγνίδια δοκίμασα είχαν ήχο κανονικά και δεν υπάρχει κάποια διαφορά. Το μόνο “πρόβλημα” που προέκυψε ήταν πως ο ήχος ήταν δυνατότερος για κάποιο λόγο. Το βάζω στα θετικά.

Η μόνη διαφορά ήταν εδώ

και εδώ που λέει πως πράγματι η βιβλιοθήκη του pulse χρησιμοποιεί το PipeWire

pactl info

Μπορείτε να βρείτε την διαφορά;

Server String: /run/user/1001/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 94
Tile Size: 65472
User Name: talos
Host Name: pop-os
Server Name: PulseAudio (on PipeWire 0.3.39)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.usb-0d8c_USB_Sound_Device-00.analog-stereo
Default Source: alsa_input.usb-0d8c_USB_Sound_Device-00.analog-stereo
Cookie: 2a4e:3a3c

Εγκατάσταση WirePlumber

Κατά την εγκατάσταση του PipeWire το Debian πρότεινε την χρήση του WirePlumber, δημιουργία του φίλου Καγιαδάκη. Θα το δοκίμαζα έτσι και αλλιώς :innocent:

sudo add-apt-repository ppa:pipewire-debian/wireplumber-upstream
sudo apt install gir1.2-wp-0.4 wireplumber wireplumber-doc

Και θα πρέπει να ενεργοποιήσουμε την υπηρεσία

systemctl --user --now enable wireplumber.service

Την κατάσταση των υπηρεσιών που τρέχουν μπορούμε να την δούμε με

systemctl --user list-units --type=service --state=running “*wire*”

και η σχετική λίστα

  UNIT                   LOAD   ACTIVE SUB     DESCRIPTION                       
  pipewire-pulse.service loaded active running PipeWire PulseAudio
  pipewire.service       loaded active running PipeWire Multimedia Service
  wireplumber.service    loaded active running Multimedia Service Session Manager

Προσωπικά πάντως για την χρήση που το έκανα δεν είδα κάποια διαφορά

Απεγκατάσταση / απενεργοποίηση

Για την απεγκατάσταση απλά ακυρώνουμε τα προηγούμενα βήματα. Αλλά μπορούμε απλά να επιστρέψουμε τις υπηρεσίες στην προηγούμενη κατάσταση και να το αφήσουμε ήσυχο.

systemctl --user unmask pulseaudio 
systemctl --user --now disable pipewire-media-session.service
systemctl --user --now disable wireplumber.service
systemctl --user --now enable pulseaudio.service pulseaudio.socket
systemctl reboot

Άξιζε τον κόπο;

Η μετάβαση ήταν τόσο ομαλή που δεν ξέρω αν αξίζει τον κόπο :innocent:, τουλάχιστον για την περίπτωση μου, που δεν κάνω κάποια ιδιαίτερη χρήση του ήχου. Και υπάρχει και ο χρυσός ο κανόνας “αν δουλεύει δεν το σκαλίζεις”. Αλλά αν κάνεις ποιο πολύπλοκα πράγματα αξίζει μια δοκιμή, άλλωστε είναι το μέλλον του ήχου.

Μην ξεχνάς ότι αν περνάς ξένα PPA στην διανομή, ειδικά αν σκαλίζουν τα βασικά υποσυστήματα, είναι μια συνταγή για καταστροφή.

Το σύστημα της δοκιμής τρέχει PopOS. Για άλλες debian based διανομές δείτε :

Μάθετε περισσότερα για το PipeWire και το Wayland

7 «Μου αρέσει»

Καλησπέρα και Καλή(ύτερη) Χρονιά σε όλους!!!

ΚΑΙ ΕΝΑ ΤΕΡΑΣΤΙΟ ΕΥΧΑΡΙΣΤΩ ΣΤΟΝ @Asfodelus

Μπήκα στο φόρουμ μετά από αρκετό καιρό γιατί προσπαθώντας να βρω και να εγκαταστήσω ένα Equalizer στο λαπτοπ μου (το qpaeq δεν λειτουργούσε και είναι και πολύ ελλειπές). Χωρίς να ξέρω λοιπόν 100% τι κάνω και βρίσκοντας έναν οδηγό για το pipewire και το easy effects κατάφερα και απενεργοποίησα (mask) το pulse audio. Όπως έπρεπε δλδ.
Έλα μου ντε που κάτι δεν πήγε καλά και έμεινα με έναν υπολογιστή χωρίς ήχο!
Έκανα timeshift back και ήδη από αυτό εδώ το άρθρο κατάφερα να το ενεργοποιήσω και να το κάνω να τρέχει ξανά στην έναρξη του υπολογιστή, γιατί παρά το timeshift εξακολουθούσε να μην τρέχει στην έναρξη!!

Επείδη έχω μπει στο τριπάκι του EQ διαφόρων καλών ακουστικών που έχω θα κάνω ξανά την προσπάθεια μου με το PipeWire/EasyEffects δεδομένου αυτού του εξαιρετικού οδηγού!!!
Στο μεταξύ βρήκα και το PulseEffects και κάνω αυτό που θέλω.

Δεν ξέρω αν στο PipeWire/EasyEffects λύνεται το θέμα αλλά στο pulse/pulseEffects υπάρχει ένα πρόβλημα (για εμάς με τους πυροβολημένους με τον ήχο τέλος πάντων): αν το αρχείο ήχου είναι υψηλής ανάλυσης 24bit/96KHz πχ στο pulseEffects γίνεται resampling και το αρχείο μετατρέπεται σε 16bit/44.1KHz (ανάλυση CD δλδ).

@Asfodelus για άλλη μια φορά δεν έχω λόγια!!! :pray: :pray: :pray: :pray: :pray:

edit: για linux mint 20.2 τα πιο πάνω βήματα είναι όλα ίδια να υποθέσω;;

2 «Μου αρέσει»

Μπορείς να πειράξεις το αρχείο ρυθμίσεων και να βάζεις ότι θέλεις. Μπορεί όμως να πέσεις σε προβλήματα, οδηγίες θα βρεις εδώ.

Έχω αφήσει (τουλάχιστον για την ώρα το Pop OS!) και έχω επιστρέψει στο παλιό καλό Mint, αλλά δεν έχω κάνει την δοκιμή ακόμα. Αυτό που με κρατάει είναι πως επέλεξα 5.1 ηχεία. Αλλά δεν εκτιμώ πως θα υπάρξει κάποιο πρόβλημα.

Μια πρόσφατη αλλαγή είναι πως στο πακετάρισμα δεν θα έρθει μαζί με το Pulse κάποιος manager οπότε πρέπει να περάσεις κάποιον και η προτεινόμενη λύση είναι ο WirePlumber.

ΥΓ: Χαίρομαι που βρήκες τα 2 άρθρα χρήσιμα. Αν δεν το είδες

1 «Μου αρέσει»

Καλημέρα και ευχαριστώ για την απάντηση!
Ναι φυσικά και το είδα το άρθρο για το EasyEffects.
Οπωσδήποτε θα εγκαταστήσω και το wireplumber ώστε να ειναι πλήρες το πακέτο :blush:

Σε σχέση με το resampling που συμβαίνει όντως νομίζω πως εύκολα μπορεί το πράγμα να πάει στραβά -ειδικά στην περίπτωση μου Χαχ- αλλά ίσως δοκιμάσω την επιλογή default.clock.allowed-rates = [44100 48000 88200 96000 176400 192000] να δω πως θα δουλέψει… γιατί θέλω να αλλάζει αυτόματα η ανάλυση ανάλογα με το αρχείο. Να είναι δλδ bit perfect αν και από την στιγμή που επεμβαίνεις κάνοντας eq πχ μάλλον δεν είναι πλέον bit perfect.

Τι το ήθελες βρε παιδί μου το 5.1 :blush::blush: ένα καλύτερο δικάναλο σύστημα με μια σχετικά προσεκτική τοποθέτηση στον χώρο θα σου έδινε πιο σωστό ήχο. Εννοώ πως τα λεφτά που ξοδεύονται σε 5+1 ηχεία αν τα έδινες για 2 αυτά θα ήταν (λογικά) καλύτερα. Ενιγουέι… δεν θέλω να κάνω τον δάσκαλο μια γνώμη απλά!
Επίσης να πω πως όλες ατού του τύπου οι διορθώσεις / βελτιώσεις είναι πολύ πιο δύσκολες σε σύστημα ηχείων (πόσο μάλλον σε 5.1 χαχα). Εκεί (πέρα από τα όποια «σφάλματα» των ίδιων των ηχείων) πρέπει στην ουσία να φτιάξουμε την απόκριση των ηχείων στον συγκεκριμένο χώρο που είναι στημένα. Κανονικά απαιτούνται μετρήσεις του χώρου στη θέση ακρόασης -και όχι μόνο- και μετά με πολύ προσοχή να γίνουν οι όποιες διορθώσεις … κοινώς είναι πολύ εύκολο να γίνουν τα πράγματα χειρότερα. Ειδικά αν προσπαθούμε να βελτιώσουμε με το «αυτί».
Στα ακουστικά που ο χώρος δεν έχει καμία επιρροή είναι κάπως πιο απλό. Φυσικά και πάλι δεν ενδείκνυται να γίνει το «φτιάξιμο» με το αυτί. Κυκλοφορούν στο δίκτυο αρκετά eq settings για δημοφιλή μοντέλα ακουστικών. Πχ του Orratory στο Reddit.

EDIT: Όλα τα πιο κάτω σχόλια σφορούν στην χρήση USB audio interface!

Upadate: πήγε καλά η εγκατάσταση του pipewire και του easyeffects.
Έχω ήχο και το easyeffects λειτουργεί. Αν και με κάποια glitches και κολλήματα … θέλει reboot για να επανέλθει!

Δεν μπόρεσα να ενεργοποιήσω το wireplumber όμως.
Μετά την sudo add-apt-repository ppa:pipewire-debian/wireplumber-upstream έπρεπε να δώσω sudo apt update (καθόλου αυτονόητο για εμένα χαχαχα) γιατί την επόμενη εντολή δεν την δεχόταν. Μετά έδειξε πως πήγε καλά η διαδικασία αλλά δεν δέχεται την systemctl –user –now enable wireplumber.service το output είναι unknown operation -user

Update #2 : δεν βλέπω να υπάρχει το pipewire.conf (edit: τελικά είναι στο usr/share/pipewire/pipewire.conf)

Update #3 : όσον αφορά στην αναπαραγωγή του ήχου με χρήση easyeffects ή μη, το αποτέλεσμα είναι μια χαρά!
Όμως δεν έχω καταφέρει να ηχογραφήσω ικανοποιητικά στο Audacity ούτε να έχω σωστή λειτουργία στο Zoom. Επίσης μια κλήση στο messenger του fbook ήταν προβληματική (ενώ με το pulse / qjacktl έκανα σχετικά ικανοποιητικά ότι χρειαζόμουν )
Δεν τα χρησιμοποιώ συχνά τα πιο πάνω προγραματα αλλά όταν χρειαστεί θα ήθελα να ξέρω πως θα δουλέψουν χωρίς πρόβλημα! Θεωρώ πως το wireplumber δεν έχει εγκατασταθεί σωστά… και ίσως αυτό να δημιουργεί το όποιο θέμα. Ίσως θα πρέπει να κάνω την διαδικασία από την αρχή!

Update #4 : ενώ όλα λειτουργούν κανονικά όταν αν στις ρυθμίσεις του ήχου κλείνοντας το παράθυρο ο ήχος σταματά (είτε τρέχει είτε δεν τρέχει το easyEffects).

Δεν ξέρω αν έχει νόημα να αναφέρω εδώ τα όποια προβλήματα αντιμετωπίζω! Το κάνω γιατί ίσως ενδιαφέρει η όποια εμπειρία χρήσης από κάποιον μη έμπειρο στο Linux. Αν δεν έχει νόημα να το σταματήσω…

Ευχαριστώ για άλλη μια φορά!!

Update #5 :
Καθώς μπουτάρει το Audacity στο Helvum δείχνει πως πάνε να ενεργοποιηθούν οι κατάλληλες συνδέσεις -αναβοσβήνουν πολύ γρήγορα- αλλά τελικά δεν συμβαίνει.
Στις διαθεσιμες επιλογές του προγράμματος:
Σαν Host είναι μόνο η ALSA.
Σαν input και output υπάρχει το pulse το οποίο λειτουργεί -αν και απενεργοποιημένο- με την on board κάρτα ήχου.
Τέλος πάρχει και το audio interface μου αλλά δεν μπορώ ούτε να γράψω ούτε να ακούσω από αυτό!

Το pipewire δεν φαίνεται πουθενά!

Όπως και να έχει έχει ξεκινήσει ένα μεγάλο πεδίο γνώσης για εμάνα… είδωμεν!!!
Ευχαριστώ πολύ ξανά!!!

Από όσο έχω καταλάβει στο σύστημά μου δεν υπάρχει το pipewire-jack έτσι εφαρμογές που χρειάζονται το jack (Audacity, Zoom) για να λειτουργήσουν δεν λειτουργούν.
Δυστυχώς με την μικρή μου πείρα δεν μπορώ να βρω τρόπο να το εγκαταστήσω.
Οι εφαρμγές που χρησιμοποιούν PULSE δουλεύουν ΟΚ
Κάποια βοήθεια;

Δεν τα πάμε καλά το pipewire και εγώ. Τουλάχιστον με arch.

Εχοντας εγκαταστήσει 3-4 φορές το software (με βοηθό το wiki), ακόμα και στην τελευταία του έκδοση που κάνει καλλίτερη διαχείρηση του bluetooth, η απόδοση μου δίνει την εντύπωση ότι φθίνει όσο περνάει η ώρα. Ισως και να είναι placibo οφειλόμενο στα ατελείωτα crackles που ακουγόντουσαν στις προηγούμενες εγκαταστάσεις. Σίγουρα ο ήχος είναι πιο γεμάτος, τουλάχιστον όση ώρα δουλεύει.

Σήμερα δοκίμασα version 1:0.3.44-1 σε box αλλά και laptop. Δυστυχώς τα σπασίματα είναι ακόμα εκεί. Βελτιωμένη κατάσταση αλλά όχι όπως θα έπρεπε να είναι. Ειρήσθω εν παρόδω, ακούω μουσική όσο είμαι ξύπνιος. Συνεπώς εξετελέσθη με συνοπτικές διαδικασίες για μία ακόμη φορά και το pulseaudio είναι πάλι στη θέση του.

Εχω μια μουλαρο-partition debian στο box και θα τεστάρω τι παίζει και εκεί το Σ/Κ.

Υπάρχει κάποιος άλλος σύντροφος που έχει ασχοληθεί και να έχει διάθεση να ραπορτάρει;

3 «Μου αρέσει»

Φίλε @Asfodelus μήπως στις πιο κάτω εντολές από την αρχική σου ανάρτηση υπάρχουν κάποια “ορθογραφικά” λάθη;

systemctl –user –now enable wireplumber.service
systemctl –user list-units –type=service –state=running “*wire*”

Αφού είδα και άλλες αντίστοιχες στην ανάρτησή σου τις έτρεξα με “- -user” ,"- -now", “- -type”, “- -state”, και ενώ η πρώτη φάνηκε να λειτούργησε σωστά (δεν δίνει κάποιο output αλλά ούτε και κάποιο σφάλμα) η δεύτερη δεν μου δίνει το αποτέλεσμα που αναφέρεις μετά!
Παίρνω το πιο κάτω αποτέλεσμα
image

Ευχαριστώ!!

@m01 έχω σχεδόν 0 γνώσεις αλλά αν μπορώ να βοηθήσω κάπου με χαρά!!
Με bluetooth δεν εω πειραματιστεί!

Στην περίπτωσή μου ενώ ότι έχει να κάνει με pulse audio λειτουργεί πολύ καλά δεν μπορώ να καταλάβω τι παίζει με το jack. Η pw-jack εντολή δεν αναγνωρίζεται και δεν μπορώ να την ενεργοποιήσω/εγκαταστήσω όσο το έχω ψάξει. Έτσι εφαρμογές όπως το Audacity πχ δεν λειτουργούν με το usb interface μου. Όυτε με ALSA
Είμαι με Linux Mint

Σε ευχαριστώ για την επισήμανση. Κάπου σε κάποιο άρπα/κόλλα (copy/paste) οι δυο παύλες μετασχηματίστηκαν σε λιγατούρα. Ευτυχώς πάντως το βρήκες.

Αν σκαλίζεις το σύστημα τόσο χαμηλά παίζεις επικίνδυνα. Θα πρέπει τουλάχιστον να έχεις μια βασική γνώση για τις υπηρεσίες του systmed, Ευτυχώς εδώ θα βρεις αρκετά άρθρα και πληροφορίες για να καταλάβεις τις υπηρεσίες και τι κάνουν οι παραπάνω εντολές.

Επίσης πρέπει να κοιτάζεις σε αυτά τα άρθρα πόσο παλιά είναι. Αν και το συγκεκριμένο είναι σχετικά πρόσφατο, έχουν υπάρξει κάποιες αλλαγές στα αποθετήρια σε σχέση με το πρόγραμμα που θα ελέγχει την συνεδρία. Τις ανέφερε στο τερματικό όταν εγκατέστησες το PPA :slight_smile:

Έχω γυρίσει πίσω στο Mint σαν κύριο λειτουργικό, και δεν έχω κάνει την μετάβαση ακόμα. Ο κύριος λόγος που είχα βάλει το PipeWire (πέραν του πειραματισμού) ήταν για τον equalizer, αλλά τελικά μυ αρέσει καλύτερα με το 5.1. Ίσως μέσα στον Φλεβάρη να κάνω και σε Mint την δοκιμή οπότε θα ενημερώσω το άρθρο. (Αν και ξέρεις περισσότερο για το ήχο άπω εμένα, όπου βασικά τα αυτιά μου είναι άσχετα. Με λίγη προσπάθεια θα τα καταφέρεις και θα είμαστε εμείς που θα σε ρωτάμε)

1 «Μου αρέσει»

νομίζω πως υπάρχει κάποιο θεματάκι στο πως φαίνονται οι δύο παύλες στη σειρά
Αυτό “–” φαίνεται σαν μία αλλά εγώ έχω γράψει δυο χωριστά.
Για να φανούν σαν δύο γράφω “- space -” δηλαδή: “- -”

Τώρα για να με ρωτάτε εσείς θα πρέπει να περάσουν πολλάαα χρόνια και μάλλον δεν το βλέπω να γίνεται :joy: :joy:! Κάποια πράγματα για τον ήχο τα ξέρω ως επαγγελματίας μουσικός αλλά και audiophile αλλά μέχρι εκεί! Υπάρχει πολύ τεχνική γνώση που από κάποια στιγμή και μετά με πελαγώνει!!

Πάντως το Easyeffects μου κάνει δουλίτσα … φοβερό εργαλείο. Αν και χρησιμοποιώ ελάχιστες από τις δυνατότητες του.

Σε ευχαριστώ, αν χρειαστεί θα σε ενημερώσω.

1 «Μου αρέσει»

Από τότε που εγκατέστησα το pipewire, έχει δεχτεί δύο updates.
Κυρίως μετά το δεύτερο νομίζω πως έχω βελτίωση στον ήχο (ότι και αν σημαίνει αυτό… ακρόαση με εξωτερικό USB interface και ακουστικά) αλλά όσο περίεργο και αν ακούγεται, και στην εικόνα.
Είναι placebo ή μπορεί να υπάρχει κάποια λογική εξήγηση που συμβαίνει αυτό;