**Qobuz UPnP -- Télécommande Android + player Rust pour Qobuz via DirettaRendererUPnP**
Bonjour à tous,
Utilisateur de DirettaRendererUPnP, je cherchais une télécommande Android et un player qui me conviennent pour écouter **exclusivement Qobuz** sur mon système. Ne trouvant pas exactement ce que je voulais, j'ai développé les deux. Ce n'est pas un player universel -- c'est une application dédiée à Qobuz et uniquement Qobuz.
**Le setup :**
Un serveur Rust léger tourne sur une machine Linux (testé sous Fedora 43 uniquement). Il fait office de proxy entre Qobuz et le renderer : récupération des flux CMAF chiffrés, décryptage, reassemblage du FLAC original, et service HTTP direct au renderer. Une app Android Material 3 sert de télécommande.
**Côté utilisateur :**
On entre ses identifiants Qobuz dans l'app, le serveur et le renderer sont découverts automatiquement sur le réseau. Recherche dans le catalogue Qobuz, favoris Qobuz (albums/artistes/titres/playlists), détail artiste avec bio et artistes similaires, choix de qualité (MP3 à Hi-Res 24/192), enchainement automatique des pistes, mini player avec navigation vers l'album ou l'artiste en un tap. 4 langues (FR/EN/ES/DE).
**Côté technique -- le choix du zero polling :**
Le point clé de l'architecture : pendant la lecture, le renderer ne reçoit qu'un seul flux FLAC et strictement rien d'autre. Pas de GetPositionInfo, pas de GetTransportInfo. Pas d'évent GENA. La progression est calculée localement sur le téléphone. Ce choix de design élimine tout trafic SOAP pendant la lecture -- et la différence de qualité sonore est clairement audible.
**Les limites :**
- Application dédiée exclusivement à Qobuz (pas de fichiers locaux, pas d'autres services de streaming)
- Projet personnel fourni tel quel, sans support
- Conçu et testé exclusivement avec DirettaRendererUPnP
- Backend testé sous Fedora 43. Devrait fonctionner sur d'autres distributions Linux et sur Raspberry Pi (pur Rust, pas de dépendance native) mais non vérifié
- Pas de gapless (Stop → fetch → Play entre chaque piste)
- Abonnement Qobuz actif requis
- APK à installer manuellement
**Installation :**
*Backend (sur une machine Linux du réseau -- pour ma part je l'utilise sur une machine séparée du renderer) :*
```
git clone
https://github.com/herisson-88/qobuz-upnp.git
cd qobuz-upnp
bash install.sh
```
Le script interactif installe Rust si nécessaire, compile le projet, installe le binaire dans `/opt/qobuz-upnp` et crée un service systemd. Le backend écoute sur le port 3000 par défaut et découvre automatiquement le renderer sur le réseau.
*Télécommande Android :*
Téléchargez l'APK depuis la [page releases](
https://github.com/herisson-88/qobuz-and...p/releases) et installez-le sur votre téléphone (activer "Sources inconnues" dans les paramètres). Au premier lancement, allez dans Paramètres, entrez l'adresse du serveur (ou laissez la découverte automatique faire), puis entrez vos identifiants Qobuz. C'est prêt.
**Remerciements :**
Ce projet n'existerait pas sans **Dom**, dont la vision et la passion pour l'audio open-source en ont été l'inspiration et le catalyseur. Merci à **swissBear** et **leeanh** pour leur engagement dans l'équipe cometd. Et merci à **Yu Harada** pour le protocole Diretta.
- Backend Rust :
https://github.com/herisson-88/qobuz-upnp
- Télécommande Android :
https://github.com/herisson-88/qobuz-android-upnp
- DirettaRendererUPnP :
https://github.com/cometdom/DirettaRendererUPnP
- Diretta :
https://www.diretta.link
Bonne écoute pour les curieux qui y voient de l'intérêt !
ADD:
Qobuz UPnP 1.1 est l'un des rares players à supporter la future option --minimal-upnp de DirettaRendererUPnP, implémentée par Dom. Cette option permet au renderer de débrayer complètement événements UPnP et requêtes de status -- le renderer travaille seul, sans aucune interruption. Pour les happy few dont le controller ne fait ni polling ni events UPnP (JPlay est l'unique autre) : c'est le mode ultime, on laisse juste le renderer travailler. L'impact sur la qualité sonore est très significatif.
Qobuz HD Qobuz UPnP Android Remote -> NUC Fanless (Alim Ifi Power Elite) sous Fedora Qobuz UPnP -UPnP-> RPI5 (Alim Super condensateur Ian Canada) Diretta Renderer -Diretta DDS-> Holo Red Audiolinux Target Diretta -> Holo Spring 2 KTE -> Gato Amp 150 AE -> Quellis 1 Optima