#1110637 alsa-ucm-conf: Focusrite Scarlett 18i20 support breaks in alsa-ucm-conf 1.2.14 (shipped with Trixie)

Package:
alsa-ucm-conf
Source:
alsa-ucm-conf
Submitter:
Esther Weidauer
Date:
2026-10-11 09:55:02 UTC
Severity:
normal
Tags:
#1110637#5
Date:
2025-08-09 12:23:42 UTC
From:
To:
Dear Maintainer,

alsa-ucm-conf 1.2.14 introduced an issue where support for the Focusrite
Scarlett 18i20 audio interface was broken. The issue is described here:
https://github.com/alsa-project/alsa-ucm-conf/issues/559

alsa-ucm-conf 1.2.14 ships with Debian Trixie, breaking those audio
interfaces
after the upgrade from Bookworm to Trixie.

Currently the audio interface is not correctly recognized and audio
playback impossible. I did not test recording but I assume that's
affected too.

Best regards

#1110637#10
Date:
2025-08-09 16:01:36 UTC
From:
To:
Reverting the changes introduce with commit 7283759 in alsa-ucm-conf
(https://github.com/alsa-project/alsa-ucm-conf/commit/7283759a381ca1fc2589da213daa05f9d3b84aac)
on my system has restored function to the audio interface, including the
correct pipewire graph.

It really just seems to be that one commit causing this problem.

I don't know how to produce patched deb packages so I could only do it
manually for now.

Cheers

Esther Weidauer
esther@selfawaresoup.com

pronouns: she/her
languages: english/german

#1110637#15
Date:
2025-08-11 14:18:01 UTC
From:
To:
Hello there,

following up on this bug and on some fediverse conversation [0].

# How to propose a patch to a maintainer, and produce a patched .deb package?

I'll be demonstrating this from a Debian 12 pristine VPS, to make sure none of
the assumptions I long use on my local machine apply. I guess this will also
serve as a demonstration on how this is way too complex (or on how my
knowledge is too outdated).

## Setup

* Install the needed tools

  $ sudo apt update; sudo apt install -y devscripts quilt

* Configure the local environment (needed for proper changelog generation)

  $ export DEBFULLNAME="Didier 'OdyX' Raboud"
  $ export DEBEMAIL=odyx@debian.org

## Get the source package

Here, you can use either the binary package name, or the source package name.

  $ debcheckout alsa-ucm-conf; cd alsa-ucm-conf

This gives you the latest maintainer view of the source package, in the alsa-
ucm-conf directory, so very likely at the status of the latest unstable (which
is what a patch will need to target). Let's make sure we base our work on the
latest unstable upload:

  $ git checkout debian/1.2.14-1; git switch -c fix-bug-1110637

## Patch the source code

There are multiple ways to handle this patching, but let's just demonstrate
the direct method, not fiddling with the patch queue manually:

Let's just raw-apply the revert to the source package tree via "patch -R"

  $ wget -q -O - 'https://github.com/alsa-project/alsa-ucm-conf/commit/
7283759a381ca1fc2589da213daa05f9d3b84aac.patch' | patch -p1 -R

At this point, what one has is the upstream source, the debian/ repository,
and some files patched. One needs a new changelog entry (so as to generate
binary packages that do _not_ have the same version as provided by Debian: the
'+' will sort later than the current version):

  $ dch --local +2025081100 "Revert 'USB-Audio: Add focusrite scarlett 18i20
lineup' (Closes: #1110637)"

Finally, build a new source package. To do that, one needs the upstream
tarball as available from the Debian archive, dget is convenient for this:

  $ cd ..; dget --download-only 'https://deb.debian.org/debian/pool/main/a/
alsa-ucm-conf/alsa-ucm-conf_1.2.14-1.dsc'; cd -

Now we can generate a patch with our changes, using dpkg-source:

  $ dpkg-source --commit --include-removal

It'll ask for a patch name (mostly, anything goes), and some metadata. I've
attached the patch file to this email.

Then one needs to remove all their local changes:

  $ quilt pop -a

Finally, we can build the new source package:

  $ dpkg-buildpackage --build=source

This gives us a set of new files:
- ../alsa-ucm-conf_1.2.14-1+20250811001.dsc
- ../alsa-ucm-conf_1.2.14-1+20250811001.debian.tar.xz

We can see the full difference between the source packages this way:

  $ debdiff ../alsa-ucm-conf_1.2.14-1.dsc ../alsa-ucm-
conf_1.2.14-1+20250811001.dsc

I've attached the resulting .debdiff to this email.

At this point, we have a source Debian package, but no installable binaries.
So…

## Build a locally-patched Debian package from a source package

Generally, one wants to build Debian packages in isolated environments (to
avoid installing massive build-depends on one's main machine, to avoid
pollution from the machine's environment, etc). A somewhat simple way to do
this is to use `debocker` (which will leverage docker):

  $ sudo apt install debocker
  $ sudo adduser debian docker
  $ logout
  … login

  $ cd alsa-ucm-conf
  $ debocker build

After a long process, this produces the following .deb file:
- ../alsa-ucm-conf_1.2.14-1+20250811001_all.deb

That said, in this particular case, as the source package has only very
minimal build-depends, the following is enough (and much faster):

  $ dpkg-buildpackage --build=binary

… which produces the same .deb file, which you can pass around and install
wherever necessary.

## Bug-metadata update

Finally, as we're giving the maintainer a patch, we can update the bug's
metadata via Control pseudo-headers:

  Control tags -1 +patch +upstream

(where -1 indicates that we're addressing this very bug number).

I hope this all was more helpful than confusing!

Best, OdyX

[0] from https://wandering.shop/@aesthr/114999646041061682

On Sat, 9 Aug 2025 18:01:36 +0200 Esther Weidauer <esther@selfawaresoup.com> wrote:
7283759a381ca1fc2589da213daa05f9d3b84aac)

#1110637#24
Date:
2026-10-11 09:53:23 UTC
From:
To:
Hello,

After exploring this issue a bit it seems that there are multiple issues
with the provided configuration for the 18i20 depending on the
generation.

Instead of reverting the whole profile, I think that one fix could be
the following regex fix that makes the profile match the gen1 18i20:
https://github.com/alsa-project/alsa-ucm-conf/commit/40002e48eee529e6d97cd51b488e1b20d594cc47

Can you confirm, if you have a gen1, that this change fixes the issue
and makes the 18i20 gen1 recognized and work? You can probably edit the
file by hand and change the big `C` to a small `c` and check:

diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf
index fe2cd46..65facee 100644
--- a/ucm2/USB-Audio/USB-Audio.conf
+++ b/ucm2/USB-Audio/USB-Audio.conf
@@ -345,11 +345,11 @@ If.focusrite-scarlett-18i20 {
        Condition {
                Type RegexMatch
                String "${CardComponents}"
-               # 800C 1st Gen
+               # 800c 1st Gen
                # 8201 2nd Gen
                # 8215 3rd Gen
                # 821d 4th Gen
-               Regex "USB1235:8(00C|2(01|1(5|d)))"
+               Regex "USB1235:8(00c|2(01|1(5|d)))"
        }
        True.Define.ProfileName "Focusrite/Scarlett-18i20"
 }

If you do not have a 18i20 gen1 but something else then this issue
probably needs more investigation… In the meantime you could use the
version in trixie-backports and check if the issue is still present.

Thanks,

Agathe.