10

I have an audio interface, a UMC404HD, that I use both for my speakers and for my microphone. It's plugged in via USB cable. This used to work under Ubuntu 20.10. However something seems to have gone wrong as I updated to 21.04.

The main problem is that I can't select the interface as microphone input any more. The only available input is from my webcam, where previously it allowed me to select the UMC404HD as microphone as well:

Photo here, since you can't take screenshots of a drop-down

404 not found, as they say.

However the device is plugged-in and somehow working. Pavucontrol does show me the device and its volume levels:

Pavucontrol shows the device

These levels peak as I tap on the microphone. It's actually getting input from it. But it's somehow not allowing it to be chosen as a microphone. Note also that the "Port:" drop-down is missing from the UMC404HD device.

In the Configuration tab of Pavucontrol, the device is configured as output+input: Analog Surround 4.0 Output + Multichannel Input

Do you know why the device is not available as microphone input?

EDIT: As requested, here is the output of some commands related to audio hardware and software:

trin@Trinity:~$ uname -a
Linux Trinity 5.11.0-18-generic #19-Ubuntu SMP Fri May 7 14:22:03 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

trin@Trinity:~$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0] Subdevices: 0/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 10: HDMI 4 [HDMI 4] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 11: HDMI 5 [HDMI 5] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 12: HDMI 6 [HDMI 6] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: Generic [HD-Audio Generic], device 0: ALC1220 Analog [ALC1220 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: Generic [HD-Audio Generic], device 1: ALC1220 Digital [ALC1220 Digital] Subdevices: 0/1 Subdevice #0: subdevice #0 card 2: U192k [UMC404HD 192k], device 0: USB Audio [USB Audio] Subdevices: 0/1 Subdevice #0: subdevice #0

trin@Trinity:~$ arecord -l **** List of CAPTURE Hardware Devices **** card 1: Generic [HD-Audio Generic], device 0: ALC1220 Analog [ALC1220 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: Generic [HD-Audio Generic], device 2: ALC1220 Alt Analog [ALC1220 Alt Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 2: U192k [UMC404HD 192k], device 0: USB Audio [USB Audio] Subdevices: 0/1 Subdevice #0: subdevice #0 card 3: C920 [HD Pro Webcam C920], device 0: USB Audio [USB Audio] Subdevices: 0/1 Subdevice #0: subdevice #0

trin@Trinity:~$ inxi -SA System: Host: Trinity Kernel: 5.11.0-18-generic x86_64 bits: 64 Desktop: GNOME 3.38.4 Distro: Ubuntu 21.04 (Hirsute Hippo) Audio: Device-1: NVIDIA TU106 High Definition Audio driver: snd_hda_intel Device-2: Advanced Micro Devices [AMD] Starship/Matisse HD Audio driver: snd_hda_intel Device-3: Logitech OrbiCam type: USB driver: snd-usb-audio,uvcvideo Device-4: BEHRINGER UMC404HD 192k type: USB driver: snd-usb-audio Sound Server: ALSA v: k5.11.0-18-generic

trin@Trinity:~$ lspci -nnk | grep -A 1 Audio 2d:00.1 Audio device [0403]: NVIDIA Corporation TU106 High Definition Audio Controller [10de:10f9] (rev a1) Subsystem: Gigabyte Technology Co., Ltd TU106 High Definition Audio Controller [1458:37c2] Kernel driver in use: snd_hda_intel -- 2f:00.4 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse HD Audio Controller [1022:1487] Subsystem: Micro-Star International Co., Ltd. [MSI] X570-A PRO motherboard [1462:9c37]

trin@Trinity:~$ cat /proc/asound/cards 0 [NVidia ]: HDA-Intel - HDA NVidia HDA NVidia at 0xf7080000 irq 72 1 [Generic ]: HDA-Intel - HD-Audio Generic HD-Audio Generic at 0xf7900000 irq 74 2 [U192k ]: USB-Audio - UMC404HD 192k BEHRINGER UMC404HD 192k at usb-0000:2a:00.1-2, high speed 3 [C920 ]: USB-Audio - HD Pro Webcam C920 HD Pro Webcam C920 at usb-0000:2a:00.1-6.1.4, high speed

trin@Trinity:~$ sudo lshw -C multimedia -usb:1
description: Audio device product: UMC404HD 192k vendor: BEHRINGER physical id: 2 bus info: usb@1:2 version: 1.12 capabilities: usb-2.00 audio-control configuration: driver=snd-usb-audio maxpower=500mA speed=480Mbit/s
-usb:3 description: Video product: HD Pro Webcam C920 vendor: Logitech, Inc. physical id: 4 bus info: usb@1:6.1.4 version: 0.19 serial: 47963BFF capabilities: usb-2.00 configuration: driver=snd-usb-audio maxpower=500mA speed=480Mbit/s -multimedia description: Audio device product: TU106 High Definition Audio Controller vendor: NVIDIA Corporation physical id: 0.1 bus info: pci@0000:2d:00.1 version: a1 width: 32 bits clock: 33MHz capabilities: pm msi pciexpress bus_master cap_list configuration: driver=snd_hda_intel latency=0 resources: irq:72 memory:f7080000-f7083fff -multimedia description: Audio device product: Starship/Matisse HD Audio Controller vendor: Advanced Micro Devices, Inc. [AMD] physical id: 0.4 bus info: pci@0000:2f:00.4 version: 00 width: 32 bits clock: 33MHz capabilities: pm pciexpress msi bus_master cap_list configuration: driver=snd_hda_intel latency=0 resources: irq:74 memory:f7900000-f7907fff

trin@Trinity:~$ dpkg -l | grep alsa ii alsa-base 1.0.25+dfsg-0ubuntu7 all ALSA driver configuration files ii alsa-firmware-loaders 1.2.2-1 amd64 ALSA software loaders for specific hardware ii alsa-source 1.0.25+dfsg-0ubuntu7 all ALSA driver sources ii alsa-topology-conf 1.2.4-1 all ALSA topology configuration files ii alsa-ucm-conf 1.2.4-2ubuntu1.1 all ALSA Use Case Manager configuration files ii alsa-utils 1.2.4-1ubuntu3 amd64 Utilities for configuring and using ALSA ii alsamixergui 0.9.0rc2-1-10ubuntu1 amd64 graphical soundcard mixer for ALSA soundcard driver ii gstreamer1.0-alsa:amd64 1.18.4-1 amd64 GStreamer plugin for ALSA ii libalsaplayer-dev 0.99.81-2build2 amd64 alsaplayer plugin library (development files) ii libalsaplayer0:amd64 0.99.81-2build2 amd64 alsaplayer plugin library ii libclalsadrv-dev 2.0.0-3.1 all ALSA driver C++ access library (development files) ii libclalsadrv2 2.0.0-3.1 amd64 ALSA

trin@Trinity:~$ cat /etc/pulse/default.pa #!/usr/bin/pulseaudio -nF

This file is part of PulseAudio.

PulseAudio is free software; you can redistribute it and/or modify it

under the terms of the GNU Lesser General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

PulseAudio is distributed in the hope that it will be useful, but

WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

General Public License for more details.

You should have received a copy of the GNU Lesser General Public License

along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

This startup script is used only if PulseAudio is started per-user

(i.e. not in system mode)

.fail

Automatically restore the volume of streams and devices

load-module module-device-restore load-module module-stream-restore load-module module-card-restore

Automatically augment property information from .desktop files

stored in /usr/share/application

load-module module-augment-properties

Should be after module--restore but before module--detect

load-module module-switch-on-port-available

Use hot-plugged devices like Bluetooth or USB automatically (LP: #1702794)

.ifexists module-switch-on-connect.so load-module module-switch-on-connect .endif

Load audio drivers statically

(it's probably better to not load these drivers manually, but instead

use module-udev-detect -- see below -- for doing this automatically)

#load-module module-alsa-sink #load-module module-alsa-source device=hw:1,0 #load-module module-oss device="/dev/dsp" sink_name=output source_name=input #load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input #load-module module-null-sink #load-module module-pipe-sink

Automatically load driver modules depending on the hardware available

.ifexists module-udev-detect.so load-module module-udev-detect .else

Use the static hardware detection module (for systems that lack udev support)

load-module module-detect .endif

Automatically connect sink and source if JACK server is present

.ifexists module-jackdbus-detect.so .nofail load-module module-jackdbus-detect channels=2 .fail .endif

Automatically load driver modules for Bluetooth hardware

.ifexists module-bluetooth-policy.so load-module module-bluetooth-policy .endif

.ifexists module-bluetooth-discover.so load-module module-bluetooth-discover .endif

Load several protocols

.ifexists module-esound-protocol-unix.so load-module module-esound-protocol-unix .endif load-module module-native-protocol-unix

Network access (may be configured with paprefs, so leave this commented

here if you plan to use paprefs)

#load-module module-esound-protocol-tcp #load-module module-native-protocol-tcp #load-module module-zeroconf-publish

Load the RTP receiver module (also configured via paprefs, see above)

#load-module module-rtp-recv

Load the RTP sender module (also configured via paprefs, see above)

#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'" #load-module module-rtp-send source=rtp.monitor

Load additional modules from GSettings. This can be configured with the paprefs tool.

Please keep in mind that the modules configured by paprefs might conflict with manually

loaded modules.

.ifexists module-gsettings.so .nofail load-module module-gsettings .fail .endif

Automatically restore the default sink/source when changed by the user

during runtime

NOTE: This should be loaded as early as possible so that subsequent modules

that look up the default sink/source get the right value

load-module module-default-device-restore

Make sure we always have a sink around, even if it is a null sink.

load-module module-always-sink

Honour intended role device property

load-module module-intended-roles

Automatically suspend sinks/sources that become idle for too long

Uitgecommentarieerd om te voorkomen dat mijn speakers klikken

#load-module module-suspend-on-idle

If autoexit on idle is enabled we want to make sure we only quit

when no local session needs us anymore.

.ifexists module-console-kit.so load-module module-console-kit .endif .ifexists module-systemd-login.so load-module module-systemd-login .endif

Enable positioned event sounds

load-module module-position-event-sounds

Cork music/video streams when a phone stream is active

load-module module-role-cork

Block audio recording for snap confined packages unless they have

the "pulseaudio" or "audio-record" interfaces plugged.

.ifexists module-snap-policy.so load-module module-snap-policy .endif

Modules to allow autoloading of filters (such as echo cancellation)

on demand. module-filter-heuristics tries to determine what filters

make sense, and module-filter-apply does the heavy-lifting of

loading modules and rerouting streams.

load-module module-filter-heuristics load-module module-filter-apply

Make some devices default

#set-default-sink output #set-default-source input

Zanna
  • 70,465
  • 1
    This sounds like a pulseaudio user configuration issue… I suggest trying this answer first: https://askubuntu.com/a/1301214 – Raffa Jun 18 '21 at 16:58
  • 1
    Your interface is USB Audio Class 2.0 compliant, so it is supposed to work out of the box with ubuntu, but it seems like it may be triggering the wrong ALSA driver? Have you tried removing the other input device. Having multiple inputs simultaneously configured can cause issues like this. – Nate T Jun 19 '21 at 08:53
  • also do arecord -l this should show you which capture devices alsa sees. aplay only shows playback devices. If you configure as recording device only (assuming you have the option) does it show on the dropdown? – Nate T Jun 19 '21 at 09:03
  • I tried renaming the config folder. It reset my volume level to 100% but otherwise no difference. I already tried unplugging the webcam, but it just removed that microphone. I'll add arecord -l to the main post, but Alsa does detect it according to that yes. Setting it as input device only doesn't make a difference. – Ghostkeeper Jun 19 '21 at 15:04
  • 1
    So alsa sees it as both a recording and playback device. atop of alsa sits pulseaudio. can you run 1 more cmd and give output? cat /etc/pulse/default.pa should output the contents of this file. Add the following lines in whatever editor you useload-module module-alsa-source device=hw:2,0

    the first line should be somewhere before the second line

    .ifexists module-udev-detect.so

    – Nate T Jun 19 '21 at 17:25
  • 1
    see here Its about a quarter of the way down. Use cat to see if it already exists. or anything similar. – Nate T Jun 19 '21 at 17:28
  • 1
    Try manually adding the device as a source to pulseaudio: https://askubuntu.com/a/1336123 – Raffa Jun 19 '21 at 17:30
  • 1
    That is the same command I just gave- the param specifies your behringer (card 2, device 0) btw I have a uca202 that is the exact opposite - the inputs show up, but it uses the default mic – Nate T Jun 19 '21 at 17:51
  • @NateT Your solution (or workaround) has worked. I had to add the device both as source and as sink to be able to make it keep working as output as well. I'll look into putting the solution in ~/.config instead of in /etc, to separate it more nicely, but this works as a solution for me. Would you like to formulate it as an answer to get the glory and the bounty? Raffa's answer is similar but Nate was first. – Ghostkeeper Jun 19 '21 at 21:59
  • 1
    In my research I've seen people reporting bugs with this in several recent Linux kernel versions. Seeing the links posted here, it looks like the autodetection by the kernel has broken. Updating to Ubuntu 21.04 also updated the kernel version, so that would explain why this was necessary. – Ghostkeeper Jun 19 '21 at 22:04
  • I totally agree with you… @NateT comments demonstrated precise knowledge and understanding of this issue troubleshooting and solving … My linked answer is meant to complement and explain why and how it works… I am happy it is solved :) …Waiting for his answer to upvote it. – Raffa Jun 19 '21 at 22:31
  • posting answer. Glad that it worked – Nate T Jun 20 '21 at 01:21
  • 1
    @Raffa yea that comment was meant to be light-hearted. My personality translates poorly to comments. btw, i looked at your profile this morning and immediately had to go get a coffee. That expresso looked. so. gooood. – Nate T Jun 20 '21 at 01:58

1 Answers1

8

For whatever reason, the interface isn't being seen as a source by PulseAudio. It needs to be manually configured via forced loading and detection. The steps are as follows:

  1. Use the command:

    arecord -l
    

    and note the card and device numbers.

  2. Open /etc/pulse/default.pa as root in a text editor.

  3. Add the line:

    load-module module-alsa-source device=hw:c,d
    

    where c is the card number and d is the device number.

  4. Below that line add:

    .ifexists module-udev-detect.so
    
  5. Save the file and reload PulseAudio. This can be done from command line with:

    pulseaudio -k ; pulseaudio -D
    

This should force detection as an input source. To see the process used to verify solution, see the comments under OP. To find out more info about troubleshooting issues in PulseAudio, see the Arch Linux Wiki for PulseAudio/Troubleshooting.

Nate T
  • 1,524
  • Also, as a side note, now that you have pulseaudio up and running, you should consider using JACK. It is designed more for pro audio applications, whereas pulseaudio is more for youtube and every day sound apps. – Nate T Jun 20 '21 at 22:55
  • Did I leave anything out? Let me know and I'll add. – Nate T Jun 22 '21 at 03:48