diff --git a/pulseaudio/README.md b/pulseaudio/README.md
new file mode 100644
index 0000000..160987c
--- /dev/null
+++ b/pulseaudio/README.md
@@ -0,0 +1,223 @@
+# PulseAudio Configuration for seeed-voicecard
+
+Following this guide if you want to use your seeed-voicecard as a default source/sink of pulseaudio.
+
+### ReSpeaker 4 Mic Array
+
+
+1. Download pulseaudio
+```
+sudo apt install pulseaudio
+pulseaudio --k
+```
+
+2. First, you need to write [a profile for pulse](https://www.freedesktop.org/wiki/Software/PulseAudio/Backends/ALSA/Profiles/)
+```
+cd seeed-voicecard
+cd pulseaudio
+cd pulse_config_4mic
+sudo cp seeed-voicecard.conf /usr/share/pulseaudio/alsa-mixer/profile-sets/
+```
+
+3. Edit `udev rules`
+
+ During the system start, when the card "seeed4micvoicec" is detected, the PULSE_PROFILE_SET variable will be set in the udev database, and PulseAudio will be forced to use `seeed-voicecard.conf`.
+
+ ```
+ # have a look at /lib/udev/rules.d/90-pulseaudio.rules
+ sudo vim /lib/udev/rules.d/90-pulseaudio.rules
+ # add the following lines at about line 87(behind the setting for some laptops and before the line GOTO="pulseaudio_end")
+ # Seeed Voicecard
+ ATTR{id}=="seeed4micvoicec",ATTR{number}=="1",ENV{PULSE_PROFILE_SET}="seeed-voicecard.conf"
+ ```
+ ![](./udev_rules_4mic.png)
+
+ The value of `ATTR{number}` can be found with:
+
+ ```
+ udevadm info -a -p /sys/class/sound/card0/
+ # or udevadm info -a -p /sys/class/sound/card1/
+ ```
+
+ For example, in Raspberry Pi, we can find `ATTR{id}=="seeed4micvoicec"` and `ATTR{number}=="1"` with command `udevadm info -a -p /sys/class/sound/card1/`:
+
+ ```
+ pi@raspberrypi:~ $ udevadm info -a -p /sys/class/sound/card1/
+
+ Udevadm info starts with the device specified by the devpath and then
+ walks up the chain of parent devices. It prints for every device
+ found, all possible attributes in the udev rules key format.
+ A rule to match, can be composed by the attributes of the device
+ and the attributes from one single parent device.
+
+ looking at device '/devices/platform/soc/soc:sound/sound/card1':
+ KERNEL=="card1"
+ SUBSYSTEM=="sound"
+ DRIVER==""
+ ATTR{id}=="seeed4micvoicec"
+ ATTR{number}=="1"
+
+ looking at parent device '/devices/platform/soc/soc:sound':
+ KERNELS=="soc:sound"
+ SUBSYSTEMS=="platform"
+ DRIVERS=="seeed-voicecard"
+ ATTRS{driver_override}=="(null)"
+
+ looking at parent device '/devices/platform/soc':
+ KERNELS=="soc"
+ SUBSYSTEMS=="platform"
+ DRIVERS==""
+ ATTRS{driver_override}=="(null)"
+
+ looking at parent device '/devices/platform':
+ KERNELS=="platform"
+ SUBSYSTEMS==""
+ DRIVERS==""
+ ```
+
+4. config `default.pa` and `daemon.conf`
+```
+sudo cp default.pa /etc/pulse/
+sudo cp daemon.conf /etc/pulse/
+```
+
+5. reboot raspberry pi and check
+```
+sudo reboot
+pulseaudio --start # start pulse at first
+pactl info # check the setting
+
+Server String: /run/user/1000/pulse/native
+Library Protocol Version: 32
+Server Protocol Version: 32
+Is Local: yes
+Client Index: 18
+Tile Size: 65496
+User Name: pi
+Host Name: raspberrypi
+Server Name: pulseaudio
+Server Version: 10.0
+Default Sample Specification: s16le 4ch 16000Hz
+Default Channel Map: front-left,front-center,front-right,rear-center
+Default Sink: alsa_output.platform-soc_audio.analog-stereo
+Default Source: alsa_input.platform-soc_sound.seeed-source
+Cookie: 3b12:70b3
+```
+
+### 6-Mics Circular Array Kit and 4-Mics Linear Array
+
+
+1. Download pulseaudio
+```
+sudo apt install pulseaudio
+pulseaudio --k
+```
+
+2. First, you need to write [a profile for pulse](https://www.freedesktop.org/wiki/Software/PulseAudio/Backends/ALSA/Profiles/)
+```
+cd seeed-voicecard
+cd pulseaudio
+cd pulse_config_6mic
+sudo cp seeed-voicecard.conf /usr/share/pulseaudio/alsa-mixer/profile-sets/
+```
+
+3. Edit `udev rules`
+
+ During the system start, when the card "seeed8micvoicec" is detected, the PULSE_PROFILE_SET variable will be set in the udev database, and PulseAudio will be forced to use `seeed-voicecard.conf`.
+
+ ```
+ # have a look at /lib/udev/rules.d/90-pulseaudio.rules
+ sudo vim /lib/udev/rules.d/90-pulseaudio.rules
+ # add the following lines at about line 87(behind the setting for some laptops and before the line GOTO="pulseaudio_end")
+ # Seeed Voicecard
+ ATTR{id}=="seeed8micvoicec",ATTR{number}=="1",ENV{PULSE_PROFILE_SET}="seeed-voicecard.conf"
+ ```
+ ![](./udev_rules_6mic.png)
+
+ The value of `ATTR{number}` can be found with:
+
+ ```
+ udevadm info -a -p /sys/class/sound/card0/
+ # or udevadm info -a -p /sys/class/sound/card1/
+ ```
+
+ For example, in Raspberry Pi, we can find `ATTR{id}=="seeed8micvoicec"` and `ATTR{number}=="1"` with command `udevadm info -a -p /sys/class/sound/card1/`:
+
+ ```
+ pi@raspberrypi:~ $ udevadm info -a -p /sys/class/sound/card1/
+
+ Udevadm info starts with the device specified by the devpath and then
+ walks up the chain of parent devices. It prints for every device
+ found, all possible attributes in the udev rules key format.
+ A rule to match, can be composed by the attributes of the device
+ and the attributes from one single parent device.
+
+ looking at device '/devices/platform/soc/soc:sound/sound/card1':
+ KERNEL=="card1"
+ SUBSYSTEM=="sound"
+ DRIVER==""
+ ATTR{id}=="seeed8micvoicec"
+ ATTR{number}=="1"
+
+ looking at parent device '/devices/platform/soc/soc:sound':
+ KERNELS=="soc:sound"
+ SUBSYSTEMS=="platform"
+ DRIVERS=="seeed-voicecard"
+ ATTRS{driver_override}=="(null)"
+
+ looking at parent device '/devices/platform/soc':
+ KERNELS=="soc"
+ SUBSYSTEMS=="platform"
+ DRIVERS==""
+ ATTRS{driver_override}=="(null)"
+
+ looking at parent device '/devices/platform':
+ KERNELS=="platform"
+ SUBSYSTEMS==""
+ DRIVERS==""
+ ```
+
+4. config `default.pa` and `daemon.conf`
+```
+sudo cp default.pa /etc/pulse/
+sudo cp daemon.conf /etc/pulse/
+```
+
+5. reboot raspberry pi and check
+```
+sudo reboot
+pulseaudio --start # start pulse at first
+pactl info # check the setting
+
+# The output should be like this
+# You could see the default sink is seeed-2ch and default source is seeed-8ch
+pi@raspberrypi:~ $ pactl info
+Server String: /run/user/1000/pulse/native
+Library Protocol Version: 32
+Server Protocol Version: 32
+Is Local: yes
+Client Index: 6
+Tile Size: 65496
+User Name: pi
+Host Name: raspberrypi
+Server Name: pulseaudio
+Server Version: 10.0
+Default Sample Specification: s32le 8ch 48000Hz
+Default Channel Map: front-left,front-left-of-center,front-center,front-right,front-right-of-center,rear-center,aux0,aux1
+Default Sink: alsa_output.platform-soc_sound.seeed-2ch
+Default Source: alsa_input.platform-soc_sound.seeed-8ch
+Cookie: 3523:e5af
+```
+
+### FAQ
+
+1. Default Sink/Source not right
+
+ Make sure there is no any other daemon or using the audio device. Then check profile and udev rules.
+
+ `pacmd list-sinks` and `pacmd list-sources` can be used to show the avaiable sinks/sources, after pulseaudio is started.
+
+2. Can't start PulseAudio
+
+ Check `default.pa` and `daemon.conf`
+
\ No newline at end of file
diff --git a/pulseaudio/pulse_config_4mic/daemon.conf b/pulseaudio/pulse_config_4mic/daemon.conf
new file mode 100644
index 0000000..1fdec4c
--- /dev/null
+++ b/pulseaudio/pulse_config_4mic/daemon.conf
@@ -0,0 +1,87 @@
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# PulseAudio is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PulseAudio; if not, see .
+
+## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for
+## more information. Default values are commented out. Use either ; or # for
+## commenting.
+
+; daemonize = no
+; fail = yes
+; allow-module-loading = yes
+; allow-exit = yes
+; use-pid-file = yes
+; system-instance = no
+; local-server-type = user
+; enable-shm = yes
+; enable-memfd = yes
+; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
+; lock-memory = no
+; cpu-limit = no
+
+; high-priority = yes
+; nice-level = -11
+
+; realtime-scheduling = yes
+; realtime-priority = 5
+
+; exit-idle-time = 20
+; scache-idle-time = 20
+
+; dl-search-path = (depends on architecture)
+
+; load-default-script-file = yes
+; default-script-file = /etc/pulse/default.pa
+
+; log-target = auto
+; log-level = notice
+; log-meta = no
+; log-time = no
+; log-backtrace = 0
+
+; resample-method = speex-float-1
+; enable-remixing = yes
+; enable-lfe-remixing = no
+; lfe-crossover-freq = 0
+
+; flat-volumes = yes
+
+; rlimit-fsize = -1
+; rlimit-data = -1
+; rlimit-stack = -1
+; rlimit-core = -1
+; rlimit-as = -1
+; rlimit-rss = -1
+; rlimit-nproc = -1
+; rlimit-nofile = 256
+; rlimit-memlock = -1
+; rlimit-locks = -1
+; rlimit-sigpending = -1
+; rlimit-msgqueue = -1
+; rlimit-nice = 31
+; rlimit-rtprio = 9
+; rlimit-rttime = 200000
+
+default-sample-format = s16le
+default-sample-rate = 16000
+; alternate-sample-rate = 48000
+default-sample-channels = 4
+; default-channel-map = front-left,front-right
+
+; default-fragments = 4
+; default-fragment-size-msec = 25
+
+; enable-deferred-volume = yes
+; deferred-volume-safety-margin-usec = 8000
+; deferred-volume-extra-delay-usec = 0
diff --git a/pulseaudio/pulse_config_4mic/default.pa b/pulseaudio/pulse_config_4mic/default.pa
new file mode 100644
index 0000000..e2a355d
--- /dev/null
+++ b/pulseaudio/pulse_config_4mic/default.pa
@@ -0,0 +1,142 @@
+#!/usr/bin/pulseaudio -nF
+#
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# PulseAudio is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PulseAudio; if not, see .
+
+# This startup script is used only if PulseAudio is started per-user
+# (i.e. not in system mode)
+
+.fail
+
+### Automatically restore the volume of streams and devices
+load-module module-device-restore
+load-module module-stream-restore
+load-module module-card-restore
+
+### Automatically augment property information from .desktop files
+### stored in /usr/share/application
+load-module module-augment-properties
+
+### Should be after module-*-restore but before module-*-detect
+load-module module-switch-on-port-available
+
+### Load audio drivers statically
+### (it's probably better to not load these drivers manually, but instead
+### use module-udev-detect -- see below -- for doing this automatically)
+#load-module module-alsa-sink device="hw:1,0" channels=8 rate=48000 format=s32le
+#load-module module-alsa-source device="hw:1,0" channels=8 rate=48000 format=s32le
+#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
+#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
+#load-module module-null-sink
+#load-module module-pipe-sink
+
+### Automatically load driver modules depending on the hardware available
+.ifexists module-udev-detect.so
+load-module module-udev-detect
+#channels=8 rate=48000 format=s32le
+.else
+### Use the static hardware detection module (for systems that lack udev support)
+load-module module-detect
+.endif
+
+### Automatically connect sink and source if JACK server is present
+.ifexists module-jackdbus-detect.so
+.nofail
+load-module module-jackdbus-detect channels=2
+.fail
+.endif
+
+### Automatically load driver modules for Bluetooth hardware
+.ifexists module-bluetooth-policy.so
+load-module module-bluetooth-policy
+.endif
+
+.ifexists module-bluetooth-discover.so
+load-module module-bluetooth-discover
+.endif
+
+### Load several protocols
+.ifexists module-esound-protocol-unix.so
+load-module module-esound-protocol-unix
+.endif
+load-module module-native-protocol-unix
+
+### Network access (may be configured with paprefs, so leave this commented
+### here if you plan to use paprefs)
+#load-module module-esound-protocol-tcp
+#load-module module-native-protocol-tcp
+#load-module module-zeroconf-publish
+
+### Load the RTP receiver module (also configured via paprefs, see above)
+#load-module module-rtp-recv
+
+### Load the RTP sender module (also configured via paprefs, see above)
+#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
+#load-module module-rtp-send source=rtp.monitor
+
+### Load additional modules from GConf settings. This can be configured with the paprefs tool.
+### Please keep in mind that the modules configured by paprefs might conflict with manually
+### loaded modules.
+.ifexists module-gconf.so
+.nofail
+load-module module-gconf
+.fail
+.endif
+
+### Automatically restore the default sink/source when changed by the user
+### during runtime
+### NOTE: This should be loaded as early as possible so that subsequent modules
+### that look up the default sink/source get the right value
+load-module module-default-device-restore
+
+### Automatically move streams to the default sink if the sink they are
+### connected to dies, similar for sources
+load-module module-rescue-streams
+
+### Make sure we always have a sink around, even if it is a null sink.
+load-module module-always-sink
+
+### Honour intended role device property
+load-module module-intended-roles
+
+### Automatically suspend sinks/sources that become idle for too long
+load-module module-suspend-on-idle
+
+### If autoexit on idle is enabled we want to make sure we only quit
+### when no local session needs us anymore.
+.ifexists module-console-kit.so
+load-module module-console-kit
+.endif
+.ifexists module-systemd-login.so
+load-module module-systemd-login
+.endif
+
+### Enable positioned event sounds
+load-module module-position-event-sounds
+
+### Cork music/video streams when a phone stream is active
+load-module module-role-cork
+
+### Modules to allow autoloading of filters (such as echo cancellation)
+### on demand. module-filter-heuristics tries to determine what filters
+### make sense, and module-filter-apply does the heavy-lifting of
+### loading modules and rerouting streams.
+load-module module-filter-heuristics
+load-module module-filter-apply
+
+### Make some devices default
+#set-default-sink output
+#set-default-source input
+set-default-source alsa_input.platform-soc_sound.seeed-source
diff --git a/pulseaudio/pulse_config_4mic/seeed-voicecard.conf b/pulseaudio/pulse_config_4mic/seeed-voicecard.conf
new file mode 100644
index 0000000..aaca00b
--- /dev/null
+++ b/pulseaudio/pulse_config_4mic/seeed-voicecard.conf
@@ -0,0 +1,33 @@
+# /usr/share/pulseaudio/alsa-mixer/profile-sets/seeed-voicecard.conf
+
+[General]
+auto-profiles = no
+[Mapping seeed-source]
+device-strings = ac108
+channel-map = front-left,front-right,rear-left,rear-right
+exact-channels = false
+fallback = yes
+paths-input = seeed-source
+priority = 3
+direction = input
+[Mapping seeed-sink]
+device-strings = playback
+channel-map = front-left,front-right,rear-left,rear-right
+exact-channels = false
+fallback = yes
+paths-output = seeed-sink
+direction = output
+priority = 2
+[Profile output:seeed-sink+input:seeed-source]
+output-mappings = seeed-sink
+input-mappings = seeed-source
+priority = 100
+skip-probe = yes
+[Profile output:seeed-sink]
+output-mappings = seeed-sink
+priority = 4
+skip-probe = yes
+[Profile input:seeed-source]
+input-mappings = seeed-source
+priority = 5
+skip-probe = yes
diff --git a/pulseaudio/pulse_config_6mic/daemon.conf b/pulseaudio/pulse_config_6mic/daemon.conf
new file mode 100644
index 0000000..9d87aba
--- /dev/null
+++ b/pulseaudio/pulse_config_6mic/daemon.conf
@@ -0,0 +1,87 @@
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# PulseAudio is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PulseAudio; if not, see .
+
+## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for
+## more information. Default values are commented out. Use either ; or # for
+## commenting.
+
+; daemonize = no
+; fail = yes
+; allow-module-loading = yes
+; allow-exit = yes
+; use-pid-file = yes
+; system-instance = no
+; local-server-type = user
+; enable-shm = yes
+; enable-memfd = yes
+; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
+; lock-memory = no
+; cpu-limit = no
+
+; high-priority = yes
+; nice-level = -11
+
+; realtime-scheduling = yes
+; realtime-priority = 5
+
+; exit-idle-time = 20
+; scache-idle-time = 20
+
+; dl-search-path = (depends on architecture)
+
+; load-default-script-file = yes
+; default-script-file = /etc/pulse/default.pa
+
+; log-target = auto
+; log-level = notice
+; log-meta = no
+; log-time = no
+; log-backtrace = 0
+
+; resample-method = speex-float-1
+; enable-remixing = yes
+; enable-lfe-remixing = no
+; lfe-crossover-freq = 0
+
+; flat-volumes = yes
+
+; rlimit-fsize = -1
+; rlimit-data = -1
+; rlimit-stack = -1
+; rlimit-core = -1
+; rlimit-as = -1
+; rlimit-rss = -1
+; rlimit-nproc = -1
+; rlimit-nofile = 256
+; rlimit-memlock = -1
+; rlimit-locks = -1
+; rlimit-sigpending = -1
+; rlimit-msgqueue = -1
+; rlimit-nice = 31
+; rlimit-rtprio = 9
+; rlimit-rttime = 200000
+
+default-sample-format = s32le
+default-sample-rate = 48000
+; alternate-sample-rate = 48000
+default-sample-channels = 8
+; default-channel-map = front-left,front-right
+
+; default-fragments = 4
+; default-fragment-size-msec = 25
+
+; enable-deferred-volume = yes
+; deferred-volume-safety-margin-usec = 8000
+; deferred-volume-extra-delay-usec = 0
diff --git a/pulseaudio/pulse_config_6mic/default.pa b/pulseaudio/pulse_config_6mic/default.pa
new file mode 100644
index 0000000..aed78bd
--- /dev/null
+++ b/pulseaudio/pulse_config_6mic/default.pa
@@ -0,0 +1,143 @@
+#!/usr/bin/pulseaudio -nF
+#
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# PulseAudio is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PulseAudio; if not, see .
+
+# This startup script is used only if PulseAudio is started per-user
+# (i.e. not in system mode)
+
+.fail
+
+### Automatically restore the volume of streams and devices
+load-module module-device-restore
+load-module module-stream-restore
+load-module module-card-restore
+
+### Automatically augment property information from .desktop files
+### stored in /usr/share/application
+load-module module-augment-properties
+
+### Should be after module-*-restore but before module-*-detect
+load-module module-switch-on-port-available
+
+### Load audio drivers statically
+### (it's probably better to not load these drivers manually, but instead
+### use module-udev-detect -- see below -- for doing this automatically)
+#load-module module-alsa-sink device="hw:1,0" channels=8 rate=48000 format=s32le
+#load-module module-alsa-source device="hw:1,0" channels=8 rate=48000 format=s32le
+#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
+#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
+#load-module module-null-sink
+#load-module module-pipe-sink
+
+### Automatically load driver modules depending on the hardware available
+.ifexists module-udev-detect.so
+load-module module-udev-detect
+#channels=8 rate=48000 format=s32le
+.else
+### Use the static hardware detection module (for systems that lack udev support)
+load-module module-detect
+.endif
+
+### Automatically connect sink and source if JACK server is present
+.ifexists module-jackdbus-detect.so
+.nofail
+load-module module-jackdbus-detect channels=2
+.fail
+.endif
+
+### Automatically load driver modules for Bluetooth hardware
+.ifexists module-bluetooth-policy.so
+load-module module-bluetooth-policy
+.endif
+
+.ifexists module-bluetooth-discover.so
+load-module module-bluetooth-discover
+.endif
+
+### Load several protocols
+.ifexists module-esound-protocol-unix.so
+load-module module-esound-protocol-unix
+.endif
+load-module module-native-protocol-unix
+
+### Network access (may be configured with paprefs, so leave this commented
+### here if you plan to use paprefs)
+#load-module module-esound-protocol-tcp
+#load-module module-native-protocol-tcp
+#load-module module-zeroconf-publish
+
+### Load the RTP receiver module (also configured via paprefs, see above)
+#load-module module-rtp-recv
+
+### Load the RTP sender module (also configured via paprefs, see above)
+#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
+#load-module module-rtp-send source=rtp.monitor
+
+### Load additional modules from GConf settings. This can be configured with the paprefs tool.
+### Please keep in mind that the modules configured by paprefs might conflict with manually
+### loaded modules.
+.ifexists module-gconf.so
+.nofail
+load-module module-gconf
+.fail
+.endif
+
+### Automatically restore the default sink/source when changed by the user
+### during runtime
+### NOTE: This should be loaded as early as possible so that subsequent modules
+### that look up the default sink/source get the right value
+load-module module-default-device-restore
+
+### Automatically move streams to the default sink if the sink they are
+### connected to dies, similar for sources
+load-module module-rescue-streams
+
+### Make sure we always have a sink around, even if it is a null sink.
+load-module module-always-sink
+
+### Honour intended role device property
+load-module module-intended-roles
+
+### Automatically suspend sinks/sources that become idle for too long
+load-module module-suspend-on-idle
+
+### If autoexit on idle is enabled we want to make sure we only quit
+### when no local session needs us anymore.
+.ifexists module-console-kit.so
+load-module module-console-kit
+.endif
+.ifexists module-systemd-login.so
+load-module module-systemd-login
+.endif
+
+### Enable positioned event sounds
+load-module module-position-event-sounds
+
+### Cork music/video streams when a phone stream is active
+load-module module-role-cork
+
+### Modules to allow autoloading of filters (such as echo cancellation)
+### on demand. module-filter-heuristics tries to determine what filters
+### make sense, and module-filter-apply does the heavy-lifting of
+### loading modules and rerouting streams.
+load-module module-filter-heuristics
+load-module module-filter-apply
+
+### Make some devices default
+#set-default-sink output
+#set-default-source input
+set-default-source alsa_input.platform-soc_sound.seeed-8ch
+set-default-sink alsa_output.platform-soc_sound.seeed-2ch
diff --git a/pulseaudio/pulse_config_6mic/seeed-voicecard.conf b/pulseaudio/pulse_config_6mic/seeed-voicecard.conf
new file mode 100644
index 0000000..5712a67
--- /dev/null
+++ b/pulseaudio/pulse_config_6mic/seeed-voicecard.conf
@@ -0,0 +1,34 @@
+# /usr/share/pulseaudio/alsa-mixer/profile-sets/seeed-voiced.conf
+
+[General]
+auto-profiles = no
+[Mapping seeed-8ch]
+device-strings = hw:1,0
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+exact-channels = false
+fallback = yes
+paths-input = seeed-8ch
+priority = 3
+direction = input
+[Mapping seeed-2ch]
+device-strings = hw:1,0
+channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
+exact-channels = false
+exact-channels = false
+fallback = yes
+paths-output = seeed-2ch
+direction = output
+priority = 2
+[Profile output:seeed-2ch+input:seeed-8ch]
+output-mappings = seeed-2ch
+input-mappings = seeed-8ch
+priority = 100
+skip-probe = yes
+[Profile output:seeed-2ch]
+output-mappings = seeed-2ch
+priority = 4
+skip-probe = yes
+[Profile input:seeed-8ch]
+input-mappings = seeed-8ch
+priority = 5
+skip-probe = yes
\ No newline at end of file
diff --git a/pulseaudio/udev_rules_4mic.png b/pulseaudio/udev_rules_4mic.png
new file mode 100644
index 0000000..dd585ec
Binary files /dev/null and b/pulseaudio/udev_rules_4mic.png differ
diff --git a/pulseaudio/udev_rules_6mic.png b/pulseaudio/udev_rules_6mic.png
new file mode 100644
index 0000000..ec2d81f
Binary files /dev/null and b/pulseaudio/udev_rules_6mic.png differ