« | »

2018.03.01

recpt1で b25デコードに失敗(pcscにアクセスできない)

家の録画機が調子悪くなったので、最新の OSで更新。
いつも通り Fedora27で。fc17から色々と変わっているので簡単にまとめ。

LAMP環境はふつーに入れていく。今回 DBは MySQLから MariaDBに変更。とは言え中身は大して変わらないので MySQLと同じように dnfなりで入れて OK。
phpは 7.xがデフォルトになっているので remirepoから 5.6を入れる。と言うか、改変した epgrecが 7.0では動かないので。
# wget “https://rpms.remirepo.net/fedora/remi-release-27.rpm”
# rpm -Uvh remi-release-27.rpm
# dnf install –enablerepo=remi php56.x86_64 php56-php-cli.x86_64 php56-php-common.x86_64 php56-php-gd.x86_64 php56-php-mbstring.x86_64 php56-php-mysqlnd.x86_64 php56-php-pdo.x86_64 php56-php-pear.noarch php56-php-pecl-apcu.x86_64 php56-php-xml.x86_64

apache24から phpは fpm必須なので
# dnf –enablerepo=remi install php56-php-fpm.x86_64
/usr/bin/に php56のシンボリックリンクを作っとく。ちゃんと phpのバージョンと合わせないと×

pcsc関係は dnfで、pt3や arib25は適当にコンパイルしてインストール。

# systemctl start messagebus.service
# systemctl start pcscd.service
pcsc_scanで “Japanese Chijou Digital B-CAS Card…..”が出れば OK。上記二つのサービスを enableしておく。

まぁ、これでコンソールから若しくは suであれば recpt1で録画が出来るはず。
ところが、リモートシェルで入ったり、apacheユーザーやら epgrecで録画すると arib25デコードが出来ない。vlcで再生しようとしても DRMコンテンツと言うことでで真っ黒 (N)
$ recpt1 –b25 –strip 24 30 /tmp/test.ts
using B25…
enable B25 strip
pid = 14240
C/N = 24.452310dBbcas->init failed
Cannot start b25 decoder
Fall back to encrypted recording

うーん、b25デコードに失敗してる。カードリーダーも LED点きっ放しでアクセスしていない様子….
rootユーザなら問題なく b25デコードできるんだが???
で、journalctlでログを見ると
pcscd[14365]: 00000000 auth.c:137:IsClientAuthorized() Process 14374 (user: 48) is NOT authorized for action: access_card
pcscd[14365]: 00000270 winscard_svc.c:491:ContextThread() Rejected unauthorized client for ‘NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader …….

Authorizeできていないので B-CASカードにアクセスできないそうな。

 

さて本題、

pcsc関係はいつの間に access controlを取り入れているみたいだ。スマートカードなんで、まぁ当たり前と言えば当たり前なんだけど、地デジ以外でスマートカード使わないしw
どうやらコンソールユーザーや rootユーザー以外のアクセスには access ruleを書かないといけないらしい。redhatの Controlling access to smart cardsのページを参考に /usr/share/polkit-1/rules.dに apacheユーザーのルールを作成。

#vi apache.rule

 

polkit.addRule(function(action, subject) {
if (action.id == “org.debian.pcsc-lite.access_pcsc” &&
subject.user == “apache”) {
return polkit.Result.YES;
}
});

polkit.addRule(function(action, subject) {
if (action.id == “org.debian.pcsc-lite.access_card” &&
action.lookup(“reader”) == ‘NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader [Vendor Interface] 00 00’ &&
subject.user == “apache”) {
return polkit.Result.YES;    }
});

 

reader==’NTT Communications ~~~~’は pcsc_scanで拾える Reader 0:のリーダーの名前をコピペで。

pscsd.serviceを再起動して…

$ recpt1 –b25 –strip 24 10 /tmp/test5.ts
using B25…
enable B25 strip
pid = 14393
C/N = 24.310654dB
Recording…
Recorded 11sec

今度は OK!

Trackback URL

Comment & Trackback

No comments.

Comment feed

Comment





XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*
:-[ (B) (^) (P) (@) (O) (D) :-S ;-( (C) (&) :-$ (E) (~) (K) (I) (L) (8) :-O (T) (G) (F) :-( (H) :-) (*) :-D (N) (Y) :-P (U) (W) ;-)

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)