Matrix Creator ALSA & Mic Issues

Hi,
As you all know Raspberry OS had a recent update that added the option to choose audio output.

I have run:
arecord recording.wav -f S16_LE -r 16000 -d 5
then
play recording.wav
It was not working so I went to sudo raspi-config > Advanced Option > Audio and changed from HDMI to Headphones (3.5mm jack) because that’s where my speaker is connected.
Then I was able to play sound, However when I wanted to check this again and record this was the error I was getting after running record:

ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM input
arecord: main:828: audio open error: No such file or directory

I have set: /etc/asound.conf rate to 16000…
No success…

Any ideas on how this can be fixed?
I think this is the reason why the Pcketsphinx and Audio in Rhasspy is not working. Any idea how to fix this?

Hey,

I’m sorry to say that I am also having issues recording audio. Hopefully we have the same issue and a common solution can be found. Lets see if the outputs of the following commands match up between us two:

➜  ~ 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 "MATRIXIOSOUND"
   }
}

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

pcm.array {
  type plug
  slave {
    pcm "hw:MATRIXIOSOUND"
  }
}

pcm.channel_1 {
    type dsnoop
    ipc_key 234884
    slave {
        pcm "hw:2,0"
        channels 8
    }
    bindings.0  0
}

pcm.channel_2 {
    type dsnoop
    ipc_key 234884
    slave {
        pcm "hw:2,0"
        channels 8
    }    
    bindings.0  1
} 

pcm.channel_3 {
    type dsnoop
    ipc_key 234884
    slave {
        pcm "hw:2,0"
        channels 8
    }    
    bindings.0  2
} 

pcm.channel_4 {
    type dsnoop
    ipc_key 234884
    slave {
        pcm "hw:2,0"
        channels 8
    }    
    bindings.0  3
} 

pcm.channel_5 {
    type dsnoop
    ipc_key 234884
    slave {
        pcm "hw:2,0"
        channels 8
    }    
    bindings.0  4
} 

pcm.channel_6 {
    type dsnoop
    ipc_key 234884
    slave {
        pcm "hw:2,0"
        channels 8
    }    
    bindings.0  5
} 

pcm.channel_7 {
    type dsnoop
    ipc_key 234884
    slave {
        pcm "hw:2,0"
        channels 8
    }    
    bindings.0  6
} 

pcm.channel_8 {
    type dsnoop
    ipc_key 234884
    slave {
        pcm "hw:2,0"
        channels 8
    }    
    bindings.0  7
} 

pcm.all_channels {
    type dsnoop
    ipc_key 234884
    slave {
        pcm "hw:2,0"
        channels 8
    }    
    bindings {
            0 0
            0 1
            0 2
            0 3
            0 4
            0 5
            0 6
            0 7
    }
} 

➜  ~ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: Dummy [Dummy], device 0: Dummy PCM [Dummy PCM]
  Subdevices: 7/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 2: MATRIXIOSOUND [MATRIXIO-SOUND], device 0: matrixio.mic.0 snd-soc-dummy-dai-0 []
  Subdevices: 0/1
  Subdevice #0: subdevice #0

➜  ~ ls /boot/overlays | grep matrix  
matrixio.dtbo

➜  ~ sudo lsmod | grep matrix
matrixio_uart          16384  0
matrixio_codec         16384  4
matrixio_playback      49152  1
matrixio_mic           16384  1
snd_soc_core          192512  4 matrixio_playback,vc4,matrixio_codec,matrixio_mic
matrixio_env           16384  0
matrixio_imu           16384  0
industrialio           73728  2 matrixio_imu,matrixio_env
matrixio_gpio          16384  0
matrixio_everloop      16384  0
matrixio_regmap        61440  1
matrixio_core          16384  7 matrixio_everloop,matrixio_regmap,matrixio_playback,matrixio_imu,matrixio_mic,matrixio_uart,matrixio_env
snd_pcm               102400  11 matrixio_playback,vc4,snd_pcm_dmaengine,matrixio_mic,snd_bcm2835,snd_soc_core,snd_dummy
snd                    73728  25 snd_compress,matrixio_playback,snd_timer,snd_bcm2835,snd_soc_core,snd_dummy,snd_pcm

➜  ~ sudo dpkg -l | grep matrix

ii  libmatrixio-creator-hal:armhf     0.3.8                               armhf        Hardware Abstraction Layer for MATRIX.
ii  libmatrixio-creator-hal-dev       0.3.8                               armhf        Hardware Abstraction Layer for MATRIX (headers)
ii  libmatrixio-malos:armhf           0.1.4                               armhf        Libraries of MATRIX abstraction layer for MOS
ii  libmatrixio-malos-dev             0.1.4                               armhf        Libraries of MATRIX abstraction layer for MOS
ii  libmatrixio-protos:armhf          0.1.6                               armhf        Protocolbuffers for MATRIX abstraction layer
ii  libmatrixio-protos-dev            0.1.6                               armhf        Protocolbuffers headers for MATRIX abstraction layer
ii  libswresample3:armhf              7:4.1.4-1+rpt7~deb10u1              armhf        FFmpeg library for audio resampling, rematrixing etc. - runtime files
ii  matrixio-creator-init             0.4.17                              armhf        Install scripts that can program the MATRIX Creator FPGA and SAM3 IMU.
ii  matrixio-kernel-modules           0.2.3                               all          Source DKMS for MATRIXIO kernel modules.
ii  matrixio-libzwaveip:armhf         0.1.2                               armhf        libzwaveip is a library to control Z-Wave devices from your IP network via a Z/IP Gateway
ii  matrixio-libzwaveip-dev           0.1.2                               armhf        libzwaveip is a library to control Z-Wave devices from your IP network via a Z/IP Gateway
ii  matrixio-malos                    0.3.6                               armhf        Allows queries to MATRIX Creator hardware via ZMQ.
ii  matrixio-malos-zigbee             0.1.7                               armhf        Allows queries to MATRIX Creator hardware via ZMQ.
ii  matrixio-malos-zwave              0.1.6                               armhf        Allows queries to MATRIX Creator hardware via ZMQ.
ii  matrixio-openocd                  1.0.1.002                           armhf        Open on-chip JTAG debug solution for ARM and MIPS systems
ii  matrixio-protobuf                 3.8.0                               armhf        Protocol Buffers - Google's data interchange format. (From GRPC 3.8.0)
ii  matrixio-xc3sprog                 1.1.1.003                           armhf        Spartan3, XCF and CPLD JTAG programmer and other utilities.
ii  matrixio-zipgateway               2.61.0                              armhf        zipgateway built using CMake
ii  matrixio-zwave-utils              0.2.1                               armhf        Install scripts that can init the Zwave Module in MATRIX Creator.

➜  ~ cat /usr/share/alsa/alsa.conf
#
#  ALSA library configuration file
#

# pre-load the configuration files

@hooks [
        {
                func load
                files [
                        "/etc/alsa/conf.d"
                        "/etc/asound.conf"
                        "~/.asoundrc"
                ]
                errors false
        }
]

# load card-specific configuration files (on request)

cards.@hooks [
        {
                func load
                files [
                        {
                                @func concat
                                strings [
                                        { @func datadir }
                                        "/cards/aliases.conf"
                                ]
                        }
                ]
        }
        {
                func load_for_all_cards
                files [
                        {
                                @func concat
                                strings [
                                        { @func datadir }
                                        "/cards/"
                                        { @func private_string }
                                        ".conf"
                                ]
                        }
                ]
                errors false
        }
]

#
# defaults
#

# show all name hints also for definitions without hint {} section
defaults.namehint.showall on
# show just basic name hints
defaults.namehint.basic on
# show extended name hints
defaults.namehint.extended on
#
defaults.ctl.card 0
defaults.pcm.card 0
defaults.pcm.device 0
defaults.pcm.subdevice -1
defaults.pcm.nonblock 1
defaults.pcm.compat 0
defaults.pcm.minperiodtime 5000         # in us
defaults.pcm.ipc_key 5678293
defaults.pcm.ipc_gid audio
defaults.pcm.ipc_perm 0660
defaults.pcm.dmix.max_periods 0
defaults.pcm.dmix.rate 48000
defaults.pcm.dmix.format "unchanged"
defaults.pcm.dmix.card defaults.pcm.card
defaults.pcm.dmix.device defaults.pcm.device
defaults.pcm.dsnoop.card defaults.pcm.card
defaults.pcm.dsnoop.device defaults.pcm.device
defaults.pcm.front.card defaults.pcm.card
defaults.pcm.front.device defaults.pcm.device
defaults.pcm.rear.card defaults.pcm.card
defaults.pcm.rear.device defaults.pcm.device
defaults.pcm.center_lfe.card defaults.pcm.card
defaults.pcm.center_lfe.device defaults.pcm.device
defaults.pcm.side.card defaults.pcm.card
defaults.pcm.side.device defaults.pcm.device
defaults.pcm.surround21.card defaults.pcm.card
defaults.pcm.surround21.device defaults.pcm.device
defaults.pcm.surround40.card defaults.pcm.card
defaults.pcm.surround40.device defaults.pcm.device
defaults.pcm.surround41.card defaults.pcm.card
defaults.pcm.surround41.device defaults.pcm.device
defaults.pcm.surround50.card defaults.pcm.card
defaults.pcm.surround50.device defaults.pcm.device
defaults.pcm.surround51.card defaults.pcm.card
defaults.pcm.surround51.device defaults.pcm.device
defaults.pcm.surround71.card defaults.pcm.card
defaults.pcm.surround71.device defaults.pcm.device
defaults.pcm.iec958.card defaults.pcm.card
defaults.pcm.iec958.device defaults.pcm.device
defaults.pcm.modem.card defaults.pcm.card
defaults.pcm.modem.device defaults.pcm.device
# truncate files via file or tee PCM
defaults.pcm.file_format        "raw"
defaults.pcm.file_truncate      true
defaults.rawmidi.card 0
defaults.rawmidi.device 0
defaults.rawmidi.subdevice -1
defaults.hwdep.card 0
defaults.hwdep.device 0
defaults.timer.class 2
defaults.timer.sclass 0
defaults.timer.card 0
defaults.timer.device 0
defaults.timer.subdevice 0

#
#  PCM interface
#

# redirect to load-on-demand extended pcm definitions
pcm.cards cards.pcm

pcm.default cards.pcm.default
pcm.sysdefault cards.pcm.default
pcm.front cards.pcm.front
pcm.rear cards.pcm.rear
pcm.center_lfe cards.pcm.center_lfe
pcm.side cards.pcm.side
pcm.surround21 cards.pcm.surround21
pcm.surround40 cards.pcm.surround40
pcm.surround41 cards.pcm.surround41
pcm.surround50 cards.pcm.surround50
pcm.surround51 cards.pcm.surround51
pcm.surround71 cards.pcm.surround71
pcm.iec958 cards.pcm.iec958
pcm.spdif iec958
pcm.hdmi cards.pcm.hdmi
pcm.dmix cards.pcm.dmix
pcm.dsnoop cards.pcm.dsnoop
pcm.modem cards.pcm.modem
pcm.phoneline cards.pcm.phoneline

pcm.hw {
        @args [ CARD DEV SUBDEV ]
        @args.CARD {
                type string
                default {
                        @func getenv
                        vars [
                                ALSA_PCM_CARD
                                ALSA_CARD
                        ]
                        default {
                                @func refer
                                name defaults.pcm.card
                        }
                }
        }
        @args.DEV {
                type integer
                default {
                        @func igetenv
                        vars [
                                ALSA_PCM_DEVICE
                        ]
                        default {
                                @func refer
                                name defaults.pcm.device
                        }
                }
        }
        @args.SUBDEV {
                type integer
                default {
                        @func refer
                        name defaults.pcm.subdevice
                }
        }
        type hw
        card $CARD
        device $DEV
        subdevice $SUBDEV
        hint {
                show {
                        @func refer
                        name defaults.namehint.extended
                }
                description "Direct hardware device without any conversions"
        }
}

pcm.plughw {
        @args [ CARD DEV SUBDEV ]
        @args.CARD {
                type string
                default {
                        @func getenv
                        vars [
                                ALSA_PCM_CARD
                                ALSA_CARD
                        ]
                        default {
                                @func refer
                                name defaults.pcm.card
                        }
                }
        }
        @args.DEV {
                type integer
                default {
                        @func igetenv
                        vars [
                                ALSA_PCM_DEVICE
                        ]
                        default {
                                @func refer
                                name defaults.pcm.device
                        }
                }
        }
        @args.SUBDEV {
                type integer
                default {
                        @func refer
                        name defaults.pcm.subdevice
                }
        }
        type plug
        slave.pcm {
                type hw
                card $CARD
                device $DEV
                subdevice $SUBDEV
        }
        hint {
                show {
                        @func refer
                        name defaults.namehint.extended
                }
                description "Hardware device with all software conversions"
        }
}

pcm.plug {
        @args [ SLAVE ]
        @args.SLAVE {
                type string
        }
        type plug
        slave.pcm $SLAVE
}

pcm.shm {
        @args [ SOCKET PCM ]
        @args.SOCKET {
                type string
        }
        @args.PCM {
                type string
        }
        type shm
        server $SOCKET
        pcm $PCM
}

pcm.tee {
        @args [ SLAVE FILE FORMAT ]
        @args.SLAVE {
                type string
        }
        @args.FILE {
                type string
        }
        @args.FORMAT {
                type string
                default {
                        @func refer
                        name defaults.pcm.file_format
                }
        }
        type file
        slave.pcm $SLAVE
        file $FILE
        format $FORMAT
        truncate {
                @func refer
                name defaults.pcm.file_truncate
        }
}

pcm.file {
        @args [ FILE FORMAT ]
        @args.FILE {
                type string
        }
        @args.FORMAT {
                type string
                default {
                        @func refer
                        name defaults.pcm.file_format
                }
        }
        type file
        slave.pcm null
        file $FILE
        format $FORMAT
        truncate {
                @func refer
                name defaults.pcm.file_truncate
        }
}

pcm.null {
        type null
        hint {
                show {
                        @func refer
                        name defaults.namehint.basic
                }
                description "Discard all samples (playback) or generate zero samples (capture)"
        }
}

#
#  Control interface
#

ctl.sysdefault {
        type hw
        card {
                @func getenv
                vars [
                        ALSA_CTL_CARD
                        ALSA_CARD
                ]
                default {
                        @func refer
                        name defaults.ctl.card
                }
        }
        hint.description "Default control device"
}
ctl.default ctl.sysdefault

ctl.hw {
        @args [ CARD ]
        @args.CARD {
                type string
                default {
                        @func getenv
                        vars [
                                ALSA_CTL_CARD
                                ALSA_CARD
                        ]
                        default {
                                @func refer
                                name defaults.ctl.card
                        }
                }
        }
        type hw
        card $CARD
        hint.description "Direct control device"
}

ctl.shm {
        @args [ SOCKET CTL ]
        @args.SOCKET {
                type string
        }
        @args.CTL {
                type string
        }
        type shm
        server $SOCKET
        ctl $CTL
}

#
#  RawMidi interface
#

rawmidi.default {
        type hw
        card {
                @func getenv
                vars [
                        ALSA_RAWMIDI_CARD
                        ALSA_CARD
                ]
                default {
                        @func refer
                        name defaults.rawmidi.card
                }
        }
        device {
                @func igetenv
                vars [
                        ALSA_RAWMIDI_DEVICE
                ]
                default {
                        @func refer
                        name defaults.rawmidi.device
                }
        }
        hint.description "Default raw MIDI device"
}

rawmidi.hw {
        @args [ CARD DEV SUBDEV ]
        @args.CARD {
                type string
                default {
                        @func getenv
                        vars [
                                ALSA_RAWMIDI_CARD
                                ALSA_CARD
                        ]
                        default {
                                @func refer
                                name defaults.rawmidi.card
                        }
                }
        }
        @args.DEV {
                type integer
                default {
                        @func igetenv
                        vars [
                                ALSA_RAWMIDI_DEVICE
                        ]
                        default {
                                @func refer
                                name defaults.rawmidi.device
                        }
                }
        }
        @args.SUBDEV {
                type integer
                default -1
        }
        type hw
        card $CARD
        device $DEV
        subdevice $SUBDEV
        hint {
                description "Direct rawmidi driver device"
                device $DEV
        }
}

rawmidi.virtual {
        @args [ MERGE ]
        @args.MERGE {
                type string
                default 1
        }
        type virtual
        merge $MERGE
}

#
#  Sequencer interface
#

seq.default {
        type hw
        hint.description "Default sequencer device"
}

seq.hw {
        type hw
}

#
#  HwDep interface
#

hwdep.default {
        type hw
        card {
                @func getenv
                vars [
                        ALSA_HWDEP_CARD
                        ALSA_CARD
                ]
                default {
                        @func refer
                        name defaults.hwdep.card
                }
        }
        device {
                @func igetenv
                vars [
                        ALSA_HWDEP_DEVICE
                ]
                default {
                        @func refer
                        name defaults.hwdep.device
                }
        }
        hint.description "Default hardware dependent device"
}

hwdep.hw {
        @args [ CARD DEV ]
        @args.CARD {
                type string
                default {
                        @func getenv
                        vars [
                                ALSA_HWDEP_CARD
                                ALSA_CARD
                        ]
                        default {
                                @func refer
                                name defaults.hwdep.card
                        }
                }
        }
        @args.DEV {
                type integer
                default {
                        @func igetenv
                        vars [
                                ALSA_HWDEP_DEVICE
                        ]
                        default {
                                @func refer
                                name defaults.hwdep.device
                        }
                }
        }
        type hw
        card $CARD
        device $DEV
        hint {
                description "Direct hardware dependent device"
                device $DEV
        }
}

#
#  Timer interface
#

timer_query.default {
        type hw
}

timer_query.hw {
        type hw
}

timer.default {
        type hw
        class {
                @func refer
                name defaults.timer.class
        }
        sclass {
                @func refer
                name defaults.timer.sclass
        }
        card {
                @func refer
                name defaults.timer.card
        }
        device {
                @func refer
                name defaults.timer.device
        }
        subdevice {
                @func refer
                name defaults.timer.subdevice
        }
        hint.description "Default timer device"
}

timer.hw {
        @args [ CLASS SCLASS CARD DEV SUBDEV ]
        @args.CLASS {
                type integer
                default {
                        @func refer
                        name defaults.timer.class
                }
        }
        @args.SCLASS {
                type integer
                default {
                        @func refer
                        name defaults.timer.sclass
                }
        }
        @args.CARD {
                type string
                default {
                        @func refer
                        name defaults.timer.card
                }
        }
        @args.DEV {
                type integer
                default {
                        @func refer
                        name defaults.timer.device
                }
        }
        @args.SUBDEV {
                type integer
                default {
                        @func refer
                        name defaults.timer.subdevice
                }
        }
        type hw
        class $CLASS
        sclass $SCLASS
        card $CARD
        device $DEV
        subdevice $SUBDEV
        hint {
                description "Direct timer device"
                device $DEV
        }
}

All I can get out of this command is a recording with a whole bunch of clicks. Every other recording I’ve tried either didn’t work (because the instructions referred to “mic_channel0” or “hw:2,0” which aren’t valid on my device)

arecord --device=hw:1,0 -r 16000 -c 1 -f S16_LE test.wav
REALLY LOUD RECORDING

I should mention that I have already tried reinstalling many of the required packages (MALOS and Matrix Kernels) as well as trying to compile them by source, but neither produced anything new to use. I’ve also tried many of the examples in their respective packages (even tried HAL but it said I should use ASLA) node test_micarray.js , python3 recordFile.py , python3 pyaudio_test.py and all of them resulted in some error.

The new 2.50 rhasspy version resolved all the issue so it was version of software what was issue.

1 Like

@Chozandrias,

From your arecord -l output, it seems your MATRIX device is indeed registered as hw:2,0, card 2, device 0 on ALSA. What happens if you try to record and playback with the following commands?

arecord recording.wav -f S16_LE -r 16000 -d 5
aplay recording.wav

I just tested this exact procedure with the latest Raspberry OS and it worked for me. Let me know how it goes.

Best,
Samreen

I record 5 seconds of silence unfortunately. I’m sure this has something to do with how I mangled my RPi to get Zigbee to work. I’m just hoping I don’t have to start all over to get Zigbee and my microphone working.

Is it possible that my microphone is muted or the volume is 0? I tried using amixer to turn on capture and turn up the gain on anything that looked like a “Mic”, but it didn’t seem to effect the recording. I did have a USB microphone plugged in so my card number changed, but shouldn’t I be able to record with this command if the device is set up properly?

➜  misc git:(master) ✗ arecord recording.wav --device=hw:3,0 -f S16_LE -r 16000 -d 6
arecord: main:828: audio open error: Device or resource busy
➜  misc git:(master) ✗ arecord -l                                                   
**** List of CAPTURE Hardware Devices ****
card 1: Dummy [Dummy], device 0: Dummy PCM [Dummy PCM]
  Subdevices: 7/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 3: MATRIXIOSOUND [MATRIXIO-SOUND], device 0: matrixio.mic.0 snd-soc-dummy-dai-0 []
  Subdevices: 0/1
  Subdevice #0: subdevice #0

@Chozandrias,

Yes, theoretically, it should work with the command you used given the configuration shown.

The “Device or resource busy” error usually occurs when another program is using the MATRIX mics which I assume is not the case for you?

Could you send me a screenshot of the output from

alsamixer

Are you able to access the MATRIXIO-SOUND card gain using Fn + F6 to select it?

Best,
Samreen


➜  misc git:(master) ✗ arecord -l                                                   
**** List of CAPTURE Hardware Devices ****
card 1: Dummy [Dummy], device 0: Dummy PCM [Dummy PCM]
  Subdevices: 7/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 2: MATRIXIOSOUND [MATRIXIO-SOUND], device 0: matrixio.mic.0 snd-soc-dummy-dai-0 []
  Subdevices: 0/1
  Subdevice #0: subdevice #0
➜  misc git:(master) ✗ arecord recording.wav --device=hw:2,0 -f S16_LE -r 16000 -d 6
arecord: main:828: audio open error: Device or resource busy

I did notice that I had pulse-audio installed and it was the default initially so I removed it (and restarted) to get the above screenshots. Still unable to record directly to this device.
Should I try something like this? https://zedic.com/raspberry-pi-usb-webcam-built-in-microphone/

Also, here are all my running processes. Not sure how to single out the ones using the sound device: https://gist.github.com/chozandrias76/4bcdd50612e5a63f2493e0a538bfe0aa

In the meantime, I’m going to flash my other SD card and start from scratch…

After formatting, and reinstalling my basics https://github.com/home-assistant/supervised-installer and https://matrix-io.github.io/matrix-documentation/matrix-creator/resources/microphone/ it became immediately apparent that one of the docker containers was locking the audio. I was able to shut down all the docker containers and then record audio as expected. I tried this process on the other SD card with all of the other setup on it, but it still wasn’t able to access so something got messed up with the OS at some point.

Getting back into Home Assistant, I tried to see if I could set up the Ada voice assistant, but it would never recognize my device. I assumed that it did since one of the docker images locks me out from using it, but I didn’t even consider that I might need to do some extra steps to get a docker image to use sound cards https://stackoverflow.com/questions/28985714/run-apps-using-audio-in-a-docker-container#28985715

Since Home Assistant doesn’t recommend their generic Linux install method anymore anyways,I decided I’m going to try starting over with their image instead of Raspbian and see if I can get all my Matrix hardware working on their Distro. Looks like it runs on Alpine Linux which doesn’t look remotely compatible with the install instructions under Raspbian for the Matrix Creator :unamused:

Since my issue is outside of the scope of @onebigunicorn’s issue, and I was able to record audio in the basic sense, I’ll continue working away and check back in my own thread(s) if needed.

Thanks for all the help @Samreen !

1 Like