Hacking With Hauppauge DVB-S PCI Car
著作者 :fox發表於尋星族園地文章
Date: 07/25/02 01:17:41 PM

Name: fox

Email:

Subject: 昨晚在忙的事 - Hacking With Hauppauge DVB-S PCI Card

Website: home.pchome.com.tw/soho/ezfox/Switch/index.html

IP Address: 210.68.176.9

接收衛星頻道除了使用一般的數位衛星接收機 (IRD),還可以選擇使用裝
在電腦上的PCI衛星接收卡,目前 hacker 最常使用的衛星接收卡,大概
就是 Hauppauge DVB-S (及其相容卡).



因為透過電腦,加上適當的軟硬體,可以做到很多一般固定規格接收機
無法達到的彈性。目前由於這塊卡原廠提供了撰寫程式的介面規格,所以
有非常的多 hacker 為它撰寫各類的程式,幾乎到了根本不使用原廠軟體
的程度,目前大概有以下這幾類的 3rd party 軟體:

1. 瀏覽程式: 用來觀看節目
2. 軟體 CI & CAM 動態連結程式庫 (DLL): 用來模擬收視卡 (Smart Card)
3. DisEqC DLL: 用來選擇 LNB,驅動極軸馬達
4. EPG DLL: 用來顯示業者傳送來的節目表相關資訊
5. AC3 DLL: 用來提供 AC3 等數位音效由 S/PDIF 輸出
6. LAN Broadcast: 用來將衛星節目接收後,透過網路廣播節目
7. Remote control: 利用紅外線,網路,等方式遙控選台

這些軟體都是業餘 hacker 所寫的,除了 Win32 平台外,連 Linux 平台也有
相關程式支援,連一些原始碼都提供 (GNU GPL Policy)。

如果您喜歡寫程式或玩電腦,利用這塊卡,可以玩的花樣很多,以下就簡介
一下個人使用這塊卡的例子。



我本來也是使用一般的數位衛星接收機,不過為了達到解 Viaccess & 
Irdeto,預錄節目,剪輯,轉 VCD/DVD,燒錄,等需求花了一番功夫。
先前我為了錄影,就是使用接收機 S 端子輸出到 MPEG I/II 壓縮卡 
結果畫質很糟,(雖然我幫同事錄影,他們覺得比起 CATV 清楚多了) 
因為雜訊加入後,壓縮起來會很耗碼率,造成動態失真較大. 

後來才會去買 PCI 卡,目的就是為了完全數位處理,從接收、剪輯、 
轉檔 (MPEG I/II/4) 全部都是數位處理,壓出來的片子畫質真的無懈可擊. 
除了台標還在,其餘廣告等剪輯後完全看不出是電台送出的. ^_^ 

而且這些過程全部都是數位化處理,盡可能的減少原始畫質的損失。
接收卡上可以直接輸出 Video 端子,所以還可以家人一邊使用遙控器選台
看電視,而我依然可以使用電腦作其他事,而不會互相干擾。 

此外,它也能支援 CI & CAM 介面,以供收視直撥業者的加密節目。



裝在 Floppy Disk 位置的雙 CAM 插槽



除了使用收視卡 (Smart Card) 來收視加密節目,還可以藉由軟體模擬 
CI & CAM,不使用收視卡就能利用軟體解開加密頻道。如:Irdeto,SECA,
Nagra,Viaccess,等等。

目前我透過 DisEqC switch 接到三個天線,共可收到近 200 個頻道。
如下圖,其中「中新一號 ST-1」只為了收一個節目,台灣的公共電視 (PTS),
相當優質的節目,推薦給大家...



不過在使用這塊卡的過程中,我依然遇到了些難題....

由於台灣的彩色電視系統採用 NTSC制 與大陸、香港使用 PAL制 不同,
使用常見的瀏覽程式如 ProgDVB 會有問題。由於 ProgDVB 與 MultiDec 
這類業餘 hacker 寫的軟體都是在歐洲的環境設計使用,並未考慮到 
NTSC 信號,故軟體對於 NTSC 的支援很弱,無法依照節目的類型自動切換 
NTSC/PAL 訊號。

另外,台灣也很難找到多制式彩色電視,所以 DVB-S 卡片上輸出的 PAL
信號在 NTSC 電視上變成了黑白而且跳動。

在沒有原始碼,聯絡作者也沒回應下,為了解決這兩個問題,我自行寫了
一個 DLL 程式 與 ProgDVB 配合,讓 ProgDVB 切換頻道時,這個 DLL 
能夠依據預先設定的制式自動切換 DVB-S 卡上的 PAL/NTSC 設定。

為了避免將來 ProgDVB 更新版本時,每次都去 debug 它的主程式,所以
不採用硬改 binary code 的方式,而是採用 hacker 遊戲機的做法,監視 
ProgDVB 主程式切換頻道,檢查目前碼制是否正確,否則模擬點選 Menu、
SubMenu、選擇 Audio & Video、選擇 PAL/NTSC,再按 OK 鈕的流程 ^_^ 
(還真累人! 不過流程最佳化後,畫面一閃而過,切換速度還算快,而且採用
plug-in 方式,不切換頻道時這個程式不會被執行到,不會產生副作用)



解決軟體部分後,切換不同的頻道 NTSC/PAL 訊號已經能夠正常自動選擇
輸出,但對於電視機無法接受 PAL 訊號的問題,可能的解決方案有幾個:

1. 換電視,但台灣多制式的電視除非是相當高檔的 HDTV,否則很難找到.

2. 加上 PAL 轉 NTSC 的視訊轉換盒 (NTD6000)。這類轉換盒能夠自動辨識
   輸入格式,轉換成 NTSC 輸出。對於接線方便很多,但畫質稍微差點。
   
3. 使用螢幕顯示卡內建 S 端子,或另購 VGA->TV 轉換盒 (NTD1800),
   把顯示在電腦螢幕的畫面傳送到電視。也就是將 VGA 訊號轉成 色差
   (T,Cb,Cr)/S-Video/Video 然後接到電視. 
   
   這也有幾個缺點,因為不是由衛星直接輸出 Video 訊號,而是由原先 
   接螢幕的 VGA 端子轉成 Video 訊號. 所以在觀看電視時要把電腦畫面
   切換為全螢幕,如此一來家人看電視時,我就沒辦法使用電腦了.
   
目前,我在電視還沒壞前,先克難地使用方案三,但只有節目是 PAL 制時
才使用,若節目為 NTSC 制時,仍然直接由原先 DVB-S 接收卡的 Video 端子
輸出到電視。



為了避免還要手動切換 Video 線的連接,我做了一個「DIY Video Switch」。
在上面的 DLL 程式中,我加上對 COM port 的驅動設定,利用 COM RTS 
的電位來控制繼電器 (Relay)。

在切換頻道時,除了自動設定 DVB-S 卡的輸出訊號外,還會切換 Relay 
讓對應的 Video 訊號輸出到電視同一個 Video input.

以上軟硬體花了一個晚上完成,硬體利用零件箱中以前的舊料臨時兜的,
就不洗版子了,參考下圖 (呵呵... 還好手邊還剩下一小塊洞洞版,不然
就得搭橋了)



這個 switch 的硬體很簡單,利用電晶體作成 CC (Common Collector) 
放大電路把 RS-232 RTS 訊號放大,然後利用 Keyboard 或 USB 上面的 +5V
電源驅動 Relay 即可。(線路圖略)

弄完這些麻煩的細節,終於可以在沙發上舒服的躺著看電視,藉由卡上附的
遙控器,隨意的選台,DisEqC 與 自製的 Video 訊號選擇器自動的切換 LNB
與 Video out,看到喜歡的節目也隨時透過遙控器即時錄成 MPEG II,透過
電腦也可做複雜的預錄排程,何時錄影、何時轉台、何時關機,甚至預錄後
自動轉檔、燒成光碟... 只要擅用排程功能,搭配 script 幾乎無所不能。



通常我並不會在電腦螢幕看電視,而是在客廳的沙發上輕鬆的享受加上前後級
擴大機音效,最平常的用法就是看到某節目很好看時,順手按下遙控器把它錄
下來,但有些時候也會到電腦前操作,例如:

1. 太晚了,該睡了,可是還沒看完,這時我會按下遙控器的錄影,然後到電腦
   利用 schedule 功能設定結束錄影時間,與關機時間。
   
   PS: 目前的 ProgDVB 在 Win2000/XP 排程中的 PowerOff 有點問題, 有時
       無法關掉電源, 請改用 Execute 指令執行我寫的這個程式
       
   目前的 DVB MPEG II 碼率一小時大約要耗掉 2 GB 的硬碟空間,以PC最普遍
   的硬碟容量約 60GB 可錄 30 小時左右。等到想看時,可以再由接收卡放出,
   一樣在電視上觀賞。
   
2. 該節目真的很有保留價值,那麼我會希望錄下完整的節目燒成光碟,這時
   我會到 www.hytv.com.tw 查詢節目名稱,並找出所有重播時段。一般而言,
   我看到的都是第一、二次播放,第三次以上都會在深夜播出,所以如上圖
   我可以排定這個時間去做預錄。
   
   由於我電腦本來就是一直接上 internet,所以做這些安排非常的容易。

看到這裡,也許您有極大的興趣也想買來玩玩看。但在決定讓您的 IRD 收藏又
多了一樣之前,有些您一定要知道的缺點要特別注意:

1. 如果您不打算花大錢買 CI & CAM 這兩項硬體,那無可避免的,您一定會被
   牽扯進加密與破解這個遊戲,不見得您想看的節目都能拿到 key。
   
   如果您有計劃買 CI & CAM,那麼好消息是這些硬體大概都已經通過各種加密
   系統的驗證,相容性大致沒什麼問題,詳情請參照原廠網站。
   
2. 您必須喜歡玩電腦,有克服萬難的準備,有多媒體錄影的需求,及自力救濟的
   求生本能,否則建議您仍然使用一般的 IRD,或嘗試 NOKIA IRD,它也能透過
   SCSI 作簡單的錄影。
   
   因為現實狀況如下,原廠遠在歐洲,連您收的衛星他們都沒辦法收到,一些說明
   甚至連英文都沒有 (我當然也不懂德文俄文,還是透過網路的線上翻譯,得到一知
   半解)。像原廠附的軟體,在中文 Windows 就不能執行,還要到處找補丁(Patch)
   
   然後,上面介紹的一些吸引您的功能,都不是原廠提供的,所以您還得東湊西湊
   把這些 hacker 寫的軟體湊起來,更難的是,往往這個業餘的 hacker 跟我一樣
   是基於興趣在玩這些東西,通常不會有詳細的說明文件,然後在您的環境下能不
   能用,沒人敢打包票。
   
   通常自力救濟的方法就是到各論壇找答案,等新版修正,或是像我一樣自己想辦
   法克服。除非您真的有最壞狀況自己 DIY 的保握,不然一定要抱著「買一個不能
   動的廢物」的心理準備。

3. 調整衛星不方便,雖然我假設您會想買這東西,應該已經有不少的 IRD 收藏,^_^
   不過還是提醒這點. 由於硬體本身的特性,所以要搬部 PC 加 螢幕到樓頂調星,
   實際上不太可行,加上軟體本身的設計不方便做這件事,所以還是需要一部 IRD
   
   PS: 雖然我目前手邊也沒有一般的 IRD 了,不過我試過兩種方式還是可以調星。
       如果您對於調星已經是老手,計算方位角、仰角與極化角非常精確,可以
       先粗調好天線,再利用家中的無線電話機由家人在樓下報讀值,這種方式
       我實際用過,10 分鐘內一樣能調好。
       
       另外就是使用筆記型電腦加上無線網路,執行遙控軟體如 Pc Anywhere,將
       筆記型電腦帶到頂樓去看收訊強度,這種方法我也一樣用過,因為前面方法
       還要兩人配合,調整天線還要偏著頭夾著話機,也蠻累的. 剛好我家裡就是
       無線上網,Access Point & Wireless LAN 一應俱全,這方式我覺得方便多了.

參考網站:
   
<待續>

fox 2002