找回密码
 注册
快捷导航
查看: 8474|回复: 33

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

  [复制链接] |自动提醒
阅读字号:

38

回帖

7

积分

1521

资产值

高级会员 Rank: 2Rank: 2

注册时间
2015-9-19
发表于 2016-10-14 21:53:41| 字数 2,202| - 香港 城市电讯有限公司 | 显示全部楼层 |阅读模式
本帖最后由 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 资产值 +200 收起 理由
HOPE 0 + 200 很给力!

查看全部评分

X62 - 1132, 1133

231

回帖

44

积分

3920

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2003-3-1
铜牌荣誉勋章(注册8年以上会员)
发表于 2016-10-14 22:03:11| 字数 9| - 河北省 移动/数据上网公共出口 来自手机版 | 显示全部楼层
谢谢,正好用到!!
Surface Book i7+512G SSD+16G+13.5
X62 i7+512G SSD+16G+12.1 SXGA
回复 支持 反对

使用道具 举报

38

回帖

7

积分

1521

资产值

高级会员 Rank: 2Rank: 2

注册时间
2015-9-19
 楼主| 发表于 2016-10-14 22:04:45| 字数 76| - 香港 城市电讯有限公司 | 显示全部楼层
更好的方法是将 hda-verb 的指令写进 kernel 的 alsa snd_hda_intel 驱动 (内的 patch_realtek.c)
这个待有时间我再研究。
X62 - 1132, 1133
回复 支持 反对

使用道具 举报

38

回帖

7

积分

1521

资产值

高级会员 Rank: 2Rank: 2

注册时间
2015-9-19
 楼主| 发表于 2016-10-14 22:08:01| 字数 80| - 香港 城市电讯有限公司 | 显示全部楼层
QUOTE:
wjytj 发表于 2016-10-14 22:03
谢谢,正好用到!!

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

点评

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

使用道具 举报

zhangyongtao - 液晶屏改装

8万

回帖

669

积分

4万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2003-12-21
银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)月全勤勋章银牌荣誉勋章(注册10年以上会员)金牌荣誉勋章(注册20年以上会员)
发表于 2016-10-14 22:39:03| 字数 17| - 河南省郑州市 电信 | 显示全部楼层
不错
刚好有个客户正需要 我发给他连接
各种屏幕改装,2K 4K改装服务       B站:西莫迪 ,旺旺:液晶服务 微信号:lcdfans QQ21144474
X1C 2018 i7 16G 1T 2K/P53 I7-64G-6T-4K HDR/X2100 I7-10710U
回复 支持 反对

使用道具 举报

2668

回帖

36

积分

7226

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2008-11-6
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)
发表于 2016-10-14 22:54:32| 字数 7| - 四川省成都市 电信 来自手机版 | 显示全部楼层
黑苹果可以不?
T400:p9700,1440˟900;x61:T8100(OC).1440˟1050;X62:1195(2144),I7-5600U,1440˟1050。
回复 支持 反对

使用道具 举报

231

回帖

44

积分

3920

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2003-3-1
铜牌荣誉勋章(注册8年以上会员)
发表于 2016-10-14 23:07:01| 字数 126| - 河北省 移动/数据上网公共出口 来自手机版 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-14 22:04
更好的方法是将 hda-verb 的指令写进 kernel 的 alsa snd_hda_intel 驱动 (内的 patch_realtek.c)
这个待 ...

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

使用道具 举报

38

回帖

7

积分

1521

资产值

高级会员 Rank: 2Rank: 2

注册时间
2015-9-19
 楼主| 发表于 2016-10-14 23:14:22| 字数 117| - 香港 城市电讯有限公司 | 显示全部楼层
QUOTE:
wjlyl 发表于 2016-10-14 22:54
黑苹果可以不?

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

使用道具 举报

38

回帖

7

积分

1521

资产值

高级会员 Rank: 2Rank: 2

注册时间
2015-9-19
 楼主| 发表于 2016-10-14 23:19:02| 字数 84| - 香港 城市电讯有限公司 | 显示全部楼层
QUOTE:
wjytj 发表于 2016-10-14 23:07
这种方式应该更好,但一旦内核更新了,要重新编译。

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

使用道具 举报

231

回帖

44

积分

3920

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2003-3-1
铜牌荣誉勋章(注册8年以上会员)
发表于 2016-10-15 06:15:54| 字数 71| - 广东省 移动/数据上网公共出口 来自手机版 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-14 23:19
我是打算将修改提交给 ALSA 项目好让放进以后的 Linux 內核。

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

使用道具 举报

1万

回帖

201

积分

11万

资产值

至尊会员II Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2010-11-18
年全勤勋章2021年全勤勋章2020年全勤勋章2019铜牌荣誉勋章(注册8年以上会员)月全勤勋章年全勤勋章2017年全勤勋章2018银牌荣誉勋章(注册10年以上会员)
发表于 2016-10-15 06:28:25| 字数 123| - 河南省郑州市 移动 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-14 21:53
此法须要使用 alsa-tools 内的 hda-verb
在 Debian / Ubuntu, 可以用 sudo apt-get install alsa-tools 安 ...

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

使用道具 举报

231

回帖

44

积分

3920

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2003-3-1
铜牌荣誉勋章(注册8年以上会员)
发表于 2016-10-15 11:18:01| 字数 126| - 广东省广州市 教育网/华南理工大学南校区 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-14 22:08
此方法我用在 Debian sid 可行。请你试试,如果成功请报上 Linux 之版本。感谢。

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

期待直接编入内核的版本
Surface Book i7+512G SSD+16G+13.5
X62 i7+512G SSD+16G+12.1 SXGA
回复 支持 反对

使用道具 举报

319

回帖

6

积分

1497

资产值

高级会员 Rank: 2Rank: 2

注册时间
2012-4-5
发表于 2016-10-15 15:47:48| 字数 67| - 湖南省长沙市 电信 | 显示全部楼层
添加了配置文件,也修改了rc.local。不过重启后还是没声音,你说的“重新开机后或许要以 alsamixer 取消扬声器静音”该如何操作
回复 支持 反对

使用道具 举报

319

回帖

6

积分

1497

资产值

高级会员 Rank: 2Rank: 2

注册时间
2012-4-5
发表于 2016-10-15 15:48:09| 字数 148| - 湖南省长沙市 电信 | 显示全部楼层
QUOTE:
wjytj 发表于 2016-10-15 11:18
实验成功,debian/testing现在外放有声音了,之前只有耳机有声。谢谢楼主!

期待直接编入内核的版本

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

使用道具 举报

38

回帖

7

积分

1521

资产值

高级会员 Rank: 2Rank: 2

注册时间
2015-9-19
 楼主| 发表于 2016-10-15 17:47:07| 字数 201| - 香港 香港宽频网络(HKBN) | 显示全部楼层
本帖最后由 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 静音


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
X62 - 1132, 1133
回复 支持 反对

使用道具 举报

319

回帖

6

积分

1497

资产值

高级会员 Rank: 2Rank: 2

注册时间
2012-4-5
发表于 2016-10-15 19:31:25| 字数 112| - 湖南省长沙市 电信 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-15 17:47
sudo alsamixer
然后按 [F6] 选 HDA Intel PCH
再用左右键选 Speaker

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

点评

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

使用道具 举报

319

回帖

6

积分

1497

资产值

高级会员 Rank: 2Rank: 2

注册时间
2012-4-5
发表于 2016-10-15 21:30:59| 字数 93| - 湖南省长沙市 电信 | 显示全部楼层
QUOTE:
Quintus 发表于 2016-10-15 17:47
sudo alsamixer
然后按 [F6] 选 HDA Intel PCH
再用左右键选 Speaker

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

使用道具 举报

2417

回帖

31

积分

2046

资产值

白金会员 Rank: 3Rank: 3Rank: 3

注册时间
2008-9-10
铜牌荣誉勋章(注册8年以上会员)
发表于 2016-10-17 10:07:40| 字数 19| - 天津市 移动 | 显示全部楼层
X62刚出掉,等第三批到手了。谢楼主。
coding for fun
回复 支持 反对

使用道具 举报

12

回帖

1

积分

399

资产值

初级会员 Rank: 1

注册时间
2016-9-20
发表于 2016-10-17 10:31:58| 字数 191| - 上海市 电信 | 显示全部楼层
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
回复 支持 反对

使用道具 举报

12

回帖

1

积分

399

资产值

初级会员 Rank: 1

注册时间
2016-9-20
发表于 2016-10-17 12:08:45| 字数 91| - 上海市 电信 | 显示全部楼层
QUOTE:
MetalMa 发表于 2016-10-17 10:31
请问centos 6.8 内核版本为2.6.32,那在开机进到登录界面的时候,屏幕亮度是比较缓慢的变到正常,在系统 ...

谢谢
回复 支持 反对

使用道具 举报

7万

回帖

560

积分

18万

资产值

天下无敌I Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

注册时间
2011-10-18
年全勤勋章2021年全勤勋章2020年全勤勋章2019月全勤勋章年全勤勋章2017铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)年全勤勋章2022
发表于 2016-12-11 21:51:27| 字数 7| - 天津市 联通 | 显示全部楼层
转外国友人……
TM4320 C54 L75 T77 T81;R8;EPC;
X41;X61:T75 83, X61T,X61s;
X200: P84 86 87 88; X200T;
X200s:C723 U35 L93 94;
X300; X301; X220; X1h;
X230; X1c2013
回复 支持 反对

使用道具 举报

705

回帖

12

积分

2015

资产值

黄金会员 Rank: 3Rank: 3Rank: 3

注册时间
2012-12-20
发表于 2016-12-12 09:10:04| 字数 134| - 上海市虹口区 电信/静安区电信 来自手机版 | 显示全部楼层
就是要把622设成主声卡,理论上说是内核的问题,应该在编译时自动把显卡外的声卡设成主声卡。要不就要在操作层可以切换声卡。记得当年装LINUX时 ,SB16兼容声卡连驱动都没,要先进DOS装载SB16的兼容驱动,再LOADLINUX加载改成对应中断的SBPRO驱动才出声的
X61T L7500 3G 60GX2 ESATA USB3 高速SD读卡器 关机冲电宝(不需AC电源)
回复 支持 反对

使用道具 举报

38

回帖

7

积分

1521

资产值

高级会员 Rank: 2Rank: 2

注册时间
2015-9-19
 楼主| 发表于 2016-12-12 10:38:58| 字数 129| - 香港 电讯盈科有限公司 | 显示全部楼层
QUOTE:
whhwhhwhh 发表于 2016-12-12 09:10
就是要把622设成主声卡,理论上说是内核的问题,应该在编译时自动把显卡外的声卡设成主声卡。要不就要在操 ...

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

点评

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

使用道具 举报

281

回帖

7

积分

1789

资产值

高级会员 Rank: 2Rank: 2

注册时间
2013-12-3
发表于 2016-12-12 15:02:04| 字数 10| - 江苏省南通市 电信 | 显示全部楼层
我去,看不懂。。。。
回复 支持 反对

使用道具 举报

111

回帖

10

积分

1497

资产值

黄金会员 Rank: 3Rank: 3Rank: 3

注册时间
2014-5-21
发表于 2016-12-30 23:42:33| 字数 225| - 上海市浦东新区 电信 | 显示全部楼层
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
这几个命令执行完后,仍然没有声音
回复 支持 反对

使用道具 举报

5661

回帖

56

积分

8万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2013-2-19
年全勤勋章2022月全勤勋章铜牌荣誉勋章(注册8年以上会员)年全勤勋章2023银牌荣誉勋章(注册10年以上会员)
发表于 2016-12-31 23:41:57| 字数 9| - 山西省太原市 电信 | 显示全部楼层
学习了。Mark。
L570/L560/X301/X201/T410s/T43p/X41/天逸F40A/T61p/T50/
回复 支持 反对

使用道具 举报

9792

回帖

84

积分

1万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2005-5-24
银牌荣誉勋章(注册10年以上会员)
发表于 2017-1-2 22:04:29| 字数 2| - 上海市虹口区 电信 | 显示全部楼层
厉害
t23 1.33 480G+USB2.0X3; sata x41t; t43p被窃;t61p,w500;w700ds;x61t;x200t,t410,x230t,t50
回复 支持 反对

使用道具 举报

96

回帖

11

积分

6276

资产值

黄金会员 Rank: 3Rank: 3Rank: 3

注册时间
2017-11-30
发表于 2018-2-8 13:06:00| 字数 321| - 新加坡 星和视界(StarHub)宽带 | 显示全部楼层
如果要在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 测试的,睡眠唤醒以及开机重启都没问题
回复 支持 反对

使用道具 举报

38

回帖

7

积分

1521

资产值

高级会员 Rank: 2Rank: 2

注册时间
2015-9-19
 楼主| 发表于 2018-2-22 17:28:27| 字数 161| - 香港 香港城市电讯(香港宽频) | 显示全部楼层
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/
X62 - 1132, 1133
回复 支持 反对

使用道具 举报

5541

回帖

55

积分

3万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2005-7-1
铜牌荣誉勋章(注册8年以上会员)银牌荣誉勋章(注册10年以上会员)银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)
发表于 2019-3-17 12:03:44| 字数 9| - 湖北省武汉市 电信 | 显示全部楼层
困扰好久了,试下。
X201s  5143-28U/I7-640LM/8G/500G/win7/1440*900/BT/9C/
X62 I7-5600U /16G/ 120G MSATA/win7/ IPS 1400*1050/BT/9C/
回复 支持 反对

使用道具 举报

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

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2024-5-16 05:39 , Processed in 0.228793 second(s), 81 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|联系我们|专门网

返回顶部