#!/bin/bash ########################################################################## # ovos-i2csound # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ########################################################################## # Set default configurations ASOUND_STATE=/var/lib/alsa/default-asound.state PULSE_SYSTEM=/etc/pulse/pulseaudio-system.pa PULSE_DAEMON=/etc/pulse/pulseaudio-daemon.conf # Set known hat overlay variables RPI_HATS="seeed-2mic-voicecard seeed-4mic-voicecard seeed-8mic-voicecard" # Scanning the I2C bus for know addresses is_1a=$(i2cdetect -y 1 0x1a 0x1a | egrep "(1a|UU)" | awk '{print $2}') # ReSpeaker 2-mic / WM8960 if [ $is_1a == "1a" ] || [ $is_1a == "UU" ] ; then RESPEAKER2=found fi is_35=$(i2cdetect -y 1 0x35 0x35 | egrep "(35|UU)" | awk '{print $2}') # ReSpeaker 4-mic squared if [ $is_35 == "35" ] || [ $is_35 == "UU" ] ; then RESPEAKER4=found fi is_3b=$(i2cdetect -y 1 0x3b 0x3b | egrep "(3b|UU)" | awk '{print $2}') # ReSpeaker 4-mic lineair / 6-mic if [ $is_3b == "3b" ] || [ $is_3b == "UU" ] ; then RESPEAKER6=found fi is_4b=$(i2cdetect -y 1 0x4b 0x4b | egrep "(4b|UU)" | awk '{print $2}') # Adafruit if [ $is_4b == "4b" ] || [ $is_4b == "UU" ] ; then ADAFRUIT=found fi is_2f=$(i2cdetect -y 1 0x2f 0x2f | egrep "(2f|UU)" | awk '{print $2}') # TAS5806 if [ $is_2f == "2f" ] || [ $is_2f == "UU" ] ; then TAS5806=found fi is_04=$(i2cdetect -y -a 1 0x04 0x04 | egrep "(04|UU)" | awk '{print $2}') # SJ201 Led Ring if [ $is_04 == "04" ] || [ $is_04 == "UU" ] ; then SJ201LED=found fi # Remove old configurations if [ -f /var/lib/alsa/asound.state ] ; then rm /var/lib/alsa/asound.state fi if [ -f /etc/ovos_asound.state ] ; then rm /etc/ovos_asound.state fi if [ -f /etc/pulse/system.pa ] ; then rm /etc/pulse/system.pa fi if [ -f /etc/pulse/daemon.conf ] ; then rm /etc/pulse/daemon.conf fi if [ $RESPEAKER2 == "found" ] && [ $RESPEAKER4 != "found" ] ; then echo "Installing and configuring ReSpeaker 2-mic" modprobe snd-soc-wm8960 OVERLAY=seeed-2mic-voicecard ASOUND_STATE=/etc/voicecard/wm8960_asound.state fi if [ $RESPEAKER6 == "found" ] && [ $RESPEAKER4 != "found" ] ; then echo "Installing and configuring ReSpeaker 4-mic" modprobe snd-soc-seeed-voicecard modprobe snd-soc-ac108 OVERLAY=seeed-4mic-voicecard ASOUND_STATE=/etc/voicecard/ac108_asound.state PULSE_SYSTEM=/etc/pulse/seeed-voicecard-4mic-default.pa PULSE_DAEMON=/etc/pulse/seeed-voicecard-4mic-daemon.conf fi if [ $RESPEAKER6 == "found" ] && [ $RESPEAKER4 == "found" ] ; then echo "Installing and configuring ReSpeaker 6mic" modprobe snd-soc-seeed-voicecard modprobe snd-soc-ac108 OVERLAY=seeed-8mic-voicecard ASOUND_STATE=/etc/voicecard/ac108_6mic.state PULSE_SYSTEM=/etc/pulse/seeed-voicecard-8mic-default.pa PULSE_DAEMON=/etc/pulse/seeed-voicecard-8mic-daemon.conf fi if [ $ADAFRUIT == "found" ] ; then echo "Installing and configuring Adafruit" /usr/sbin/i2cset -y 1 0x4b 30 # Set maximum volume to 30 fi if [ $TAS5860 == "found" ] && [ $SJ201LED == "found" ]; then echo "Installing and configuring SJ201" # Initializing XMOS xvf3510 /usr/sbin/xvf3510-start # Initializing Texas Instruments 5806 Amplifier /usr/bin/tas5806-init # Initializing and resetting LED ring /usr/bin/sj201-reset-led PULSE_SYSTEM=/etc/pulse/mycroft-sj201-default.pa PULSE_DAEMON=/etc/pulse/mycroft-sj201-daemon.conf fi # Load overlay if [ "$OVERLAY" ]; then echo Loading $OVERLAY ... # Make sure the driver loads correctly dtoverlay $OVERLAY || true fi # Install soundstate echo "create asound status file" ln -s $ASOUND_STATE /etc/ovos_asound.state # Install pulseaudio files echo "create pulse system file" ln -s $PULSE_SYSTEM /etc/pulse/system.pa echo "create pulse daemon file" ln -s $PULSE_DAEMON /etc/pulse/daemon.conf # Restore sound levels alsactl -E HOME=/run/alsa -f /etc/ovos_asound.state restore