Skip to content

Instantly share code, notes, and snippets.

@cfra
Last active July 31, 2023 14:57
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cfra/3369a10a36e2145a91f95eb5fc16e851 to your computer and use it in GitHub Desktop.
Save cfra/3369a10a36e2145a91f95eb5fc16e851 to your computer and use it in GitHub Desktop.
Zoom U-44 PulseAudio Setup

Zoom U-44 PulseAudio Setup

Problem Statement

The Zoom U-44 works out of the box with recent Linux versions.

By default, PulseAudio will register it as a single sink with 4 output channels. As the U-44 is organized to have two stereo pairs for outputs, there are situations where it is more useful to have 2 separate sinks available, each playing back to one of the two stereo pairs.

A similar situation holds true for the inputs. They are all controlled separately, so it is useful to have a source for each one of the single inputs.

Solution

This can be implemented using module-remap-sink. The full command to achieve this remapping looks like this:

pactl load-module module-remap-sink \
      sink_name=u44_output_12 \
      "sink_properties=device.description='U-44\ 1/2'" \
      remix=no \
      master=alsa_output.usb-ZOOM_Corporation_U-44-00.analog-surround-40 \
      master_channel_map=front-left,front-right \
      channel_map=front-left,front-right
pactl load-module module-remap-sink \
      sink_name=u44_output_34 \
      "sink_properties=device.description='U-44\ 3/4'" \
      remix=no \
      master=alsa_output.usb-ZOOM_Corporation_U-44-00.analog-surround-40 \
      master_channel_map=rear-left,rear-right \
      channel_map=front-left,front-right
pactl load-module module-remap-source \
      source_name=u44_input_1 \
      "source_properties=device.description='U-44\ 1'" \
      master=alsa_input.usb-ZOOM_Corporation_U-44-00.multichannel-input \
      master_channel_map=front-left \
      channel_map=front-left
pactl load-module module-remap-source \
      source_name=u44_input_2 \
      "source_properties=device.description='U-44\ 2'" \
      master=alsa_input.usb-ZOOM_Corporation_U-44-00.multichannel-input \
      master_channel_map=front-right \
      channel_map=front-left
pactl load-module module-remap-source \
      source_name=u44_input_3 \
      "source_properties=device.description='U-44\ 3'" \
      master=alsa_input.usb-ZOOM_Corporation_U-44-00.multichannel-input \
      master_channel_map=rear-left \
      channel_map=front-left
pactl load-module module-remap-source \
      source_name=u44_input_4 \
      "source_properties=device.description='U-44\ 4'" \
      master=alsa_input.usb-ZOOM_Corporation_U-44-00.multichannel-input \
      master_channel_map=rear-right \
      channel_map=front-left      

Outlook

It would be nice to make this remapping permanent and not rely on shell commands to set it up. This doesn't seem completely straightforward though, since we need to trigger this from a hot plug event, because the U-44 might not always be available. This can possibly be achieved by some form of udev rule.

@iunctim
Copy link

iunctim commented May 19, 2022

This is really cool, thank you very much!

@MstrVLT
Copy link

MstrVLT commented Feb 16, 2023

Great solution! Thank you!

My issue:
sync S/PDIF led blinking and the sound is terrible in 3/4 ch

Solution:
try update firmware and set
default-sample-rate = 48000
in /etc/pulse/daemon.conf after reboot, the LED is on steadily

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment