configures audio input now
This commit is contained in:
+54
-98
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Altered from raspi-config tool below
|
# Altered from raspi-config tool below
|
||||||
# https://github.com/RPi-Distro/birdnetpi-config
|
# https://github.com/RPi-Distro/birdnet-pi-config
|
||||||
#
|
#
|
||||||
# See LICENSE file for copyright and license details
|
# See LICENSE file for copyright and license details
|
||||||
# Copyright (c) 2012 Alex Bradbury <asb@asbradbury.org>
|
# Copyright (c) 2012 Alex Bradbury <asb@asbradbury.org>
|
||||||
@@ -217,7 +217,10 @@ do_configure_keyboard() {
|
|||||||
|
|
||||||
do_change_locale() {
|
do_change_locale() {
|
||||||
dpkg-reconfigure locales
|
dpkg-reconfigure locales
|
||||||
|
if [ $? -eq 0 ];then
|
||||||
|
return 0
|
||||||
ASK_TO_REBOOT=2
|
ASK_TO_REBOOT=2
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
do_change_timezone() {
|
do_change_timezone() {
|
||||||
@@ -365,7 +368,12 @@ do_config_zram() {
|
|||||||
fi
|
fi
|
||||||
new_size=$(whiptail --inputbox "How much memory (G) should the zRAM swap partition have? Choose 1G, 2G, or 4G - 4G recommended" \
|
new_size=$(whiptail --inputbox "How much memory (G) should the zRAM swap partition have? Choose 1G, 2G, or 4G - 4G recommended" \
|
||||||
19 70 -- "$size" 3>&1 1>&2 2>&3)
|
19 70 -- "$size" 3>&1 1>&2 2>&3)
|
||||||
ASK_TO_REBOOT=1
|
if [ $? -eq 0 ];then
|
||||||
|
return 0
|
||||||
|
ASK_TO_REBOOT=2
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
do_install_zram() {
|
do_install_zram() {
|
||||||
@@ -395,6 +403,12 @@ ExecStop=/sbin/swapoff /dev/zram0
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable zram
|
systemctl enable zram
|
||||||
|
if [ $? -eq 0 ];then
|
||||||
|
return 0
|
||||||
|
ASK_TO_REBOOT=2
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
do_zram_menu() {
|
do_zram_menu() {
|
||||||
@@ -409,10 +423,9 @@ do_zram_menu() {
|
|||||||
systemctl disable --now zram
|
systemctl disable --now zram
|
||||||
fi
|
fi
|
||||||
STATUS=disabled
|
STATUS=disabled
|
||||||
else
|
|
||||||
return $RET
|
|
||||||
fi
|
fi
|
||||||
whiptail --msgbox "ZRAM swapping is $STATUS" 20 60 1
|
whiptail --msgbox "ZRAM swapping is $STATUS" 20 60 1
|
||||||
|
return $RET
|
||||||
}
|
}
|
||||||
|
|
||||||
do_vnc() {
|
do_vnc() {
|
||||||
@@ -451,92 +464,20 @@ do_vnc() {
|
|||||||
do_audio() {
|
do_audio() {
|
||||||
if is_pulseaudio ; then
|
if is_pulseaudio ; then
|
||||||
oIFS="$IFS"
|
oIFS="$IFS"
|
||||||
if [ "$INTERACTIVE" = True ]; then
|
list=$(sudo -u $SUDO_USER XDG_RUNTIME_DIR=/run/user/$SUDO_UID pacmd list-sources | grep -B1 -e 'alsa.card_name' -e 'name.*input' | grep -A4 index | sed -e s/*//g | sed s/^[' '\\t]*//g | grep -e index -e card_name | sed s/'index: '//g | sed s/'alsa.card_name = '//g | sed s/\"//g | tr '\n' '\/')
|
||||||
list=$(sudo -u $SUDO_USER XDG_RUNTIME_DIR=/run/user/$SUDO_UID pacmd list-sinks | grep -e index -e alsa.name | sed s/*//g | sed s/^[' '\\t]*//g | sed s/'index: '//g | sed s/'alsa.name = '//g | sed s/'bcm2835 '//g | sed s/\"//g | tr '\n' '/')
|
if ! [ -z "$list" ] ; then
|
||||||
if ! [ -z "$list" ] ; then
|
IFS="/"
|
||||||
IFS="/"
|
AUDIO_IN=$(whiptail --menu "Choose the audio input" 20 60 10 ${list} 3>&1 1>&2 2>&3)
|
||||||
AUDIO_OUT=$(whiptail --menu "Choose the audio output" 20 60 10 ${list} 3>&1 1>&2 2>&3)
|
return 0
|
||||||
else
|
|
||||||
whiptail --msgbox "No internal audio devices found" 20 60 1
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
AUDIO_OUT=$1
|
whiptail --msgbox "No internal audio devices found" 20 60 1
|
||||||
true
|
return 1
|
||||||
fi
|
fi
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
sudo -u $SUDO_USER XDG_RUNTIME_DIR=/run/user/$SUDO_UID pactl set-default-sink $AUDIO_OUT
|
sudo -u $SUDO_USER XDG_RUNTIME_DIR=/run/user/$SUDO_UID pactl set-default-source "$AUDIO_IN"
|
||||||
fi
|
fi
|
||||||
IFS=$oIFS
|
IFS=$oIFS
|
||||||
else
|
|
||||||
if aplay -l | grep -q "bcm2835 ALSA"; then
|
|
||||||
if [ "$INTERACTIVE" = True ]; then
|
|
||||||
AUDIO_OUT=$(whiptail --menu "Choose the audio output" 20 60 10 \
|
|
||||||
"0" "Auto" \
|
|
||||||
"1" "Force 3.5mm ('headphone') jack" \
|
|
||||||
"2" "Force HDMI" \
|
|
||||||
3>&1 1>&2 2>&3)
|
|
||||||
else
|
|
||||||
AUDIO_OUT=$1
|
|
||||||
fi
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
amixer cset numid=3 "$AUDIO_OUT"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
ASPATH=$(getent passwd $USER | cut -d : -f 6)/.asoundrc
|
|
||||||
if [ "$INTERACTIVE" = True ]; then
|
|
||||||
CARD0=$(LC_ALL=C aplay -l | grep bcm2835 | grep "card 0" | cut -d [ -f 3 | cut -d ] -f 1 | cut -d ' ' -f 2-)
|
|
||||||
CARD1=$(LC_ALL=C aplay -l | grep bcm2835 | grep "card 1" | cut -d [ -f 3 | cut -d ] -f 1 | cut -d ' ' -f 2-)
|
|
||||||
CARD2=$(LC_ALL=C aplay -l | grep bcm2835 | grep "card 2" | cut -d [ -f 3 | cut -d ] -f 1 | cut -d ' ' -f 2-)
|
|
||||||
if ! [ -z "$CARD2" ]; then
|
|
||||||
AUDIO_OUT=$(whiptail --menu "Choose the audio output" 20 60 10 \
|
|
||||||
"0" "$CARD0" \
|
|
||||||
"1" "$CARD1" \
|
|
||||||
"2" "$CARD2" \
|
|
||||||
3>&1 1>&2 2>&3)
|
|
||||||
elif ! [ -z "$CARD1" ]; then
|
|
||||||
AUDIO_OUT=$(whiptail --menu "Choose the audio output" 20 60 10 \
|
|
||||||
"0" "$CARD0" \
|
|
||||||
"1" "$CARD1" \
|
|
||||||
3>&1 1>&2 2>&3)
|
|
||||||
elif ! [ -z "$CARD0" ]; then
|
|
||||||
AUDIO_OUT=$(whiptail --menu "Choose the audio output" 20 60 10 \
|
|
||||||
"0" "$CARD0" \
|
|
||||||
3>&1 1>&2 2>&3)
|
|
||||||
else
|
|
||||||
whiptail --msgbox "No internal audio devices found" 20 60 1
|
|
||||||
false
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
AUDIO_OUT=$1
|
|
||||||
fi
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
cat << EOF > $ASPATH
|
|
||||||
pcm.!default {
|
|
||||||
type asym
|
|
||||||
playback.pcm {
|
|
||||||
type plug
|
|
||||||
slave.pcm "output"
|
|
||||||
}
|
|
||||||
capture.pcm {
|
|
||||||
type plug
|
|
||||||
slave.pcm "input"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pcm.output {
|
|
||||||
type hw
|
|
||||||
card $AUDIO_OUT
|
|
||||||
}
|
|
||||||
|
|
||||||
ctl.!default {
|
|
||||||
type hw
|
|
||||||
card $AUDIO_OUT
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
list_wlan_interfaces() {
|
list_wlan_interfaces() {
|
||||||
@@ -653,6 +594,16 @@ do_install_birdnet() {
|
|||||||
ASK_TO_REBOOT=1
|
ASK_TO_REBOOT=1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
insist_on_reboot() {
|
||||||
|
if [ $ASK_TO_REBOOT -eq 2 ]; then
|
||||||
|
whiptail --yesno "You really should reboot. Do that now?" 20 60 2
|
||||||
|
if [ $? -eq 0 ]; then # yes
|
||||||
|
sync
|
||||||
|
reboot
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
do_finish() {
|
do_finish() {
|
||||||
if [ $ASK_TO_REBOOT -eq 1 ]; then
|
if [ $ASK_TO_REBOOT -eq 1 ]; then
|
||||||
whiptail --yesno "Would you like to reboot now?" 20 60 2
|
whiptail --yesno "Would you like to reboot now?" 20 60 2
|
||||||
@@ -661,13 +612,18 @@ do_finish() {
|
|||||||
reboot
|
reboot
|
||||||
fi
|
fi
|
||||||
elif [ $ASK_TO_REBOOT -eq 2 ]; then
|
elif [ $ASK_TO_REBOOT -eq 2 ]; then
|
||||||
whiptail --yesno "You must reboot. Do that now?" 20 60 2
|
whiptail --yesno "You really should reboot. Do that now?" 20 60 2
|
||||||
|
if [ $? -eq 0 ]; then # yes
|
||||||
|
sync
|
||||||
|
reboot
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# Everything else needs to be run as root
|
# Everything else needs to be run as root
|
||||||
if [ $(id -u) -ne 0 ]; then
|
if [ $(id -u) -ne 0 ]; then
|
||||||
printf "Script must be run as root. Try 'sudo birdnetpi-config'\n"
|
printf "Script must be run as root. Try 'sudo birdnet-pi-config'\n"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -679,7 +635,7 @@ fi
|
|||||||
|
|
||||||
do_system_menu() {
|
do_system_menu() {
|
||||||
if is_pi ; then
|
if is_pi ; then
|
||||||
FUN=$(whiptail --title "BirdNET-Pi Software Configuration Tool (birdnetpi-config)" --menu "System Options" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT --cancel-button Back --ok-button Select \
|
FUN=$(whiptail --title "BirdNET-Pi Software Configuration Tool (birdnet-pi-config)" --menu "System Options" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT --cancel-button Back --ok-button Select \
|
||||||
"Password" "Change password for the '$USER' user" \
|
"Password" "Change password for the '$USER' user" \
|
||||||
"Audio" "Select audio device you'd like BirdNET-Pi to use" \
|
"Audio" "Select audio device you'd like BirdNET-Pi to use" \
|
||||||
"Wireless LAN" "Enter SSID and passphrase" \
|
"Wireless LAN" "Enter SSID and passphrase" \
|
||||||
@@ -708,7 +664,7 @@ do_system_menu() {
|
|||||||
|
|
||||||
do_interface_menu() {
|
do_interface_menu() {
|
||||||
if is_pi ; then
|
if is_pi ; then
|
||||||
FUN=$(whiptail --title "BirdNET-Pi Software Configuration Tool (birdnetpi-config)" --menu "Interfacing Options" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT --cancel-button Back --ok-button Select \
|
FUN=$(whiptail --title "BirdNET-Pi Software Configuration Tool (birdnet-pi-config)" --menu "Interfacing Options" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT --cancel-button Back --ok-button Select \
|
||||||
"SSH" "Enable/disable remote command line access using SSH" \
|
"SSH" "Enable/disable remote command line access using SSH" \
|
||||||
"VNC" "Enable/disable graphical remote access using RealVNC" \
|
"VNC" "Enable/disable graphical remote access using RealVNC" \
|
||||||
3>&1 1>&2 2>&3)
|
3>&1 1>&2 2>&3)
|
||||||
@@ -728,7 +684,7 @@ do_interface_menu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
do_internationalisation_menu() {
|
do_internationalisation_menu() {
|
||||||
FUN=$(whiptail --title "BirdNET-Pi Software Configuration Tool (birdnetpi-config)" --menu "Localisation Options" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT --cancel-button Back --ok-button Select \
|
FUN=$(whiptail --title "BirdNET-Pi Software Configuration Tool (birdnet-pi-config)" --menu "Localisation Options" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT --cancel-button Back --ok-button Select \
|
||||||
"Locale" "Configure language and regional settings" \
|
"Locale" "Configure language and regional settings" \
|
||||||
"Timezone" "Configure time zone" \
|
"Timezone" "Configure time zone" \
|
||||||
"Keyboard" "Set keyboard layout to match your keyboard" \
|
"Keyboard" "Set keyboard layout to match your keyboard" \
|
||||||
@@ -739,8 +695,8 @@ do_internationalisation_menu() {
|
|||||||
return 0
|
return 0
|
||||||
elif [ $RET -eq 0 ]; then
|
elif [ $RET -eq 0 ]; then
|
||||||
case "$FUN" in
|
case "$FUN" in
|
||||||
Locale*) do_change_locale; do_finish ;;
|
Locale*) do_change_locale; insist_on_reboot;;
|
||||||
Time*) do_change_timezone; do_finish ;;
|
Time*) do_change_timezone; insist_on_reboot ;;
|
||||||
Key*) do_configure_keyboard ;;
|
Key*) do_configure_keyboard ;;
|
||||||
WLAN*) do_wifi_country ;;
|
WLAN*) do_wifi_country ;;
|
||||||
*) whiptail --msgbox "Programmer error: unrecognized option" 20 60 1 ;;
|
*) whiptail --msgbox "Programmer error: unrecognized option" 20 60 1 ;;
|
||||||
@@ -754,15 +710,15 @@ if [ "$INTERACTIVE" = True ]; then
|
|||||||
[ -e $CONFIG ] || touch $CONFIG
|
[ -e $CONFIG ] || touch $CONFIG
|
||||||
calc_wt_size
|
calc_wt_size
|
||||||
while [ "$USER" = "root" ] || [ -z "$USER" ]; do
|
while [ "$USER" = "root" ] || [ -z "$USER" ]; do
|
||||||
if ! USER=$(whiptail --inputbox "birdnetpi-config could not determine the default user.\\n\\nWhat user should these settings apply to?" 20 60 pi 3>&1 1>&2 2>&3); then
|
if ! USER=$(whiptail --inputbox "birdnet-pi-config could not determine the default user.\\n\\nWhat user should these settings apply to?" 20 60 pi 3>&1 1>&2 2>&3); then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
while true; do
|
while true; do
|
||||||
if is_pi ; then
|
if is_pi ; then
|
||||||
FUN=$(whiptail --title "BirdNET-Pi Software Configuration Tool (birdnetpi-config)" --backtitle "$(cat /proc/device-tree/model)" --menu "Setup Options" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT --cancel-button Finish --ok-button Select \
|
FUN=$(whiptail --title "BirdNET-Pi Software Configuration Tool (birdnet-pi-config)" --backtitle "$(cat /proc/device-tree/model)" --menu "Setup Options" $WT_HEIGHT $WT_WIDTH $WT_MENU_HEIGHT --cancel-button Finish --ok-button Select \
|
||||||
"Localisation Options" "Configure language and regional settings" \
|
"Step 1" "Configure language and regional settings" \
|
||||||
"Install BirdNET-PI" "Install BirdNET-Pi" \
|
"Step 2" "Install BirdNET-Pi" \
|
||||||
"System Options" "Configure system settings" \
|
"System Options" "Configure system settings" \
|
||||||
3>&1 1>&2 2>&3)
|
3>&1 1>&2 2>&3)
|
||||||
else
|
else
|
||||||
@@ -773,9 +729,9 @@ if [ "$INTERACTIVE" = True ]; then
|
|||||||
do_finish
|
do_finish
|
||||||
elif [ $RET -eq 0 ]; then
|
elif [ $RET -eq 0 ]; then
|
||||||
case "$FUN" in
|
case "$FUN" in
|
||||||
Localisation*) do_internationalisation_menu ;;
|
*1) do_internationalisation_menu ;;
|
||||||
Install*) do_install_birdnet;;
|
*2) do_install_birdnet;;
|
||||||
System*) do_system_menu ;;
|
Sys*) do_system_menu ;;
|
||||||
*) whiptail --msgbox "Programmer error: unrecognized option" 20 60 1 ;;
|
*) whiptail --msgbox "Programmer error: unrecognized option" 20 60 1 ;;
|
||||||
esac || whiptail --msgbox "There was an error running option $FUN" 20 60 1
|
esac || whiptail --msgbox "There was an error running option $FUN" 20 60 1
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user