ASUS Chromebook C200 安装 FydeOs for PC 扬声器和耳机没有声音输出

系统安装没有声音有好多帖子了,但是还是没有解决问题,扬声器和耳机没有声音输出

电脑具体配置和固件版本

  • 电脑型号:Asus Chromebook C200
  • 处理器: Intel(R) Celeron(R) CPU N2840 @ 2.16GHz (Intel BayTrail-M N2830)
  • 显卡: Intel® HD Graphics for Intel Atom® Processor Z3700 Series
  • 运行内存与储存内存 :4G 和 16G
  • FydeOS 版本: 15183.77.16.21 (Release Build v16.0) stable-channel amd64-fydeos

C200 对应的 Chromeos 已经停止更新了。在安装的 chromeos_12239.92.0_squawks_recovery_stable-channel 上的得到的信息

$ uname -a
Linux localhost 4.4.180-16566-g51163f4278d1 #1 SMP PREEMPT Tue Aug 27 16:48:07 PDT 2019 x86_64 Intel(R) Celeron(R) CPU N2840 @ 2.16GHz GenuineIntel GNU/Linux
$ lsmod | grep snd
snd_soc_sst_baytrail_pcm    20480  2
snd_soc_sst_ipc        16384  1 snd_soc_sst_baytrail_pcm
snd_soc_sst_dsp        32768  1 snd_soc_sst_baytrail_pcm
snd_soc_sst_byt_max98090_mach    16384  3
snd_hda_codec_hdmi     40960  1
snd_hda_intel          32768  2
snd_hda_codec          94208  2 snd_hda_codec_hdmi,snd_hda_intel
snd_hwdep              16384  1 snd_hda_codec
snd_hda_core           57344  3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel
snd_intel_sst_acpi     16384  0
snd_intel_sst_core     53248  1 snd_intel_sst_acpi
snd_soc_sst_mfld_platform    65536  1 snd_intel_sst_core
snd_soc_max98090       81920  1
snd_soc_sst_acpi       16384  0
snd_soc_sst_match      16384  2 snd_soc_sst_acpi,snd_intel_sst_acpi
$ dmesg | grep -P audio\|sound\|snd
[    0.583210]   No soundcards found.
[   12.235022] snd_hda_intel 0000:00:1b.0: bound 0000:00:02.0 (ops 0xffffffff9d471110)
[   12.307864] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input6
[   12.308192] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input7
[   12.458745] byt-max98090 byt-max98090: ASoC: CPU DAI baytrail-pcm-audio not registered
[   12.458769] byt-max98090 byt-max98090: snd_soc_register_card failed -517
[   12.542171] baytrail-pcm-audio baytrail-pcm-audio: FW version: 04.05.12.02
[   12.542182] baytrail-pcm-audio baytrail-pcm-audio: Build type: 2
[   12.542186] baytrail-pcm-audio baytrail-pcm-audio: Build date: Mar 13 2014 14:17:31
[   12.581657] byt-max98090 byt-max98090: HiFi <-> baytrail-pcm-audio mapping ok
[   12.582857] input: byt-max98090 Headset as /devices/platform/80860F28:00/byt-max98090/sound/card1/input8
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: bytmax98090 [byt-max98090], device 0: Audio HiFi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
$ ls /usr/share/alsa/ucm
'Chat 150 C'                          PAZ00                                        broxton-rt298
 DB410c                               PandaBoard                                   byt-max98090
 Dell-WD15-Dock                       PandaBoardES                                 bytcr-rt5651
 GoogleNyan                          'Plankton Captured HDMI Audio'                chtrt5645-mono-speaker-analog-mic
'HD Pro Webcam C920'                  SDP4430                                      gpd-win-pocket-rt5645
 HDAudio-Gigabyte-ALC1220DualCodecs   TECLAST-X80Pro-Defaultstring-CherryTrailCR   skylake-rt286
 HDAudio-Lenovo-DualCodecs           'WD15 Dock'                                   tegraalc5632
'Hangouts Meet speakermic'           'WD19 Dock'
'Jabra SPEAK 810'                     broadwell-rt286
$ find /lib/firmware -name '*sst*'
lib/firmware/intel/fw_sst_0f28.bin
lib/firmware/intel/fw_sst_0f28.bin-48kHz_i2s_master
lib/firmware/intel/fw_sst_0f28.bin-i2s_master
lib/firmware/intel/fw_sst_0f28.bin-i2s_slave
lib/firmware/intel/fw_sst_0f28.bin-tdm_master
lib/firmware/intel/fw_sst_0f28.bin-tdm_slave
lib/firmware/intel/fw_sst_22a8.bin

在全新安装的 fydeos 上

$ uname -a
Linux localhost 5.4.217-15-0+ #1 SMP PREEMPT Sat Jan 14 10:16:03 CST 2023 x86_64 Intel(R) Celeron(R) CPU N2840 @ 2.16GHz GenuineIntel GNU/Linux
$ lsmod | grep snd
snd_soc_sst_cht_bsw_max98090_ti    24576  2
snd_soc_ts3a227e       16384  1 snd_soc_sst_cht_bsw_max98090_ti
snd_hda_codec_hdmi     49152  1
snd_hda_intel          32768  2
snd_intel_dspcfg       16384  1 snd_hda_intel
snd_hda_codec          94208  2 snd_hda_codec_hdmi,snd_hda_intel
snd_hda_core           57344  3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_hwdep              16384  1 snd_hda_codec
snd_intel_sst_acpi     16384  1
snd_intel_sst_core     53248  1 snd_intel_sst_acpi
snd_soc_sst_atom_hifi2_platform    77824  2 snd_intel_sst_core
snd_soc_max98090       90112  1
snd_soc_acpi_intel_match    40960  1 snd_intel_sst_acpi
snd_soc_acpi           16384  2 snd_soc_acpi_intel_match,snd_intel_sst_acpi
snd_soc_core          167936  4 snd_soc_sst_cht_bsw_max98090_ti,snd_soc_ts3a227e,snd_soc_sst_atom_hifi2_platform,snd_soc_max98090
snd_compress           20480  1 snd_soc_core
snd_pcm                81920  9 snd_soc_sst_cht_bsw_max98090_ti,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_compress,snd_soc_sst_atom_hifi2_platform,snd_soc_max98090,snd_soc_core,snd_hda_core
ac97_bus               16384  1 snd_soc_core
snd_timer              28672  1 snd_pcm
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: chtmax98090 [chtmax98090], device 0: Audio (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: chtmax98090 [chtmax98090], device 1: Deep-Buffer Audio (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
$ dmesg | grep -P audio\|sound\|snd
[    0.278315]   No soundcards found.
[   19.244086] pci 0000:00:1b.0: attach allowed to drvr snd_hda_intel [trusted device]
[   19.244706] snd_hda_intel 0000:00:1b.0: bound 0000:00:02.0 (ops i915_gem_object_put [i915])
[   19.291709] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input11
[   19.291860] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input12
[   21.316323] input: chtmax98090 Headset Jack as /devices/pci0000:00/80860F28:00/cht-bsw-max98090/sound/card1/input14
$ ls /usr/share/alsa/ucm
'Audioengine HD3'                  'EPOS IMPACT 260'           'HyperX SoloCast'                  'Scarlett Solo USB'            bdw-rt5650
'C505 HD Webcam'                   'EPOS IMPACT 30'             ICUSBAUDIO7D                      'Sennheise PC 8'               bdw-rt5677
'Chat 150 C'                       'EPOS IMPACT 60'            'Jabra SPEAK 810'                  'Sennheiser PC 8.2 USB'        byt-max98090
'Corsair VOID ELITE USB Gaming H'  'EPOS IMPACT 630'           'Logitech BRIO'                    'Sennheiser SC 660 ANC USB'    chtrt5650
'DELL PROFESSIONAL SOUND BAR AE5'  'EPOS IMPACT 660'           'Logitech Webcam C930e'            'Sennheiser SC230 USB'         cnlmax98373
'Dell AC511 USB SoundBar'          'EPOS IMPACT 660 ANC'        Loopback                          'Sennheiser SC230 USB MS II'   kbl_r5514_5663_max
 Dell-WD15-Dock                    'EPOS IMPACT 6x5'           'Mi Dual Driver Earphones Type-C'  'Sennheiser SC260 USB'         kblda7219max
'EDIFIER W820NB'                   'EPOS IMPACT X5'             PCP-USB                           'Sennheiser SC260 USB MS II'   kblrt5663
'EPOS ADAPT 130'                   'HD-Audio Generic'          'Pixel USB-C earbuds'              'Sennheiser USB headset'       kblrt5663max
'EPOS ADAPT 160'                   'HDA ATI HDMI'              'Plantronics DA70'                 'Shure MV7'                    sklnau8825adi
'EPOS ADAPT 160 ANC'               'HDA Intel'                 'Plantronics EncorePro 525 USB'    'USB 2.0 Camera'               sklnau8825max
'EPOS ADAPT 165 USB II'            'HDA Intel PCH'             'Poly Blackwire 8225 Series'       'WD15 Dock'                    sof-hda-dsp
'EPOS ADAPT 1x5'                   'HUAWEI USB-C HEADSET'      'Scarlett 2i2 USB'                 'WD19 Dock'
'EPOS IMPACT 230'                  'Hangouts Meet speakermic'  'Scarlett 2i4 USB'                 'XtremPro X1 USB DAC'
$ cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0x90714000 irq 91
 1 [chtmax98090    ]: chtmax98090 - chtmax98090
                      GOOGLE-Squawks-1.0
$ cat /proc/asound/devices 
  2: [ 0- 3]: digital audio playback
  3: [ 0- 7]: digital audio playback
  4: [ 0- 2]: hardware dependent
  5: [ 0]   : control
  6: [ 1- 0]: digital audio playback
  7: [ 1- 0]: digital audio capture
  8: [ 1- 1]: digital audio playback
  9: [ 1]   : control
 33:        : timer
$ cat /proc/asound/version 
Advanced Linux Sound Architecture Driver Version k5.4.217-15-0+.

安装 fydeos 后声卡设备好像从 byt-max98090 变为 chtmax98090 了,但是 alsa 下的 ucm 中存在 byt-max98090 却没有 chtmax98090
而且 dmesg 的输出中会出现

[   61.466261]  Audio Port: ASoC: no backend DAIs enabled for Audio Port

先是按照社区里提供的解决方法。
把原本 chromeos 中的 ucm 文件夹复制到fydeos中去,没有发生什么变化。
然后是 firmware 中的文件。最后试着把全部替换掉。
在 /etc/modprobe.d/alsa-base.conf 文件末尾添加 options snd-hda-intel dmic_detect=0 都没有作用。

又尝试按照这里https://www.reddit.com/r/chromeos/comments/swzxsy/chrome_os_flex_internal_audio_not_working_on_asus/
评论里的设备 ASUS C202,安装的系统是 chrome os flex。
从 chromeos 中使用 /usr/sbin/alsactl store -f /var/lib/alsa/asound.state 备份 asound.state 文件
然后在 fydeos 中恢复 /usr/sbin/alsactl init sudo /usr/sbin/alsactl store --file /var/lib/alsa/asound.state 没有什么效果

然后跟着网友在 brunch 下的讨论操作

他的设备是 Asus C300 Quawks,和 C200 是同年的设备,相同的处理器。
https://github.com/GalliumOS/galliumos-baytrail 的 usr/share/alsa/ucm 下载了 chtmax98090 文件夹到本机
在 grub.cfg 的 cros_debug 后添加了 options=disable_intel_hda
执行
sudo alsaucm -c chtmax98090 set _verb HiFi set _enadev Headphone
sudo alsaucm -c chtmax98090 set _verb HiFi set _enadev Speakers
sudo alsactl store
不知道在哪一步出现的,最后
Audio Port: ASoC: no backend DAIs enabled for Audio Port
在 dmesg 的输出中不见了,但是还是没有声音

尝试执行 sudo alsaucm -c byt-max98090 set _verb HiFi set _enadev Speakers 时发生和

中一样的错误

ALSA lib main.c:405:(execute_sequence) unable to open ctl device 'hw:bytmax98090'
ALSA lib main.c:1733:(set_verb_user) error: failed to initialize new use case: HiFi
alsaucm: error failed to set _verb=HiFi: No such device

扬声器和耳机始终没有声音,hdmi 输出和蓝牙连接会有声音。
dmesg_chrome.txt (48.9 KB)
lsmod_chrome.txt (1.7 KB)
lsmodsndinfos_chrome.txt (14.9 KB)
chrome_asound.state (27.6 KB)

1 个赞

ubuntu下解决了么

本想装下试试来着,发现需要 * 25 GB磁盘存储空间就放过了
https://wiki.galliumos.org/Hardware_Compatibility
galliumos 看到几年前有人问过好像是解决了的,硬件兼容下也没标注有音频问题

我看brunch那人解决了啊,在grub加了一行,你试过那个了么,看起来是google搞的幺蛾子

是说 “options=baytrail_chromebook” 这个吗,这个也试过了,我不太确定是加到 grub 上的 added to the kernel command line ,就没写在上面的帖子里

那人说是解决了,我估计你没加对地方,应该就是google对这些chromebook有啥特殊的规则,我看2018年有过patch让这些声卡都不工作了,也可能是怕再发生这种安全事故,所以google搞了特殊的规则

嗯有可能,因为试着装 brunch 的时候好像会专门有内核启动参数的设置。比较在意的一点是在 chromeos 上面没有 chtmax98090,输出的是 byt-max98090。切换到 fydeos 显示的全是 chtmax98090。不懂音频,不知道有没有什么影响

我看brunch的sebanc说的也是要correctly recognized as chtmax98090

一般chromebook声卡在ubuntu上很好解决,很多都是直接能驱动,这种ubuntu上疑难杂症的不一定好搞,不行你就装brunch,反正那人在brunch上搞定了

谢谢你的帮助!brunch 的磁盘要求刚好达到16G,稍微有点勉强。fydeos 用起来很流畅,让老机子也能使用安卓应用,现在在使用用 superdisplay 做第二屏幕使用,已经吃灰的机子还能发挥余热已经很满足了

客气,我正好练习英文阅读 :face_with_peeking_eye:

直接把 ucm 文件复制过去不管用可能是因为 alsa 版本的问题。在网上搜索的时候看到

GalliumOS is based on Ubuntu 18.04, therefore it is still using the use case manager (UCM) and not the newer ucm2 you have on Manjaro.

想起来第一次执行 alsaucm -c chtmax98090 set _verb HiFi set _enadev Headphone 报错中出现过 ucm2。

ALSA lib /build/amd64-generic/tmp/portage/media-libs/alsa-lib-1.2.1.2-r2/work/alsa-lib-1.2.1.2/src/ucm/utils.c:261:(uc_mgr_config_load) could not open configuration file /usr/share/alsa/ucm2/chtmax98090/chtmax98090.conf
ALSA lib /build/amd64-generic/tmp/portage/media-libs/alsa-lib-1.2.1.2-r2/work/alsa-lib-1.2.1.2/src/ucm/parser.c:1605:(load_master_config) error: could not parse configuration for card chtmax98090
ALSA lib /build/amd64-generic/tmp/portage/media-libs/alsa-lib-1.2.1.2-r2/work/alsa-lib-1.2.1.2/src/ucm/main.c:963:(snd_use_case_mgr_open) error: failed to import chtmax98090 use case configuration -2
alsaucm: error failed to open sound card chtmax98090: No such file or directory

当时 chromeos 和 fydeos 中都没有 chtmax98090 这个文件夹。从 https://github.com/GalliumOS/galliumos-baytrail 处下载复制到手动创建的 ucm2 文件夹下,出现了新的错误。

ALSA lib /build/amd64-generic/tmp/portage/media-libs/alsa-lib-1.2.1.2-r2/work/alsa-lib-1.2.1.2/src/ucm/parser.c:1212:(parse_verb_file) error: HiFi.conf failed to parse verb
ALSA lib /build/amd64-generic/tmp/portage/media-libs/alsa-lib-1.2.1.2-r2/work/alsa-lib-1.2.1.2/src/ucm/main.c:963:(snd_use_case_mgr_open) error: failed to import chtmax98090 use case configuration -17
alsaucm: error failed to open sound card chtmax98090: File exists

认为也许是 byt-max98090 和 chtmax98090 不同,就没再继续下去。
看到可能跟版本有关,从 https://github.com/alsa-project/alsa-ucm-conf 处找对应 alsa-lib-1.2.1.2 对应的文件,发现直到 1.2.3 才出现有 chtmax98090。将 1.2.3 的文件复制过去按照报错执行到最后也仍旧是没有声音。
https://alsa-project.org/wiki/Changes_v1.2.2_v1.2.3 这里看到

Changelog between 1.2.2 and 1.2.3 releases

chtmax98090: add generic chtmax98090.conf and move Quawks init to the generic HiFi.conf
ucm2: chtmax98090: add generic HiFi.conf and SOF support
ucm2: enable possible SOF support in profile for Chromebook Asus C300
ucm2: Add profile for Chromebook Asus C300

不知道 1.2.3 之前的版本需要怎么做。
下载 chromebrew, 安装了 alsa_lib 和 alsa_utils,alsa_lib 的版本是 1.1.4
crew 下载文件的位置在 /usr/local/,把在 https://github.com/alsa-project/alsa-ucm-conf/releases/tag/v1.2.4 下载 1.2.4 的 ucm 文件, 粘贴到对应位置

/usr/local/share/alsa/ucm2
|-- chtmax98090
|   |-- HiFi.conf
|   `-- chtmax98090.conf
|-- codecs
|   `-- max98090
|       |-- EnableSeq.conf
|       |-- Headphones.conf
|       |-- HeadsetMic.conf
|       |-- InternalMic.conf
|       `-- Speaker.conf
`-- platforms
    `-- bytcr
        |-- PlatformDisableSeq.conf
        `-- PlatformEnableSeq.conf
5 directories, 9 files

依序执行

alsaucm -c chtmax98090 set _verb HiFI set _enadev Headphones
alsaucm -c chtmax98090 set _verb HiFI set _enadev Speaker
sudo mkdir /var/lib/alsa/
/usr/sbin/alsactl store

之后就有声音了。重启之后声音会又消失,需要手动再运行一遍 /usr/sbin/alsactl restore
另外会出现插上耳机之后耳机和扬声器会同时发出声音。找到可能能通过在 alsamixer 设置 auto mute 或是 amixer -c 0 sset 'Auto-Mute Mode' Enabled 来解决
但是这里 alsamixer 找不到 auto mute。执行 amixer 命令会出现 amixer: Unable to find simple control ‘Auto-Mute Mode’,0 错误
暂时是在需要使用耳机的时候,从 alsamixer 中选择对应声卡将扬声器声音关闭。

1 个赞

这么多资料,看着我也心动,想看ES8316能不能也按照这样解决。
我的声卡在dmesg里也会出现Audio Port: ASoC: no backend DAIs enabled for Audio Port

不过查阅资料时,从 https://www.linuxcompatible.org/story/linux-kernel-515rc7-released/
看到似乎要5.15内核才能解决,只能从openfyde里尝试了。
Fedora 35的5.14内核还是没有声音,不过UCM2里也没有对应的conf文件,
而ubuntu 22是5.15就有声音,设备名在fydeos里是bytcht-es8316,在ubuntu里面是sof-bytcht-es8316 。

尝试安装了chromebrew,也下载了1.2.4的UCM,
alsaucm -c bytcht-es8316 set _verb HiFi set _enadev Speaker
也没报错。HeadPhones和MonoSpeaker都报错。

块引用 从 chromeos 中使用 /usr/sbin/alsactl store -f /var/lib/alsa/asound.state 备份 asound.state 文件
然后在 fydeos 中恢复 /usr/sbin/alsactl init sudo /usr/sbin/alsactl store --file /var/lib/alsa/asound.state 没有什么效果

不知道你的成功和这个操作有没有直接关系,目前我还没从Ubuntu里提取这个。

2月12日追加更新:
发现ubuntu 21用的是5.11内核能正常驱动ES8316,
用aplay -l 显示也是bytcht-es8316,alsactl是1.2.4 。
从ubuntu里备份了UCM2文件夹,用alsactl 保存了asound.state .

在V16了弄出了声音,但接着浏览器不能播放视频了,powerwash也不能解决。

重新烧录了V15到U盘。
执行alsaucm listcards 报错


复制UCM2,播放视频正常,没声音
alsaucm listcards 报错少了一部分,没有出现声卡型号。

复制asound.state,播放视频正常,没声音
重新安装chromebrew,安装1.2.4 的 alsa_lib 和alsa utils ,播放视频正常,没声音。
alsaucm listcards 没有报错,可以出现很多个声卡型号。

alsaucm reset
alsaucm reload 播放视频正常,没声音
用了alsactl init 浏览器视频无法加载。


执行一次 alsaucm -c bytcht-es8316 set _verb HiFi set _enadev Speaker 视频能正常播放,也有声音了。
重启系统后,播放视频正常,没声音
执行一次alsactl restore ,播放视频正常,没声音 ,没有效果
执行一次 alsaucm -c bytcht-es8316 set _verb HiFi set _enadev Speaker 视频播放正常,有声音了。

我在 chromeos 上得到的 asound.state 并没有起作用,不知道是哪里做的不对还是确实不能用。不过从现在已经有声音的 fydeos 中使用的 asound.state 文件导入到从 u 盘启动的 fydeos 系统上,即便是 alsa_lib 版本不一致也是可以直接有声音的,虽然还是不知道该如何通过 alsaucm 设置。看起来你在 ubuntu 下得到的文件能在 fydeos 下使用,可能只需要 restore asound.state 就可以了。

另外不知道是不是打字的错误,发现你在 ubuntu 下得到的是 asound.conf 文件。 放在fydeos系统 /etc 下的是 asound.state, /var/lib/alsa/ 下的是 asound.conf。我在这边试的过程中,好像如果使用 alsactl store 没有通过 -f 指定文件名的话,默认生成的是 asound.state,alsactl restore 也是默认读取的 /var/lib/alsa/asound.state 文件。 /etc/ 下面只有 asound.conf 文件,里面的内容是这样子的

pcm.!default {
    type cras
}
ctl.!default {
    type cras
}

关于 alsaucm,在 brunch 的那个帖子里面,他给出的 set _enadev 设置对应的分别是 Headphone 和 Speakers, 但是在这台机器上起作用的是 Headphones 和 Speaker。
changlog 里有写 Changes v1.2.1.1 v1.2.1.2

ucm2: remove the old SectionDevice syntax (additional .0)

ucm2: change ‘Headphone’ to ‘Headphones’

虽然没有去找对应的文档,但是感觉 set _enadev 后面跟的应该是 ucm2 下文件里 SectionDevice 后面的内容,你可以试试 Headphones, Speaker, Headset, Mic。

现在我这里也还是会重启失效,需要再执行一遍 alsectl,可以把命令放在 /etc/init 下面,开机直接就可以有声音了

# /etc/init/restoresound.conf

description "restore alsa sound state"

start on started system-services

task

script
  if [ -r /var/lib/alsa/asound.state ]; then
    /usr/sbin/alsactl restore
  fi
end script

对了你需要把执行成功的状态 store 一下保存更改到文件里,然后 restore 才会加载当时的状态。

/etc 里面的是asound.conf ,不过好像不影响,最后一次没有动这个文件,我编辑帖子时候也发现打错了。
从ubuntu复制出来的也是/var/lib/alsa/里面的asound.state

看别人在安卓x86里的经验


可能asound.state有影响 。

我看到这里有MonoSpeaker所以想试试

我在根目录创建了一个snd.sh脚本,那样用bash snd就可以免去每次输入alsaucm -c bytcht-es8316 set _verb HiFi set _enadev Speaker 这么长一串,不过最希望是启动时能自动执行。

从你这里看到了曙光呀,虽然没看大明白:smiley:

找了好久自动静音的方法。不知道 Upstart 的用法对不对,但是能用就先凑合着了

# /etc/init/automute.conf 
description    "automatically mute the speaker when headset is plugged in"

start on started system-services
task

script
    device='/dev/input/event13'
    hp_in='*Event code 2 (SW_HEADPHONE_INSERT) state 1*'
    hp_insert='*type 5 (EV_SW), code 2 (SW_HEADPHONE_INSERT), value 1*'
    hp_remove='*type 5 (EV_SW), code 2 (SW_HEADPHONE_INSERT), value 0*'
    # numid=205,iface=MIXER,name='Speaker Volume'
    current_volume=$(amixer -c 1 cget 'numid=205' | grep ': values' | cut -d , -f 2)
    speaker_volume=$current_volume

    evtest $device | while read line; do
        case $line in
            $hp_insert)
                current_volume=$(amixer -c 1 cget 'numid=205' | grep ': values' | cut -d , -f 2)
                speaker_volume=$current_volume
                if [ "$current_volume" -gt 0 ]; then
                    amixer -c 1 cset 'numid=205' 0
                fi ;;
            $hp_remove)
                amixer -c 1 cset 'numid=205' $speaker_volume ;;
            $hp_in)
                if [ "$speaker_volume" -gt 0 ]; then
                    amixer -c 1 cset 'numid=205' 0
                fi ;;
        esac
    done

end script

我这里 speaker 没找到 mute,就手动设置音量了
运行 evtest 会有对应 event 的说明,amixer -c <card_N> controls 会给出操作的 numid

之前的那个回复不能编辑了,HiFi 的 I 大写了,修改放在这里

alsaucm -c chtmax98090 set _verb HiFi set _enadev Headphones
alsaucm -c chtmax98090 set _verb HiFi set _enadev Speaker
alsaucm -c chtmax98090 set _verb HiFi set _enadev Headset
alsaucm -c chtmax98090 set _verb HiFi set _enadev Mic
sudo mkdir /var/lib/alsa/
/usr/sbin/alsactl store

除非万不得别改 asound.conf, cras_client可以用来测试用

下次版本升级能不能把alsa_lib也升级一下,那我就不用再安装chromebrew了。

1 个赞

请问一下ES8316到底有没有声音,我用的是台电X98 看到已经加载了驱动程序。喇叭和耳机都不能使用