被害慘的 Sony 三兄弟
其實這事情已經過去一段時間了, 不過在弄清處它的原因後, 實在是令人不得不為文來幹譙一下.
時間回到去年 11 月, 房子剛弄好搬進去住時. 我大致把客廳的 AV 系統跟電腦弄好了, 跟 HTPC 有關的架構是這樣的:
VAIO TP1T 有含聲音訊號的 HDMI 輸出, 所以就把 HDMI 接到 DG910 擴大機, 讓 DG910 把 HDMI 的聲音解出來後, 再把影像送到 Bravia 去顯示. 一切都工作得很完美, AV 論壇上常看到的 HDMI 顯示卡送不出聲音的問題, 我也沒遇到. 三台機器都是 Sony 的, 自己家的機器怎麼會有相容性的問題呢.
不過, 這個完美的組合, 就在第四台 Sony 的機器加入後, 變了樣.
第四台 Sony 是它:
VAIO DT1, 長得跟 TP1T 很像的 BS digial 衛星接收器, 從 BJ 那裡拿來的. 這台機器在衛星天線安裝那篇已經亮過相了, 它是一台可以用網路播送 BS 畫面的 tuner, 本身沒有硬碟, 但可以搭配電腦錄影.
看它的外型就知道它跟 TP1T 是哥倆好, 原廠也希望你一次買兩台然後疊在一起用. 沒想到, 一切的亂源都來自這兩台的搭配…
DT1 附了 PC 端的軟體, 叫做 VAIO Digital TV Player, 就是用來在 PC 上即時觀看或是錄製 BS 節目用的. 日本人對 HD content 的保護已經到了幾近變態的程度, VDTV Player 錄下來的節目是存在硬碟裡, 而儲存時是用跟電腦有關的序號加密, 也就是說, 在 A 電腦上錄的節目只能在 A 電腦上看, 不能拿到 B 電腦上看. 甚至, 如果我重灌了 Windows 之後, 原來錄的節目也會變得不能看. BJ 對這點非常感冒, 這也是它出脫 DT1 給我的原因之一. 關於這一點我還可以忍受, 因為我沒打算要保存 BS 節目, 只希望將它的錄影功能當作 time shift 來使用.
不過, 就在我把 VDTV Player 在 TP1T 上裝好, 也對 DT1 完成註冊, 開始執行時, 它居然告訴我, 我的顯示裝置不支援 HDCP, 然後畫面就停掉了.
最好是 DG910 沒有 HDCP 啦, 那我掛在 DG910 上的 BDP-S1E 藍光播放機是假的喔 ?
我試著在另一台電腦上安裝 VDTV Player, 螢幕是 Dell 的 2408WFP, 雖然接 DVI, 但是它有支援 HDCP. 一切正常, 我在 2408WFP 上看到完美而且順暢的 BS 畫面, 透過 Gigebit Ethernet 串流過來的. 好, 至少我現在有一套 reference 的系統是可以正常運作的.
再回到 TP1T. 到底是哪根筋不對, 讓 VDTV Player 認為我的顯示裝置沒有 HDCP ? 問題一定不是出在 DG910 擴大機上, 因為藍光播放機走 HDMI 接到 DG910 上工作得好好的. 難道 TP1T 不支援 HDCP ? 不可能, 它後面的顯示器接頭做的是 HDMI 接頭, 那就非得支援 HDCP 不可. 如果是 DVI 接頭, 有些顯示卡確實沒支援 HDCP.
問題出在最不可能的地方
TP1T 的顯示晶片是 Intel 945 晶片組整合的 GMA950, 我上了 Intel 的網站抓了最新的 driver, 沒想到一開始安裝, 它就告訴我這台電腦不可以用通用的驅動程式, 叫我從電腦製造商那邊拿專用的驅動程式. 我去 VAIO support 上看了一下, TP1T 出廠時的 driver 已經是最新的了, 沒有再新的, 但我不相信 Sony 會自己改 driver, 所以我用了一點小技巧把 Intel 的公版 driver 安裝包解開, 再到裝置管理員裡去換 driver, 果然這樣就可以裝. 所以我確定 GMA950 的驅動程式是最新版的.
另外, 因為新版的 RealVNC 會用 display mirror driver 的方式擷取畫面, 這個動作可能也違反 digital content protection 的 protocol, 所以我也暫時先把 RealVNC 拔了.
能做的都做了, 但 VDTV Player 還是一執行就告訴我沒有 HDCP. 在警告訊息跳出來之前, 我可以看到大概半秒鐘的影像, 很正常很流暢, 因此我想 codec 或是 display 應該沒有問題, 問題應該是出在保護機制的檢查.
我還記得那天搞這個搞到凌晨三四點, 用盡了各種辦法, 都沒辦法讓 VDTV Player 認為 TP1T 的 HDMI 輸出接到一個有 HDCP 的裝置上.
當時也不知道哪來的靈感, 突發奇想, 就把本來接往 DG910 的 HDMI 拔下來, 直接插到電視上. Bravia 46XBR2 的側邊有個 HDMI 的插座, 可以很方便地直接插線上去, 讓我不用到掛好的電視後面去撈 HDMI 線出來.
HDMI 是個很有趣的顯示界面, 自從 DVI 引入 EDID 之後, 插 monitor 也會聽到像插 USB PnP 裝置的那種 "等~登" 的聲音, 表示系統有認到一個新插入的裝置. HDMI 比 DVI 還多了聲音的裝置, 從裝置管理員裡就看得到這些多跑出來的裝置. 把 HDMI 接到電視後, 再度執行 VDTV Player, 靠, 畫面出來了.
現在是怎樣, 接電視就有 HDCP, 接擴大機就沒有 HDCP ?
難…難道, 我的 STR-DG910 沒有支援 HDCP ? 這實在說不過去, 因為藍光播放機接到 DG910 上工作得好好的, 我可不相信 BDP-S1E 會送出沒有 HDCP 加密的資料. 但事實擺在眼前, 接電視可以用, 接擴大機就不行, 我實在是一點頭緒都沒有.
為了避免可能是 VDTV Player 誤判, 我去 Cyberlink 抓了 BD Advisor, 這是 Cyberlink PowerDVD 用來檢查你的電腦能不能放藍光片的一個小工具. 執行之後, 它會一一告訴你, 你的電腦夠不夠快, 有沒有硬體解碼加速, 以及最重要的, 顯示裝置有沒有 HDCP. 經由 AACS 保護的藍光片要求播放裝置在送出視訊時一定要經過 HDCP 加密, 因此如果沒有 HDCP, 就算你有藍光光碟機, CPU 也夠快, Power DVD 還是不給播的.
BD Advisor 跑下去, 接電視時 HDCP 亮綠燈, 而接擴大機時, HDCP 果然亮紅燈. 連 Cyberlink 的軟體都這樣說, 應該不是 VDTV Player 誤判, 而是 TP1T 的 HDMI 在接到 DG910 擴大機時真的沒有 HDCP. 真是見鬼了.
如果今天我接的是 Yamaha 的擴大機, 也許我會懷疑 Sony 跟 Yamaha 對 HDMI/HDCP 的實作有差異而造成 interoperability 的問題, 但最氣人的是, 今天擺在這裡所有的機器都是 Sony 做的耶! Sony 三兄弟, 不, 加上 DT1 就是 Sony 四兄弟了, 你們告訴我, 是誰跟誰八字不合, 讓 HDCP 不見了 ? 彷彿還看到 BDP-S1E 在旁邊插手冷笑: "跟我沒關, 我放藍光片放得好好的…"
HDMI 大有學問
前陣子剛好在處理 Bravia Engine 跟 TCON 之間介面的問題, 稍微研究了一下 EDID 跟 HDCP 之間的關係 (其實兩者之間沒有關係), 我知道 HDMI 在 hot plug 時會有個 handshaking 的動作, 為了要交換 HDCP 加密用的 key, 它是個雙向的界面, 這個動作稱之為 HDCP negotiation, 用的也是 EDID 的通訊管道: 同一組 I2C.
我想知道電腦到底能不能區分它自己是接到電視上還是擴大機上, 換句話說, 就是擴大機對 HDMI 來說, 是不是 transparent 的. 所以我抓了 EDID debug 用的神器: MonInfo 回來, 它可以看到顯示卡認出來的 EDID. 直接接的時後, 報出來的 EDID 是 Sony TV, 但接在擴大機上時, 報出來的 timing 雖然是電視的, 但裝置名稱卻是 Sony AV Receiver, 也就是說, 擴大機確實會介入 negotiation 的過程, 它對 HDMI 來講並不是透明的.
再查了一下 HDMI 的規格, 原來像 AV 擴大機這種東西, 在 HDMI 的分類上稱之為 HDCP repeater, 而電視則叫做 HDCP sink. 擴大機為了要把聲音的資料從 HDMI 串流裡弄出來, 它必需要先把 HDCP 解開, 但再度送往電視時, 又必須再加密一次, 因此 HDMI repeater 在實做上算是比較難的 HDMI 裝置, 而發送端可以區別它連接的是 HDMI repeater 還是 HDMI sink.
感覺答案已經呼之欲出了, 我現在知道顯示卡可以區別它是接在電視上還是接在擴大機上. 那到底有什麼理由讓顯示卡不爽對擴大機吐 HDCP 呢 ? 難道 Intel 又出了什麼包嗎 ?
拜一下 Google 大神. 關鍵字: "intel hdmi hdcp repeater problem".
第一篇 "HDCP, HDMI, Repeaters, and You" 就正中要害, 讓我找到答案. 這篇的作者應該是 Intel 的工程師, 他告訴我們, 真的, Intel 的顯示晶片真的有 "接 HDCP sink 可以, 接 HDCP repeater 不行" 的症頭. 他承認, 這是一個 bug. 原文: "Plug Intel-enabled HDMI motherboard into a TV: Blu-ray disks will play. Plug Intel-enabled HDMI motherboard into an A/V receiver with an HDTV on the other end: HDCP device invalid error."
而他的觀察是: "It looks from the evidence like repeater mode on Intel graphics enabled HDMI is not working." 好, 很好, repeater mode 不能用, 所以不能接擴大機.
人是 Intel 殺的嗎 ?
不完全是. 雖然這篇文章的作者認為 Intel 應該要從 driver 上去解決這個問題, 不過在下面回文的觀眾裡有人提出了不同的看法. 有個叫 Steven 人提出了這個說法: 對顯示卡驅動程式而言, 微軟在 Windows 上實作 HDCP 的 API 叫做 COPP, Certified Output Protection Protocol, 最早的版本出現在 WIndows XP SP2 裡. 也就是說 XP SP2 以前的版本是不可能有 HDCP 的.
不過呢, 微軟在實作 COPP 時, 也許是因為沒時間, 也許是因為沒人力, 也許是因為有豬頭工程師犯了錯, 也許是有豬頭 PM 沒搞清楚狀況, 天殺的 COPP 居然不支援 HDCP repeater. 有圖有真相, 我直接抓微軟的網頁下來:
白紙黑字寫得很清楚, COPP 遇到 HDCP repeater 就不播啦. 沒搞頭了, case closed.
所以, 其實人是微軟殺的, Intel 只是代罪羔羊. 微軟在 Windows 裡訂的 API 是這樣, Intel 就乖乖照這個規範去實作 driver, 然後就讓 Sony 上演自家產品鬩牆的鬧劇.
另外查了一些文章, 想知道 ATI 跟 nVidia 的 HDMI 顯示卡有沒有類似的問題, 答案是沒有. 不過並不是因為它們有別的解決方法, 而是他們根本就不鳥微軟, 也就是說這兩家的顯示卡 driver 在遇到 HDCP repeater 時, 會報給應用程式 HDCP sink, 規避掉 COPP 這個問題.
另外根據微軟的說法, 在 Vista 上有另一個 API 叫做 OPM, 算是 COPP 的接班人, 也對 COPP 向下相容. OPM 的 API 就有支援 HDCP repeater, 但是, 很抱歉, 因為判斷要播不播的決定權是在軟體手上, 而照 COPP 的規範是 "遇到 HDCP repeater 就不播", 所以軟體如果是照 COPP 的規矩寫的, 換到 OPM 上一樣沒用. 這點我可以證實, 因為 TP1T 上裝的是 Vista Home Premium.
根據 Intel 的說法, 他們正在 "working with software vendors to move from COPP to OPM", 也就是希望像 PowerDVD 或是 WinDVD 這些軟體能在 OPM 上重新實作, 以解決 HDCP repeater 的問題. 我想 Intel 有它自己的苦衷, 沒辦法像 nVidia 或是 ATI 一樣直接在 driver 上作弊避開這個問題, 因為它自己是太多組織的重要成員. 不過其實大部份的使用者並不在意這個問題, 如果只是要播藍光的話, 也不用等 PowerDVD 改版, 他們早就用 AnyDVD HD 直接把藍光光碟的 AACS 脫光光. PowerDVD 認到沒有 AACS 的 content, 就認為不需要 HDCP 加密, 也就不會去檢察 HDCP 了. 只是這招對 VDTV Player 無效呀! Intel, 你什麼時候會 work with Sony to move from COPP to OPM ?
最後我投降了, 我把 TP1T 的 HDMI 直接接到 Bravia 上, 至於聲音, 就走 SPDIF 到擴大機. 除了要用 lip sync 稍微調一下 frame delay 外, 沒什麼大毛病. 剩下的問題是, 我還沒辦法在 SPDIF 上搞出五聲道, 在 Vista 的控制台裡怎麼看就是只有兩個聲道, 頭痛啊…
我看到中間還以為是 HDCP 把妳家的擴大機 ban 掉了,BD player 不曉得,但是電腦軟體有在更新所以拒絕咧。
印象中 HDCP 在握手過程中應該會把黑名單上的裝置排除的。
記得楊宸彥嘛?我們這屆的,後來他去 CyberLink 當開發主力耶,我是之前去漢城測試 BD 的時候遇到他的~
BD Player 會在放新的 BD 碟片時, 順便更新 black list…
板主..不小心看到你的文章.想請你去Update PowerDVD,後再試試看.應該就可以了.
我的問題不在 PowerDVD, 是 VAIO Digital TV Player 不肯播的問題…
前陣子也是使用
Intel G43–AMP–TV
也是出現了無HDCP的訊息..後來去Update了PowerDVD的patch後就好了..所以才想請你試看看..如果你已確定不是這個問題.那就當做沒看到吧..881