
Ubuntu日本語フォーラム

ログインしていません。
Ubuntu 11.04 日本語 RemixをクリーンインストールしたのですがICカードリーダ SCR3310-NTTComが認識されません。
Ubuntu 10.10では認識されていました。
11.04のccidのライブラリは1.4.2-2ですが1.3.11にダウングレードするとうまくいくという情報も流れているようです。
現在のFedora 15 Betaのccidのライブラリのバージョンは、
pcsc-lite-ccid-1.4.2-2.fc15.i686
なのですが、正しくSCR3310-NTTComを認識し、ICカードからデータを取り出すことに成功しています。
Fedora 15 BetaとUbuntu 11.04ではccidのバージョンが同じであるにもかかわらずUbuntuでは
SCR3310-NTTComが認識されないようです。
オフライン
私も同じ問題に遭遇しました。
ただ、/etc/init.d/pcscd の43行め辺り編集し
exit 0
↓
#exit 0
にしてやると pcsc_scan だけは通るようになりました。
ICカードリーダー、カードが表示されます。
ただ、まだちゃんと使ってないんですけど…
オフライン
doburoku さん、こんにちは。
/etc/init.d/pcscd を書いてあるとおりに編集してみました。
ICカードリーダ SCR3310-NTTComが、認識され
JavaやPKCS#11などのアプリケーションで正しく動作することが確認されました。
動作の確認だけで恐縮ですが、急ぎ、ご報告まで。
オフライン
SCR3310-NTTComは、確かにUbuntu 10.10では適切なドライバやミドルウェアさえ当てれば普通に認識され、Ubuntu 11.04では同様の手順では認識も正常動作もしません。
ですが、Ubuntu 11.04でもUbuntu 10.10で利用されている適切なドライバやミドルウェアにダウングレードすることで正常に認識されます。
Ubuntu 10.10でSCR3310-NTTComを認識させるために一般的には、
1、libccid
2、pcsc-tools
3、libpcsclite-dev
等をインストールします。
3、libpcsclite-dev
はdevですので、認識だけなら必要ないのかもしれませんが、これを入れるとバージョン依存する
4、libpcsclite1
が自動でインストールされるのではないかと思います。(すみませんが、確認していませんので必要であれば確認してください)
Ubuntu 11.04 amd64(64bit)では、これらのうち
1、libccid
2、pcsc-tools
をmaverickのときのバージョンにダウングレードすることで正常に認識させられます。
つまり、
3、libpcsclite-dev
4、libpcsclite1
のダウングレードなしで認識されます。
ところがUbuntu 11.04 i386(32bit)では、この2つのダウングレードだけでは正常に認識しません。
ですので、
1、libccid
2、pcsc-tools
3、libpcsclite-dev
の全てをダウングレードすることになります。
ところが、
3、libpcsclite-dev
は
4、libpcsclite1
にバージョン依存しているため、
3、libpcsclite-dev
だけではダウングレードできません。
ですので、まず先に
4、libpcsclite1
をダウングレードし、その後
3、libpcsclite-dev
をダウングレードすることになります。
それでは、手順を記載します。
★★★★★★★★
☆Ubuntu 11.04 amd64(64bit)の場合
http://packages.ubuntu.com/maverick/amd64/libccid/download
から
libccid_1.3.11-1_amd64.deb
をダウンロードします。
http://packages.ubuntu.com/maverick/amd64/pcscd/download
から
pcscd_1.5.5-3ubuntu2.1_amd64.deb
をダウンロードします。
端末でダウンロードディレクトリに移動して、
sudo dpkg -i libccid_1.3.11-1_amd64.deb
sudo dpkg -i pcscd_1.5.5-3ubuntu2.1_amd64.deb
や
sudo dpkg -i *.deb
等でダウングレードします。
このままでは自動アップデートで元通り更新されてしまうので、変更されないようにバージョンの固定を行います。
まずは、Synapticを起動し、「PC/SC」のキーワードで検索します。
次に、Ctrlキーを押したまま「libccid」と「pcscd」をクリックし、「パッケージ」→「バージョンを固定」をクリックで完了です。
カードを差した状態で、SCR3310-NTTCom本体の緑色のランプが点滅し、(点灯ではカード認識出来ていない)
pcsc_scan
にて「NTTCom」とか出て、差したカードの名称等が出てくればOKです。
★★★★★★★★
★★★★★★★★
☆Ubuntu 11.04 i386(32bit)の場合
http://packages.ubuntu.com/maverick/i386/libccid/download
から
libccid_1.3.11-1_i386.deb
をダウンロードします。
http://packages.ubuntu.com/maverick/i386/pcscd/download
から
pcscd_1.5.5-3ubuntu2.1_i386.deb
をダウンロードします。
http://packages.ubuntu.com/ja/maverick/i386/libpcsclite1/download
から
libpcsclite1_1.5.5-3ubuntu2.1_i386.deb
をダウンロードします。
http://packages.ubuntu.com/ja/maverick/i386/libpcsclite-dev/download
から
libpcsclite-dev_1.5.5-3ubuntu2.1_i386.deb(libpcsclite1の後でないとダウングレードできない)
をダウンロードします。
端末でダウンロードディレクトリに移動して、
sudo dpkg -i libccid_1.3.11-1_i386.deb
sudo dpkg -i pcscd_1.5.5-3ubuntu2.1_i386.deb
sudo dpkg -i libpcsclite1_1.5.5-3ubuntu2.1_i386.deb
sudo dpkg -i libpcsclite-dev_1.5.5-3ubuntu2.1_i386.deb
や
sudo dpkg -i *.deb
等でダウングレードします。
こととき特に「libpcsclite-dev」の前に「libpcsclite1」をダウングレードしなければなりません。
このままでは自動アップデートで元通り更新されてしまうので、変更されないようにバージョンの固定を行います。
まずは、Synapticを起動し、「PC/SC」のキーワードで検索します。
次に、Ctrlキーを押したまま「libccid」と「pcscd」、「libpcsclite1」、「libpcsclite-dev」をクリックし、「パッケージ」→「バージョンを固定」をクリックで完了です。
カードを差した状態で、SCR3310-NTTCom本体の緑色のランプが点滅し、(点灯ではカード認識出来ていない)
pcsc_scan
にて「NTTCom」とか出て、差したカードの名称等が出てくればOKです。
「libpcsclite-dev」はdevですので、自分でカードを読み書きするプログラムを作ってそれをコンパイル(開発)するようなケースではなく、認識だけなら必要ないと思います。
★★★★★★★★
amd64のケースもi386のケースもどちらもあらかじめ11.04のバージョンのドライバ等がインストールされている前提での手順ですので、まだインストールされていない場合は、ダウングレードではなく、普通にダウンロードして普通にインストールするだけで良いかと思います。
また、SCR3310-NTTComは、よくPT2と併用して使われるケースがあるようですが(検索するとたくさんでますので)、その場合でも上記手順で認識されるのではないかと思います。
できるだけ慎重かつ丁寧に説明したつもりですが、全てをテストしているわけではありませんし、間違いや抜け等もあるかもしれませんので、そのときはまたご質問ください。
それにしても、仕方ない部分はありますが、Ubuntuのバージョンが上がって、今までできていたことができなくなるのはとても残念です。
Unityも私にとっては残念で、結局GNOME2に戻ってしまっています。
やはり、こういったSCR3310-NTTComの不具合や、Unityの使いかっての悪さ等、ユーザの声を届ける必要があると思います。
けれど、
https://wiki.ubuntulinux.jp/BugReport
のLaunchpadを使った方法では英語しか受け付けていませんので、
https://launchpad.net/ubuntu-jp-improvement
ならば日本語で受け付けてくださるので、ぜひ報告してください。
これがOSSへの参加でもありますし、操作方法ならまだしも、このような不具合の場合、掲示板に書いてもなかなか問題を解決する解答が現れることはありませんので、合わせて報告をしておくと解答が現れる前にアップデートで解決できる可能性が出ます。
これがUbuntuを育てることにもつながりますので宜しくお願い致します。
オフライン
はじめまして、plumaと申します。
mint14を使用していますがICカードリーダーが読み込みません。
../init.d/pcscdファイルのコードが全然違っていて(43行目にextt 0がない状態)pcsc_scanをかけても
Waiting for the first reader...
で止まってしまいます。
そのpcscdファイルのコードは以下です。
#! /bin/sh
### BEGIN INIT INFO
# Provides: pcscd
# Required-Start: $local_fs $remote_fs $syslog
# Required-Stop: $local_fs $remote_fs $syslog
# Should-Start: udev hal
# Should-Stop: udev hal
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Daemon to access a smart card using PC/SC
# Description: The PC/SC daemon is used to dynamically
# allocate/deallocate reader drivers at runtime and manage
# connections to the readers.
### END INIT INFO
# Authors:
# Carlos Prados Bocos <[email protected]>
# Ludovic Rousseau <[email protected]>
# Do NOT "set -e"
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="PCSC Lite resource manager"
NAME=pcscd
DAEMON=/usr/sbin/$NAME
IPCDIR=/var/run/pcscd
PIDFILE=$IPCDIR/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# if you need to pass arguments to pcscd you should edit the file
# /etc/default/pcscd and add a line
# DAEMON_ARGS="--your-option"
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Do not start at boot using systemd but start using on-demand
# http://ludovicrousseau.blogspot.com/2011/11/pcscd-auto-start-using-systemd.html
if [ $1 = "start" -a -d /sys/fs/cgroup/systemd ]
then
# Do not start from this script
exit 0
fi
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
# get LANG variable (code from /etc/init.d/keymap.sh)
ENV_FILE="none"
[ -r /etc/environment ] && ENV_FILE="/etc/environment"
[ -r /etc/default/locale ] && ENV_FILE="/etc/default/locale"
value=$(egrep "^[^#]*LANG=" $ENV_FILE | tail -n1 | cut -d= -f2)
eval LANG=$value
#
# Function that starts the daemon/service
#
do_start()
{
# create $IPCDIR with correct access rights
if [ ! -d $IPCDIR ]
then
rm -rf $IPCDIR
mkdir $IPCDIR
fi
chgrp pcscd $IPCDIR
chmod 0775 $IPCDIR
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time.
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=3 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc -p "$PIDFILE" "$DAEMON" "$NAME" && exit 0 || exit $?
;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac
:
以上
43行目(exit 0)に該当しそうな所はコメントアウト試しましたが、相変わらずエラーのままで認識しません。
対処方法等よろしくおねがいします。
オフライン