黒 Friio for CentOS5


<< トップページへ

概要

黒Friioを運良く入手できたのでこれをLinuxで運用するための
Tipsをまとめてみようと思います。
動作を確認できたのはCentOS5 2.6.18-53.1.14.el5です。

実験の材料

最初にプログラム作成者に感謝です!

friioで録画するためのプログラム
up0493.zip recfriiobs

暗号解除のためのプログラム
up0404.zip  b25

カードリーダー関連の必要なパッケージ
ここで注意するべき事はel5純正のccid-1.0.1-6.el5で はバージョンが古くてカードを認識しない事です。

pcsc-tools-1.4.8-1(pcsc-tools-1.4.8-1.src.rpmよりリビルド)
pcsc-perl-1.4.7-1
pcsc-lite-libs-1.3.3-1.rf
pcsc-lite-devel-1.3.3-1.rf
pcsc-lite-1.3.3-1.rf
pcsc-lite-doc-1.3.3-1.rf
ccid-1.2.1-1.fc7

CentOS5 recfriiobsのコンパイル

CentOS5ではふつうにコンパイルするとエラーが出て途中でとまります。
ソースの修正を行います。

$ unzip up0493.zip
$ cd recfriiobsr1
$ make
g++ -O2 -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 `pkg-config --cflags glib-2.0`   -c -o recfriiobs.o recfriiobs.cpp

−−−−−−−−中略−−−−−−−−−

recfriiobs.cpp:471: 警告: ‘void tuner_claim(int, unsigned int)’ defined but not used
recfriiobs.cpp:445: 警告: ‘int tuner_readts(int, uint8_t*, int)’ defined but not used
make: *** [recfriiobs.o] エラー 1

ソースの修正

(1)29行目
    修正前 #include <linux/usb/ch9.h>
    修正後 #include <linux/usb_ch9.h>

(2)840行目
    std::cout << "Search friios from dir: " << base_dir << std::endl;

    この行を削除

(3)
    修正前LIBS   = -lpthread -lboost_thread-mt -lboost_filesystem                      -lboost_regex `pkg-config --libs glib-2.0`

    修正後LIBS   = -lpthread -lboost_thread -lboost_filesystem                     -lboost_regex `pkg-config --libs glib-2.0`

    -mtを削除する。

再度コンパイルをしてみると

$ make

g++ -O2 -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 `pkg-config --cflags glib-2.0`   -c -o recfriiobs.o recfriiobs.cpp
recfriiobs.cpp:471: 警告: ‘void tuner_claim(int, unsigned int)’ defined but not used
recfriiobs.cpp:445: 警告: ‘int tuner_readts(int, uint8_t*, int)’ defined but not used
g++  -o ./recfriiobs recfriiobs.o -lpthread -lboost_thread -lboost_filesystem -lboost_regex `pkg-config --libs glib-2.0`

コンパイルが成功するとrecfriiobsが生成されます。/usr/local/bin/の下にコピーしてパスを通しておきます。

$ unzip up0404.zip
$ cd marumolinuxr3/arib25v021/arib25/src
$ make

gcc -Wall -O2 -g `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -c -o arib_std_b25.o arib_std_b25.c
gcc -Wall -O2 -g `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -c -o b_cas_card.o b_cas_card.c
gcc -Wall -O2 -g `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -c -o multi2.o multi2.c
gcc -Wall -O2 -g `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -c -o td.o td.c
gcc -Wall -O2 -g `pkg-config libpcsclite --cflags` -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -c -o ts_section_parser.o ts_section_parser.c
gcc `pkg-config libpcsclite --libs` -lm -o b25 arib_std_b25.o b_cas_card.o multi2.o td.o ts_section_parser.o

$ cd marumolinuxr3/arib25v021
# cp libccid_Info.plist /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
# cp ./smartcard_list.txt /usr/share/pcsc/smartcard_list.txt

コンパイルが成功するとがmarumolinuxr3/arib25v021/arib25/srcの下にb25が生成されます。 /usr/local/bin/の下にコピーしてパスを通しておきます。

カード認識

最初に行うべき作業は上記パッケージをインストールしてその後friioを接続してカードを認識できているかを確認する事です。

$ pcsc_scan

PC/SC device scanner
V 1.4.8 (c) 2001-2006, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.3.3
Scanning present readers
0: Alcor Micro AU9520 00 00

Sun May 11 11:06:36 2008
 Reader 0: Alcor Micro AU9520 00 00
  Card state: Card inserted,
  ATR: 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99

ATR: 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99
+ TS = 3B --> Direct Convention
+ T0 = F0, Y(1): 1111, K: 0 (historical bytes)
  TA(1) = 12 --> Fi=372, Di=2, 186 cycles/ETU (19200 bytes/s at 3.57 MHz)
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = FF --> Extra guard time: 255 (special value)
  TD(1) = 91 --> Y(i+1) = 1001, Protocol T = 1
-----
  TA(2) = 81 --> Protocol to be used in spec mode: T=1 - Unable to change - defined by interface bytes
  TD(2) = B1 --> Y(i+1) = 1011, Protocol T = 1
-----
  TA(3) = 7C --> IFSC: 124
  TB(3) = 45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5
  TD(3) = 1F --> Y(i+1) = 0001, Protocol T = 15 - Global interface bytes following
-----
  TA(4) = 03 --> Clock stop: not supported - Class accepted by the card: (3G) A 5V B 3V
+ Historical bytes:
+ TCK = 99 (correct checksum)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99
        B-CAS

スクリプト


  1. 録画テスト及び再生確認スクリプト
$ cat TEST-friioBS
#!/bin/csh
echo""
echo "./recfriiobs 録画するチャンネル 録画秒数 出力先ファイル名" echo "" /usr/local/recfriiobs/recfriiobs
echo ""
echo "Input CH-No"
set ch = $<
echo ""
echo "Input Time(s)"
set t = $< echo ""
set file = `date +%F-%H-%M-%S`
echo ""
echo "$file"
echo ""
# /usr/local/recfriiobs/recfriiobs $ch $t $file
# set file2 = `echo $file`.ts echo "録画ファイル名" echo $file2 echo ""
/usr/local/recfriiobs/b25 $file $file2
sleep 2
/usr/bin/vlc $file2