X62 Linux 扬声器无声解决方法, Speaker no sound fix
本帖最后由 Quintus 于 2016-12-12 17:25 编辑此法须要使用 alsa-tools 内的 hda-verb
在 Debian / Ubuntu, 可以用 sudo apt-get install alsa-tools 安装。
This fix requires the alsa command line tool: hda-verb
You could install the tool in Debian/Ubuntu by sudo apt-get install alas-tools.
方法如下:
Steps:
1.
新增 /etc/modprobe.d/snd-hda-intel.conf 以改变 Intel HDA 各 codec 之次序。
改变 ALC662 为首个 card, 即 /dev/snd/hwC0D0
Add a modprobe conf /etc/modprobe.d/snd-hda-intel.conf for telling snd_hda_intel to set the ALC662 card as the first one.
# -- X62 Intel HDA order ------options snd-hda-intel model=auto index=1,0
2.
在 /usr/local/bin/ 增加一个脚本 /usr/local/bin/x62-speaker-fix 以 hda-verb 指令设定 Realtek ALC662 之 GPIO 控制功放芯片PAM8403。
Add a script /usr/local/bin/x62-speaker-fix for changing the ALC662 GPIO to turn on the external amplifier PAM8403.
#!/bin/sh## -- X62 ALC662 GPIO fix ------(/usr/bin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x01/usr/bin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIRECTION 0x01/usr/bin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x00) > /dev/null 2>&1
将之设为可执行
Make it executable.chmod a+x /usr/local/bin/x62-speaker-fix
3.
在 /etc/rc.local 加入命令在开机时设定 ALC662 的 GPIO。
Modify /etc/rc.local to include the script so that the ALC662 GPIO is set during boot up. # -- X62 ALC662 GPIO fix ------/usr/local/bin/x62-speaker-fix
4a.
适合用于 pm-utils
For pm-utils
在 /etc/pm/sleep.d 增加一个脚本 /etc/pm/sleep.d/80-x62-alsa
Add a resume script /etc/pm/sleep.d/80-x62-alsa to fix the GPIO when the machine resumes from suspend.
#!/bin/bashcase $1 in thaw|resume) echo "set ALC662 GPIO, 2 seconds after resume..." sleep 2 # Set ALC662 GPIO /usr/local/bin/x62-speaker-fix ;; *)echo "do nothing." ;;esac
将之设为可执行
Make it executable.
chmod a+x /etc/pm/sleep.d/80-x62-alsa
4b.
适合用于 systemd
For systemd
在 /lib/systemd/system-sleep 增加一个脚本 /lib/systemd/system-sleep/x62-alsa
Add a resume script /lib/systemd/system-sleep/x62-alsa to fix the GPIO when the machine resumes from suspend.
#!/bin/sh
case $1 inpost) sleep 2 # Set ALC662 GPIO /usr/local/bin/x62-speaker-fix ;;esac
将之设为可执行
Make it executable.chmod a+x /lib/systemd/system-sleep/x62-alsa
5.
再重新开机。重新开机后或许要以 alsamixer 取消扬声器静音。
After adding the scripts and configs, a reboot is needed. You may need to unmute the speaker by using alsamixer after reboot.
更新:
Update:
我发觉休眠后须要重新设定 ALC662 的 GPIO.
The GPIO has to be changed again after resume from suspend.
更新 2016-12-12:
Update 2016-12-12:
更新内文加入休眠后重设 GPIO 的脚本
Added scripts for changing GPIO after resume.
增加英文翻译
Added English translations.
谢谢,正好用到!! 更好的方法是将 hda-verb 的指令写进 kernel 的 alsa snd_hda_intel 驱动 (内的 patch_realtek.c)
这个待有时间我再研究。 wjytj 发表于 2016-10-14 22:03
谢谢,正好用到!!
此方法我用在 Debian sid 可行。请你试试,如果成功请报上 Linux 之版本。感谢。 不错
刚好有个客户正需要 我发给他连接
黑苹果可以不? Quintus 发表于 2016-10-14 22:04
更好的方法是将 hda-verb 的指令写进 kernel 的 alsa snd_hda_intel 驱动 (内的 patch_realtek.c)
这个待 ...
这种方式应该更好,但一旦内核更新了,要重新编译。 wjlyl 发表于 2016-10-14 22:54
黑苹果可以不?
没有时间折腾黑苹果,我估计是有可能,例如用 https://github.com/Dolnor/EAPD-Codec-Commander.
只好等各黑苹果高手出招了。
wjytj 发表于 2016-10-14 23:07
这种方式应该更好,但一旦内核更新了,要重新编译。
我是打算将修改提交给 ALSA 项目好让放进以后的 Linux 內核。 Quintus 发表于 2016-10-14 23:19
我是打算将修改提交给 ALSA 项目好让放进以后的 Linux 內核。
碰到高手了!厉害! Quintus 发表于 2016-10-14 21:53
此法须要使用 alsa-tools 内的 hda-verb
在 Debian / Ubuntu, 可以用 sudo apt-get install alsa-tools 安 ...
楼主厉害,在CentOS下试试。 Quintus 发表于 2016-10-14 22:08
此方法我用在 Debian sid 可行。请你试试,如果成功请报上 Linux 之版本。感谢。
实验成功,debian/testing现在外放有声音了,之前只有耳机有声。谢谢楼主!
期待直接编入内核的版本:) 添加了配置文件,也修改了rc.local。不过重启后还是没声音,你说的“重新开机后或许要以 alsamixer 取消扬声器静音”该如何操作 wjytj 发表于 2016-10-15 11:18
实验成功,debian/testing现在外放有声音了,之前只有耳机有声。谢谢楼主!
期待直接编入内核的版本
添加了配置文件,也修改了rc.local。不过重启后还是没声音,请问“重新开机后或许要以 alsamixer 取消扬声器静音”该如何操作
本帖最后由 Quintus 于 2016-10-15 18:43 编辑
xkillerz 发表于 2016-10-15 15:48
添加了配置文件,也修改了rc.local。不过重启后还是没声音,请问“重新开机后或许要以 alsamixer 取消扬 ...
sudo alsamixer
然后按 选 HDA Intel PCH
再用左右键选 Speaker
按 键取消静音 显示会由 MM 变为 00
再用相同方法取消 Master 静音
Quintus 发表于 2016-10-15 17:47
sudo alsamixer
然后按 选 HDA Intel PCH
再用左右键选 Speaker
我的speaker和master都不是静音了,然而依然没有声音。怎么办? Quintus 发表于 2016-10-15 17:47
sudo alsamixer
然后按 选 HDA Intel PCH
再用左右键选 Speaker
谢谢,不知道怎么弄得,现在有声音了 X62刚出掉,等第三批到手了。谢楼主。 Quintus 发表于 2016-10-14 21:53
此法须要使用 alsa-tools 内的 hda-verb
在 Debian / Ubuntu, 可以用 sudo apt-get install alsa-tools 安 ...
请问centos 6.8 内核版本为2.6.32,那在开机进到登录界面的时候,屏幕亮度是比较缓慢的变到正常,在系统里可以看到内核识别了显卡,这样就说明内核支持此显卡吗?谢谢 MetalMa 发表于 2016-10-17 10:31
请问centos 6.8 内核版本为2.6.32,那在开机进到登录界面的时候,屏幕亮度是比较缓慢的变到正常,在系统 ...
谢谢 转外国友人…… 就是要把622设成主声卡,理论上说是内核的问题,应该在编译时自动把显卡外的声卡设成主声卡。要不就要在操作层可以切换声卡。记得当年装LINUX时 ,SB16兼容声卡连驱动都没,要先进DOS装载SB16的兼容驱动,再LOADLINUX加载改成对应中断的SBPRO驱动才出声的 whhwhhwhh 发表于 2016-12-12 09:10
就是要把622设成主声卡,理论上说是内核的问题,应该在编译时自动把显卡外的声卡设成主声卡。要不就要在操 ...
对,就是要把 ALC662 设成主声卡。
另外是要改变 GPIO 打开功放芯片PAM8403。 我去,看不懂。。。。 archlinux按照这个方法仍然是没有声音,不知道哪里有问题,设置默认声卡是有效的,但是
/usr/bin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x01
/usr/bin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIRECTION 0x01
/usr/bin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x00
这几个命令执行完后,仍然没有声音 学习了。Mark。 厉害 如果要在arch上开启喇叭,需要在 systemd 开启 rc.local, arch 自带禁用rc.local
在 /usr/lib/systemd/system/rc-local.service 里添加
Description=/etc/rc.local compatibility
Type=oneshot
ExecStart=/etc/rc.local
RemainAfterExit=yes
WantedBy=multi-user.target
然后开启 rc.local:
systemctl enable rc-local.service
其他步骤一样不动
在自己 x62 的 manjaro 测试的,睡眠唤醒以及开机重启都没问题 xueyao 发表于 2018-2-8 13:06
如果要在arch上开启喇叭,需要在 systemd 开启 rc.local, arch 自带禁用rc.local
在 /usr/lib/systemd/s ...
ARCH 的话用这个吧 https://aur.archlinux.org/packages/x62-alsa-hacks/ 困扰好久了,试下。
页:
[1]