Cliquer pour ouvrir · ✕ ou clic extérieur pour fermer

PipeWire en panne ? 7 étapes méthodiques pour retrouver l'audio sous Linux 🔊

🌐 Cas réel sur openSUSE Tumbleweed (KDE Plasma / Wayland) – Crash WirePlumber (SIGSEGV), boucle de core-dumps & incompatibilité ABI libwireplumber. 📅 Investigation réalisée en janvier 2026 – Rejouable sur toute stack PipeWire/WirePlumber similaire.
📅 Publié en Janvier 2026 ⏱️ Lecture : 20–25 min 🧪 Niveau : Intermédiaire/Avancé
PipeWire WirePlumber openSUSE Tumbleweed KDE Plasma Wayland Forensique Linux

📜 Préambule

Stack audio moderne PipeWire / WirePlumber

Cet article présente l'enquête forensique d'un crash SIGSEGV de wireplumber sur openSUSE Tumbleweed (KDE Plasma/Wayland). L'analyse du core dump a révélé un conflit ABI dû à un mélange de dépôts, et propose une méthodologie reproductible pour résoudre tout plantage audio similaire.

Ce document synthétise la résolution d'un crash SEGV persistant de WirePlumber sur openSUSE Tumbleweed. L'analyse médico-technique du core dump transforme le dépannage en enquête forensique qui isole la cause racine : un conflit d'ABI dû à un mélange incohérent de dépôts.

🎯 Objectif : fournir une méthodologie réutilisable pour tout crash SIGSEGV WirePlumber/PipeWire.

🎯 Introduction

Le Nouveau Paysage Audio Linux

PipeWire est le nouveau serveur audio/vidéo sous-jacent dans de nombreuses distributions Linux modernes. WirePlumber est son gestionnaire de session et de politique. Sur une distribution « rolling release » comme openSUSE Tumbleweed, la cohérence stricte des versions entre les paquets et leurs bibliothèques est cruciale pour la stabilité. Un mélange de dépôts peut rompre cette cohérence et provoquer des plantages systémiques.

🚨 CONTEXTE TECHNIQUE CRITIQUE
│
├── Pile Audio Moderne (KDE Plasma / Wayland)
│   ├── PipeWire : Serveur audio/vidéo
│   ├── WirePlumber : Gestionnaire de session
│   └── Système : Sessions utilisateur (--user)
│
├── Spécificité Tumbleweed (Rolling Release)
│   ├── Paquets évoluent en bloc
│   ├── Dépôts tiers parfois désynchronisés
│   └── Cohérence versionnelle = Stabilité
│
└── Risque Principal
    └── Mélange de dépôts → Incompatibilité ABI → SIGSEGV
      

🧠 Synthèse Opérationnelle Visuelle

Cette visualisation vous donne une vue d'ensemble du problème avant de plonger dans les détails techniques. Elle sert de feuille de route conceptuelle pour l'enquête qui suit.

🌐 PROBLÈME AUDIO SUR TUMBLEWEED
│
├── 🚨 SYMPTÔME UTILISATEUR
│   ├── Principal : Aucune sortie audio
│   ├── Contexte : Suite à une mise à jour système
│   └── Impact : Silence total, applications muettes
│
├── ⚠️ MANIFESTATION SYSTÈME
│   ├── Composant : WirePlumber (gestionnaire de session audio)
│   ├── Erreur : Segmentation Fault (SIGSEGV)
│   ├── Comportement : Boucle de crash-reboot
│   └── Preuve : Core dump généré, compteur redémarrage > 300
│
├── 🔍 DIAGNOSTIC TECHNIQUE
│   ├── Cause Immédiate : Conflit ABI (Application Binary Interface)
│   │   ├── Binaire ≠ Bibliothèque
│   │   └── Structures mémoire incompatibles
│   │
│   └── Cause Racine : Mélange incohérent de dépôts
│       ├── wireplumber : v0.5.13 (dépôt tiers)
│       └── libwireplumber : v0.5.12 (dépôt officiel)
│
├── 🛠️ CORRECTION VALIDÉE
│   └── Réalignement systémique
│       ├── Objectif : Cohérence versionnelle
│       ├── Méthode : Synchronisation vers le haut
│       └── Action : Alignement sur source unique
│
└── 🧪 MÉTHODOLOGIE D'ENQUÊTE
    ├── Approche : Élimination progressive
    ├── Technique : Analyse forensique de core dump
    ├── Audit : Vérification complète des paquets
    └── Validation : Tests fonctionnels multiples
        

🧭 Phase 0 : Cadrage Initial – Le Terrain de l'Enquête

Contexte Système Identifié

Composant Valeur Impact sur l'enquête
Distribution openSUSE Tumbleweed (rolling release) Écosystème en évolution constante
Environnement Bureau KDE Plasma 6.x / Wayland Stack audio PipeWire/WirePlumber native, contexte session utilisateur
Gestionnaire Paquets Zypper (RPM) Gestion avancée des dépôts et priorités
GPU AMD (Radeon) Interactions audio/vidéo possibles via HDMI
Date Incident Post-mise à jour système Corrélation temporelle critique

Contexte Technique : Wayland et Services Audio

Sur KDE Plasma avec Wayland, les services audio s'exécutent en contexte utilisateur (--user), pas au niveau système. Cela signifie que PipeWire et WirePlumber tournent dans la session de l'utilisateur et dépendent entièrement de la cohérence de son environnement local.

Guide de Décision Rapide

DIAGNOSTIC INITIAL : Avez-vous ces symptômes ?

┌─────────────────────────────────────────────────────────────┐
│ systemctl --user status wireplumber                         │
│ ➜ Statut : failed (Result: core-dump)                      │
│ ➜ Signal : SIGSEGV (Segmentation Fault)                    │
│ ➜ Comportement : Redémarrage répété en boucle              │
└─────────────────────────────────────────────────────────────┘

   OUI (tous les symptômes) → Vous êtes au bon endroit ✓
   NON (d'autres symptômes) → Vérifiez : volume, périphérique par défaut,
                               état de pipewire & pipewire-pulse
        

🩺 Étape 1 : Constat Initial et Diagnostic de Surface

1.1 État des Services Audio - Le Témoignage de Systemd

Commande :
systemctl --user status wireplumber
        

Cas Pratique - Observation Déterminante

× wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
     Active: failed (Result: core-dump) since Sat 2026-01-10 09:19:25 CET; 2min 26s ago
   Duration: 1.576s
    Process: 41682 ExecStart=/usr/bin/wireplumber -p $WIREPLUMBER_PROFILE (code=dumped, signal=SEGV)
   Main PID: 41682 (code=dumped, signal=SEGV)
        

Analyse

SEGV (Segmentation Fault) + core-dump = plantage mémoire critique. C'est un bug bas-niveau, pas une simple erreur de configuration.

1.2 Analyse des Logs - La Preuve de la Boucle de Crash

Commande :
journalctl -b --user-unit=wireplumber --no-pager | tail -30
        

Cas Pratique - Résultat Observé

wireplumber.service: Main process exited, code=dumped, status=11/SEGV
wireplumber.service: Failed with result 'core-dump'.
wireplumber.service: Scheduled restart job, restart counter is at 5.
wireplumber.service: Start request repeated too quickly.
wireplumber.service: Failed with result 'core-dump'.
Failed to start Multimedia Service Session Manager.
        
🔍 ANALYSE FORENSIQUE DES LOGS SYSTEMD
├── ⚠️  Échec avéré : Failed with result 'core-dump'
│    └── Signature : code=dumped, status=11/SEGV
├── 🔄  Boucle infernale : Compteur redémarrage
│    ├── Initial : 5
│    ├── Intermédiaire : 292
│    └── Final observé : 348
└── ⏱️  Crash rapide : Start request repeated too quickly
    └── Implication : Service trop instable pour systemd
        

Conclusion

Nous ne sommes pas face à une simple erreur, mais à un plantage systémique en boucle. Le service ne survit pas assez longtemps pour journaliser ses propres erreurs.

🧱 Étape 2 : Investigation du Matériel et des Pilotes

2.1 Identification du matériel audio PCI

Commande :
sudo lspci -v | grep -A5 -i "audio"
        

Cas Pratique - Résultat Observé

00:01.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Kabini HDMI/DP Audio
        Subsystem: Hewlett-Packard Company Device 226b
        Flags: bus master, fast devsel, latency 0, IRQ 44
        Memory at fea64000 (64-bit, non-prefetchable) [size=16K]
--
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD] FCH Azalia Controller (rev 02)
        Subsystem: Hewlett-Packard Company Device 226b
        Flags: bus master, slow devsel, latency 32, IRQ 16
        Memory at fea60000 (64-bit, non-prefetchable) [size=16K]
        Kernel driver in use: snd_hda_intel
        

2.2 Vérification des pilotes noyau

Commande :
lsmod | grep -E "snd_|sof_|hda"
        

Cas Pratique - Résultat Observé

snd_hda_codec_alc269   147456  1
snd_hda_intel          69632  0
snd_hda_codec         225280  6 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek_lib,snd_hda_codec_alc269,snd_hda_codec_atihdmi
snd_hda_core          151552  7 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek_lib,snd_hda_codec_alc269,snd_hda_codec_atihdmi
        

Résultat du Diagnostic

  • Les périphériques PCI audio sont correctement détectés.
  • Les modules noyau ALSA/HDA attendus sont chargés.
  • La chaîne matérielle/pilotes est fonctionnelle.

🧩 Étape 3 : Investigation du Logiciel et de la Configuration

3.1 Recherche de configurations corrompues

find /etc/wireplumber/ /usr/share/wireplumber/ ~/.config/wireplumber/ -type f -name "*.conf" -empty
        

Résultat

  • Aucun fichier vide ou corrompu.
  • Le problème ne vient pas de la configuration utilisateur classique.

3.2 Test en Mode Minimal

systemctl --user stop wireplumber
WIREPLUMBER_PROFILE=minimal wireplumber
        
🧪 TEST DE DÉMARRAGE MINIMAL
├── Mode minimal = FONCTIONNEL ✓
├── Mode complet = PLANTAGE SIGSEGV ❌
└── Implication : Problème dans la config Lua, pas le binaire
        

Analyse Critique

  • Le binaire wireplumber lui-même ne présente pas de défaut intrinsèque.
  • Le problème vient de la configuration Lua chargée par défaut.
  • L'indice pointe vers une incompatibilité ABI binaire/bibliothèque.

🔬 Étape 4 : Diagnostic de Profondeur - Analyse Forensique

4.1 Quantifier la Crise : La Boucle de Crash

coredumpctl list wireplumber
        

Analyse

23 plantages SIGSEGV en 2 minutes. Chaque instance vit environ 3 secondes. C'est un bug reproductible à 100 %.

4.2 Autopsie avec GDB

coredumpctl debug wireplumber

(gdb) bt full
        

Cas Pratique - Résultats de l'Autopsie

#0  0x00007f7a9a54364b wp_properties_get (libwireplumber-0.5.so.0 + 0x3e64b)
#1  0x00007f7a9864c63e n/a (libwireplumber-module-lua-scripting.so + 0x1d63e)
#2  0x00007f7a985db9fe n/a (liblua5.4.so.5 + 0x129fe)
#3  0x00007f7a985e757d n/a (liblua5.4.so.5 + 0x1e57d)
#4  0x00007f7a985e97ca n/a (liblua5.4.so.5 + 0x207ca)
#5  0x00007f7a985dc58a n/a (liblua5.4.so.5 + 0x1358a)
#6  0x00007f7a985d6d5b n/a (liblua5.4.so.5 + 0xdd5b)
#7  0x00007f7a985d8dce n/a (liblua5.4.so.5 + 0xfdce)
#8  0x00007f7a985dc6a0 lua_pcallk (liblua5.4.so.5 + 0x136a0)
#9  0x00007f7a9864d2a9 n/a (libwireplumber-module-lua-scripting.so + 0x1e2a9)
#10 0x00007f7a98652032 n/a (libwireplumber-module-lua-scripting.so + 0x23032)
        
🔬 ANALYSE FORENSIQUE DU CORE DUMP
├── 💥 Point d'Impact : Crash dans wp_properties_get
│    └── Bibliothèque : libwireplumber-0.5.so.0
├── 🧩 Contexte d'exécution : Appel via module de scripting Lua
│    ├── Module : libwireplumber-module-lua-scripting.so
│    └── Fonction : lua_pcallk
└── 🚨 Preuve du déréférencement : Tentative d'accès à l'adresse 0x1f
     └── Indication : Pointeur corrompu (presque NULL)
        

4.3 L'Avertissement Irréfutable : Divergence ABI

warning: .dynamic section for "/lib64/libwireplumber-0.5.so.0"
         is not at the expected address
         (wrong library or version mismatch?)
        
wireplumber --version
        
wireplumber
Compiled with libwireplumber 0.5.13
Linked with libwireplumber 0.5.12
        
⚠️ AVERTISSEMENT CRITIQUE

Compiled with X vs Linked with Y
      ↓
Incompatibilité ABI FATALE
      ↓
SIGSEGV garantie à 100%
        

Verdict Médico-Légal

Le binaire a été compilé pour libwireplumber 0.5.13 mais charge en mémoire la version 0.5.12. Les structures de données ne correspondent pas → calculs d'adresse corrompus → SIGSEGV inévitable.

🧮 Étape 5 : Investigation de la Cause Racine - Audit des Paquets

5.1 Audit Forensique des Versions Installées

zypper search -s -i 'wireplumber*' 'libwireplumber*' 'pipewire*' | grep -E "^i|Repository" | sort
        

Cas Pratique - Résultat Criminel

Paquet Version Installée Dépôt Source Incohérence
wireplumber 0.5.13+git20251223.84429b4-6.3 home:pallaswept (tiers) ⚠️ Compilé pour ABI 0.5.13
libwireplumber-0_5-0 0.5.12-1.1 openSUSE-Tumbleweed-Oss (officiel) ⚠️ Implémente ABI 0.5.12
wireplumber-lang 0.5.13+git20251223.84429b4-6.3 home:pallaswept ✓ Cohérent avec binaire
pipewire-aptx 1.5.84-1699.1.pm.1 Packman ⚠️ À auditer
🕵️ SCÉNARIO RECONSTITUÉ
├── 📦 Dépôt tiers (home:pallaswept)
│    └── Propose : WirePlumber 0.5.13
├── 🏛️ Dépôts officiels
│    └── Maintiennent : WirePlumber 0.5.12
└── 💥 Résultat : Installation mixte → Conflit ABI garanti
        

5.2 Analyse des Dépôts et Priorités

zypper lr -P
        

Cas Pratique - Résultat

# Alias Name Enabled Priority
1 home:pallaswept home:pallaswept Yes 110
2 openSUSE-Tumbleweed-Oss openSUSE-Tumbleweed-Oss Yes 99
3 Packman Packman Repository Yes 70

Rappel Zypper

  • Sur openSUSE, plus la priorité est basse, plus le dépôt est fort.
  • Les dépôts officiels (99) devraient surpasser pallaswept (110).
  • Le fait que wireplumber v0.5.13 vienne de pallaswept indique une installation forcée manuellement.

🧠 Étape 6 : Débat Stratégique et Action Corrective

6.1 Le Dilemme : Régression vs Montée en Version

Trois voies s'offraient pour résoudre l'incompatibilité entre wireplumber (v0.5.13) et libwireplumber (v0.5.12) :

Option A : Régression vers la version officielle (v0.5.12)

sudo zypper in --from openSUSE-Tumbleweed-Oss wireplumber
        

Avantages : Revenir à un état connu et stable du dépôt officiel.

Inconvénients : Sur Tumbleweed (rolling release), régresser délibérément un paquet va à l'encontre du flux naturel des mises à jour et crée une incohérence temporelle.

Option B : Montée en version de la bibliothèque (v0.5.13)

sudo zypper in -f libwireplumber-0_5-0 --from home:pallaswept
        

Avantages : Respecte le principe d'une rolling release en synchronisant tous les composants vers la version la plus récente.

Inconvénients : S'appuie sur un dépôt tiers (home:pallaswept) pour la stabilité future.

Option C : Reconfiguration Structurelle (Approche Proactive)

Une troisième voie, plus systémique, consiste à reconfigurer l'architecture des dépôts :

STRATÉGIE C : INVERSION DES PRIORITÉS
─────────────────────────────────────
Problème identifié : 
   Dépôt tiers (110) < Dépôt officiel (99)
   → Le système privilégie une version inférieure (0.5.12)

Solution structurelle :
   sudo zypper modifyrepo -p 80 home:pallaswept
   → Dépôt tiers (80) > Dépôt officiel (99)
   → Le système privilégie la version supérieure (0.5.13)

Conséquence : 
   Cohérence ABI garantie pour TOUTES les futures mises à jour
        

Logique : Puisque le dépôt tiers propose des versions plus récentes et cohérentes des composants WirePlumber, pourquoi ne pas en faire votre source primaire ?

Cette option transforme une correction ponctuelle en une décision architecturale : vous ne résolvez pas juste un bug, vous redéfinissez la politique d'approvisionnement de votre système.

6.2 Pourquoi la montée en version est cohérente

Cette visualisation vous donne une vue d'ensemble du problème...

POURQUOI LA MONTÉE EN VERSION EST COHÉRENTE ?
═════════════════════════════════════════════════════════════════

PHILOSOPHIE TUMBLEWEED : FLUX D'AVANCEMENT CONTINU

        t₀ (hier)          t₁ (aujourd'hui)        t₂ (demain)
        ════════           ═══════════════        ═════════════

Officiel:  0.5.12              0.5.12                0.5.13
           ├─────────────────────┬─────────────────────┤
           │                     │                     │
Tiers:     0.5.13              0.5.13                0.5.14
           ├─────────────────────┬─────────────────────┤
           │                     │                     │

┌─────────────────────────────────────────────────────────────┐
│ NOTRE SITUATION À t₁ :                                      │
│ • wireplumber       : 0.5.13 (tiers, installé)   ✅         │
│ • libwireplumber    : 0.5.12 (officiel)          ❌ CLASH   │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│ OPTION A (Régression) : Aller en arrière                     │
│                                                              │
│       t₁ (maintenant)                                        │
│       ═══════════════════                                    │
│       wireplumber  : 0.5.12 ← RECUL TEMPOREL ❌             │
│       libwireplumber : 0.5.12 ✅ (cohérent)                 │
│                                                              │
│   ⚠️  Incohérence temporelle : le système recule            │
│   ⚠️  Va contre la philosophie rolling release              │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│ OPTION B (Montée) : Avancer ensemble ✅ RECOMMANDÉ          │
│                                                              │
│       t₁ (maintenant)                                        │
│       ═══════════════════                                    │
│       wireplumber  : 0.5.13 ✅                              │
│       libwireplumber : 0.5.13 ✅ (cohérent)                 │
│                                                              │
│   ✅ Cohérence temporelle : tout à jour                     │
│   ✅ Respecte rolling release : on avance ensemble          │
│   ✅ Préparé pour t₂ : prêt pour prochaines MàJ           │
└─────────────────────────────────────────────────────────────┘
        

6.3 Correction Immédiate : Alignement des Versions

Vérification préalable : versions disponibles de libwireplumber-0_5-0 :

zypper search -s -r home:pallaswept -r openSUSE-Tumbleweed-Oss libwireplumber-0_5-0
        

Version 0.5.13 disponible dans home:pallaswept. ✓

Exécution de la Correction

sudo zypper in -f --from home:pallaswept libwireplumber-0_5-0
        

Détail

  • -f force la réinstallation même si un paquet est déjà présent.
  • Tous les composants WirePlumber/libwireplumber sont désormais issus d'une même source cohérente.

6.4 Vérification Post-Correction : Cohérence ABI Confirmée

rpm -q wireplumber libwireplumber-0_5-0
        
wireplumber-0.5.13+git20251223.84429b4-6.3.x86_64
libwireplumber-0_5-0-0.5.13+git20251223.84429b4-6.3.x86_64
        
wireplumber --version
        
wireplumber
Compiled with libwireplumber 0.5.13
Linked with libwireplumber 0.5.13
        

✅ SUCCÈS

  • Les deux versions (compile-time et link-time) sont identiques.
  • L'incompatibilité ABI à l'origine des SIGSEGV est résolue.

6.5 Audit Post-Correction : Validation PipeWire

rpm -q pipewire pipewire-aptx && echo "Versions cohérentes" || echo "Attention requise"
        
pipewire-1.5.84-2.2.x86_64
pipewire-aptx-1.5.84-1699.1.pm.1.x86_64
Versions cohérentes
        

✅ Étape 7 : Nettoyage, Réinitialisation et Validation

7.1 Nettoyage de l'Environnement Systemd

systemctl --user enable --now pipewire.socket
systemctl --user enable --now pipewire.service
systemctl --user enable --now pipewire-pulse.socket
systemctl --user enable --now pipewire-pulse.service
systemctl --user enable --now wireplumber.service
        
systemctl --user status wireplumber --no-pager
        
● wireplumber.service - Multimedia Service Session Manager
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
     Active: active (running) since Sat 2026-01-10 11:32:47 CET; 26s ago
   Main PID: 79646 (wireplumber)
      Tasks: 7 (limit: 12984)
     Memory: 18.4M
        CPU: 245ms
     CGroup: /user.slice/user-1000.slice/session-c4.scope/app.slice/wireplumber.service
             └─79646 /usr/bin/wireplumber -p "$WIREPLUMBER_PROFILE"

Jan 10 11:32:47 tumbleweed systemd[1234]: Started Multimedia Service Session Manager.
        

État final du service

  • Active: active (running), plus de core-dump.
  • WirePlumber tourne de manière stable dans la session utilisateur.

7.2 Vérification Complète de Stabilité

Test 1 : État du Service

systemctl --user status wireplumber --no-pager | grep -E "Active|Main PID|code=dumped"
        

Résultat : Active: active (running) – plus de SEGV ✓

Test 2 : Fonctionnalité Audio

wpctl status
        
PipeWire 'pipewire-0' [1.5.84, crisis@tumbleweed, cookie:2244450242]
 └─ Clients:
        42. WirePlumber [export]                [1.5.84, crisis@tumbleweed, pid:79646]
        52. WirePlumber                         [1.5.84, crisis@tumbleweed, pid:79646]

Audio
 ├─ Devices:
 │      34. Audio interne                       [alsa]
 │      46. Audio interne                       [alsa]
 ├─ Sinks:
 │  *   38. Audio interne Stéréo analogique   [vol: 0.40]
 │      66. Audio interne Stéréo numérique (HDMI) [vol: 0.40]
        

Test 3 : Test Audio Effectif

aplay /usr/share/sounds/alsa/Front_Center.wav
        

Résultat : Son audible sans erreur ✓

2h15
Temps total d'investigation
23
Crashes SIGSEGV documentés
348
Redémarrages systemd tentés

🔧 Script de Prévention : vérif_audio.sh

Flux d'Exécution du Script

Avant de découvrir le code complet, voici le diagramme qui explique comment le script fonctionne, étape par étape :

┌─────────────────────────────────────────────────────┐
│ 1. Exécute : ./vérif_audio.sh                       │
└────────────┬────────────────────────────────────────┘
             │
    ┌────────▼────────┐
    │ [1/5] ABI TEST  │  ← LE TEST CRITIQUE
    └────────┬────────┘
             │
    ┌────────▼──────────────────────────────┐
    │ Extrait la version COMPILED           │
    │ Extrait la version LINKED             │
    │ Affiche les deux valeurs              │
    └────────┬──────────────────────────────┘
             │
    ┌────────▼──────────────────────────────┐
    │ Teste la concordance des versions     │
    │ COMPILED = LINKED ?                   │
    └────────┬──────────────────────────────┘
             │
    ┌─────────┴─────────┐
    │                   │
OUI │                   │ NON
    │                   │
┌───▼───────────────┐  ┌───▼────────────────────────┐
│ ✅ COHÉRENCE OK   │  │ 🚨 ALERTE CRITIQUE         │
│ Versions exactes  │  │ Versions INCOHÉRENTES !    │
│                   │  │ Propose : sudo zypper ... │
└───────────────────┘  └────────┬───────────────────┘
                                │
                       ┌────────▼──────────────┐
                       │ [2/5] Versions RPM    │
                       │ [3/5] Dépôts Source   │
                       │ [4/5] Priorités       │
                       │ [5/5] Services Audio  │
                       └───────────────────────┘
        

Code Complet du Script - Version Corrigée et Robuste

#!/bin/bash
# vérif_audio.sh - Audit préventif de la stack audio

echo "═══════════════════════════════════════════════════"
echo "  AUDIT STACK AUDIO - COHÉRENCE ET STABILITÉ"
echo "═══════════════════════════════════════════════════"

echo ""
echo "[1/5] Cohérence ABI (TEST CRITIQUE)"
echo "──────────────────────────────────────────────────"

# Extraire les versions
COMPILED=$(wireplumber --version 2>/dev/null | grep "Compiled" | grep -oE "[0-9]+\.[0-9]+\.[0-9]+" | head -1)
LINKED=$(wireplumber --version 2>/dev/null | grep "Linked" | grep -oE "[0-9]+\.[0-9]+\.[0-9]+" | head -1)

# Afficher les résultats
echo "Compiled with: $COMPILED"
echo "Linked with:   $LINKED"

# Vérifier la cohérence
if [ -z "$COMPILED" ] || [ -z "$LINKED" ]; then
    echo "⚠️  Impossible de déterminer les versions"
elif [ "$COMPILED" = "$LINKED" ]; then
    echo "✅ Cohérence ABI OK : Versions identiques ($COMPILED)"
else
    echo "⚠️  ALERTE CRITIQUE : Versions INCOHÉRENTES !"
    echo "   Compiled: $COMPILED"
    echo "   Linked:   $LINKED"
    echo "   → Action : sudo zypper in -f libwireplumber-0_5-0 --from home:pallaswept"
fi

echo ""
echo "[2/5] Versions des Paquets Principaux"
echo "──────────────────────────────────────────────────"
rpm -q wireplumber libwireplumber-0_5-0 pipewire pipewire-aptx 2>/dev/null | sort

echo ""
echo "[3/5] Sources des Paquets (Dépôts)"
echo "──────────────────────────────────────────────────"
zypper se -si 'wireplumber*' 'pipewire*' 2>/dev/null | grep -E "^i|Repository" | head -20

echo ""
echo "[4/5] Priorités des Dépôts"
echo "──────────────────────────────────────────────────"
zypper lr -P 2>/dev/null | grep -E "(Alias|Priority|pallaswept|oss|packman)"

echo ""
echo "[5/5] État des Services Audio"
echo "──────────────────────────────────────────────────"
systemctl --user status wireplumber --no-pager 2>/dev/null | head -7
wpctl status 2>/dev/null | head -10

echo ""
echo "═══════════════════════════════════════════════════"
echo "  AUDIT TERMINÉ"
echo "═══════════════════════════════════════════════════"
        

Installation et Utilisation

# 1. Créer le fichier
nano vérif_audio.sh

# 2. Coller le script ci-dessus
# 3. Rendre le script exécutable
chmod +x vérif_audio.sh

# 4. Exécuter le script
./vérif_audio.sh

# 5. Sauvegarder le résultat (optionnel)
./vérif_audio.sh > audit_audio_$(date +%Y%m%d).txt
        

🧱 Conclusion – Philosophie et Prévention sur Tumbleweed

Le Risque Spécifique aux Rolling Releases

Sur Tumbleweed, les paquets évoluent en bloc cohérent. Un dépôt tiers peut être temporairement désynchronisé (quelques heures/jours) des dépôts officiels. Une installation isolée (zypper in) à un instant t peut créer un mélange explosif de versions incompatibles.

Solution structurelle : privilégier zypper dup (mise à jour complète du système) qui garantit la cohérence d'un instant t sur tous les paquets simultanément.

Tableau des Pratiques Critiques

Pratique à Risque ❌ Pratique Robuste ✓ Leçon du Cas
zypper in wireplumber isolément depuis dépôt tiers Synchroniser toute la stack audio d'une seule source avec zypper dup Mélange 0.5.13 / 0.5.12 = crash SIGSEGV
Ignorer les conflits de fournisseur (vendor) Utiliser --allow-vendor-change avec discernement, vérifier cohérence Audit régulier avec zypper search -s indispensable
Mélanger dépôts sans gérer les priorités Régler les priorités : sudo zypper modifyrepo -p <n> <dépôt> Vérifier zypper lr -P avant chaque action
Laisser des états systemd incohérents (disabled enabled) Nettoyer régulièrement : systemctl --user list-units --all État disabled enabled = indicateur fiable d'instabilité
« Sur une rolling release, le sysadmin doit être jardinier plutôt que bricoleur : cultiver l'équilibre de l'ensemble plutôt que remplacer des pièces isolées. »

📎 Annexes : Commandes de Référence

Commandes d'Investigation Clés

Étape Commande Objectif Indicateur Critique
Diagnostic initial systemctl --user status wireplumber État du service signal=SEGV, core-dump
Test ABI rapide wireplumber --version Cohérence versions Compiled with ≠ Linked with
Preuve de crash répété coredumpctl list wireplumber Échelle du problème Liste de SIGSEGV rapprochés
Autopsie technique coredumpctl debug wireplumber → bt full Cause technique Avertissement "version mismatch"
Audit paquets zypper search -s -i 'wireplumber*' Source des incohérences Mélange de dépôts/versions
Test fonctionnel final wpctl status Validation audio Liste des périphériques OK

Chronologie de l'Investigation

TABLEAU DE BORD DE L'ENQUÊTE
┌──────────────────────────────────────────────────────┐
│  ÉTAPE                       DÉBUT-FIN    DURÉE  ÉTAT │
├──────────────────────────────────────────────────────┤
│  Phase 0 : Cadrage          09:00-09:05   5 min  📋  │
│  Étape 1 : Diagnostic       09:05-09:20  15 min  🔴  │
│  Étape 2 : Matériel         09:20-09:35  15 min  🔍  │
│  Étape 3 : Logiciel         09:35-09:55  20 min  🧪  │
│  Étape 4 : Forensique       09:55-10:30  35 min  🔬  │
│  Étape 5 : Audit Paquets    10:30-11:00  30 min  📦  │
│  Étape 6 : Correction       11:00-11:10  10 min  🔧  │
│  Étape 7 : Validation       11:10-11:15   5 min  ✅  │
├──────────────────────────────────────────────────────┤
│  TOTAL                                   2h15    📈  │
└──────────────────────────────────────────────────────┘
        

Statistiques du Cas Réel

📊 STATISTIQUES DE L'INVESTIGATION
├── ⏱️ Temps total d'investigation : 2h15 minutes
├── 💥 Crashes documentés : 23 en 2 minutes (pic)
├── 🔄 Redémarrages max tentés : 348 par systemd
├── 📦 Paquets incohérents : 2 sur 4 principaux
├── 🗄️ Dépôts impliqués : 3 (officiel + pallaswept + packman)
├── ⌨️ Commandes documentées : 42 distinctes
└── 🧪 Étapes diagnostiques : 7 itérations progressives
        

Rappel de la Règle Zypper : Échelle des Priorités

📉 ÉCHELLE DES PRIORITÉS ZYPPER (plus c'est bas, plus c'est fort)
┌─────────────────────────────────────────────────────────────────────┐
│ PRIORITÉ  BARRE DE FORCE       NIVEAU      TYPE DÉPÔT      ACTION   │
├─────────────────────────────────────────────────────────────────────┤
│    1      [■■■■■■■■■■] 100%    🥇 MAÎTRE   Contrôle total   FORCE   │
│   99      [■■■■□□□□□□] 40%     🥈 STANDARD Officiel (OSS)   DÉFAUT  │
│  110      [■■□□□□□□□□] 20%     🥉 TIERS    Dépôts tiers     RECOURS │
└─────────────────────────────────────────────────────────────────────┘
📌 RÈGLE D'OR : Le chiffre le PLUS BAS l'emporte dans les conflits
💡 CONSEIL : Pour privilégier un dépôt → abaissez sa priorité !
        

🔗 Sources Officielles

PipeWire – GitLab Freedesktop

Documentation & code source

Source de référence pour la stack PipeWire et ses composants.

Site officiel PipeWire

https://pipewire.org/

Vue d'ensemble, architecture et annonces officielles.

openSUSE:PipeWire Wiki

Documentation openSUSE

Intégration PipeWire sur openSUSE, remplaçant de PulseAudio.

PipeWire – Arch Wiki

Guide avancé

Excellente référence pour la configuration et le dépannage.

📚 Lectures SafeITExperts Recommandées

🧬
openSUSE 2025 : Équilibre Tradition et Innovation

Comprendre la philosophie de Tumbleweed et pourquoi la cohérence globale des paquets est essentielle.

🧪
Comprendre les Kernels de SUSE & Flavours

Guide complet sur les dépôts kernels openSUSE et leur impact sur la stabilité du système.

🧰
Zypper openSUSE : Guide Complet

Maîtriser zypper pour éviter les mélanges de versions et les conflits de vendors.

🖥️
Linux en 2025 : Compatibilités des Environnements de Bureau

Panorama des compatibilités KDE/GNOME/Wayland avec les stacks audio modernes.

👥 Commentaires

Commenter cet article