850308db3e
Co-authored-by: Jörg Thalheim <joerg@thalheim.io>
228 lines
8 KiB
Ruby
228 lines
8 KiB
Ruby
#!/usr/bin/env nix-shell
|
|
#! nix-shell -p ruby alsaUtils -i ruby
|
|
|
|
# This script resets the sound state to the minimum required for it to work.
|
|
# It will set the control that pulseaudio uses to 20%, everything else to the
|
|
# level expected for it to work. The rest will be off or to their default.
|
|
|
|
require "open3"
|
|
require "shellwords"
|
|
|
|
def run(*cmd)
|
|
puts " $ #{cmd.shelljoin}"
|
|
system(*cmd)
|
|
end
|
|
|
|
FINAL_STATE = {
|
|
## Simple mixer control 'Headphone',0
|
|
## Capabilities: pvolume
|
|
## Playback channels: Front Left - Front Right
|
|
## Limits: Playback 0 - 3
|
|
## Mono:
|
|
## Front Left: Playback 0 [0%] [-48.00dB]
|
|
## Front Right: Playback 0 [0%] [-48.00dB]
|
|
"Headphone,0" => "20%",
|
|
## Simple mixer control 'Headphone Mixer',0
|
|
## Capabilities: volume
|
|
## Playback channels: Front Left - Front Right
|
|
## Capture channels: Front Left - Front Right
|
|
## Limits: 0 - 11
|
|
## Front Left: 0 [0%] [-12.00dB]
|
|
## Front Right: 0 [0%] [-12.00dB]
|
|
"Headphone Mixer,0" => "0",
|
|
## Simple mixer control 'Mic Boost',0
|
|
## Capabilities: pswitch pswitch-joined
|
|
## Playback channels: Mono
|
|
## Mono: Playback [on]
|
|
"Mic Boost,0" => "off",
|
|
## Simple mixer control 'Playback Polarity',0
|
|
## Capabilities: enum
|
|
## Items: 'Normal' 'R Invert' 'L Invert' 'L + R Invert'
|
|
## Item0: 'Normal'
|
|
"Playback Polarity,0" => "L Invert",
|
|
## Simple mixer control 'Capture Polarity',0
|
|
## Capabilities: enum
|
|
## Items: 'Normal' 'Invert'
|
|
## Item0: 'Normal'
|
|
"Capture Polarity,0" => "Normal",
|
|
## Simple mixer control 'ADC',0
|
|
## Capabilities: cvolume cvolume-joined
|
|
## Capture channels: Mono
|
|
## Limits: Capture 0 - 192
|
|
## Mono: Capture 0 [0%] [-99999.99dB]
|
|
"ADC,0" => "0",
|
|
## Simple mixer control 'ADC Double Fs',0
|
|
## Capabilities: pswitch pswitch-joined
|
|
## Playback channels: Mono
|
|
## Mono: Playback [off]
|
|
"ADC Double Fs,0" => "off",
|
|
## Simple mixer control 'ADC PGA Gain',0
|
|
## Capabilities: volume volume-joined
|
|
## Playback channels: Mono
|
|
## Capture channels: Mono
|
|
## Limits: 0 - 10
|
|
## Mono: 0 [0%]
|
|
"ADC PGA Gain,0" => "0",
|
|
## Simple mixer control 'ADC Soft Ramp',0
|
|
## Capabilities: pswitch pswitch-joined
|
|
## Playback channels: Mono
|
|
## Mono: Playback [on]
|
|
"ADC Soft Ramp,0" => "on",
|
|
## Simple mixer control 'ALC',0
|
|
## Capabilities: cswitch cswitch-joined
|
|
## Capture channels: Mono
|
|
## Mono: Capture [off]
|
|
"ALC,0" => "nocap",
|
|
## Simple mixer control 'ALC Capture Attack Time',0
|
|
## Capabilities: volume volume-joined
|
|
## Playback channels: Mono
|
|
## Capture channels: Mono
|
|
## Limits: 0 - 10
|
|
## Mono: 0 [0%]
|
|
"ALC Capture Attack Time,0" => "0",
|
|
## Simple mixer control 'ALC Capture Decay Time',0
|
|
## Capabilities: volume volume-joined
|
|
## Playback channels: Mono
|
|
## Capture channels: Mono
|
|
## Limits: 0 - 10
|
|
## Mono: 0 [0%]
|
|
"ALC Capture Decay Time,0" => "0",
|
|
## Simple mixer control 'ALC Capture Hold Time',0
|
|
## Capabilities: volume volume-joined
|
|
## Playback channels: Mono
|
|
## Capture channels: Mono
|
|
## Limits: 0 - 10
|
|
## Mono: 0 [0%]
|
|
"ALC Capture Hold Time,0" => "0",
|
|
## Simple mixer control 'ALC Capture Max',0
|
|
## Capabilities: volume volume-joined
|
|
## Playback channels: Mono
|
|
## Capture channels: Mono
|
|
## Limits: 0 - 28
|
|
## Mono: 0 [0%] [-6.50dB]
|
|
"ALC Capture Max,0" => "0",
|
|
## Simple mixer control 'ALC Capture Min',0
|
|
## Capabilities: volume volume-joined
|
|
## Playback channels: Mono
|
|
## Capture channels: Mono
|
|
## Limits: 0 - 28
|
|
## Mono: 0 [0%] [-12.00dB]
|
|
"ALC Capture Min,0" => "0",
|
|
## Simple mixer control 'ALC Capture Noise Gate',0
|
|
## Capabilities: pswitch pswitch-joined
|
|
## Playback channels: Mono
|
|
## Mono: Playback [off]
|
|
"ALC Capture Noise Gate,0" => "off",
|
|
## Simple mixer control 'ALC Capture Noise Gate Threshold',0
|
|
## Capabilities: volume volume-joined
|
|
## Playback channels: Mono
|
|
## Capture channels: Mono
|
|
## Limits: 0 - 31
|
|
## Mono: 0 [0%]
|
|
"ALC Capture Noise Gate Threshold,0" => "0",
|
|
## Simple mixer control 'ALC Capture Noise Gate Type',0
|
|
## Capabilities: enum
|
|
## Items: 'Constant PGA Gain' 'Mute ADC Output'
|
|
## Item0: 'Constant PGA Gain'
|
|
"ALC Capture Noise Gate Type,0" => "Constant PGA Gain",
|
|
## Simple mixer control 'ALC Capture Target',0
|
|
## Capabilities: volume volume-joined
|
|
## Playback channels: Mono
|
|
## Capture channels: Mono
|
|
## Limits: 0 - 10
|
|
## Mono: 0 [0%] [-16.50dB]
|
|
"ALC Capture Target,0" => "0",
|
|
## Simple mixer control 'DAC',0
|
|
## Capabilities: pvolume
|
|
## Playback channels: Front Left - Front Right
|
|
## Limits: Playback 0 - 192
|
|
## Mono:
|
|
## Front Left: Playback 0 [0%] [-99999.99dB]
|
|
## Front Right: Playback 0 [0%] [-99999.99dB]
|
|
"DAC,0" => "100%",
|
|
## Simple mixer control 'DAC Double Fs',0
|
|
## Capabilities: pswitch pswitch-joined
|
|
## Playback channels: Mono
|
|
## Mono: Playback [off]
|
|
"DAC Double Fs,0" => "off",
|
|
## Simple mixer control 'DAC Mono Mix',0
|
|
## Capabilities: pswitch pswitch-joined
|
|
## Playback channels: Mono
|
|
## Mono: Playback [off]
|
|
"DAC Mono Mix,0" => "off",
|
|
## Simple mixer control 'DAC Notch Filter',0
|
|
## Capabilities: pswitch pswitch-joined
|
|
## Playback channels: Mono
|
|
## Mono: Playback [off]
|
|
"DAC Notch Filter,0" => "off",
|
|
## Simple mixer control 'DAC Soft Ramp',0
|
|
## Capabilities: pswitch pswitch-joined
|
|
## Playback channels: Mono
|
|
## Mono: Playback [on]
|
|
"DAC Soft Ramp,0" => "on",
|
|
## Simple mixer control 'DAC Soft Ramp Rate',0
|
|
## Capabilities: volume volume-joined
|
|
## Playback channels: Mono
|
|
## Capture channels: Mono
|
|
## Limits: 0 - 4
|
|
## Mono: 0 [0%]
|
|
"DAC Soft Ramp Rate,0" => "0",
|
|
## Simple mixer control 'DAC Source Mux',0
|
|
## Capabilities: enum
|
|
## Items: 'LDATA TO LDAC, RDATA TO RDAC' 'LDATA TO LDAC, LDATA TO RDAC' 'RDATA TO LDAC, RDATA TO RDAC' 'RDATA TO LDAC, LDATA TO RDAC'
|
|
## Item0: 'LDATA TO LDAC, RDATA TO RDAC'
|
|
"DAC Source Mux,0" => "LDATA TO LDAC, RDATA TO RDAC",
|
|
## Simple mixer control 'DAC Stereo Enhancement',0
|
|
## Capabilities: volume volume-joined
|
|
## Playback channels: Mono
|
|
## Capture channels: Mono
|
|
## Limits: 0 - 7
|
|
## Mono: 0 [0%]
|
|
"DAC Stereo Enhancement,0" => "0",
|
|
## Simple mixer control 'Differential Mux',0
|
|
## Capabilities: enum
|
|
## Items: 'lin1-rin1' 'lin2-rin2' 'lin1-rin1 with 20db Boost' 'lin2-rin2 with 20db Boost'
|
|
## Item0: 'lin1-rin1'
|
|
"Differential Mux,0" => "lin1-rin1",
|
|
## Simple mixer control 'Digital Mic Mux',0
|
|
## Capabilities: enum
|
|
## Items: 'dmic disable' 'dmic data at high level' 'dmic data at low level'
|
|
## Item0: 'dmic disable'
|
|
"Digital Mic Mux,0" => "dmic disable",
|
|
## Simple mixer control 'Left Headphone Mixer LLIN',0
|
|
## Capabilities: pswitch pswitch-joined
|
|
## Playback channels: Mono
|
|
## Mono: Playback [off]
|
|
"Left Headphone Mixer LLIN,0" => "off",
|
|
## Simple mixer control 'Left Headphone Mixer Left DAC',0
|
|
## Capabilities: pswitch pswitch-joined
|
|
## Playback channels: Mono
|
|
## Mono: Playback [off]
|
|
"Left Headphone Mixer Left DAC,0" => "on",
|
|
## Simple mixer control 'Left Headphone Mux',0
|
|
## Capabilities: enum
|
|
## Items: 'lin1-rin1' 'lin2-rin2' 'lin-rin with Boost' 'lin-rin with Boost and PGA'
|
|
## Item0: 'lin1-rin1'
|
|
"Left Headphone Mux,0" => "lin1-rin1",
|
|
## Simple mixer control 'Right Headphone Mixer RLIN',0
|
|
## Capabilities: pswitch pswitch-joined
|
|
## Playback channels: Mono
|
|
## Mono: Playback [off]
|
|
"Right Headphone Mixer RLIN,0" => "off",
|
|
## Simple mixer control 'Right Headphone Mixer Right DAC',0
|
|
## Capabilities: pswitch pswitch-joined
|
|
## Playback channels: Mono
|
|
## Mono: Playback [off]
|
|
"Right Headphone Mixer Right DAC,0" => "on",
|
|
## Simple mixer control 'Right Headphone Mux',0
|
|
## Capabilities: enum
|
|
## Items: 'lin1-rin1' 'lin2-rin2' 'lin-rin with Boost' 'lin-rin with Boost and PGA'
|
|
## Item0: 'lin1-rin1'
|
|
"Right Headphone Mux,0" => "lin1-rin1",
|
|
}
|
|
|
|
FINAL_STATE.each do |name, value|
|
|
run("amixer", "-c0", "sset", name, value.to_s)
|
|
raise "Error setting #{name} to #{value}" unless $?.success?
|
|
end
|