Matrix Voice Modul considered as "Dummy" and does not record

Hi all,

Setup: Raspi PI3+, Matrix Voice (USB-Headset as backup microphone) , speaker snips.ai.
Complete setup done twice.
Kernel downgraded to 4.14.

I see the Matrix Voice modul still as “Dummy”?!

pi@assi:~ $ aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: ALSA [bcm2835 ALSA], Gerät 0: bcm2835 ALSA [bcm2835 ALSA]
Sub-Geräte: 7/7
Sub-Gerät #0: subdevice #0
Sub-Gerät #1: subdevice #1
Sub-Gerät #2: subdevice #2
Sub-Gerät #3: subdevice #3
Sub-Gerät #4: subdevice #4
Sub-Gerät #5: subdevice #5
Sub-Gerät #6: subdevice #6
Karte 0: ALSA [bcm2835 ALSA], Gerät 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 1: Dummy [Dummy], Gerät 0: Dummy PCM [Dummy PCM]
Sub-Geräte: 8/8
Sub-Gerät #0: subdevice #0
Sub-Gerät #1: subdevice #1
Sub-Gerät #2: subdevice #2
Sub-Gerät #3: subdevice #3
Sub-Gerät #4: subdevice #4
Sub-Gerät #5: subdevice #5
Sub-Gerät #6: subdevice #6
Sub-Gerät #7: subdevice #7
Karte 2: headset [Sennheiser USB headset], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0

pi@assi:~ $ arecord -l
**** Liste der Hardware-Geräte (CAPTURE) ****
Karte 1: Dummy [Dummy], Gerät 0: Dummy PCM [Dummy PCM]
Sub-Geräte: 8/8
Sub-Gerät #0: subdevice #0
Sub-Gerät #1: subdevice #1
Sub-Gerät #2: subdevice #2
Sub-Gerät #3: subdevice #3
Sub-Gerät #4: subdevice #4
Sub-Gerät #5: subdevice #5
Sub-Gerät #6: subdevice #6
Sub-Gerät #7: subdevice #7
Karte 2: headset [Sennheiser USB headset], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 0/1
Sub-Gerät #0: subdevice #0

pi@assi:~ $ cat /etc/asound.conf
pcm.!default {
type asym
capture.pcm “mic”
playback.pcm “speaker”
}

pcm.mic {
type softvol
slave {
pcm “array”
}
control {
name “MicArray Master”
card 0
}
}

pcm.speaker {
type plug
slave {
pcm “hw:0,0”
}
}

pcm.array {
type plug
slave {
pcm “hw:2,0” (works w/ USB-headset, not w/ “hw:1,0”)
}
}

pi@assi:~ $ cat /etc/snips.toml
[snips-common]

bus = “mqtt”

mqtt = “localhost:1883”

audio = ["+@mqtt"]

assistant = “/usr/share/snips/assistant”

user_dir = “/var/lib/snips”

MQTT authentication

mqtt_username = “”

mqtt_password = “”

MQTT TLS configuration

mqtt_tls_hostname = “”

mqtt_tls_disable_root_store = false

mqtt_tls_cafile = “”

mqtt_tls_capath = “”

mqtt_tls_client_cert = “”

mqtt_tls_client_key = “”

[snips-analytics]

[snips-asr]

no_fst_map = true

beam_size = 8

model = “/usr/share/snips/asr”

audio = ["+@mqtt"]

partial = false

partial_period_ms = 250

[snips-asr-google]

credentials = “/usr/share/snips/googlecredentials.json”

audio = ["+@mqtt"]

[snips-audio-server]

frame = 256

bind = “default@mqtt”

mike = “Built-in Microphone”

mike = “MATRIXIO-SOUND: - (hw:1,0)”

disable_playback = false

disable_capture = false

[snips-dialogue]

resources = “/usr/share/snips/dialogue”

session_timeout = 15

lambda_timeout = 5

retry_count = 3

sound_feedback_disabled_default = false

[snips-hotword]

model = “/usr/share/snips/hotword”

hotword_id = “default”

sensitivity = “0.5”

audio = ["+@mqtt"]

no_vad_inhibitor = false

vad_messages = false

[snips-injection]
#asr_model = “/usr/share/snips/asr”
#nlu_engine = “/usr/share/snips/nlu_engine”
#keep_nfirst = 3

[snips-nlu]

[snips-tts]

Choose one tts provider (defaults to picotts)

provider = “picotts”

provider = “makerstts”

provider = “customtts”

customtts specific configuration (here configured to use picotts using the en-US language)

available placeholder variables : %%OUTPUT_FILE%%, %%LANG%%, %%TEXT%%

customtts = { command = [“pico2wave”, “-w”, “%%OUTPUT_FILE%%”, “-l”, “en-US”, “%%TEXT%%”] }

[snips-pegasus]

address = “0.0.0.0:8443”

Pegasus TLS configuration

Self signing certificates are generated with /usr/local/bin/snips-pegasus-tls-keygen.sh

tls_certificate_chain = “/var/lib/snips/pegasus/tls/server.fullchain”

tls_private_key = “/var/lib/snips/pegasus/tls/server.key”

Hardware-tests passed.
Any idea what I can do to use Matrix Voice module as mic?

Cheers

Hello @toby2018,

Welcome to the community!

It seems the MATRIX mics aren’t showing up in ALSA at all. Can you show me the output of

dpkg -l | grep matrix

This will show whether the matrix-creator-init package, and the matrixio-kernel-modules packages were properly installed. These are both required for the MATRIX Voice to work. Thanks!

Best,
Samreen

Hi @Samreen,

Here it is:
pi@assi:~ dpkg -l | grep matrix ii libmatrixio-creator-hal:armhf 0.3.7 armhf Hardware Abstraction Layer for MATRIX. ii libswresample2:armhf 7:3.2.14-1~deb9u1+rpt1 armhf FFmpeg library for audio resampling, rematrixing etc. - runtime files ii matrixio-creator-init 0.4.13 armhf Install scripts that can program the MATRIX Creator FPGA and SAM3 IMU. rc matrixio-kernel-modules 0.1.6 armhf Install kernel modules for MATRIX devices. ii matrixio-openocd 1.0.1 armhf Open on-chip JTAG debug solution for ARM and MIPS systems ii matrixio-xc3sprog 1.1.1 armhf Spartan3, XCF and CPLD JTAG programmer and other utilities. pi@assi:~

Cheers and thx for your support :slight_smile:

1 Like

So, the rc next to matrixio-kernel-modules indicates that this package was marked for removal, but the configuration files still remain. This means the matrixio-kernel-modules are not fully installed.

First, ensure you downgraded your Linux kernels to 4.14 using the directions here, and have set raspberrypi-kernel & raspberrypi-kernel-headers to hold updates as mentioned there.

Then run the following, re-install the full kernel modules.

sudo apt install matrixio-kernel-modules

Then reboot

sudo reboot

Completely remove the kernel modules including config files

sudo apt purge matrixio-kernel-modules

Then reboot

sudo reboot

Finally, reinstall a clean version of the MATRIX kernel modules

sudo apt install matrixio-kernel-modules

Then reboot

sudo reboot

Then check arecord -l to see if the MATRIX mics show up. If so, with your snips.toml file, the mics should start working!

Let me know how it goes.

Best,
Samreen

1 Like

Lady, you are great :-:star_struck:

pi@assi:~ arecord -l **** Liste der Hardware-Geräte (CAPTURE) **** Karte 1: Dummy [Dummy], Gerät 0: Dummy PCM [Dummy PCM] Sub-Geräte: 8/8 Sub-Gerät #0: subdevice #0 Sub-Gerät #1: subdevice #1 Sub-Gerät #2: subdevice #2 Sub-Gerät #3: subdevice #3 Sub-Gerät #4: subdevice #4 Sub-Gerät #5: subdevice #5 Sub-Gerät #6: subdevice #6 Sub-Gerät #7: subdevice #7 Karte 2: MATRIXIOSOUND [MATRIXIO-SOUND], Gerät 0: matrixio.mic.0 snd-soc-dummy-dai-0 [] Sub-Geräte: 0/1 Sub-Gerät #0: subdevice #0 Karte 3: headset [Sennheiser USB headset], Gerät 0: USB Audio [USB Audio] Sub-Geräte: 1/1 Sub-Gerät #0: subdevice #0 pi@assi:~

After Dinner I will check complete config and let you know.

Many thx so far - Cheers Toby

1 Like

So, I can confirm, that you solved my problem at all!
Again, many thanks.
I’ve spent a lot of time already trying to overcome this point…

Cheers Toby

1 Like

Glad I could help :smile:

1 Like

Btw, just another question :slight_smile:

I thought (have seen in some reviews) that the LEDs are blinking during capturing.

Or is this something I need to control with the apps to follow?

Anyway, relaxed weekend

Yes, that’s something coded in.

For example, in the Hackster guide using snips to control a light switch, we use everloop.js to code in the LED pulsing animation, and call it in assistant.js when the wakeword is detected using

everloop.startWaiting();

We recommend coding Snips interactions with our newer programming layer MATRIX Lite though, the syntax is much more lightweight than MATRIX Core which is what we used in the example above.

1 Like