专门网论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

【天天数码】X270 T470P T470SThinkPad美行现货 北京特价 SSD 固态硬盘专卖【藤条】ThinkPad港行笔记本专卖█ NANCH南旗 █ 专业拆机工具
ThinkPad T430 X240现货促销51nb定制版 X62 配件中心■笔记本有毒■T440S X240 X230thinkpad键盘 风扇 笔记本配件【广告位咨询】 QQ:573574819
查看: 2851|回复: 30
收藏11 打印 上一主题 下一主题

X62 Linux 扬声器无声解决方法, Speaker no sound fix

[复制链接] [ 182字 ]

入门会员 Rank: 1

帖子
32
积分
0.4
技术分
0.3 分
资产值
964 nb
联谊分
0 分
注册时间
2015-9-19
跳转到指定楼层
1#
发表于 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 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享到新浪微博
回复

使用道具 举报

入门会员 Rank: 1

帖子
233
积分
0.3
技术分
0 分
资产值
2378 nb
联谊分
0 分
注册时间
2003-3-1
银牌荣誉勋章(注册8年以上会员)
2#
发表于 2016-10-14 22:03:11 来自手机版 | 只看该作者
谢谢,正好用到!!
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

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

使用道具 举报

入门会员 Rank: 1

帖子
32
积分
0.4
技术分
0.3 分
资产值
964 nb
联谊分
0 分
注册时间
2015-9-19
4#
 楼主| 发表于 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

帖子
65768
积分
8.3
技术分
4 分
资产值
3855 nb
联谊分
0.1 分
注册时间
2003-12-21
金牌荣誉勋章(注册10年以上会员)离任版主银牌荣誉勋章(注册8年以上会员)
5#
发表于 2016-10-14 22:39:03 | 只看该作者
不错
刚好有个客户正需要 我发给他连接
回复 支持 反对

使用道具 举报

初级会员 Rank: 2Rank: 2

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

使用道具 举报

入门会员 Rank: 1

帖子
233
积分
0.3
技术分
0 分
资产值
2378 nb
联谊分
0 分
注册时间
2003-3-1
银牌荣誉勋章(注册8年以上会员)
7#
发表于 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

帖子
32
积分
0.4
技术分
0.3 分
资产值
964 nb
联谊分
0 分
注册时间
2015-9-19
8#
 楼主| 发表于 2016-10-14 23:14:22 | 只看该作者
QUOTE:
wjlyl 发表于 2016-10-14 22:54
黑苹果可以不?

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

使用道具 举报

入门会员 Rank: 1

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

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

使用道具 举报

入门会员 Rank: 1

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

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

使用道具 举报

初级会员 Rank: 2Rank: 2

帖子
6600
积分
2.9
技术分
0.3 分
资产值
41299 nb
联谊分
0 分
注册时间
2010-11-18
月全勤勋章
11#
发表于 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

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

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

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

使用道具 举报

入门会员 Rank: 1

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

使用道具 举报

入门会员 Rank: 1

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

期待直接编入内核的版本

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

使用道具 举报

入门会员 Rank: 1

帖子
32
积分
0.4
技术分
0.3 分
资产值
964 nb
联谊分
0 分
注册时间
2015-9-19
15#
 楼主| 发表于 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 (106.28 KB, 下载次数: 1)

x62-alsamixer.gif
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
316
积分
0.1
技术分
0 分
资产值
1449 nb
联谊分
0 分
注册时间
2012-4-5
16#
发表于 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

帖子
316
积分
0.1
技术分
0 分
资产值
1449 nb
联谊分
0 分
注册时间
2012-4-5
17#
发表于 2016-10-15 21:30:59 | 只看该作者
QUOTE:
Quintus 发表于 2016-10-15 17:47
sudo alsamixer
然后按 [F6] 选 HDA Intel PCH
再用左右键选 Speaker

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

使用道具 举报

入门会员 Rank: 1

帖子
2032
积分
0.3
技术分
0.1 分
资产值
786 nb
联谊分
0 分
注册时间
2008-9-10
银牌荣誉勋章(注册8年以上会员)
18#
发表于 2016-10-17 10:07:40 | 只看该作者
X62刚出掉,等第三批到手了。谢楼主。
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
14
积分
0
技术分
0 分
资产值
399 nb
联谊分
0 分
注册时间
2016-9-20
19#
发表于 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
20#
发表于 2016-10-17 12:08:45 | 只看该作者
QUOTE:
MetalMa 发表于 2016-10-17 10:31
请问centos 6.8 内核版本为2.6.32,那在开机进到登录界面的时候,屏幕亮度是比较缓慢的变到正常,在系统 ...

谢谢
回复 支持 反对

使用道具 举报

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

帖子
38205
积分
6.1
技术分
0 分
资产值
49420 nb
联谊分
1.5 分
注册时间
2011-10-18
月全勤勋章
21#
发表于 2016-12-11 21:51:27 | 只看该作者
转外国友人……
回复 支持 反对

使用道具 举报

初级会员 Rank: 2Rank: 2

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

使用道具 举报

入门会员 Rank: 1

帖子
32
积分
0.4
技术分
0.3 分
资产值
964 nb
联谊分
0 分
注册时间
2015-9-19
23#
 楼主| 发表于 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

帖子
171
积分
0.1
技术分
0 分
资产值
687 nb
联谊分
0 分
注册时间
2013-12-3
24#
发表于 2016-12-12 15:02:04 | 只看该作者
我去,看不懂。。。。
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
74
积分
0.1
技术分
0 分
资产值
636 nb
联谊分
0 分
注册时间
2014-5-21
25#
发表于 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

帖子
3775
积分
1.8
技术分
0.1 分
资产值
30064 nb
联谊分
0 分
注册时间
2013-2-19
月全勤勋章
26#
发表于 2016-12-31 23:41:57 | 只看该作者
学习了。Mark。
回复 支持 反对

使用道具 举报

入门会员 Rank: 1

帖子
8208
积分
0.8
技术分
0 分
资产值
6122 nb
联谊分
0 分
注册时间
2005-5-24
金牌荣誉勋章(注册10年以上会员)
27#
发表于 2017-1-2 22:04:29 | 只看该作者
厉害
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2017-6-26 09:16 , Processed in 0.421671 second(s), 131 queries , Gzip On, OPcache On, Memcache On.

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

返回顶部