<div>Hello,</div>
<div> </div>
<div>Assume my 2 weeks experience around pulseaudio and sound system in Linux. </div>
<div>My group try to adapt specialized USB soundcard pre-prototype built <span style="color: inherit;">temporarily</span><span style="color: inherit;"> </span><span style="color: inherit;">on Arduino (only registration part, no real audio processing so far).</span></div>
<div>In order to overcome some issues not relevant to this topic we decided to build soudcard that consists of 3 devices as presented below:</div>
<div> </div>
<div>device 1: 4 outputs, 2 inputs</div>
<div>device 2: <span style="color: inherit;">4 outputs, 1 input</span></div>
<div><span style="color: inherit;">device 3: 2 inputs</span></div>
<div> </div>
<div>We see them correctly detected on Windows. On linux (CentOS 7) we see them as follows:</div>
<div>
<div> </div>
<div><span style="color: #0000ff;">cat /proc/asound/cards</span></div>
<div> </div>
<div> 0 [PCH            ]: HDA-Intel - HDA Intel PCH</div>
<div>                      HDA Intel PCH at 0xd4730000 irq 35</div>
<div><span style="color: #993366;">-><strong> 1 [Leonardo       ]: USB-Audio - Arduino Leonardo</strong></span></div>
<div><span style="color: #993366;"><strong>                      Arduino LLC Arduino Leonardo at usb-0000:00:1a.0-1.2, full speed</strong></span></div>
</div>
<div> </div>
<div>
<div><span style="color: #0000ff;">ls /proc/asound/card1/</span></div>
<div> </div>
<div>id  pcm0c  pcm0p  pcm1c  pcm1p  pcm2c  <strong>stream0  stream1  stream2</strong>  usbbus  usbid  usbmixer</div>
</div>
<div> </div>
<div>
<div><span style="color: #0000ff;">cat /proc/asound/card1/<strong>stream0</strong></span></div>
<div> </div>
<div><span style="color: #0000ff;"> </span>Arduino LLC Arduino Leonardo at usb-0000:00:1a.0-1.2, full speed : USB Audio</div>
<div> </div>
<div>Playback:</div>
<div>  Status: Running</div>
<div><span style="color: inherit;">...</span></div>
<div><span style="color: inherit;">    Format: S16_LE</span></div>
<div>    <strong>Channels: 4</strong></div>
<div>    Endpoint: 10 <strong>OUT</strong> (NONE)</div>
<div>    Rates: 8000</div>
<div> </div>
<div>Capture:</div>
<div>  Status: Running</div>
<div><span style="color: inherit;">...</span></div>
<div><span style="color: inherit;">    Format: S16_LE</span></div>
<div>    <strong>Channels: 2</strong></div>
<div>    Endpoint: 7 <strong>IN</strong> (NONE)</div>
<div>    Rates: 8000</div>
</div>
<div> </div>
<div>
<div><span style="color: #0000ff;">cat /proc/asound/card1/<strong>stream1</strong></span></div>
<div><span style="color: #000000;"> </span>Playback:</div>
<div>  Status: Running</div>
<div><span style="color: inherit;">....</span></div>
<div><span style="color: inherit;">    Format: S16_LE</span></div>
<div><strong>    Channels: 4</strong></div>
<div>    Endpoint: 11 <strong>OUT</strong> (NONE)</div>
<div>    Rates: 8000</div>
<div> </div>
<div>Capture:</div>
<div>  Status: Running</div>
<div><span style="color: inherit;">...</span></div>
<div><span style="color: inherit;">    Format: S16_LE</span></div>
<div><strong>    Channels: 1</strong></div>
<div>    Endpoint: 8 IN (NONE)</div>
</div>
<div> </div>
<div>
<div><span style="color: #0000ff;">cat /proc/asound/card1/<strong>stream2</strong></span></div>
</div>
<div><span style="color: #0000ff;"> </span>Capture:</div>
<div>  Status: Running</div>
<div><span style="color: inherit;">...</span></div>
<div><span style="color: inherit;">    Format: S16_LE</span></div>
<div><strong>    Channels: 2</strong></div>
<div>    Endpoint: 9 <strong>IN</strong> (NONE)</div>
<div>    Rates: 8000</div>
<div> </div>
<div>However, default linux behavior is to present only device #1. There are missing devices 2 and 3 - seems like not detected or configured by pulseaudio. <strong>Pavucontrol</strong> shows only single device with 4 outputs and stereo inputs.</div>
<div> </div>
<div>If I run commands: </div>
<div>
<div><span style="color: #0000ff;">    pacmd load-module module-alsa-sink device=hw:1,1</span></div>
<div><span style="color: #0000ff;">    pacmd load-module module-alsa-source device=hw:1,1</span></div>
<div><span style="color: #0000ff;">    pacmd load-module module-alsa-source device=hw:1,2</span></div>
<div> </div>
<div>pavucontrol will show missing devices. Seems good, but this is USB device. After reconnecting I have to run commands again and even adding them to /etc/pulse/default.pa is not working for this scenario.</div>
<div>So, I tried to automate this by udev rules and running bash script, but it looks like wrong method. </div>
<div> </div>
<div>I created rule /usr/lib/udev/rules.d/99-pulseaudio-myrule.rules:</div>
<div>
<div>ACTION=="change", SUBSYSTEM=="sound", ATTRS{id}=="Leonardo", RUN+="/root/myscript.sh &"</div>
</div>
<div> </div>
<div>Scripts executes missing 3 commands, but it looks that soundcard is not detected (loaded) by pulseaudio and device #1 is not added:</div>
<div> </div>
<div>Compare manual adding (w/o udev) vs automated by udev:</div>
<div>MANUAL:</div>
<div><strong>pactl list modules short</strong></div>
<div>
<div>...</div>
<div>288     module-alsa-card        device_id="1" name="usb-Arduino_LLC_Arduino_Leonardo-03-Leonardo" card_name="alsa_card.usb-Arduino_LLC_Arduino_Leonardo-03-Leonardo" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes card_properties="module-udev-detect.discovered=1"</div>
<div>289     module-alsa-sink        device=hw:1,1</div>
<div>290     module-alsa-source      device=hw:1,2</div>
<div>291     module-alsa-source      device=hw:1,1</div>
</div>
<div> </div>
<div>AUTOMATED:</div>
<div><strong><span style="color: inherit;">pactl list modules short</span></strong></div>
<div>...</div>
<div><no soundcard !></div>
<div>
<div>285     module-alsa-sink        device=hw:1,1</div>
<div>286     module-alsa-source      device=hw:1,1</div>
<div>287     module-alsa-source      device=hw:1,2</div>
</div>
<div> </div>
<div><span style="color: inherit;">What is interesting - when I unload sink and sources by: </span></div>
<div>
<div>    pactl unload-module module-alsa-sink</div>
<div>    pactl unload-module module-alsa-source</div>
<div> </div>
<div>soundcard is automatically detected and appears after "pactl list modules"</div>
<div> </div>
<div>Can you help me understand proper way to configure this soundcard to be fully visible by pulseaudio?</div>
<div style="color: inherit;"> </div>
</div>
<div>Thank you,</div>
<div>Piotrek</div>
<div> </div>
</div>