USB microphone doesn't work with pipewire

I have a usb microphone and it’s detected by ALSA and works properly with PulseAudio, but when I use pipewire it stops working.

This is the output of arecord -l :

**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC887-VD Analog [ALC887-VD Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 2: ALC887-VD Alt Analog [ALC887-VD Alt Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Microphone [USB Condenser Microphone], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

Screenshot from 2022-10-15 08-04-07

systemctl --user status pipewire :

● pipewire.service - PipeWire Multimedia Service
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: disabled)
    Drop-In: /usr/lib/systemd/user/pipewire.service.d
             └─00-uresourced.conf
     Active: active (running) 
TriggeredBy: ● pipewire.socket
   Main PID: 35784 (pipewire)
      Tasks: 2 (limit: 9425)
     Memory: 10.0M
        CPU: 839ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
             └─35784 /usr/bin/pipewire

systemctl --user status pipewire-pulse :

● pipewire-pulse.service - PipeWire PulseAudio
     Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled; preset: disabled)
     Active: active (running) 
TriggeredBy: ● pipewire-pulse.socket
   Main PID: 1589 (pipewire-pulse)
      Tasks: 2 (limit: 9425)
     Memory: 9.4M
        CPU: 418ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
             └─1589 /usr/bin/pipewire-pulse

can you check:
wpctl status and see what’s listed for the microphone?

Thanks

Thanks for replying.

Here is the output of wpctl status

PipeWire 'pipewire-0' [0.3.59, ayman@fedora, cookie:4286566574]
 └─ Clients:
        31. WirePlumber                         [0.3.59, ayman@fedora, pid:1570]
        32. WirePlumber [export]                [0.3.59, ayman@fedora, pid:1570]
        35. pipewire-pulse                      [0.3.59, ayman@fedora, pid:1571]
        54. uresourced                          [0.3.59, ayman@fedora, pid:1790]
        55. GNOME Volume Control Media Keys     [0.3.59, ayman@fedora, pid:1987]
        56. GNOME Shell Volume Control          [0.3.59, ayman@fedora, pid:1814]
        57. xdg-desktop-portal                  [0.3.59, ayman@fedora, pid:2220]
        58. GNOME Settings                      [0.3.59, ayman@fedora, pid:2724]
        70. wpctl                               [0.3.59, ayman@fedora, pid:2825]

Audio
 ├─ Devices:
 │      41. Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series] [alsa]
 │      42. Built-in Audio                      [alsa]
 │      66. USB Condenser Microphone            [alsa]
 │  
 ├─ Sinks:
 │      47. Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series] Digital Stereo (HDMI) [vol: 0.74]
 │  *   48. Built-in Audio Analog Stereo        [vol: 0.54]
 │  
 ├─ Sink endpoints:
 │  
 ├─ Sources:
 │  *   61. USB Condenser Microphone Mono       [vol: 0.91]
 │  
 ├─ Source endpoints:
 │  
 └─ Streams:
        34. GNOME Settings                                              
             53. input_MONO      < USB Condenser Microphone:capture_MONO	[active]
             67. monitor_MONO   
        60. GNOME Settings                                              
             59. input_FR        < ALC887-VD Analog:monitor_FR	[active]
             64. monitor_FR     
             65. input_FL        < ALC887-VD Analog:monitor_FL	[active]
             69. monitor_FL     

Video
 ├─ Devices:
 │  
 ├─ Sinks:
 │  
 ├─ Sink endpoints:
 │  
 ├─ Sources:
 │  
 ├─ Source endpoints:
 │  
 └─ Streams:

Settings
 └─ Default Configured Node Names:
         0. Audio/Sink    alsa_output.pci-0000_00_1b.0.playback.0.0
         1. Audio/Source  alsa_input.usb-DCMT_Technology_USB_Condenser_Microphone_214b206000000178-00.mono-fallback```

Does it make any difference if you remove ~/.local/state/wireplumber ?

This will reset what ever you have set as default for sound.

I’ve removed ~/.local/state/wireplumber folder, but the microphone still doesn’t work. This the result of wpctl status :

PipeWire 'pipewire-0' [0.3.59, ayman@fedora, cookie:4286566574]
 └─ Clients:
        34. WirePlumber                         [0.3.59, ayman@fedora, pid:17993]
        35. pipewire-pulse                      [0.3.59, ayman@fedora, pid:1571]
        53. WirePlumber [export]                [0.3.59, ayman@fedora, pid:17993]
        54. uresourced                          [0.3.59, ayman@fedora, pid:1790]
        55. GNOME Volume Control Media Keys     [0.3.59, ayman@fedora, pid:1987]
        56. GNOME Shell Volume Control          [0.3.59, ayman@fedora, pid:1814]
        57. xdg-desktop-portal                  [0.3.59, ayman@fedora, pid:2220]
        58. Mutter                              [0.3.59, ayman@fedora, pid:1814]
        70. wpctl                               [0.3.59, ayman@fedora, pid:18081]

Audio
 ├─ Devices:
 │      48. USB Condenser Microphone            [alsa]
 │      62. Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series] [alsa]
 │      66. Built-in Audio                      [alsa]
 │  
 ├─ Sinks:
 │  *   32. Built-in Audio Analog Stereo        [vol: 0.74]
 │      47. Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series] Digital Stereo (HDMI) [vol: 0.74]
 │  
 ├─ Sink endpoints:
 │  
 ├─ Sources:
 │  *   49. USB Condenser Microphone Mono       [vol: 0.74]
 │  
 ├─ Source endpoints:
 │  
 └─ Streams:

Video
 ├─ Devices:
 │  
 ├─ Sinks:
 │  
 ├─ Sink endpoints:
 │  
 ├─ Sources:
 │  
 ├─ Source endpoints:
 │  
 └─ Streams:

Settings
 └─ Default Configured Node Names:

I should mention that the microphone works with arecord and I can record my voice by running the following command :

[ayman@fedora ~]$ arecord --duration=10 --format=dat --device=hw:2,0 test.wav -c1
Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

Can you check and see if it’s selecting a valid profile?

The simplest way will likely be to use pavucontrol.

You could also use pactl set-card-profile "I used tab complete to find the device & profile"

Screenshot from 2022-10-17 08-19-09

Is there any other solution?

Does changing the profile make any difference or is that the only one available?

You may want to compare the output of:
pactl list cards
pactl list sources

with pulse working
and pipewire not working.

Did this work on older kernels?

This may just be a bug in pipewire.