I just built a new computer using an Asus Z590-I motherboard and performed a fresh install of Fedora 35. The Audio on this motherboard uses a USB Interface. I’m running the Cinnamon Desktop.
When I open “Sound Settings” and switch to the “Input” tab, I see a listing for “Microphone USB Audio”, but it doesn’t register any input. Likewise Skype, Slack, and Zoom also do not register any input from the Microphone.
However, Audacity allows me to select “Audio: #2 (hw:0,2)” which Does register the input from my microphone.
How can I set this “Audio: #2 (hw:0,2)” as the System Default so that Zoom and other applications will use it?
# lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0bc2:ab28 Seagate RSS LLC Seagate Backup Plus Portable 5TB SRD00F1
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 0b05:19af ASUSTek Computer, Inc. AURA LED Controller
Bus 001 Device 008: ID 045e:0810 Microsoft Corp. LifeCam HD-3000
Bus 001 Device 007: ID 1bcf:08a0 Sunplus Innovation Technology Inc. Gaming mouse [Philips SPK9304]
Bus 001 Device 006: ID 0c45:5004 Microdia Redragon Mitra RGB Keyboard
Bus 001 Device 005: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 004: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 0b05:1998 ASUSTek Computer, Inc. USB Audio
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Because Audacity is the only program that seems to recognize my Microphone input, I am trying to use it to make some sense of this issue.
In Audacity, If I go to Preferences, then Devices, the “Host” dropdown has two options: ALSA and JACK Audio Connection Kit.
If I select “JACK Audio Connection Kit” then my Microphone is just listed as “USB Audio Analog Stereo” under Recording Device, but I cannot get Audacity to capture any audio from it.
However, if I select ALSA, that is when I get the “USB Audio: #2 (hw:0,2)” option under Recording Device, and this is the one that actually works.
So now my question is this; Since pipewire-jack-audio-connection-kit obviously doesn’t like my microphone, can I just remove it and simply use ALSA system wide?
Would you like to try to install pavucontrol then open and select “Input Devices” tab. On the very bottom right corner select “Show: All Input Devices”. After that, then on the main menu of “Input Devices” select the appropriate input devices from the drop down menu.
If above not works, you could register the device by modifying /usr/share/pipewire/pipewire.conf. Please read the couple first lines on how to make custom conf.
Open pipewire.conf and find part as bellow:
# This creates a single PCM source device for the given
# alsa device path hw:0. You can change source to sink
# to make a sink in the same way.
#{ factory = adapter
# args = {
# factory.name = api.alsa.pcm.source
# node.name = "alsa-source"
# node.description = "PCM Source"
# media.class = "Audio/Source"
# api.alsa.path = "hw:0"
# api.alsa.period-size = 1024
# api.alsa.headroom = 0
# api.alsa.disable-mmap = false
# api.alsa.disable-batch = false
# audio.format = "S16LE"
# audio.rate = 48000
# audio.channels = 2
# audio.position = "FL,FR"
# }
#}
Then modify it more or less as bellow:
# This creates a single PCM source device for the given
# alsa device path hw:0. You can change source to sink
# to make a sink in the same way.
{ factory = adapter
args = {
factory.name = api.alsa.pcm.source
node.name = "My-Input"
node.description = "PCM Source"
media.class = "Audio/Source"
api.alsa.path = "hw:0,2"
# api.alsa.period-size = 1024
# api.alsa.headroom = 0
# api.alsa.disable-mmap = false
# api.alsa.disable-batch = false
# audio.format = "S16LE"
# audio.rate = 48000
audio.channels = 2
audio.position = "FL,FR"
}
}
From above you could see the part api.alsa.path = "hw:0,2" that select hw:0,2 as the input source.
Thank you for the additional information. After modifying the pipewire.conf file and restarting the pipewire.service I had a “PCM Source” listed in the volume control, and it worked in All applications.
However, after a reboot I didn’t have any sound at all… pipewire.service was failing to start, and journalctl was showing errors like:
pipewire[5272]: spa.alsa: 'hw:0,2': capture open failed: No such file or directory
So I went back to Audacity, and found that my Microphone was now listed as hw:2,2…
I modified pipwire.conf again and restarted the service, and now it is working.
This is going to get frustrating if I need to edit this file every time I reboot…
Hi, no need to edit your current custom device node on pipewire.conf. Just add it again with different hw and give different name node.name = "My-Other-Node".
To make default input device, you could use wpctl command.
Run wpctl status and it will show the list of devices. Find part:
From the result of arecord -l there no device with Card 2: ... device 2 .. or hw:2,2. Most likely the problem actually are your system sometime failed to detect (initiate or probing) the hw:2,2 card during the boot. Unfortunately, I have no idea why it happen.
I tried adding two sections. One for hw:0,2 and another for hw:2,2, but this prevents pipewire from starting with the error:
pipewire[5272]: spa.alsa: 'hw:0,2': capture open failed: No such file or directory
And I have no sound at all.
Thank you for your concern. I fully understand your reasoning. However; if pipewire receives an update, I WANT IT to overwrite this file. That way I will immediately know if the new version corrected the issue. I do NOT Want a custom config in ~/ or /etc confusing the issue when a new version is released.
That is because every time I reboot, it’s a gamble if I’m going to get hw:0,2 or hw:2,2. When I posted that, hw:0,2 was the working interface. Today, hw:2,2 is the working interface.
Here is new output from arecord -l from today with hw:2,2 as the working microphone port:
I should also note that it does not matter if I plug my microphone into the rear jack on the motherboard or the front header. Neither work with a Vanilla config, and Both work with the custom config that Oprizal posted. It seems hw:2,2 is Both the Front and Rear Microphone jacks on this crazy motherboard.
I should also mention that I tried switching from wireplumber to pipewire-media-session, but that made no difference.
It looks like the front connector is with an usb port and probably also powered with usb?
Bad connection and/or to old/to long cable can cause power problems.
This could also explain your problem that the system not always recognizes it to the same time.
Please take it of from the connector on the motherboard (the cable from the front connector) and try to run the computer a while this way.
If problem solved you have to inspect the cable and clean the connectors on both sides with a contact cleaning spray. If you still have problems just disconnect the front connector again and
buy you a decent audio extention and use just the back (Motherboard connector).
This motherboard uses the Realtek ALC4080, which is “a multi-channel USB audio codec that embeds a USB 2.0 controller with a high-performance audio codec.”
Looking at the datasheet for this chip, I see it has 1.8V, 3.3V, and 5V input, so no; It is not only powered by USB.
That is the secondary issue. The fact that I have to test and possibly modify a custom config file after each boot is just an added annoyance. The real concern is that the Stock Config doesn’t recognize my microphone at all. One would think that a Modern Operating System would have no trouble working with the Microphone input jack that is built into the motherboard…
I will try this to see if the device detection is more consistent, but again, this is the secondary issue.
This is a 100% new computer build. New Motherboard, New Case. I better not have to clean the connectors on a front panel connector on a brand new case.
I don’t plan on ever using the front panel audio connectors anyway. I just tried them as a test. Sorry I mentioned it. I see the additional info just distracted from the real issue.
I guess you are confusing somethings now:
Linux based operating systems never worked for all hardware out of the box. This is just not possible. And Linux generally also comes without software who is behind a closed source model.
Is this codec you are speaking really a open source codec? If not, it already not fits in to the Linux model. You will need tor install drivers/codecs who not come with the “Stock”.
Your collaboration could be to share your experience with other community members while sharing your knowledge how you install the necessary software/drivers who not come with it.
Just watching on Asus website and clicking on software shows me that the motherboard is designed for a closed source Operating system.
The opensource model Fedora Linux follows, expects from you to collaborate with information and tests that in future also your hardware is working with Linux. Newer kernel generally work with newer Hardware alias has to be adapted for it.
So, you might have to rethink your expectations on Fedora Linux or any other Linux project.
I hope you not get me wrong. The help we do offer you here is, that you can reduce the annoyance you have to live with. Maybe you could try Fedora 36 to see if the the Hardware responses better?
Fully understand what you’re saying. I just wasn’t sure where or how to contribute. I see now that I am not the only one who is having this issue. I found this thread:
I will try to see if I can provide any input over there.
Thanks to everyone here. I at least have a temporary workaround until the community can resolve this properly so other new users don’t suffer the same confusion.
To make this less annoying, I wrote a script that will grep the output of arecord -l and use that to sed the ~/.config/pipewire/pipewire.conf.d/pipewire.conf file, and then restart pipewire. Then I set this script as a startup application in cinnamon.
I just rebooted 5 times, and the microphone works every time.
Now if you were to report a bug with all you have done and the solution that works for you it truly would be great since the developers may be able to fix it properly and permanently.
If you do a bug report please post the link here so others can follow it as well.
Sounds, very nice. I would love to see the script. If you have gist or similar you could share it as a link and or include it in your profile.
So people can see that you are already a contributor. Even if it is “just” for a workaround.
I do believe for 35, as long used with kernel 5.16, there will be no solution. If someone fights with same problem could be very happy with your script.
Next I wrote a simple script which greps the output of arecord to determine the current Card Number, and uses that Card Number to overwrite ~/.config/pipewire/pipewire.conf.d/pipewire.conf, and then restart pipewire and wireplumber:
And finally, configure this as a Startup Application in Gnome/Cinnamon/etc…
I also had to Modify the Startup Application listings for Zoom and Skype with a 5 Second Delay to make sure the fix-mic.sh script was finished before these launch. Otherwise they would not detect the correct Microphone.