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

Didier 'OdyX' Raboud odyx at debian.org
Mon Aug 11 15:18:01 BST 2025


Control: tags -1 +patch +upstream

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 at 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 at selfawaresoup.com> 
wrote:
> 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 at selfawaresoup.com
> 
> pronouns: she/her
> languages: english/german
> 
> On 8/9/25 14:23, Esther Weidauer wrote:
> > Package: alsa-ucm-conf
> > Version: 1.2.14-1
> > Severity: important
> >
> > 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
> >
> > -- System Information:
> > Debian Release: 13.0
> > APT prefers testing-security
> > APT policy: (500, 'testing-security'), (500, 'testing')
> > Architecture: amd64 (x86_64)
> > Foreign Architectures: i386
> >
> > Kernel: Linux 6.12.38+deb13-amd64 (SMP w/24 CPU threads; PREEMPT)
> > Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) 
> > (ignored: LC_ALL set to en_US.UTF-8), LANGUAGE=en
> > Shell: /bin/sh linked to /usr/bin/dash
> > Init: systemd (via /run/systemd/system)
> > LSM: AppArmor: enabled
> >
> > Versions of packages alsa-ucm-conf depends on:
> > ii libasound2t64 1.2.14-1
> >
> > alsa-ucm-conf recommends no packages.
> >
> > alsa-ucm-conf suggests no packages.
> >
-------------- next part --------------
A non-text attachment was scrubbed...
Name: alsa-ucm-conf_1.2.14-1+20250811001.debdiff
Type: text/x-patch
Size: 15404 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-alsa-devel/attachments/20250811/6a22b218/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0004-revert-Scarlett-18i20.patch
Type: text/x-patch
Size: 13318 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-alsa-devel/attachments/20250811/6a22b218/attachment-0003.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: This is a digitally signed message part.
URL: <http://alioth-lists.debian.net/pipermail/pkg-alsa-devel/attachments/20250811/6a22b218/attachment-0001.sig>


More information about the Pkg-alsa-devel mailing list