Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove PS3 Eye support #133

Open
StuartIanNaylor opened this issue Mar 26, 2020 · 3 comments
Open

Remove PS3 Eye support #133

StuartIanNaylor opened this issue Mar 26, 2020 · 3 comments

Comments

@StuartIanNaylor
Copy link

Until a fix is found for the PS3 Eye its probably best not to recommend it.
Doubt it though as this has a history over a decade long.
alsactl init uses a generic usbmixer rules file and the ps3 eye was a very specific device for the ps3.
https://www.systutorials.com/docs/linux/man/7-alsactl_init/

Both Udev & alsactl init get some of the control and info registers wrong.
You will often see in the Journal lines such as

kernel: usb 1-1.1.1: 3:1: cannot get min/max values for control 2 (id 3)

as alsactl -d init get things wrong with a default generic usb-mixer rule.
Also the read register of current bit rate is obviously wrong and seems to be pointing at some dynamic value that is highly likely to have nothing to do with current sample rate.

These errors go back a decade and the internet is littered with them but I seem to be unable to get a single fix.
Its very likely a rule could be defined and included in /usr/share/alsa/init/00main but exactly what I don't know.

Alsa detects enough to get generic sampling working but has never completely configured the Sony implementation.
https://jim.sh/svn/jim/devl/playstation/ps3/eye/test/eye.c
https://www.systutorials.com/docs/linux/man/7-alsactl_init/

pi@raspberrypi:~ $ alsactl -d init 1
alsactl: sysfs_init:43: sysfs_path='/sys'
alsactl: new_root_dir:1276: new_root_dir '/usr/share/alsa/init/00main' '/usr/share/alsa/init'
alsactl: parse:1665: start of file '/usr/share/alsa/init/00main'
alsactl: parse:1725: read (5) 'CONFIG{sysfs_device}="/class/sound/card$cardinfo{card}/device"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CONFIG{sysfs_device}'
alsactl: get_key:933: value='/class/sound/card$cardinfo{card}/device'
alsactl: get_key_attribute:958: attribute='sysfs_device'
alsactl: apply_format:1059: will substitute format name 'cardinfo'
alsactl: get_format_attribute:980: attribute='card', str='/device'
alsactl: apply_format:1091: format=1, string='/class/sound/card', tail='/device'
alsactl: apply_format:1102: substitute cardinfo{card} '1'
alsactl: parse_line:1635: CONFIG{sysfs_device}='/class/sound/card1/device'
alsactl: parse:1725: read (6) 'ACCESS!="$sysfsroot$config{sysfs_device}",
        CONFIG{sysfs_device}="/class/sound/controlC$cardinfo{card}/device"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='ACCESS'
alsactl: get_key:933: value='$sysfsroot$config{sysfs_device}'
alsactl: apply_format:1059: will substitute format name 'sysfsroot'
alsactl: apply_format:1091: format=5, string='', tail='$config{sysfs_device}'
alsactl: apply_format:1180: substitute sysfs_path '/sys'
alsactl: apply_format:1059: will substitute format name 'config'
alsactl: get_format_attribute:980: attribute='sysfs_device', str=''
alsactl: apply_format:1091: format=7, string='/sys', tail=''
alsactl: parse_line:1581: access(/sys/class/sound/card1/device) = 0 ($sysfsroot$config{sysfs_device})
alsactl: parse:1725: read (10) 'ENV{CMD}=="help", INCLUDE="help", GOTO="00main_end"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{CMD}'
alsactl: get_key:933: value='help'
alsactl: get_key_attribute:958: attribute='CMD'
alsactl: parse_line:1458: env: 'CMD' '(null)'
alsactl: parse:1725: read (11) 'ENV{CMD}=="info", INCLUDE="info", GOTO="00main_end"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{CMD}'
alsactl: get_key:933: value='info'
alsactl: get_key_attribute:958: attribute='CMD'
alsactl: parse_line:1458: env: 'CMD' '(null)'
alsactl: parse:1725: read (12) 'ENV{CMD}=="default", INCLUDE="default", GOTO="00main_end"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{CMD}'
alsactl: get_key:933: value='default'
alsactl: get_key_attribute:958: attribute='CMD'
alsactl: parse_line:1458: env: 'CMD' '(null)'
alsactl: parse:1725: read (13) 'ENV{CMD}=="test", INCLUDE="test", GOTO="00main_end"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{CMD}'
alsactl: get_key:933: value='test'
alsactl: get_key_attribute:958: attribute='CMD'
alsactl: parse_line:1458: env: 'CMD' '(null)'
alsactl: parse:1725: read (14) 'ENV{CMD}=="*", ERROR="Unknown command '$env{CMD}'\n", GOTO="00main_end"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{CMD}'
alsactl: get_key:933: value='*'
alsactl: get_key_attribute:958: attribute='CMD'
alsactl: parse_line:1458: env: 'CMD' '(null)'
alsactl: parse:1725: read (28) 'RESULT="unknown"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='RESULT'
alsactl: get_key:933: value='unknown'
alsactl: parse:1725: read (29) 'ACCESS=="preinit", INCLUDE="preinit"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ACCESS'
alsactl: get_key:933: value='preinit'
alsactl: parse_line:1581: access(/usr/share/alsa/init/preinit) = -1 (preinit)
alsactl: parse:1725: read (30) 'RESULT=="skip", GOTO="init_end"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='RESULT'
alsactl: get_key:933: value='skip'
alsactl: do_match:494: match RESULT 'skip' <-> 'unknown'
alsactl: do_match:504: RESULT is false
alsactl: parse:1725: read (33) 'CARDINFO{driver}=="HDA-Intel", INCLUDE="hda", GOTO="init_end"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CARDINFO{driver}'
alsactl: get_key:933: value='HDA-Intel'
alsactl: get_key_attribute:958: attribute='driver'
alsactl: parse_line:1420: cardinfo: 'HDA-Intel' 'driver'
alsactl: do_match:494: match CARDINFO{driver} 'HDA-Intel' <-> 'USB-Audio'
alsactl: do_match:504: CARDINFO{driver} is false
alsactl: parse:1725: read (34) 'CARDINFO{driver}=="CA0106", INCLUDE="ca0106", GOTO="init_end"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CARDINFO{driver}'
alsactl: get_key:933: value='CA0106'
alsactl: get_key_attribute:958: attribute='driver'
alsactl: parse_line:1420: cardinfo: 'CA0106' 'driver'
alsactl: do_match:494: match CARDINFO{driver} 'CA0106' <-> 'USB-Audio'
alsactl: do_match:504: CARDINFO{driver} is false
alsactl: parse:1725: read (35) 'CARDINFO{driver}=="Test", INCLUDE="test", GOTO="init_end"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CARDINFO{driver}'
alsactl: get_key:933: value='Test'
alsactl: get_key_attribute:958: attribute='driver'
alsactl: parse_line:1420: cardinfo: 'Test' 'driver'
alsactl: do_match:494: match CARDINFO{driver} 'Test' <-> 'USB-Audio'
alsactl: do_match:504: CARDINFO{driver} is false
alsactl: parse:1725: read (39) 'LABEL="init_end"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value='init_end'
alsactl: parse:1725: read (40) 'ACCESS=="postinit", INCLUDE="postinit"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ACCESS'
alsactl: get_key:933: value='postinit'
alsactl: parse_line:1581: access(/usr/share/alsa/init/postinit) = -1 (postinit)
alsactl: parse:1725: read (41) 'RESULT=="true", GOTO="00_mainend"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='RESULT'
alsactl: get_key:933: value='true'
alsactl: do_match:494: match RESULT 'true' <-> 'unknown'
alsactl: do_match:504: RESULT is false
alsactl: parse:1725: read (42) 'ERROR="Found hardware: \"$cardinfo{driver}\" \"$cardinfo{mixername}\" \"$cardinfo{components}\" \"$attr{subsystem_vendor}\" \"$attr{subsystem_device}\"\n"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='ERROR'
alsactl: get_key:933: value='Found hardware: \"$cardinfo{driver}\" \"$cardinfo{mixername}\" \"$cardinfo{components}\" \"$attr{subsystem_vendor}\" \"$attr{subsystem_device}\"\n'
alsactl: apply_format:1059: will substitute format name 'cardinfo'
alsactl: get_format_attribute:980: attribute='driver', str='\" \"$cardinfo{mixername}\" \"$cardinfo{components}\" \"$attr{subsystem_vendor}\" \"$attr{subsystem_device}\"\n'
alsactl: apply_format:1091: format=1, string='Found hardware: \"', tail='\" \"$cardinfo{mixername}\" \"$cardinfo{components}\" \"$attr{subsystem_vendor}\" \"$attr{subsystem_device}\"\n'
alsactl: apply_format:1102: substitute cardinfo{driver} 'USB-Audio'
alsactl: apply_format:1059: will substitute format name 'cardinfo'
alsactl: get_format_attribute:980: attribute='mixername', str='\" \"$cardinfo{components}\" \"$attr{subsystem_vendor}\" \"$attr{subsystem_device}\"\n'
alsactl: apply_format:1091: format=1, string='Found hardware: \"USB-Audio\" \"', tail='\" \"$cardinfo{components}\" \"$attr{subsystem_vendor}\" \"$attr{subsystem_device}\"\n'
alsactl: apply_format:1102: substitute cardinfo{mixername} 'USB Mixer'
alsactl: apply_format:1059: will substitute format name 'cardinfo'
alsactl: get_format_attribute:980: attribute='components', str='\" \"$attr{subsystem_vendor}\" \"$attr{subsystem_device}\"\n'
alsactl: apply_format:1091: format=1, string='Found hardware: \"USB-Audio\" \"USB Mixer\" \"', tail='\" \"$attr{subsystem_vendor}\" \"$attr{subsystem_device}\"\n'
alsactl: apply_format:1102: substitute cardinfo{00} 'USB1415:2000'
alsactl: apply_format:1059: will substitute format name 'attr'
alsactl: get_format_attribute:980: attribute='subsystem_vendor', str='\" \"$attr{subsystem_device}\"\n'
alsactl: apply_format:1091: format=4, string='Found hardware: \"USB-Audio\" \"USB Mixer\" \"USB1415:2000\" \"', tail='\" \"$attr{subsystem_device}\"\n'
alsactl: sysfs_attr_get_value:74: open '/class/sound/card1/device'/'subsystem_vendor'
alsactl: sysfs_attr_get_value:90: new uncached attribute '/sys/class/sound/card1/device/subsystem_vendor'
alsactl: sysfs_attr_get_value:96: add to cache '/sys/class/sound/card1/device/subsystem_vendor'
alsactl: sysfs_attr_get_value:100: stat '/sys/class/sound/card1/device/subsystem_vendor' failed: No such file or directory
alsactl: apply_format:1059: will substitute format name 'attr'
alsactl: get_format_attribute:980: attribute='subsystem_device', str='\"\n'
alsactl: apply_format:1091: format=4, string='Found hardware: \"USB-Audio\" \"USB Mixer\" \"USB1415:2000\" \"\" \"', tail='\"\n'
alsactl: sysfs_attr_get_value:74: open '/class/sound/card1/device'/'subsystem_device'
alsactl: sysfs_attr_get_value:90: new uncached attribute '/sys/class/sound/card1/device/subsystem_device'
alsactl: sysfs_attr_get_value:96: add to cache '/sys/class/sound/card1/device/subsystem_device'
alsactl: sysfs_attr_get_value:100: stat '/sys/class/sound/card1/device/subsystem_device' failed: No such file or directory
Found hardware: "USB-Audio" "USB Mixer" "USB1415:2000" "" ""
alsactl: parse:1725: read (43) 'ERROR="Hardware is initialized using a generic method\n"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='ERROR'
alsactl: get_key:933: value='Hardware is initialized using a generic method\n'
Hardware is initialized using a generic method
alsactl: parse:1725: read (44) 'INCLUDE="default"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='INCLUDE'
alsactl: get_key:933: value='default'
alsactl: new_root_dir:1276: new_root_dir '/usr/share/alsa/init/default' '/usr/share/alsa/init'
alsactl: parse:1665: start of file '/usr/share/alsa/init/default'
alsactl: parse:1725: read (13) 'ENV{ppercent}:="75%"'
alsactl: get_key:901: operator=assign_final
alsactl: get_key:907: key='ENV{ppercent}'
alsactl: get_key:933: value='75%'
alsactl: get_key_attribute:958: attribute='ppercent'
alsactl: parse_line:1465: env set: 'ppercent' '75%'
alsactl: parse:1725: read (14) 'ENV{cpercent}:="75%"'
alsactl: get_key:901: operator=assign_final
alsactl: get_key:907: key='ENV{cpercent}'
alsactl: get_key:933: value='75%'
alsactl: get_key_attribute:958: attribute='cpercent'
alsactl: parse_line:1465: env set: 'cpercent' '75%'
alsactl: parse:1725: read (15) 'ENV{pvolume}:="-20dB"'
alsactl: get_key:901: operator=assign_final
alsactl: get_key:907: key='ENV{pvolume}'
alsactl: get_key:933: value='-20dB'
alsactl: get_key_attribute:958: attribute='pvolume'
alsactl: parse_line:1465: env set: 'pvolume' '-20dB'
alsactl: parse:1725: read (16) 'ENV{cvolume}:="12dB"'
alsactl: get_key:901: operator=assign_final
alsactl: get_key:907: key='ENV{cvolume}'
alsactl: get_key:933: value='12dB'
alsactl: get_key_attribute:958: attribute='cvolume'
alsactl: parse_line:1465: env set: 'cvolume' '12dB'
alsactl: parse:1725: read (17) 'ENV{has_pmaster_vol}:="false"'
alsactl: get_key:901: operator=assign_final
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='false'
alsactl: get_key_attribute:958: attribute='has_pmaster_vol'
alsactl: parse_line:1465: env set: 'has_pmaster_vol' 'false'
alsactl: parse:1725: read (19) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (20) 'CTL{name}="Playback Volume",CTL{do_search}=="1",
  CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (22) 'CTL{name}="Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (25) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (26) 'CTL{name}="Master Playback Volume",CTL{do_search}=="1",
  ENV{has_pmaster_vol}:="true",
  CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Master Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Master Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (29) 'CTL{name}="Master Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Master Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Master Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (32) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (33) 'CTL{name}="Master Front Playback Volume",CTL{do_search}=="1",
  ENV{has_pmaster_vol}:="true",
  CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Master Front Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Master Front Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (36) 'CTL{name}="Master Front Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Master Front Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Master Front Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (39) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (40) 'CTL{name}="Master Digital Playback Volume",CTL{do_search}=="1",
  CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Master Digital Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Master Digital Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (42) 'CTL{name}="Master Digital Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Master Digital Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Master Digital Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (45) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (46) 'CTL{name}="Line Out Playback Volume",PROGRAM!="__ctl_search",GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Line Out Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Line Out Playback Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (48) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (49) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (50) 'CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (51) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (52) 'CTL{name}="Line Out Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Line Out Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Line Out Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (55) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (56) 'CTL{name}="Front Playback Volume",PROGRAM!="__ctl_search",GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Front Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Front Playback Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (58) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (59) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (60) 'CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (61) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (62) 'CTL{name}="Front Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Front Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Front Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (65) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (66) 'CTL{name}="Surround Playback Volume",PROGRAM!="__ctl_search",GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Surround Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Surround Playback Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (68) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (69) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (70) 'CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (71) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (72) 'CTL{name}="Surround Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Surround Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Surround Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (75) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (76) 'CTL{name}="Center Playback Volume",PROGRAM!="__ctl_search",GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Center Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Center Playback Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (78) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (79) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (80) 'CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (81) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (82) 'CTL{name}="Center Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Center Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Center Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (85) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (86) 'CTL{name}="LFE Playback Volume",PROGRAM!="__ctl_search",GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='LFE Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'LFE Playback Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (88) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (89) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (90) 'CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (91) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (92) 'CTL{name}="LFE Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='LFE Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'LFE Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (95) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (96) 'CTL{name}="Headphone Playback Volume",PROGRAM!="__ctl_search",GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Headphone Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Headphone Playback Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (98) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (99) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (100) 'CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (101) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (102) 'CTL{name}="Headphone Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Headphone Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Headphone Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (105) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (106) 'CTL{name}="Headphone Playback Volume",CTL{index}="1",PROGRAM!="__ctl_search",
  GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Headphone Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Headphone Playback Volume' 'name'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{index}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='index'
alsactl: parse_line:1331: ctl assign: '1' 'index'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (109) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (110) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (111) 'CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (112) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (113) 'CTL{name}="Headphone Playback Switch",CTL{index}="1",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Headphone Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Headphone Playback Switch' 'name'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{index}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='index'
alsactl: parse_line:1331: ctl assign: '1' 'index'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (116) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (117) 'CTL{name}="Speaker Playback Volume",PROGRAM!="__ctl_search",GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Speaker Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Speaker Playback Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (119) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (120) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (121) 'CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (122) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (123) 'CTL{name}="Speaker Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Speaker Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Speaker Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (126) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (127) 'CTL{name}="Front Speaker Playback Volume",PROGRAM!="__ctl_search",GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Front Speaker Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Front Speaker Playback Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (129) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (130) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (131) 'CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (132) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (133) 'CTL{name}="Front Speaker Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Front Speaker Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Front Speaker Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (136) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (137) 'CTL{name}="Surround Speaker Playback Volume",PROGRAM!="__ctl_search",GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Surround Speaker Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Surround Speaker Playback Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (139) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (140) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (141) 'CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (142) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (143) 'CTL{name}="Surround Speaker Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Surround Speaker Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Surround Speaker Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (146) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (147) 'CTL{name}="Center Speaker Playback Volume",PROGRAM!="__ctl_search",GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Center Speaker Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Center Speaker Playback Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (149) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (150) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (151) 'CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (152) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (153) 'CTL{name}="Center Speaker Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Center Speaker Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Center Speaker Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (156) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (157) 'CTL{name}="LFE Speaker Playback Volume",PROGRAM!="__ctl_search",GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='LFE Speaker Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'LFE Speaker Playback Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (159) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (160) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (161) 'CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (162) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (163) 'CTL{name}="LFE Speaker Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='LFE Speaker Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'LFE Speaker Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (166) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (167) 'CTL{name}="PC Speaker Playback Volume",CTL{do_search}=="1",
  CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='PC Speaker Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'PC Speaker Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (169) 'CTL{name}="PC Speaker Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='PC Speaker Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'PC Speaker Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (172) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (173) 'CTL{name}="PCM Playback Volume",PROGRAM!="__ctl_search",
 CTL{name}="PCM Volume",PROGRAM!="__ctl_search", GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='PCM Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'PCM Playback Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='PCM Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'PCM Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (176) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (177) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (179) 'CTL{dBmin}=="-34.50dB",CTL{dBmax}=="12.00dB",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{dBmin}'
alsactl: get_key:933: value='-34.50dB'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (180) 'CTL{dBmin}=="-30.00dB",CTL{dBmax}=="0dB",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{dBmin}'
alsactl: get_key:933: value='-30.00dB'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (181) 'CTL{write}!="$env{pvolume}",CTL{values}="75%"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (182) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (183) 'CTL{name}="PCM Playback Switch",CTL{do_search}=="1", CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='PCM Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'PCM Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (184) 'CTL{name}="PCM Switch",CTL{do_search}=="1",CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='PCM Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'PCM Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (186) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (187) 'CTL{name}="PCM Playback Volume",CTL{index}="1",PROGRAM!="__ctl_search",
  CTL{name}="PCM Volume",PROGRAM!="__ctl_search",GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='PCM Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'PCM Playback Volume' 'name'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{index}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='index'
alsactl: parse_line:1331: ctl assign: '1' 'index'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='PCM Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'PCM Volume' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (190) 'ENV{has_pmaster_vol}=="true",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (191) 'ENV{has_pmaster_vol}=="true",CTL{write}=="100%",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='ENV{has_pmaster_vol}'
alsactl: get_key:933: value='true'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (193) 'CTL{dBmin}=="-34.50dB",CTL{dBmax}=="12.00dB",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{dBmin}'
alsactl: get_key:933: value='-34.50dB'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (194) 'CTL{dBmin}=="-30.00dB",CTL{dBmax}=="0dB",CTL{write}=="0dB",GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{dBmin}'
alsactl: get_key:933: value='-30.00dB'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (195) 'CTL{write}!="$env{pvolume}",CTL{values}="75%"'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='CTL{write}'
alsactl: get_key:933: value='$env{pvolume}'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (196) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (197) 'CTL{name}="PCM Playback Switch",CTL{index}="1",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='PCM Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'PCM Playback Switch' 'name'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{index}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='index'
alsactl: parse_line:1331: ctl assign: '1' 'index'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (199) 'CTL{name}="PCM Switch",CTL{index}="1",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='PCM Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'PCM Switch' 'name'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{index}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='index'
alsactl: parse_line:1331: ctl assign: '1' 'index'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (202) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (203) 'CTL{name}="DAC Playback Volume",CTL{do_search}=="1",
  CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='DAC Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'DAC Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (205) 'CTL{name}="DAC Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='DAC Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'DAC Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (208) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (209) 'CTL{name}="Synth Playback Volume",CTL{do_search}=="1",
  CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Synth Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Synth Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (211) 'CTL{name}="Synth Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Synth Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Synth Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (214) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (215) 'CTL{name}="Wave Playback Volume",CTL{do_search}=="1",
  CTL{values}="100%"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Wave Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Wave Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (217) 'CTL{name}="Wave Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Wave Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Wave Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (220) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (221) 'CTL{name}="Music Playback Volume",CTL{do_search}=="1",
  CTL{values}="100%"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Music Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Music Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (223) 'CTL{name}="Music Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Music Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Music Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (226) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (227) 'CTL{name}="CD Playback Volume",CTL{do_search}=="1",
  CTL{values}="0%"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='CD Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'CD Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (229) 'CTL{name}="CD Playback Switch",CTL{do_search}=="1",
  CTL{values}="off"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='CD Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'CD Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (232) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (233) 'CTL{name}="Mono Playback Volume",CTL{do_search}=="1",
  CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Mono Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Mono Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (235) 'CTL{name}="Mono Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Mono Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Mono Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (238) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (239) 'CTL{name}="Master Mono Playback Volume",CTL{do_search}=="1",
  CTL{values}="$env{pvolume}",RESULT!="0",CTL{values}="$env{ppercent}"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Master Mono Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Master Mono Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (241) 'CTL{name}="Master Mono Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Master Mono Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Master Mono Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (244) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (245) 'CTL{name}="AC97 Playback Volume",CTL{do_search}=="1",
  CTL{values}="100%"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='AC97 Playback Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'AC97 Playback Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (247) 'CTL{name}="AC97 Playback Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='AC97 Playback Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'AC97 Playback Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (254) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (255) 'CTL{name}="DRC Range",CTL{do_search}=="1",
  CTL{write}!="$env{pvolume}",CTL{values}="$env{ppercent}"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='DRC Range'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'DRC Range' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (262) 'CTL{reset}="mixer"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{reset}'
alsactl: get_key:933: value='mixer'
alsactl: get_key_attribute:958: attribute='reset'
alsactl: parse_line:1331: ctl assign: 'mixer' 'reset'
alsactl: parse:1725: read (263) 'CTL{name}="Capture Volume",CTL{do_search}=="1",
  CTL{write}!="$env{cvolume}",CTL{values}="$env{cpercent}"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Capture Volume'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Capture Volume' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (265) 'CTL{name}="Capture Switch",CTL{do_search}=="1",
  CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Capture Switch'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Capture Switch' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (268) 'CTL{name}="Capture Source",PROGRAM!="__ctl_search", GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Capture Source'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Capture Source' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (269) 'CTL{enums}=="*|Internal Mic|*",CTL{values}="Internal Mic", GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{enums}'
alsactl: get_key:933: value='*|Internal Mic|*'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (270) 'CTL{enums}=="*|Mic|*",CTL{values}="Mic"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{enums}'
alsactl: get_key:933: value='*|Mic|*'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (271) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (273) 'CTL{name}="Input Source",PROGRAM!="__ctl_search", GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Input Source'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Input Source' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (274) 'CTL{enums}=="*|Internal Mic|*",CTL{values}="Internal Mic", GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{enums}'
alsactl: get_key:933: value='*|Internal Mic|*'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (275) 'CTL{enums}=="*|Mic|*",CTL{values}="Mic"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{enums}'
alsactl: get_key:933: value='*|Mic|*'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (276) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (278) 'CTL{name}="Digital Input Source",PROGRAM!="__ctl_search", GOTO=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Digital Input Source'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Digital Input Source' 'name'
alsactl: get_key:889: operator=nomatch
alsactl: get_key:907: key='PROGRAM'
alsactl: get_key:933: value='__ctl_search'
alsactl: parse_line:1394: PROGRAM '__ctl_search' is false
alsactl: parse_line:1410: PROGRAM key is true
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='GOTO'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (279) 'CTL{enums}=="*|Digital Mic 1|*",CTL{values}="Digital Mic 1", GOTO=""'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{enums}'
alsactl: get_key:933: value='*|Digital Mic 1|*'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (280) 'CTL{enums}=="*|Mic|*",CTL{values}="Mic"'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{enums}'
alsactl: get_key:933: value='*|Mic|*'
alsactl: parse_line:1318: skip (GOTO '')
alsactl: parse:1725: read (281) 'LABEL=""'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='LABEL'
alsactl: get_key:933: value=''
alsactl: parse:1725: read (283) 'CTL{name}="Mic Boost",CTL{do_search}=="1", CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Mic Boost'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Mic Boost' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1725: read (284) 'CTL{name}="Internal Mic Boost",CTL{do_search}=="1", CTL{values}="on"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='CTL{name}'
alsactl: get_key:933: value='Internal Mic Boost'
alsactl: get_key_attribute:958: attribute='name'
alsactl: parse_line:1331: ctl assign: 'Internal Mic Boost' 'name'
alsactl: get_key:885: operator=match
alsactl: get_key:907: key='CTL{do_search}'
alsactl: get_key:933: value='1'
alsactl: get_key_attribute:958: attribute='do_search'
alsactl: parse_line:1354: ctl match: 'do_search' '1' '0'
alsactl: do_match:494: match CTL{do_search} '1' <-> '0'
alsactl: do_match:504: CTL{do_search} is false
alsactl: parse:1739: end of file '/usr/share/alsa/init/default'
alsactl: parse:1725: read (45) 'EXIT="99"'
alsactl: get_key:897: operator=assign
alsactl: get_key:907: key='EXIT'
alsactl: get_key:933: value='99'
alsactl: parse:1739: end of file '/usr/share/alsa/init/00main'
@krisgesling
Copy link
Contributor

Hey Stuart,

Just wanted to post a brief copy of the chat from last week, mostly for the benefit of anyone stumbling across this in the future.

I think the less we have to implement custom fixes and stick to defaults the better. However we aren't going to remove PS3 Eye support because we have significant number of people who use this hardware as their primary configuration.

We do very much appreciate the amount of work you've been putting in to investigate other solutions though. I hope we can find a path forward that provides a clean and intuitive audio setup, without breaking core functionality for our PS Eye users.

@StuartIanNaylor
Copy link
Author

Afraid ground to a halt I am afraid.

Hi Stuart,

I haven't used this hardware in quite a while at this point. Do you
have the same problem on desktop, or just the Pi? You might try
disabling USB autosuspend (on the pi, add "usbcore.autosuspend=-1" to
/boot/cmdline.txt). But that's just a guess.

If you have a kernel version that consistently works and one that
consistently does not, a "git bisect" would be the best way to track
it down: https://www.kernel.org/doc/html/latest/admin-guide/bug-bisect.html
If the bug only shows up sometimes, though, that would be hard to do.

Jim

I really would suggest they don't source a PS3 eye if you don't already have one.

For a few dollar more you can get a respeaker 2 mic for the pi that has a few Leds and a small amp that allows you to create a complete simple device AI.

That would be my recommendation.

@StuartIanNaylor
Copy link
Author

StuartIanNaylor commented Apr 6, 2020

I keep having a go at the PS3 eye and we don't even have alsa asoundrc files.

This will set a default took me a while to work out the simple asym of defaults with in/out on different cards but hey!
ps3eye .asoundrc

pcm.array {
 type hw
 card 1
}

pcm.array_gain {
 type softvol
   slave {
   pcm "array"
   }
 control {
   name "Mic Gain"
   count 2
   card 1
   }
 min_dB -40.0
 max_dB 10.0
 resolution 80
}

pcm.cap {
 type plug
 slave {
   pcm "array_gain"
   channels 4
   }
 route_policy sum
}

pcm.!default {
    type asym
    playback.pcm "plughw:CARD=ALSA,DEV=0"
    capture.pcm  "cap"
}

The default will be cap which is the 4 channels addded together.
The other 2 are available if that pcm is designated.
Gave up on the softvolume what should work doesn't seem to and prob due to the underlying control error of the ps3 eye
Also because plughw is used rather than hardware direct it will get software sampling conversion

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants