From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id UAjYOIeRH2eQIgEAe85BDQ:P1 (envelope-from ) for ; Mon, 28 Oct 2024 13:28:40 +0000 Received: from aspmx1.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id UAjYOIeRH2eQIgEAe85BDQ (envelope-from ) for ; Mon, 28 Oct 2024 14:28:40 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gnu.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1730122119; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=5fKkCBXFfYzynFjKio+EpwKesbYCzDeTV+G7l/fcUg8=; b=htw8xpnhbYIIiHPUMWIPky160O+xhhEzzrdfV4PuWj6dT7dPcLijWHdv1MnE5rThayi2Wl Vwv17oTtPvMaeNRspxBQy9JW3E4pJQZVoDQ07OUlYTkN00fIwLNHmQQ58YsM1LWOHKrXSx +eMxg34r50n8gvkGR96L4XZ8wtqTS7H3Zqt2JwU7v4kddkt2sInEpJfpeAx4xNnlUxW1mM EBMPKgZJk7daaGozt3ZS0w24QmcY/LqBjrQGANgM1P0aDR8CuUbizbGV8gP5hL8keLGgOu 5GdOupZkR6SNW6SeNN7XR1cZll2X8RFTTHcD8aAf6YcRx3alwbQ7Vnk2DQ1Xmw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1730122119; a=rsa-sha256; cv=none; b=eDesrDSUzc28NuQnbry1REG9VbpESXCg8k2oWMVP4uT4bMg1quZJ+WfyD/MLu1zF4cnG/G b9giFUGr7hnHQkn72TRh2m/WqIT380FlwgWW5r23SpHZhCkTGE/xUfjyuQSQ9ZUdV+i3Xz peXrKpDYSPcOejhF2JGcYTZRL3jaqRAP+N7YFbsgYxC0af0/6OzR1Anw1nVAFBydSQ4ela 9Bq4MpaKmhptoI5AU3WJ08+qwLt+Ks/jcj0IB2H2vNpYJ3QV1aHp5bsTqN16Zqh8q0NU+M W+7GXHw7Yv6v91ZOP+qjPM7r0F1tHiRTyvMRQNT+TCzpouKx9Zs0SAavFilCIg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gnu.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id B98955D65D for ; Mon, 28 Oct 2024 14:28:39 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1t5Pmu-00041Z-5L; Mon, 28 Oct 2024 09:28:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t5Pmt-00041P-09 for guix-devel@gnu.org; Mon, 28 Oct 2024 09:28:03 -0400 Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t5Pmr-0003G8-8o for guix-devel@gnu.org; Mon, 28 Oct 2024 09:28:02 -0400 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1t5Pmo-0003oD-Aq for guix-devel@gnu.org; Mon, 28 Oct 2024 14:27:58 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: guix-devel@gnu.org Subject: Using Pipewire for PulseAudio and JACK in Guix Date: Mon, 28 Oct 2024 13:27:44 +0000 Message-ID: <8734kgcq7j.fsf@subvertising.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit User-Agent: Gnus/5.13 (Gnus v5.13) Cc: Ricardo Wurmus Cancel-Lock: sha1:P/hpoxOcacLPLETRcJSk/263SE4= Received-SPF: pass client-ip=116.202.254.214; envelope-from=gcggd-guix-devel@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -7 X-Spam_score: -0.8 X-Spam_bar: / X-Spam_report: (-0.8 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_ALL=0.8, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Divya Ranjan From: Divya Ranjan via "Development of GNU Guix and the GNU System distribution." Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: guix-devel-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: -2.21 X-Spam-Score: -2.21 X-Migadu-Queue-Id: B98955D65D X-Migadu-Scanner: mx13.migadu.com X-TUID: h5nsnjOCZGP3 Hello, I’m having some issues getting a unified audio setup using PipeWire only, i.e., PipeWire alongwith ALSA to route all audio using PulseAudio and JACK emulation. I had such a setup previously on the Arch GNU/Linux distribution, but I have been struggling since I switched to GNU Guix. I want first of all the applications to be handled through PipeWire’s PulseAudio emulation, such as audio to browser, telegram-desktop etc. I used to have a PipeWire configuration with sources and sinks for each of the major applications, which was then routed using JACK emulation of PipeWire through the help of a patchbay/JACK client such as Carla or qpwgraph/patchage. I have gone with the barebones configuration of PipeWire that I can find for Guix, to that end, my system configuration includes the following services: #+begin_src guile (services (append (list (service pam-limits-service-type (list (pam-limits-entry "@realtime" 'both 'rtprio 99) (pam-limits-entry "@realtime" 'both 'memlock 'unlimited))))) (modify-services %desktop-services (alsa-service-type config => (alsa-configuration (pulseaudio? #f))))) #+end_src So I’ve got the realtime configuration declared here, and I also have: #+begin_src guile (groups (cons* (user-group (name "realtime") (system? #t)) %base-groups)) #+end_src and then realtime is added to `supplementary-groups` in `user-account`. And, similarly I’ve added the following in my home configuration’s services: #+begin_src guile (services (append (list (service home-pipewire-service-type (home-pipewire-configuration (wireplumber wireplumber) (enable-pulseaudio? #t)))))) #+end_src After this configuration, I can run JACK through jackd, even though I don’t have jack installed in system or home configuration. Does it get installed through some other package’s dependency? Furthermore, when I try to use a JACK client through `pw-jack' it doesn’t work. For example, running `pw-jack qjackctl' and starting JACK through it gives the following error in qjackctl’s messages: 13:13:37.600 JACK is starting... 13:13:37.600 /run/current-system/profile/bin/jackd -dalsa -dhw:0 13:13:37.606 JACK was started with PID=4007. /run/current-system/profile/bin/jackd: symbol lookup error: /run/current-system/profile/bin/jackd: undefined symbol: clock_source 13:13:37.608 JACK was stopped 13:13:39.662 Could not connect to JACK server as client. - Overall operation failed. - Unable to initialize client. Please check the messages window for more info. When I try `pw-jack carla' as well, the same thing happens, it says libjack.so.0 is loaded successfully but when I start Carla’s engine, it says: “Failed to create new JACK client.” Now, I don’t know what’s going wrong where, but I want to JACK with PipeWire, unless one can recommend me good reasons to use JACK externally alongside PipeWire. Also, even PipeWire’s pulseaudio seems finicky, sometimes works sometimes doesn’t. Sometimes applications like browser (librewolf, ungoogled-chromium) can’t access microphone or speaker (while permissions are fine), at other times, messing around with pavucontrol makes it work. I am not sure what exactly is making it work and what is failing, any suggestions for how to conduct some debugging would be of help. I need a consistently functioning system of pipewire emulating pulseaudio for applications and jack for routing, that doesn’t fail. Also, how can I configure my ALSA device cards, and have it reproduce gain? Ipreviously used to have an ~/.config/asound.state that is stored and restored using alsactl. Doing that doesn’t seem to preserve anthing. I’ve attached my system.scm and home configuration for reference if needed. Also CC’ing Ricardo since he’s the “sound guy” I know for GUIX :) Regards, -- Divya Ranjan, Philosophy, Mathematics, Libre Software.