検証はUbuntu 13.04の64bitで行う。
今回はPT2のドライバ等のインストールは手動で行うことにした。
まずは、必要となるパッケージをダウンロード。
新しいバージョンだといろいろ問題がありそうなので、全て古いバージョンのものをインストールする。
まずは、以下のコマンドを実行。
なお、当たり前だが最後のコマンドは他のdebパッケージの置いてあるフォルダで行わないように。
で、パッケージインストール完了したら、以下を実行してapt-get updateを行ってもバージョンが上がらないようにする。
パッケージ導入後、recpt1のインストールまでを進める。
●arib25
●pt2ドライバ&recpt1
●既存のpt2ドライバを無効化
解凍後、移動したフォルダ内で以下のファイルを作成していく。
今回、Makefileにも修正が必要となるためソースをそのまんま記述。
●winscard.cpp
●Makefile
上記2ファイルを設置後、コンパイルを実行し既存の「libpcsclite.so.1.0.0」と入れ替える。
make
cp libpcsclite.so.1.0.0 /lib/libpcsclite.so.1.0.0
ldconfig
これで録画、再生ができるかテスト。
recpt1 --b25 --strip 22 120 test.ts
結果…
(゚Д゚)
(;つД⊂)ゴシゴシ
(;゚Д゚)
なん…だと…
どうやら、arib25の実行において「libpcsclite.so.1.0.0」が使用されていたようだ。上書きした「libpcsclite.so.1.0.0」を元に戻したところ、通常のarib25が動かない状態での録画はできた。
一応、この方法でDebianはできたという話だけど…
発生するトラブルの起因として考えられるのって、カードの有無に関する制限が他のディストリよりもきついからのような気がする。
正直、LinuxでSoftCasを使用したい場合はUbuntuは諦めてCentOSかDebianに移行した方がいいと思う。
どうしてもUbuntuでやるなら、SoftCasではなくSoftarib25を採用することを薦める。(ただ、Softarib25はコンパイル実行時点においてカードリーダーとB-CASカードが必須だったような気がする。gitでクローン可能なので、ソースへのリンクは貼っておいた。)
物理的に別サーバを稼働できず、かつUbuntuを潰せないならばKVMやVMwareESXiでPT2(ESXiの場合はPT3。PT2はパススルーしてもうまく使えないので。)を載せて、ゲストOSにパススルーしてCentOSやWindows等で使った方が現実的な気がする。Ubuntuはゲストとして別途立ち上げるか、KVMホストとして使えばいい。
初めまして。 ubuntu12.04LTS 64bit で実験してみました。 ここに書いてある手順で実施したところ,同じ結果になりました。
返信削除そこで,winscard.cppのコメントアウトを元に戻してmakeしてみたらエラーを吐き出さず,出来上がった libpcsclite.so.1.0.0 で録画実験したところ,あっさりと・・・
linux は詳しく無いので,なぜなのかわかりませんが・・・
libpcscliteの使い方の問題について書き込みます。
返信削除libpcscliteの仕様が変わったことで、クライアント側?にもコードの書き換えが必要になったようですね。
そのうち、CentOS側にも同様の問題が発生するかと思います。
(新しいライブラリがCentOSに含まれた場合ですが)
libpcscliteのヘッダファイルを見ると、
2つ目のコメントアウトされている変数は、ライブラリ側から参照されているような気がするので、コメントアウトは不味いかと。
クライアント側のプログラムが動作しないのは、これが原因ではないでしょうか?
上述の匿名さんの例では、このページの記述に基づいてlibpcscliteを古いものに置き換えていたため、
クライアント側のソースを元に戻してもコンパイルエラーが出なかったのかも。
(もちろん古いlibpcscliteで動かすのであれば、今までのクライアントのコードで大丈夫です)
新しいlibpcscliteと動かすのであれば、下記のページに従って修正すると良いのかも知れません。
http://lists.alioth.debian.org/pipermail/pcsclite-cvs-commit/2011-May/005288.html
-LONG SCardGetStatusChange(SCARDCONTEXT hContext, DWORD dwTimeout,LPSCARD_READERSTATE_A rgRe
aderStates, DWORD cReaders){return SCARD_S_SUCCESS; }
+LONG SCardGetStatusChange(SCARDCONTEXT hContext, DWORD dwTimeout,LPSCARD_READERSTATE rgRead
erStates, DWORD cReaders){return SCARD_S_SUCCESS; }
-SCARD_IO_REQUEST g_rgSCardT1Pci;
+const SCARD_IO_REQUEST g_rgSCardT1Pci = { SCARD_PROTOCOL_T1, sizeof(SCARD_IO_REQUEST) };
コメント有難うございます。
削除ライブラリの仕様変更によるものでしたか。
今はあまり時間を作れないのですが、暇を見て試したいと思います。
先日Ubuntu12.04で試してみたところ導入できたので勝手ながらその時の情報を載せたいと思います
返信削除https://gist.github.com/tyage/3d201580549bc84e24cd
おぉ、ありがとうございます。
削除拝見させて頂きました。参考にさせて頂きます!