Scirese / alarm

Install Arch Linux ARM(or Manjaro ARM) on Android TV Boxes
Other
31 stars 2 forks source link

Arch Linux ARM hdmi没有声音输出 #2

Closed langyxxl closed 1 year ago

langyxxl commented 1 year ago

按照教程,装好系统之后,hdmi没有声音,armbian原版系统没问题

运行speaker-test dmesg报错: [ 727.782286] fe.dai-link-0: ASoC: no backend DAIs enabled for fe.dai-link-0 [ 727.783834] fe.dai-link-0: ASoC: dpcm_fe_dai_prepare() failed (-22)

按照教程,内核和驱动应该都是armbian原来的,按理说不应该有问题,接下来不知道如何调查,先提交个issue吧

Scirese commented 1 year ago

我这边也有同样的问题. 完全没有排查的头绪. 可能是预构建的 Arch Linux ARM rootfs 本身的问题吧, 试试用 pacstrap 全新安装?

我这几天的使用下来发现 Arch Linux ARM 确实问题不少. HDMI 没声音是一个,还有时间不同步,WiFi 密码不保存的问题. Manjaro ARM 没有这些问题,你可以试试. 如果喜欢 Arch 也可以把 Manjaro 滚成 Arch. 先不要关闭这个 issue.

7Ji commented 1 year ago

SoC上面的声音子系统本身是工作正常的,只是没有正确的声音路径。Manjaro ARM 给 Amlogic打的包都有一个sound.service和对应的g12_sound.sh,这个包由khadas-utils提供(不要被名字误导了,包含khadas只是因为khadas是最早给Manjaro赞助开发板然后最早适配的,实际上里面的内容给所有Amlogic设备用都可以)。这个包不依赖于Manjaro的系统包,可以直接从镜像站下到

wget https://mirrors.tuna.tsinghua.edu.cn/manjaro/arm-stable/community/aarch64/khadas-utils-4-2-any.pkg.tar.zst

然后直接在alarm上用pacman就可以装(下载和安装分开,不然直接pacman -U + 地址的话要信任Manjaro的密钥,你在alarm上要从头开始整个信任,贼费时间)

pacman -U khadas-utils-4-2-any.pkg.tar.zst

然后就可以启用它提供的sound.service

systemctl enable sound.service

重启可以看下是不是正常,如果声音仍然不工作,可能是因为你的盒子用的是旧的conf对应的声音输出路线,需要在/usr/bin/g12_sound.sh里面注释掉L137-L142对应的新配置(主要是给G12B用的,也就是S922X,旧的G12A/S905X2之前,以及基于G12A的SM1/S905X3大部分用不来)

# Amlogic G12 HDMI to PCM0 - NEW CONF
# mixer $card 'FRDDR_A SINK 1 SEL' 'OUT 0'
# mixer $card 'FRDDR_A SRC 1 EN' on
# mixer $card 'TDMOUT_A SRC SEL' 'IN 0'
# mixer $card 'TOHDMITX' on
# mixer $card 'TOHDMITX I2S SRC' 'I2S A'

然后取消L130-L134对应的旧配置的注释

# Amlogic G12 HDMI to PCM0 - OLD CONF
  mixer $card 'FRDDR_A SINK 1 SEL' 'OUT 1'
  mixer $card 'FRDDR_A SRC 1 EN' on
  mixer $card 'TDMOUT_B SRC SEL' 'IN 0'
  mixer $card 'TOHDMITX I2S SRC' 'I2S B'
  mixer $card 'TOHDMITX' on

如果声音正常,因为alsa-utils包里面默认会安装alsa-restore.service并且在sound.target依赖中启用,每次关机前保存声卡配置,开机的时候恢复,这个设置正确声音路由的服务就没用了,你可以直接禁用甚至删除这个包(真实卸磨杀驴):

systemctl disable sound.service
pacman -Rcns khadas-utils

在BPi M5 (SM1, S905X3)上试验通过,HK1BOX当服务器没挪来试,其他设备应该可以照搬

Scirese commented 1 year ago

谢谢!

你考研之前还会继续维护你的项目吗,如果不维护的话,我放假想整一个(

7Ji @.***> 于 2022年11月25日周五 下午3:21写道:

SoC上面的声音子系统本身是工作正常的,只是没有正确的声音路径。Manjaro ARM 给 Amlogic打的包都有一个sound.service 和对应的g12_sound.sh,这个包由khadas-utils https://mirrors.tuna.tsinghua.edu.cn/manjaro/arm-stable/community/aarch64/khadas-utils-4-2-any.pkg.tar.zst 提供(不要被名字误导了,包含khadas只是因为khadas 是最早给Manjaro赞助开发板然后最早适配的,实际上里面的内容给所有Amlogic设备用都可以)。这个包不依赖于Manjaro的系统包,可以直接从镜像站下到

wget https://mirrors.tuna.tsinghua.edu.cn/manjaro/arm-stable/community/aarch64/khadas-utils-4-2-any.pkg.tar.zst

然后直接在alarm上用pacman就可以装(下载和安装分开,不然直接pacman -U + 地址的话要信任Manjaro的密钥,你在alarm上要从头开始整个信任,贼费时间)

pacman -U khadas-utils-4-2-any.pkg.tar.zst

然后就可以启用它提供的sound.service

systemctl enable sound.service

重启可以看下是不是正常,如果声音仍然不工作,可能是因为你的盒子用的是旧的conf对应的声音输出路线,需要在/usr/bin/g12_sound.sh 里面注释掉L137-L142对应的新配置(主要是给G12B用的,也就是S922X,旧的G12A/S905X2之前,以及基于G12A的SM1/S905X3大部分用不来)

Amlogic G12 HDMI to PCM0 - NEW CONF

mixer $card 'FRDDR_A SINK 1 SEL' 'OUT 0'

mixer $card 'FRDDR_A SRC 1 EN' on

mixer $card 'TDMOUT_A SRC SEL' 'IN 0'

mixer $card 'TOHDMITX' on

mixer $card 'TOHDMITX I2S SRC' 'I2S A'

然后取消L130-L134对应的旧配置的注释

Amlogic G12 HDMI to PCM0 - OLD CONF

mixer $card 'FRDDR_A SINK 1 SEL' 'OUT 1' mixer $card 'FRDDR_A SRC 1 EN' on mixer $card 'TDMOUT_B SRC SEL' 'IN 0' mixer $card 'TOHDMITX I2S SRC' 'I2S B' mixer $card 'TOHDMITX' on

如果声音正常,因为alsa-utils包里面默认会安装alsa-restore.service并且在sound.target 依赖中启用,每次关机前保存声卡配置,开机的时候恢复,这个设置正确声音路由的服务就没用了,你可以直接禁用甚至删除这个包(真实卸磨杀驴):

systemctl disable sound.service pacman -Rcns khadas-utils

在BPi M5 (SM1, S905X3)上试验通过,HK1BOX当服务器没挪来试,其他设备应该可以照搬

— You are receiving this because you commented.Message ID: @.***>

7Ji commented 1 year ago

我的所有项目会在今年年底25号笔试结束以后解除归档的。主要是我自己没有太多时间解决问题,如果不归档的话别人开了issue一个月没回复不太好。

Scirese commented 1 year ago

解决了吧,大概

probably solved (