drcc 发表于 2015-2-1 20:07

ALC269vb仿冒驱动找节点学习

参考 love2335https://bbs.pcbeta.com/viewthread-1387094-1-1.html
mudzonehttps://bbs.pcbeta.com/viewthread-613358-1-1.html
从linux提取出了本本的codec#0

终端cat /proc/asound/card0/codec#0 > ~/Desktop/codec_dump.txt
sudo cp /proc/asound/card0/codec#0 ~/          皆可提取出

经验没有,就下载verbit.zip
下载到了WIN,解压,再放到linux下,居然没了可执行权限,ubuntu下右键-属性 --权限勾上允许此文件作为程序运行,就起效。或终端chmod 755 verbit
把codec#0verbit放在主文件夹下,就是/home/xxxx主文件夹/
打开终端 键入./verbit codec#0 > ver.txt    按enter
如教程所示,出现了错误AFG Function Id: 0x1 (unsol 1)
删除AFG Function Id: 0x1 (unsol 1)   行之间不能有空行

Codec: Realtek ALC269VB
Address: 0
AFG Function Id: 0x1 (unsol 1)
Vendor Id: 0x10ec0269
Subsystem Id: 0x10431c33
Revision Id: 0x100100

Codec: Realtek ALC269VB
Address: 0
Vendor Id: 0x10ec0269
Subsystem Id: 0x10431c33
Revision Id: 0x100100
重新在终端键入 ./verbit codec#0 > ver.txt    按enter
生成了ver.txtverbitdebug.txt

打开ver.txt,发现内容很杂乱,和教程不太一样

Verbs from Linux Codec Dump File: codec#00

Codec: Realtek ALC269VB   Address: 0   DevID: 283902569 (0x10ec0269)

   Jack   ColorDescription                  Node   PinDefault             Original Verbs
--------------------------------------------------------------------------------------------------------
    1/8   BlackSpeaker at Ext Rear         18 0x12   0x411111f0   01271cf0 01271d11 01271e11 01271f41
Speaker at Int N/A    0x14 0x14                        2417426704 01471c10 01471d01   01471e17 01471f90
    1/8   BlackSpeaker at Ext Rear         23 0x17   0x411111f0   01771cf0 01771d11 01771e11 01771f41
Mic at Ext Left    0x18 0x18                        60889152 01871c40 01871d18   01871ea1 01871f03
Mic at Int N/A    0x19 0x19                        2426865968 01971c30 01971d09   01971ea7 01971f90
    1/8   BlackSpeaker at Ext Rear         26 0x1a   0x411111f0   01a71cf0 01a71d11 01a71e11 01a71f41
    1/8   BlackSpeaker at Ext Rear         27 0x1b   0x411111f0   01b71cf0 01b71d11 01b71e11 01b71f41
Analog    PinkLine Out at Ext N/A         29 0x1d   0x40079a2d   01d71c2d 01d71d9a 01d71e07 01d71f40
    1/8   BlackSpeaker at Ext Rear         30 0x1e   0x411111f0   01e71cf0 01e71d11 01e71e11 01e71f41
    1/8   BlackHP Out at Ext Left          33 0x21   0x03211020   02171c20 02171d10 02171e21 02171f03
--------------------------------------------------------------------------------------------------------


   Jack   ColorDescription                  Node   PinDefault             Modified Verbs
--------------------------------------------------------------------------------------------------------
Speaker at Int N/A    0x14 0x14                        2417426704 01471c10 01471d00   01471e17 01471f90
Mic at Ext Left    0x18 0x18                        60889152 01871c40 01871d10   01871ea1 01871f00
Mic at Int N/A    0x19 0x19                        2426865968 01971c30 01971d00   01971ea7 01971f90
Analog    PinkLine Out at Ext N/A         29 0x1d   0x40079a2d   01d71c20 01d71d90 01d71e07 01d71f40
    1/8   BlackHP Out at Ext Left          33 0x21   0x03211020   02171c50 02171d10 02171e21 02171f00
--------------------------------------------------------------------------------------------------------

学习人工在codec#0自己找节点,好象和verbit的不一样,还是没经验。

后仔细一看,verbit要到mac中使用,就转到mac中,复制codec#0 verbit到mac的主文件夹中
verbit没执行权限,终端chmod 755 verbit
键入 ./verbit codec#0 > ver.txt    按enter
在苹果中生成的ver.txtverbitdebug.txt,打开一看,与linux中的一样。想不到verbit脚本,linuxmac通吃啊。

慢慢有了经验,能看明白codec#0的内容了
发现搜索Control: name比搜   Pin Default更好找节点,Control: name下不超过7行出现Pin Default 就是有效的端口。
该Control: name上面就是要的节点Node。会略过无用的Pin Default 0x411111f0:

Node 0x14 wcaps 0x40018d: Stereo Amp-Out
Control: name="Speaker Playback Switch", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
Control: name="Speaker Phantom Jack", index=0, device=0
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals:
Pincap 0x00010014: OUT EAPD Detect
EAPD 0x2: EAPD
Pin Default 0x90170110: Speaker at Int N/A
    Conn = Analog, Color = Unknown




0x90170110: Speaker at Int N/A    的Node 0x14   与verbit找出的是一致的








drcc 发表于 2015-2-4 10:39

本帖最后由 drcc 于 2016-1-25 20:56 编辑

整理的原始Pin Default
0x1410 01 17 90: Speaker at Int N/A
0x1840 18 a1 03: Mic at Ext Left
0x1930 09 a7 90: Mic at Int N/A
0x2120 10 21 03: HP Out at Ext Left

verbit 整理修改的Pin Default
0x1410 00 17 90: Speaker at Int N/A
0x1840 10 a1 00: Mic at Ext Left
0x1930 00 a7 90: Mic at Int N/A
0x2150 10 21 00: HP Out at Ext Left

手工整理修改的PinDefault
0x1410 01 17 90: Speaker at Int N/A      声音不正常17可能要改动11 10
0x1840 10 a1 01: Mic at Ext Left                  a1看其他人实践要改成81外麦才能用
0x1930 01 a7 90: Mic at Int N/A                  a7 改A0 麦才正常实践后再说
0x2120 10 21 01: HP Out at Ext Left

ver.txt 中的Modified Verbs就是我们要的configdata 先用手工的数据试试

具体的Config数值表达公式
[*]Address+node+71c+(1、2位数值)
[*]Address+node+71d+(3、4位数值)
[*]Address+node+71e+(5、6位数值)
[*]Address+node+71f+(7、8位数值)


得到configdata
01471c10 01471d01 01471e17 01471f90 01871c40 01871d10 01871ea1 01871f01 01971c30 01971d01 01971ea7 01971f90 02171c20 02171d10 02171e21 02171f01 01470C02   
最后搜索一下codec#0里面有无EAPD这个字母,有的话就必须在最后加入01470C02这组数字。


pathmap的获取和整理

输入是从后往前推断节点,输出是从前往后推          初次学习找寻Node 连接路径确实很迷茫
实践后的经验是
输入是从后往前推断节点,就是输入节点----- 这路径。打开codec#0从micInt节点 0x19 搜索 0x19的上面是Node 0x23 0x23 是一个节点,继续搜索0x23 找到Node 0x08
Mic at Int N/A               08>23 >19       8 >35> 25


输出是从前往后推       指输出节点   -- -     打开codec#0搜索0x14Node 0x14 的下面是0x0c0x0d* 搜索0x0d   有*的优先 Node 0x0d*    节点找到   下面显示 0x03   继续搜索0x03 Node 0x03    最后的节点也找到
Speaker at Int N/A          14< 0d< 03   20 <13< 3   


本人电脑269vb节点如下
内麦      8   35 25      0x19    MuteGPIO50010019=1342242841       修改layout86.xml要用
外麦      9   34 24      0x18   MuteGPIO 50010018=1342242840
扬声器   20 13 3
外接耳机 33 12 2
页: [1]
查看完整版本: ALC269vb仿冒驱动找节点学习