2015年7月25日 星期六

[Tivo] 在QNAP TS-109 NAS 上安裝 pyTivo server

很久沒發Tivo相關的文章了, 這次紀錄一下小弟_爆肝_安裝 pyTivo server的過程. 事實上後來才發現並不是 pyTivo讓小弟爆肝的, 請看後續的說明... 
 
- Tivo與NAS
 
一晃眼安裝和使用Tivo已經快5年了, 從以前錄製Discovery, 電影, 影集, 到現在我的小孩拿它來看多啦ㄟ夢, 一堆卡通長片直接錄下來給小孩看到爛. Tivo陪伴我看電視這些年來, 小弟對於它提供的電子節目表算是很滿意. 由於一直擔心在台灣的Tivo服務收掉(搞不好是杞人憂天), 所以在下是很規矩的每年都繳交保護費.
 
Tivo (time shift)錄製影集真是他x的好用, 配上LocationFree (location shift)更是所向無敵, 真是電視狂的終極武器.
 
好了, 虎濫完了,  
狀況是這樣, 小弟除了Tivo以外, 還有一台QNAP TS-109的NAS也是一樣服役很久, 我的 TS-109 平常提供我兩項服務:
    1. BT
    2. Tivo影片的server
 
原本我都是使用官方的Tivo Desktop軟體去拉 NAS 上用網路芳鄰分享出來的的folder, 但是它一直有幾項限制小弟想抱怨一下:
a. TGC Taiwan提供download的免費版的Tivo Desktop處理中文檔名沒問題, 但是無法支援網路芳鄰folder,
          所以沒辦法拉TS-109 NAS上分享出來的檔案.
b. 小弟還真的花大約800元台幣到Tivo原廠網站購買Tivo Desktop Plus for PC, 它可以支援網路芳鄰folder,
          但是處理中文檔名有問題, 基本上還堪用, 但那些錄下萊的電影檔名都要改英文, 頗麻煩.
c. 而且需要另外開一台Windows電腦來run Tivo Desktop去拉NAS理的東西, 很不環保, 而且喪失使用NAS的意義.
 
所以小弟趁著幫TS-109升級 1.5 T 硬碟, 而且更新firmware的同時, 就乾脆想把pyTivo裝上去一次搞定. pyTivo是python寫的一個Tivo come back server, 可以跨平台運行. 我run在NAS上效果還可以, 有圖有真相:
 
pytivo1 
 
tivo2 
上面兩張照片就是我用客廳的Tivo去拉在書房裡的NAS的影片實況. 使用pyTivo有幾個優點:
    - 對於中文檔名沒問題.
    - 可以同時存在多個 folder, 原廠的 Tivo Desktop只能有一個在一台電腦上.
    - 傳檔案的速度比原廠 Tivo Desktop 快. (純體感, 沒有實際測量時間) 
 
以下就是步驟, 有Linux經驗者尤佳 (其實很簡單拉!)
 
- 材料
+ QNAP TS-109 NAS (firmware Version 3.3.0 build 0924T) 
  + 80G Tivo
+ 一台有裝 Linux 的工作用電腦, 用來連到NAS, 或者是Windows電腦但是有裝SSH client, e.g. putty 
 
Sorry, 恕不保證其他的NAS, 因為小弟也只有hack過這一台. 不過如果你的NAS有開ssh而且能裝python and ffmpeg, 那應該都可以試試看. 只是請不要來問問題, 搞濫了也請責任自負, 小弟無法且沒時間幫你解決, Thank's
 
無論哪台NAS, 弄之前最好先備份你裡面裝的資料, 至於如果你真的把系統搞爛了, 我記得QNAP是 firmware 重裝就OK了!
資料! 還是你自己的資料比較重要! 
 
 
- 安裝 python
 
這個步驟最簡單, 點點選選就ok了. 請先login到 TS-109 的web管理介面裡面選 Administration > Applications > QPKG Plugins, 在該頁選 GET QPKG後請download python 套件包, 建議使用我用的 2.7 版.
Download 之後在Installation tab下選擇安裝那個套件包. 
 
接著確認你的ssh server有打開.
就是 Network Services > Remote Login > Allow SSH connection 有打勾. 
 
安裝python and enable SSH 後請 reboot TS-109 NAS.
 
 
- Download pyTivo
 
pyTivo wiki page: 
 
我用的是TheBayer's fork這個版本
http://repo.or.cz/w/pyTivo/TheBayer.git/snapshot/79fd85b2b5af79da8923cbb833f37fb08d11316a.tar.gz 
 
請相信我爆肝後的選擇, 不要使用wmcbrine's fork, 除非您有志投入開發 pyTivo 這個 Opensource project.

 
- 安裝 pyTivo server 
 
記得你有開ssh 嗎? 接下來請使用你的Linux電腦, 打開一個 Terminal:
copy pyTivo tarball 到 TS-109 的 qpkg folder, 像這樣:
 
scp TheBayer-79fd85b2b5af79da8923cbb833f37fb08d11316a.tar.gz  admin@192.168.1.11:/share/HDA_DATA/.qpkg
 
它會問你NAS的admin password, 如果你忘了那我也無言了. 
 
接下來請 ssh login 到 TS-109上, 類似這樣:
ssh admin@192.168.1.11
 
請解開 pyTivo tarball並改名 
# cd /share/HDA_DATA/.qpkg
# tar -zxvf TheBayer-79fd85b2b5af79da8923cbb833f37fb08d11316a.tar.bz2
# mv TheBayer pyTivo
 
 
- 設定pyTivo.conf
 
請copy一份pyTivo.conf提供自己修改:
# cd /share/HDA_DATA/.qpkg/pyTivo
# cp pyTivo.conf.dist pyTivo.conf
 
請您自行參考 pyTivo.conf 中的一些說明, 可以定義很多個share folder出來給Tivo使用.
類似這樣:
 
[電影]
type=video
path=/share/Public/Movies 
 
還有一個很重要的, 要指定ffmpeg的位置, 在我的QNAP NAS上是放在:
 
ffmpeg=/mnt/HDA_ROOT/ffmpeg/ffmpeg 
 
pyTivo.conf中其他的值都別改也可以用, 我就是這樣.
 
 
- 設定開機自動執行 pyTivo 
 
Sorry! 我不是QNAP的開發人員, 但是以下的設定對我有用, 可以開機自動執行pyTivo:
 
編輯 python.sh 
# vi /etc/init.d/python.sh
 
請找到  /bin/sleep 5, 在它的後面添加:
 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/HDA_ROOT/ffmpeg
/sbin/daemon_mgr pyTivo start "/share/HDA_DATA/.qpkg/pyTivo/pyTivo.py &" 
 
看起來會變成這樣:
 
        RETVAL=$?
        /bin/sleep 5
        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/HDA_ROOT/ffmpeg
        /sbin/daemon_mgr pyTivo start "/share/HDA_DATA/.qpkg/pyTivo/pyTivo.py &"
        ;; 
 
- 爆肝之旅
別擔心, 接下來這個爆肝之旅你不用走, 我走就可以了, 先告訴你我爆肝後的結論, 很愚蠢的一個結論, 那就是: 
80G Tivo 內建的 Ethernet _疑似_不能接到 _太新的_ switch hub !?

狀況是這樣,
在我安裝pyTivo的時候, 我一直在使用的Asus無線ip分享器在時間上很巧合的掛掉了, 而Tivo一開始就是接到這台Asus分享器上並連接到intranet, 那個Asus機器起碼有五年以上, 當時我立刻換了一台DrayTek的有線分享器, 而且不以為意. 
後來在pyTivo安裝完成之後, 用Tivo直接去拉NAS裡面的影片, 發現一直沒辦法拉超過2個影片, 總是在拉第二個片子的時候Tivo的網路功能會掛掉, 而且會塞住我整個intranet. 我一直以為是software的問題, 所以花了數個晚上去trace pyTivo和整個 python 的 httpserver stuff.
 
就快要放棄的時候,
發現直接把Tivo和NAS接到種花電信小烏龜上面, 居然可以很順利的拉超過2片影片, 才開始懷疑是hub的問題, 接下來不斷的測試很多hub, 最後還是把Tivo接到一台滿老的SMC SMCWB14S-N2 無線ip分享器才解決. 我不是網路專門, 所以不知道這是什麼樣的靈異現象, 但是總之後來是好了. 
 
好像80G的Tivo現在也沒賣了, 希望新的Tivo沒有這樣的問題. 這個也要小小抱怨一下, 可能台灣市場太小, 人家老美都有好多種奇奇怪怪的Tivo可以選, 還可以直接看Youtube影片, 希望台灣這裡加油一下.
 
 
- 快樂使用中
 
接下來就跟一開始的照片一樣, 我關掉了windows機器, 直接用Tivo開始拉QNAP NAS上的影片, 當然僅限於不需要real time 轉檔的 mpeg2 和 tivo 檔案, 我沒測過其他需要轉檔的格式, 不過NAS上沒有已經編譯的tivodecode, 應該也是無法使用, 況且以NAS那麼弱的CPU, 應該會轉到死為止. 
 
到目前為止, 只能說非常滿意, 快樂使用中. 又一個opensource軟體強過於close source的例子!
 
我不是很會寫一些教學, 寫了之後才知道鳥哥的偉大, 以上給有使用Tivo的人參考囉! 


2017-11-19 update
最近買了 ZyXEL 合勤的 PLA5256 電力線設備, 發現台灣版的Tivo接到PLA5256上利用電力線上網也可以達成 SMCWB14S-N2 的效果. 在這邊紀錄一下.