Friday, September 10, 2010

用hda-verb解决alsa不能自动设置好神舟a460 alc269内置音箱的pin-clts的问题

新买的神舟a460笔记本的内置音箱不能出声
起初以为是喇叭坏了,因为windows也不出声,后来玩mac的时候偶然弄出了声音,这样的话linux开源先进性就一定可以自己tweak
今天花了几个小时找到了workaround,记录下来
感觉这种情况多发生在i3,i5,i7等较新平台

1,codec dump
代码:
cat /proc/asound/card0/codec#0

结果得到alc259,不知为何不是alc269

2.google上搜索alsa alc259
找到这里https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/582199
细读里面的内容,找到hda-analyzer
在hda-analyzer里面试着更改各种选项,发现最重要的是node 0x14里面的pin-ctls没有OUT,需要手动更改,但是每次重启都要重新设置才可以

又在上面的页面发现了hda-sound-tools这个软件包,里面有工具hda-verb
google hda-verb的用法发现可以通过SET_PIN_WIDGET_CONTROL这个参数正确设定pin-ctls
自己摸索出了
代码:
hda-verb /dev/snd/hwC0D0 0x14 SET_PIN_WIDGET_CONTROL 64

64是由0x40转换而来,0x40是在hda-analyzer里面发现的

3. 把上面命令加入
代码:
/etc/rc.local
以实现开机自动执行

重启搞定。
只不过插上耳机需要手动禁用内置喇叭。个人更喜欢这样。

类似问题:http://juanjoalvarez.net/en/detail/2010/jul/26/ubuntu-linux-1004-64bits-sony-vaio-vpc-eb-2x5e-vpc/
也是ix平台

1.不知道有高人还有更好的方法没有,比如写一个alsa的patch。。。我不会编程。。。
2.windows怎么tweak驱动可以达到这样的目的
3.mac下通过编辑voodoohda里面的nodetopatch也可以实现发声

Winload.exe错误及解决


安装ghostxp后,无法进入Vista,重启时会出现如下提示:


----------------------------------------------------------


Windows未能启动,原因可能是最近更改了硬件或软件,解决此问题的步骤:


1.插入Windows安装光盘并重新启动计算机


2.选择语言设置,然后单击“下一步”


3.单击“修复计算机”


如果没有此光盘,请与您的系统管理员或计算机制造商联系,以获得帮助


文件 \Windows\System32\Winload.exe


状态 0xc00000e


信息 无法加载所选项,因为应用程序失去或损坏


----------------------------------------------------------


• 故障原因分析:


(1)在实际应用中,Winload.exe发生损坏或丢失的可能性很小,错误一定是由其它原因起的。Vista安装分区改变容量大小,或者改变 Boot 文件夹所在分区的文件格式,都会引起BCD中Vista加载器 device 或者 osdevice 项的值发生变化,变成unknown,从而引起启动错误。


(2)在官方的解释中还有可能是最近更改了硬件或软件的原因。


(3)而由众多网友提供的实践结论是,不论是双系统还是只有一个Vista,只要用Ghost“重写”过活动分区,即使文件格式与分区大小都没变,再恢复Vista时就可能会出现这种情况。哪怕象联想机型运行一键恢复出厂设置都不能避免,这似乎是Ghost的一个BUG。


• 故障解决方法有以下几种:


1、Bcdedit命令解决办法


用WinPE启动,运行CMD(命令行模式),在\windows\system32目录下,运行如下三个命令,重启可进入Vista:


bcdedit /set {bootmgr} device boot


bcdedit /set {default} device boot


bcdedit /set {default} osdevice boot


bcdedit /set {default} detecthal 1


如果是XP和Vista的双系统,要事先在XP下用 bcdedit /v获知{bootmgr}和{default}的32位GUID,同时把 boot 换成具体的路径指向。在WinPE中使用bcdedit /set命令时用GUID替代以上内置保留标识符。例如:


bcdedit /set {9dea862c-5cdd-4e70-acc1-f32b344d4795} device partition=d:


bcdedit /set {320af4ca-47dd-11dd-98f7-000ae4c23645} device partition=d:


bcdedit /set {320af4ca-47dd-11dd-98f7-000ae4c23645} osdevice partition=d:


用Ghost备份双系统,提前在Vista下运行以上命令后再备份,以后Ghost恢复就不会有Winload.exe问题了。



这里就不太清楚partition=X:中,X是什么了,我直接用C:反正是成功了