专门网论坛

 找回密码
 立即注册

新浪微博登陆

只需一步, 快速开始

快捷登录

【蓝天科技】华为 小米 ThinkPad专门网 纪念品蜗牛家8月最新活动南京Thinkpad港行八达网海淘转运公司
DELL 母鸡兄 母鸡成色
查看: 6576|回复: 33

[求助] X62 Linux 扬声器无声解决方法, Speaker no sound fix

[复制链接] [ 182字 ]

入门会员 Rank: 1

帖子
40
积分
0.4
技术分
0.3 分
资产值
1316 nb
联谊分
0 分
注册时间
2015-9-19
发表于 2016-10-14 21:53:41 | 显示全部楼层 |阅读模式
本帖最后由 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/bash
case $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 in
  post)
    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.






评分

参与人数 1技术分 +0.1 资产值 +200 收起 理由
HOPE + 0.1 + 200 很给力!

查看全部评分

入门会员 Rank: 1

帖子
239
积分
0.4
技术分
0 分
资产值
3442 nb
联谊分
0 分
注册时间
2003-3-1
银牌荣誉勋章(注册8年以上会员)
发表于 2016-10-14 22:03:11 来自手机版 | 显示全部楼层
谢谢,正好用到!!
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
40
积分
0.4
技术分
0.3 分
资产值
1316 nb
联谊分
0 分
注册时间
2015-9-19
 楼主| 发表于 2016-10-14 22:04:45 | 显示全部楼层
更好的方法是将 hda-verb 的指令写进 kernel 的 alsa snd_hda_intel 驱动 (内的 patch_realtek.c)
这个待有时间我再研究。
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
40
积分
0.4
技术分
0.3 分
资产值
1316 nb
联谊分
0 分
注册时间
2015-9-19
 楼主| 发表于 2016-10-14 22:08:01 | 显示全部楼层
QUOTE:
wjytj 发表于 2016-10-14 22:03
谢谢,正好用到!!

此方法我用在 Debian sid 可行。请你试试,如果成功请报上 Linux 之版本。感谢。

点评

好,我是debian/testing,出差回去试后再汇报结果!  详情 回复 发表于 2016-10-14 23:05
回复 支持 反对

使用道具 举报

zhangyongtao - 液晶屏专卖

认证商家 Rank: 4Rank: 4Rank: 4Rank: 4

帖子
75576
积分
10
技术分
5.2 分
资产值
1247 nb
联谊分
0.1 分
注册时间
2003-12-21
金牌荣誉勋章(注册10年以上会员)离任版主银牌荣誉勋章(注册8年以上会员)
发表于 2016-10-14 22:39:03 | 显示全部楼层
不错
刚好有个客户正需要 我发给他连接
回复 支持 反对

使用道具 举报

初级会员 Rank: 2Rank: 2

帖子
2581
积分
3.7
技术分
3.2 分
资产值
6074 nb
联谊分
0 分
注册时间
2008-11-6
银牌荣誉勋章(注册8年以上会员)
发表于 2016-10-14 22:54:32 来自手机版 | 显示全部楼层
黑苹果可以不?
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
239
积分
0.4
技术分
0 分
资产值
3442 nb
联谊分
0 分
注册时间
2003-3-1
银牌荣誉勋章(注册8年以上会员)
发表于 2016-10-14 23:07:01 来自手机版 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-14 22:04
更好的方法是将 hda-verb 的指令写进 kernel 的 alsa snd_hda_intel 驱动 (内的 patch_realtek.c)
这个待 ...

这种方式应该更好,但一旦内核更新了,要重新编译。
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
40
积分
0.4
技术分
0.3 分
资产值
1316 nb
联谊分
0 分
注册时间
2015-9-19
 楼主| 发表于 2016-10-14 23:14:22 | 显示全部楼层
QUOTE:
wjlyl 发表于 2016-10-14 22:54
黑苹果可以不?

没有时间折腾黑苹果,我估计是有可能,例如用 https://github.com/Dolnor/EAPD-Codec-Commander.
只好等各黑苹果高手出招了。
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
40
积分
0.4
技术分
0.3 分
资产值
1316 nb
联谊分
0 分
注册时间
2015-9-19
 楼主| 发表于 2016-10-14 23:19:02 | 显示全部楼层
QUOTE:
wjytj 发表于 2016-10-14 23:07
这种方式应该更好,但一旦内核更新了,要重新编译。

我是打算将修改提交给 ALSA 项目好让放进以后的 Linux 內核。
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
239
积分
0.4
技术分
0 分
资产值
3442 nb
联谊分
0 分
注册时间
2003-3-1
银牌荣誉勋章(注册8年以上会员)
发表于 2016-10-15 06:15:54 来自手机版 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-14 23:19
我是打算将修改提交给 ALSA 项目好让放进以后的 Linux 內核。

碰到高手了!厉害!
回复 支持 反对

使用道具 举报

中级会员 Rank: 3Rank: 3Rank: 3

帖子
9933
积分
4.4
技术分
0.3 分
资产值
65452 nb
联谊分
0 分
注册时间
2010-11-18
银牌荣誉勋章(注册8年以上会员)月全勤勋章年全勤勋章2017年全勤勋章2018
发表于 2016-10-15 06:28:25 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-14 21:53
此法须要使用 alsa-tools 内的 hda-verb
在 Debian / Ubuntu, 可以用 sudo apt-get install alsa-tools 安 ...

楼主厉害,在CentOS下试试。
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
239
积分
0.4
技术分
0 分
资产值
3442 nb
联谊分
0 分
注册时间
2003-3-1
银牌荣誉勋章(注册8年以上会员)
发表于 2016-10-15 11:18:01 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-14 22:08
此方法我用在 Debian sid 可行。请你试试,如果成功请报上 Linux 之版本。感谢。

实验成功,debian/testing现在外放有声音了,之前只有耳机有声。谢谢楼主!

期待直接编入内核的版本
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
324
积分
0.1
技术分
0 分
资产值
1497 nb
联谊分
0 分
注册时间
2012-4-5
发表于 2016-10-15 15:47:48 | 显示全部楼层
添加了配置文件,也修改了rc.local。不过重启后还是没声音,你说的“重新开机后或许要以 alsamixer 取消扬声器静音”该如何操作
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
324
积分
0.1
技术分
0 分
资产值
1497 nb
联谊分
0 分
注册时间
2012-4-5
发表于 2016-10-15 15:48:09 | 显示全部楼层
QUOTE:
wjytj 发表于 2016-10-15 11:18
实验成功,debian/testing现在外放有声音了,之前只有耳机有声。谢谢楼主!

期待直接编入内核的版本

添加了配置文件,也修改了rc.local。不过重启后还是没声音,请问“重新开机后或许要以 alsamixer 取消扬声器静音”该如何操作
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
40
积分
0.4
技术分
0.3 分
资产值
1316 nb
联谊分
0 分
注册时间
2015-9-19
 楼主| 发表于 2016-10-15 17:47:07 | 显示全部楼层
本帖最后由 Quintus 于 2016-10-15 18:43 编辑
QUOTE:
xkillerz 发表于 2016-10-15 15:48
添加了配置文件,也修改了rc.local。不过重启后还是没声音,请问“重新开机后或许要以 alsamixer 取消扬 ...

sudo alsamixer
然后按 [F6] 选 HDA Intel PCH
再用左右键选 Speaker
按 [M] 键取消静音 显示会由 MM 变为 00
再用相同方法取消 Master 静音


x62-alsamixer.gif
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
324
积分
0.1
技术分
0 分
资产值
1497 nb
联谊分
0 分
注册时间
2012-4-5
发表于 2016-10-15 19:31:25 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-15 17:47
sudo alsamixer
然后按 [F6] 选 HDA Intel PCH
再用左右键选 Speaker

我的speaker和master都不是静音了,然而依然没有声音。怎么办?

点评

我的是基于debian的deepin  详情 回复 发表于 2016-10-15 19:31
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
324
积分
0.1
技术分
0 分
资产值
1497 nb
联谊分
0 分
注册时间
2012-4-5
发表于 2016-10-15 21:30:59 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-15 17:47
sudo alsamixer
然后按 [F6] 选 HDA Intel PCH
再用左右键选 Speaker

谢谢,不知道怎么弄得,现在有声音了
回复 支持 1 反对 0

使用道具 举报

入门会员 Rank: 1

帖子
2301
积分
0.4
技术分
0.1 分
资产值
1513 nb
联谊分
0 分
注册时间
2008-9-10
银牌荣誉勋章(注册8年以上会员)
发表于 2016-10-17 10:07:40 | 显示全部楼层
X62刚出掉,等第三批到手了。谢楼主。
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
14
积分
0
技术分
0 分
资产值
399 nb
联谊分
0 分
注册时间
2016-9-20
发表于 2016-10-17 10:31:58 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-14 21:53
此法须要使用 alsa-tools 内的 hda-verb
在 Debian / Ubuntu, 可以用 sudo apt-get install alsa-tools 安 ...

请问centos 6.8 内核版本为2.6.32,那在开机进到登录界面的时候,屏幕亮度是比较缓慢的变到正常,在系统里可以看到内核识别了显卡,这样就说明内核支持此显卡吗?谢谢

点评

建议更新到 CentOS 7 如果有特别原因要用 CentOS 6.8, 可考虑用虚拟机。 CentOS 6.8 (RHEL 6.8) 支持 X62 的五代 i7 CPU, 但不确定核显的支持是否完整。 Linux 的显示卡支持涉及好几个套件,不单内核。  详情 回复 发表于 2016-10-17 11:53
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
14
积分
0
技术分
0 分
资产值
399 nb
联谊分
0 分
注册时间
2016-9-20
发表于 2016-10-17 12:08:45 | 显示全部楼层
QUOTE:
MetalMa 发表于 2016-10-17 10:31
请问centos 6.8 内核版本为2.6.32,那在开机进到登录界面的时候,屏幕亮度是比较缓慢的变到正常,在系统 ...

谢谢
回复 支持 反对

使用道具 举报

高级会员 Rank: 4Rank: 4Rank: 4Rank: 4

帖子
55313
积分
10.8
技术分
0 分
资产值
86041 nb
联谊分
3.4 分
注册时间
2011-10-18
月全勤勋章年全勤勋章2017
发表于 2016-12-11 21:51:27 | 显示全部楼层
转外国友人……
回复 支持 反对

使用道具 举报

初级会员 Rank: 2Rank: 2

帖子
718
积分
2.1
技术分
1.9 分
资产值
2001 nb
联谊分
0 分
注册时间
2012-12-20
发表于 2016-12-12 09:10:04 来自手机版 | 显示全部楼层
就是要把622设成主声卡,理论上说是内核的问题,应该在编译时自动把显卡外的声卡设成主声卡。要不就要在操作层可以切换声卡。记得当年装LINUX时 ,SB16兼容声卡连驱动都没,要先进DOS装载SB16的兼容驱动,再LOADLINUX加载改成对应中断的SBPRO驱动才出声的
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
40
积分
0.4
技术分
0.3 分
资产值
1316 nb
联谊分
0 分
注册时间
2015-9-19
 楼主| 发表于 2016-12-12 10:38:58 | 显示全部楼层
QUOTE:
whhwhhwhh 发表于 2016-12-12 09:10
就是要把622设成主声卡,理论上说是内核的问题,应该在编译时自动把显卡外的声卡设成主声卡。要不就要在操 ...

对,就是要把 ALC662 设成主声卡。
另外是要改变 GPIO 打开功放芯片PAM8403。

点评

看来 LINUX总是比硬件发展慢一点, 没办法,肯写 驱动的厂商还是少呀  详情 回复 发表于 2016-12-12 18:16
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
299
积分
0.1
技术分
0 分
资产值
1523 nb
联谊分
0 分
注册时间
2013-12-3
发表于 2016-12-12 15:02:04 | 显示全部楼层
我去,看不懂。。。。
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
124
积分
0.1
技术分
0 分
资产值
1411 nb
联谊分
0 分
注册时间
2014-5-21
发表于 2016-12-30 23:42:33 | 显示全部楼层
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
这几个命令执行完后,仍然没有声音
回复 支持 反对

使用道具 举报

初级会员 Rank: 2Rank: 2

帖子
5323
积分
2.9
技术分
0.1 分
资产值
49465 nb
联谊分
0 分
注册时间
2013-2-19
首批微信订阅号关注用户(限量200个)月全勤勋章
发表于 2016-12-31 23:41:57 | 显示全部楼层
学习了。Mark。
回复 支持 反对

使用道具 举报

初级会员 Rank: 2Rank: 2

帖子
8949
积分
1
技术分
0 分
资产值
7898 nb
联谊分
0 分
注册时间
2005-5-24
金牌荣誉勋章(注册10年以上会员)
发表于 2017-1-2 22:04:29 | 显示全部楼层
厉害
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
85
积分
0.2
技术分
0 分
资产值
4498 nb
联谊分
0 分
注册时间
2017-11-30
发表于 2018-2-8 13:06:00 | 显示全部楼层
如果要在arch上开启喇叭,需要在 systemd 开启 rc.local, arch 自带禁用rc.local

在 /usr/lib/systemd/system/rc-local.service 里添加

[Unit]
Description=/etc/rc.local compatibility

[Service]
Type=oneshot
ExecStart=/etc/rc.local
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

然后开启 rc.local:

systemctl enable rc-local.service

其他步骤一样不动

在自己 x62 的 manjaro 测试的,睡眠唤醒以及开机重启都没问题
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
40
积分
0.4
技术分
0.3 分
资产值
1316 nb
联谊分
0 分
注册时间
2015-9-19
 楼主| 发表于 2018-2-22 17:28:27 | 显示全部楼层
QUOTE:
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/
回复 支持 反对

使用道具 举报

初级会员 Rank: 2Rank: 2

帖子
5379
积分
1.8
技术分
0 分
资产值
29228 nb
联谊分
0 分
注册时间
2005-7-1
银牌荣誉勋章(注册8年以上会员)金牌荣誉勋章(注册10年以上会员)
发表于 2019-3-17 12:03:44 | 显示全部楼层
困扰好久了,试下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.2 © 2001-2018 Comsenz Inc & 51nb.com

GMT+8, 2019-8-18 08:53 , Processed in 0.134860 second(s), 134 queries , Gzip On, OPcache On, Redis On.

手机版|小黑屋|客户端|Archiver|||专门网 ( 粤B2-20050246 )

返回顶部