125 lines
4.6 KiB
Bash
Executable File
125 lines
4.6 KiB
Bash
Executable File
#!/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.
|
|
##########################################################################
|
|
|
|
# Scanning the I2C bus for know addresses
|
|
is_1a=$(i2cdetect -y 1 0x1a 0x1a | grep -E "(1a|UU)" | awk '{print $2}') # ReSpeaker 2-mic / WM8960 based
|
|
if [ "${is_1a}" == "1a" ] || [ "${is_1a}" == "UU" ] ; then
|
|
WM8960=found
|
|
echo "WM8960 based 2-mic $WM8960"
|
|
fi
|
|
|
|
is_35=$(i2cdetect -y 1 0x35 0x35 | grep -E "(35|UU)" | awk '{print $2}') # ReSpeaker 4-mic squared
|
|
if [ "${is_35}" == "35" ] || [ "${is_35}" == "UU" ] ; then
|
|
RESPEAKER4=found
|
|
echo "ReSpeaker 4-mic $RESPEAKER4"
|
|
fi
|
|
|
|
is_3b=$(i2cdetect -y 1 0x3b 0x3b | grep -E "(3b|UU)" | awk '{print $2}') # ReSpeaker 4-mic lineair / 6-mic
|
|
if [ "${is_3b}" == "3b" ] || [ "${is_3b}" == "UU" ] ; then
|
|
RESPEAKER6=found
|
|
echo "ReSpeaker 6-mic $RESPEAKER6"
|
|
fi
|
|
|
|
is_4b=$(i2cdetect -y 1 0x4b 0x4b | grep -E "(4b|UU)" | awk '{print $2}') # Adafruit
|
|
if [ "${is_4b}" == "4b" ] || [ "${is_4b}" == "UU" ] ; then
|
|
ADAFRUIT=found
|
|
echo "Adafruit $ADAFRUIT"
|
|
fi
|
|
|
|
is_2f=$(i2cdetect -y 1 0x2c 0x2c | grep -E "(2c|UU)" | awk '{print $2}') # TAS5806
|
|
if [ "${is_2c}" == "2c" ] || [ "${is_2c}" == "UU" ] ; then
|
|
XMOS=found
|
|
echo "XMOS Chip $XMOS"
|
|
fi
|
|
|
|
is_2f=$(i2cdetect -y 1 0x2f 0x2f | grep -E "(2f|UU)" | awk '{print $2}') # TAS5806
|
|
if [ "${is_2f}" == "2f" ] || [ "${is_2f}" == "UU" ] ; then
|
|
TAS5806=found
|
|
echo "Texas Instruments 5806 $TAS5806"
|
|
fi
|
|
|
|
is_04=$(i2cdetect -y -a 1 0x04 0x04 | grep -E "(04|UU)" | awk '{print $2}') # SJ201 Led Ring
|
|
if [ "${is_04}" == "04" ] || [ "${is_04}" == "UU" ] ; then
|
|
SJ201LED=found
|
|
echo "Mark2-Devkit SJ201 Leds $SJ201LED"
|
|
fi
|
|
|
|
# Configure found devices
|
|
if [ "$WM8960" == "found" ] && [ "$RESPEAKER4" != "found" ] ; then
|
|
echo "Installing and configuring WM8960 based 2-mic HAT"
|
|
dtoverlay wm8960-soundcard
|
|
echo "Configuring board"
|
|
amixer -c "wm8960soundcard" cset numid=1 34,34
|
|
amixer -c "wm8960soundcard" cset numid=26 3
|
|
amixer -c "wm8960soundcard" cset numid=27 4
|
|
amixer -c "wm8960soundcard" cset numid=30 5
|
|
amixer -c "wm8960soundcard" cset numid=32 5
|
|
amixer -c "wm8960soundcard" cset numid=33 5
|
|
amixer -c "wm8960soundcard" cset numid=34 25
|
|
amixer -c "wm8960soundcard" cset numid=35 on
|
|
amixer -c "wm8960soundcard" cset numid=9 3
|
|
amixer -c "wm8960soundcard" cset numid=8 3
|
|
amixer -c "wm8960soundcard" cset numid=49 on
|
|
amixer -c "wm8960soundcard" cset numid=51 on
|
|
amixer -c "wm8960soundcard" cset numid=37 0
|
|
amixer -c "wm8960soundcard" cset numid=38 0
|
|
amixer -c "wm8960soundcard" cset numid=39 5
|
|
amixer -c "wm8960soundcard" cset numid=48 on
|
|
amixer -c "wm8960soundcard" cset numid=50 on
|
|
amixer -c "wm8960soundcard" cset numid=54 on
|
|
amixer -c "wm8960soundcard" cset numid=16 5
|
|
amixer -c "wm8960soundcard" cset numid=15 4
|
|
echo "Configuring button"
|
|
dtoverlay wm8960-button-overlay
|
|
fi
|
|
|
|
if [ "${RESPEAKER6}" == "found" ] && [ "${RESPEAKER4}" != "found" ] ; then
|
|
echo "Installing and configuring ReSpeaker 4-mic HAT"
|
|
dtoverlay seeed-4mic-voicecard
|
|
fi
|
|
|
|
if [ "{$RESPEAKER6}" == "found" ] && [ "${RESPEAKER4}" == "found" ] ; then
|
|
echo "Installing and configuring ReSpeaker 6mic HAT"
|
|
dtoverlay seeed-8mic-voicecard
|
|
fi
|
|
|
|
if [ "$ADAFRUIT" ] ; then
|
|
echo "Installing and configuring Adafruit"
|
|
/usr/sbin/i2cset -y 1 0x4b 30 # Set maximum volume to 30
|
|
fi
|
|
|
|
if [ "$TAS5806" ] ; then
|
|
echo "Installing and configuring SJ-201 HAT"
|
|
# Initializing XMOS xvf3510
|
|
dtoverlay xvf3510
|
|
xvf3510-flash --direct "/usr/lib/firmware/xvf3510/app_xvf3510_int_spi_boot_v4_1_0.bin"
|
|
# Initializing Texas Instruments 5806 Amplifier
|
|
/usr/bin/tas5806-init
|
|
if [ "$SJ201LED" ] ; then
|
|
echo "Found revision-6 SJ-201 board"
|
|
# Initializing and resetting LED ring
|
|
/usr/bin/sj201-reset-led
|
|
# Reset FAN to low speed
|
|
/usr/sbin/i2cset -a -y 1 0x04 101 30 i
|
|
else
|
|
echo "Assume revision-10 SJ-201 board"
|
|
dtoverlay sj201-rev10-pwm-fan-overlay
|
|
fi
|
|
echo "Configuring buttons"
|
|
dtoverlay sj201-buttons-overlay
|
|
fi
|