#!/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 </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 cat </storage/.config/asound.state state.rockchipes8316c { control.1 { iface CARD name 'Headphones Jack' value false comment { access read type BOOLEAN count 1 } } control.2 { iface MIXER name 'Headphone Playback Volume' value.0 3 value.1 3 comment { access 'read write' type INTEGER count 2 range '0 - 3' dbmin -4800 dbmax 0 dbvalue.0 0 dbvalue.1 0 } } control.3 { iface MIXER name 'Headphone Mixer Volume' value.0 11 value.1 11 comment { access 'read write' type INTEGER count 2 range '0 - 11' dbmin -1200 dbmax 0 dbvalue.0 0 dbvalue.1 0 } } control.4 { iface MIXER name 'Playback Polarity' value 'R Invert' 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 144 value.1 144 comment { access 'read write' type INTEGER count 2 range '0 - 192' dbmin -9999999 dbmax 0 dbvalue.0 -2400 dbvalue.1 -2400 } } 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 7 comment { access 'read write' type INTEGER count 1 range '0 - 10' dbmin -350 dbmax 2400 dbvalue.0 1600 } } 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 10 comment { access 'read write' type INTEGER count 1 range '0 - 10' 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 } } } state.hdmisound { control.1 { iface PCM name 'Playback Channel Map' value.0 0 value.1 0 value.2 0 value.3 0 value.4 0 value.5 0 value.6 0 value.7 0 comment { access read type INTEGER count 8 range '0 - 36' } } control.2 { iface PCM name 'IEC958 Playback Mask' value ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 comment { access read type IEC958 count 1 } } control.3 { iface PCM name 'IEC958 Playback Default' value '0400000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access 'read write' type IEC958 count 1 } } control.4 { iface PCM name ELD value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access 'read volatile' type BYTES count 128 } } } EOF alsactl restore -f /storage/.config/asound.state