482 lines
7.3 KiB
Bash
Executable file
482 lines
7.3 KiB
Bash
Executable file
#!/bin/bash
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius)
|
|
|
|
. /etc/profile
|
|
|
|
### Set a custom device so we don't clobber it.
|
|
set-audio set "CUSTOM (UNMANAGED)"
|
|
set-audio esset "DAC"
|
|
|
|
cat <<EOF >/storage/.config/asound.conf
|
|
pcm.!default {
|
|
type plug
|
|
slave.pcm "dmixer"
|
|
}
|
|
|
|
pcm.dmixer {
|
|
type dmix
|
|
ipc_key 1024
|
|
slave {
|
|
pcm "hw:0,0"
|
|
period_time 0
|
|
period_size 1024
|
|
buffer_size 4096
|
|
rate 44100
|
|
}
|
|
bindings {
|
|
0 0
|
|
1 1
|
|
}
|
|
}
|
|
EOF
|
|
|
|
if [ ! -e "/storage/.config/asound.state" ]
|
|
then
|
|
cat <<EOF >/storage/.config/asound.state
|
|
state.rockchipes8316c {
|
|
control.1 {
|
|
iface CARD
|
|
name 'Headphones Jack'
|
|
value true
|
|
comment {
|
|
access read
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.2 {
|
|
iface MIXER
|
|
name 'Headphone Playback Volume'
|
|
value.0 2
|
|
value.1 2
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 2
|
|
range '0 - 3'
|
|
dbmin -4800
|
|
dbmax 0
|
|
dbvalue.0 -1200
|
|
dbvalue.1 -1200
|
|
}
|
|
}
|
|
control.3 {
|
|
iface MIXER
|
|
name 'Headphone Mixer Volume'
|
|
value.0 10
|
|
value.1 10
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 2
|
|
range '0 - 11'
|
|
dbmin -1200
|
|
dbmax 0
|
|
dbvalue.0 -150
|
|
dbvalue.1 -150
|
|
}
|
|
}
|
|
control.4 {
|
|
iface MIXER
|
|
name 'Playback Polarity'
|
|
value Normal
|
|
comment {
|
|
access 'read write'
|
|
type ENUMERATED
|
|
count 1
|
|
item.0 Normal
|
|
item.1 'R Invert'
|
|
item.2 'L Invert'
|
|
item.3 'L + R Invert'
|
|
}
|
|
}
|
|
control.5 {
|
|
iface MIXER
|
|
name 'DAC Playback Volume'
|
|
value.0 165
|
|
value.1 165
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 2
|
|
range '0 - 192'
|
|
dbmin -9999999
|
|
dbmax 0
|
|
dbvalue.0 -1350
|
|
dbvalue.1 -1350
|
|
}
|
|
}
|
|
control.6 {
|
|
iface MIXER
|
|
name 'DAC Soft Ramp Switch'
|
|
value false
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.7 {
|
|
iface MIXER
|
|
name 'DAC Soft Ramp Rate'
|
|
value 4
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 1
|
|
range '0 - 4'
|
|
}
|
|
}
|
|
control.8 {
|
|
iface MIXER
|
|
name 'DAC Notch Filter Switch'
|
|
value false
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.9 {
|
|
iface MIXER
|
|
name 'DAC Double Fs Switch'
|
|
value false
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.10 {
|
|
iface MIXER
|
|
name 'DAC Stereo Enhancement'
|
|
value 7
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 1
|
|
range '0 - 7'
|
|
}
|
|
}
|
|
control.11 {
|
|
iface MIXER
|
|
name 'DAC Mono Mix Switch'
|
|
value false
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.12 {
|
|
iface MIXER
|
|
name 'Capture Polarity'
|
|
value Normal
|
|
comment {
|
|
access 'read write'
|
|
type ENUMERATED
|
|
count 1
|
|
item.0 Normal
|
|
item.1 Invert
|
|
}
|
|
}
|
|
control.13 {
|
|
iface MIXER
|
|
name 'Mic Boost Switch'
|
|
value true
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.14 {
|
|
iface MIXER
|
|
name 'ADC Capture Volume'
|
|
value 192
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 1
|
|
range '0 - 192'
|
|
dbmin -9999999
|
|
dbmax 0
|
|
dbvalue.0 0
|
|
}
|
|
}
|
|
control.15 {
|
|
iface MIXER
|
|
name 'ADC PGA Gain Volume'
|
|
value 8
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 1
|
|
range '0 - 10'
|
|
dbmin -350
|
|
dbmax 2400
|
|
dbvalue.0 1800
|
|
}
|
|
}
|
|
control.16 {
|
|
iface MIXER
|
|
name 'ADC Soft Ramp Switch'
|
|
value true
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.17 {
|
|
iface MIXER
|
|
name 'ADC Double Fs Switch'
|
|
value true
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.18 {
|
|
iface MIXER
|
|
name 'ALC Capture Switch'
|
|
value false
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.19 {
|
|
iface MIXER
|
|
name 'ALC Capture Max Volume'
|
|
value 28
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 1
|
|
range '0 - 28'
|
|
dbmin -650
|
|
dbmax 3550
|
|
dbvalue.0 3550
|
|
}
|
|
}
|
|
control.20 {
|
|
iface MIXER
|
|
name 'ALC Capture Min Volume'
|
|
value 0
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 1
|
|
range '0 - 28'
|
|
dbmin -1200
|
|
dbmax 3000
|
|
dbvalue.0 -1200
|
|
}
|
|
}
|
|
control.21 {
|
|
iface MIXER
|
|
name 'ALC Capture Target Volume'
|
|
value 11
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 1
|
|
range '0 - 11'
|
|
dbmin -1650
|
|
dbmax -150
|
|
dbvalue.0 -150
|
|
}
|
|
}
|
|
control.22 {
|
|
iface MIXER
|
|
name 'ALC Capture Hold Time'
|
|
value 0
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 1
|
|
range '0 - 10'
|
|
}
|
|
}
|
|
control.23 {
|
|
iface MIXER
|
|
name 'ALC Capture Decay Time'
|
|
value 3
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 1
|
|
range '0 - 10'
|
|
}
|
|
}
|
|
control.24 {
|
|
iface MIXER
|
|
name 'ALC Capture Attack Time'
|
|
value 2
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 1
|
|
range '0 - 10'
|
|
}
|
|
}
|
|
control.25 {
|
|
iface MIXER
|
|
name 'ALC Capture Noise Gate Switch'
|
|
value true
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.26 {
|
|
iface MIXER
|
|
name 'ALC Capture Noise Gate Threshold'
|
|
value 31
|
|
comment {
|
|
access 'read write'
|
|
type INTEGER
|
|
count 1
|
|
range '0 - 31'
|
|
}
|
|
}
|
|
control.27 {
|
|
iface MIXER
|
|
name 'ALC Capture Noise Gate Type'
|
|
value 'Constant PGA Gain'
|
|
comment {
|
|
access 'read write'
|
|
type ENUMERATED
|
|
count 1
|
|
item.0 'Constant PGA Gain'
|
|
item.1 'Mute ADC Output'
|
|
}
|
|
}
|
|
control.28 {
|
|
iface MIXER
|
|
name 'Speaker Switch'
|
|
value true
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.29 {
|
|
iface MIXER
|
|
name 'Differential Mux'
|
|
value lin1-rin1
|
|
comment {
|
|
access 'read write'
|
|
type ENUMERATED
|
|
count 1
|
|
item.0 lin1-rin1
|
|
item.1 lin2-rin2
|
|
item.2 'lin1-rin1 with 20db Boost'
|
|
item.3 'lin2-rin2 with 20db Boost'
|
|
}
|
|
}
|
|
control.30 {
|
|
iface MIXER
|
|
name 'Digital Mic Mux'
|
|
value 'dmic disable'
|
|
comment {
|
|
access 'read write'
|
|
type ENUMERATED
|
|
count 1
|
|
item.0 'dmic disable'
|
|
item.1 'dmic data at high level'
|
|
item.2 'dmic data at low level'
|
|
}
|
|
}
|
|
control.31 {
|
|
iface MIXER
|
|
name 'DAC Source Mux'
|
|
value 'LDATA TO LDAC, RDATA TO RDAC'
|
|
comment {
|
|
access 'read write'
|
|
type ENUMERATED
|
|
count 1
|
|
item.0 'LDATA TO LDAC, RDATA TO RDAC'
|
|
item.1 'LDATA TO LDAC, LDATA TO RDAC'
|
|
item.2 'RDATA TO LDAC, RDATA TO RDAC'
|
|
item.3 'RDATA TO LDAC, LDATA TO RDAC'
|
|
}
|
|
}
|
|
control.32 {
|
|
iface MIXER
|
|
name 'Left Headphone Mux'
|
|
value lin1-rin1
|
|
comment {
|
|
access 'read write'
|
|
type ENUMERATED
|
|
count 1
|
|
item.0 lin1-rin1
|
|
item.1 lin2-rin2
|
|
item.2 'lin-rin with Boost'
|
|
item.3 'lin-rin with Boost and PGA'
|
|
}
|
|
}
|
|
control.33 {
|
|
iface MIXER
|
|
name 'Right Headphone Mux'
|
|
value lin1-rin1
|
|
comment {
|
|
access 'read write'
|
|
type ENUMERATED
|
|
count 1
|
|
item.0 lin1-rin1
|
|
item.1 lin2-rin2
|
|
item.2 'lin-rin with Boost'
|
|
item.3 'lin-rin with Boost and PGA'
|
|
}
|
|
}
|
|
control.34 {
|
|
iface MIXER
|
|
name 'Left Headphone Mixer LLIN Switch'
|
|
value true
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.35 {
|
|
iface MIXER
|
|
name 'Left Headphone Mixer Left DAC Switch'
|
|
value true
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.36 {
|
|
iface MIXER
|
|
name 'Right Headphone Mixer RLIN Switch'
|
|
value true
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
control.37 {
|
|
iface MIXER
|
|
name 'Right Headphone Mixer Right DAC Switch'
|
|
value true
|
|
comment {
|
|
access 'read write'
|
|
type BOOLEAN
|
|
count 1
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
alsactl restore -f /storage/.config/asound.state
|
|
fi
|