修改CodecCommander.kext 實(shí)現(xiàn)睡眠后聲音耳機(jī)和外放自動(dòng)切換

修改CodecCommander.kext 驅(qū)動(dòng)可以解決耳機(jī)有雜音和睡眠喚醒無法自動(dòng)切換或無聲的問題.
步驟:
打開CodecCommander.kext/Contents/里面的info.plist悄晃,如下圖


info.plist

看到Codec Profiles 之后打開折疊遇骑,如下圖

Codec Profiles

紅色方框內(nèi)是我根據(jù)我surface pro 3 ACL288 聲卡改好的

第一紅色方塊內(nèi)的參數(shù)設(shè)定 10ec_0288_HDA_10ec_0191

打開原始的16進(jìn)制的顯卡信息圖,提取方法見我帖子http://www.reibang.com/p/f6b8bc6e69ea
我的顯卡信息為

Codec: Realtek ALC288
Address: 0
Vendor Id: 0x10ec0288
Subsystem Id: 0x10ec0191
Revision Id: 0x100003

前面10ec_0288指的是 Vendor ID叉钥,后面 10ec_0191是Subsystem Id号杠。 這一項(xiàng)我取名為Realtek ALC288 SP3 這個(gè)名字自己隨便取嗜暴,只需要保持和第二個(gè)紅框中的名稱保持一致就行胀莹。

第二個(gè)紅框作用就是修正睡眠喚醒和雜音問題,我其實(shí)沒有感覺什么雜音困擾豆混。

第一個(gè)藍(lán)框Unsolicited Response的設(shè)定是為了修正睡眠喚醒耳機(jī)和外放切換的問題
Command值的 02170882 為Address+NodeID+708+設(shè)定值
查看我的聲卡信息中 HP Out at Ext 所在的節(jié)點(diǎn)篓像,并且找到節(jié)點(diǎn)信息中有Unsolicited: tag=xx, enabled=1 這一行。

Node 0x21 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
  Control: name="Headphone Playback Switch", index=0, device=0
    ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  Control: name="Headphone Jack", index=0, device=0
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x00 0x00]
  Pincap 0x0000001c: OUT HP Detect
  Pin Default 0x03211020: [Jack] HP Out at Ext Left
    Conn = 1/8, Color = Black
    DefAssociation = 0x2, Sequence = 0x0
  Pin-ctls: 0xc0: OUT HP
  Unsolicited: tag=01, enabled=1
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0
  Connection: 2
     0x0c* 0x0d

0x21 SET_UNSOLICITED_ENABLE 0x82中的0x21為NodeID皿伺,0x82中的82為設(shè)定值
設(shè)定值是8bits的一個(gè)數(shù)员辩。記作a7 a6 a5 a4 a3 a2 a1 a0.
a7=1,表示enabled鸵鸥。
a6=0奠滑,沒意義
a5-a0丹皱,存放tag,需要將tag的值用6為數(shù)的二進(jìn)制值表示
tag=01(十進(jìn)制)=000001(二進(jìn)制)
則a7 a6 a5 a4 a3 a2 a1 a0=10000001
a7 a6 a5 a4=1000(二進(jìn)制)=8(十進(jìn)制)
a3 a2 a1 a0=0001(二進(jìn)制)=1(十進(jìn)制)
則設(shè)定值=81
最后加得到的設(shè)定值加1宋税,即82

第二個(gè)藍(lán)框 SET_PIN_WIDGET_CONTROL設(shè)定是為了修正耳機(jī)雜音摊崭。需要設(shè)定的是 Mic at Ext 所在的節(jié)點(diǎn)信息,我的節(jié)點(diǎn)信息如下:

Node 0x18 [Pin Complex] wcaps 0x40048b: Stereo Amp-In
  Control: name="Mic Boost Volume", index=0, device=0
    ControlAmp: chs=3, dir=In, idx=0, ofs=0
  Control: name="Mic Jack", index=0, device=0
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00]
  Pincap 0x00003724: IN Detect
    Vref caps: HIZ 50 GRD 80 100
  Pin Default 0x03a11030: [Jack] Mic at Ext Left
    Conn = 1/8, Color = Black
    DefAssociation = 0x3, Sequence = 0x0
  Pin-ctls: 0x24: IN VREF_80
  Unsolicited: tag=02, enabled=1
  Power states:  D0 D1 D2 D3 EPSS
  Power: setting=D0, actual=D0

Command 值的01870724為Address+NodeID+707+Pin-ctls
0x18 SET_PIN_WIDGET_CONTROL 0x24中的0x18為NodeID杰赛,0x24為Pin-ctls值

最后send delay 的值是 推遲發(fā)送命令的時(shí)間呢簸,單位是ms。如果命令發(fā)送太早乏屯,有可能導(dǎo)致無法執(zhí)行根时。
Sleep Nodes 這項(xiàng)無關(guān)緊要,也沒有什么危害性辰晕。

將改好后CodecCommander.kext放入S/L/E蛤迎,你的黑蘋果睡眠喚醒聲音切換就完成了。

現(xiàn)在還有更簡(jiǎn)單直接的hotpatch方式含友,將下面代碼扔進(jìn)MaciASL里替裆,生成aml文件扔進(jìn)patched文件夾,config文件添加讀取它就好了窘问。

// This SSDT demonstrates a custom configuration for ALC288.
// It is the same data that is currently in the Info.plist

// If you had a codec that needed the same configuration, you could
// load this SSDT in order to implement it without modifying the kext.
// It will override the defaults specfied by the CodecCommander Info.plist

// Customize to suit your needs.

DefinitionBlock ("", "SSDT", 1, "hack", "ALC288", 0)
{
    External(_SB.PCI0.HDEF, DeviceObj)
    Name(_SB.PCI0.HDEF.RMCF, Package()
    {
        "CodecCommander", Package()
        {
            "Custom Commands", Package()
            {
                Package(){}, // signifies Array instead of Dictionary
                Package()
                {
                    // 0x18 SET_PIN_WIDGET_CONTROL 0x24
                    "Command", Buffer() { 0x01, 0x87, 0x07, 0x24 },
                    "On Init", ">y",
                    "On Sleep", ">n",
                    "On Wake", ">y",
                },
                Package()
                {
                    // 0x21 SET_UNSOLICITED_ENABLE 0x82
                    "Command", Buffer() { 0x02, 0x17, 0x08, 0x82 },
                    "On Init", ">y",
                    "On Sleep", ">n",
                    "On Wake", ">y",
                },
            },
            "Perform Reset", ">n",
            "Send Delay", 10,
            "Sleep Nodes", ">n",
        },
    })
}
//EOF

不推薦hotpatch形式辆童,會(huì)導(dǎo)致外置mic無法使用,目前不知道原因南缓。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胸遇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子汉形,更是在濱河造成了極大的恐慌,老刑警劉巖倍阐,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件概疆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡峰搪,警方通過查閱死者的電腦和手機(jī)岔冀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來概耻,“玉大人使套,你說我怎么就攤上這事【媳” “怎么了侦高?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)厌杜。 經(jīng)常有香客問我奉呛,道長(zhǎng)计螺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任瞧壮,我火速辦了婚禮登馒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咆槽。我一直安慰自己陈轿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布秦忿。 她就那樣靜靜地躺著济欢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪小渊。 梳的紋絲不亂的頭發(fā)上法褥,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音酬屉,去河邊找鬼半等。 笑死,一個(gè)胖子當(dāng)著我的面吹牛呐萨,可吹牛的內(nèi)容都是我干的杀饵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谬擦,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼切距!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起惨远,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤谜悟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后北秽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體葡幸,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年贺氓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蔚叨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辙培,死狀恐怖蔑水,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扬蕊,我是刑警寧澤搀别,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站厨相,受9級(jí)特大地震影響领曼,放射性物質(zhì)發(fā)生泄漏鸥鹉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一庶骄、第九天 我趴在偏房一處隱蔽的房頂上張望毁渗。 院中可真熱鬧,春花似錦单刁、人聲如沸灸异。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肺樟。三九已至,卻和暖如春逻淌,著一層夾襖步出監(jiān)牢的瞬間么伯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工卡儒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留田柔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓骨望,卻偏偏與公主長(zhǎng)得像硬爆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子擎鸠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 注:該方法經(jīng)測(cè)試支持12缀磕、13、14劣光、15系統(tǒng)袜蚕,但每次升級(jí)系統(tǒng)都需要下載最新的AppleALC-master進(jìn)行重...
    LF落風(fēng)閱讀 111,832評(píng)論 64 64
  • 2017.8.28垂寥,農(nóng)歷七月初七——七夕情人節(jié)。 在這個(gè)浪漫的日子里另锋,我注冊(cè)了一個(gè)簡(jiǎn)書賬號(hào)——漫步meng滞项,與我微...
    漫步meng閱讀 339評(píng)論 0 1
  • 作者:倪方六 過年了室梅,少不了要飲酒戏仓【斡睿“桌上有酒,越喝越有”赏殃,即便平時(shí)不喝酒的人家敷待,過年時(shí)也會(huì)拿出酒來,多少喝上一點(diǎn)...
    李虓酒評(píng)論閱讀 690評(píng)論 1 3
  • 我想我們一定是都是瘋女人仁热。 中午十二點(diǎn)榜揖,我吃過午飯回到寢室,剛換上睡衣抗蠢,娟電話來了:“我聽我?guī)熜终f今天江邊霧凇特別...
    琳家二姐閱讀 536評(píng)論 10 12
  • 唉 非要多付举哟,腦子不知道怎么長(zhǎng)的。多掙錢迅矛。加油妨猩。
    松小鼠姐姐閱讀 189評(píng)論 0 0