カテゴリー別アーカイブ: Ubuntu

ubuntuでICタグ(RFID)読み込み

WindowsではPC/SCがありますが、LinuxにもPC/SC Liteというライブラリがあり、非接触ICカード(RFID)にアクセスできます。

準備として、必要なライブラリをインストールします。

ubuntuではpcscデーモンは最初からインストールされているようです。

ICカードリーダには、OMNIKEYのCardman5321(USBタイプ)を使ってみます。

OMNIKEYはubuntuのSynapticパッケージに登録されているため、インストールが簡単なのです。

sudo apt-get install pcsc-tools pcsc-omnikey

(この時、libpcsc-perlなど関連ライブラリもインストールされます)

インストールが終わったら、OMNIKEY Cardman5321をPCのUSB端子に差し込み、以下のコマンドを実行します。

sudo /etc/init.d/pcscd stop

sudo /usr/sbin/pcscd -f -a -d

pcscデーモンがターミナル上でフォアグラウンド起動し、下記のようなメッセージが表示されます。

00000000 debuglog.c:224:DebugLogSetLevel() debug level=debug
00001188 pcscdaemon.c:505:main() pcsc-lite 1.5.3 daemon ready.
00250251 hotplug_libusb.c:477:HPAddHotPluggable() Adding USB device: 006:003
00000075 readerfactory.c:1024:RFInitializeReader() Attempting startup of OMNIKEY CardMan 5×21 00 00 using /usr/lib/pcsc/drivers/ifdokrfid_lnx-2.6.0.bundle/Contents/Linux/ifdokrfid.so
00000513 readerfactory.c:877:RFBindFunctions() Loading IFD Handler 3.0
OK OMNIKEY CardMan RFID  IA32 v2.6.0 support@omnikey.com
00289502 readerfactory.c:249:RFAddReader() Using the pcscd polling thread
00002051 readerfactory.c:1024:RFInitializeReader() Attempting startup of OMNIKEY CardMan 5×21 00 01 using /usr/lib/pcsc/drivers/ifdokrfid_lnx-2.6.0.bundle/Contents/Linux/ifdokrfid.so
00000028 readerfactory.c:741:RFLoadReader() Reusing already loaded driver for /usr/lib/pcsc/drivers/ifdokrfid_lnx-2.6.0.bundle/Contents/Linux/ifdokrfid.so
00000071 readerfactory.c:877:RFBindFunctions() Loading IFD Handler 3.0
OK OMNIKEY CardMan RFID  IA32 v2.6.0 support@omnikey.com
00393999 readerfactory.c:385:RFAddReader() Using the pcscd polling thread
00385840 Card ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 16 00 00 00 00 74

00000000 debuglog.c:224:DebugLogSetLevel() debug level=debug00001188 pcscdaemon.c:505:main() pcsc-lite 1.5.3 daemon ready.00250251 hotplug_libusb.c:477:HPAddHotPluggable() Adding USB device: 006:00300000075 readerfactory.c:1024:RFInitializeReader() Attempting startup of OMNIKEY CardMan 5×21 00 00 using /usr/lib/pcsc/drivers/ifdokrfid_lnx-2.6.0.bundle/Contents/Linux/ifdokrfid.so00000513 readerfactory.c:877:RFBindFunctions() Loading IFD Handler 3.0OK OMNIKEY CardMan RFID  IA32 v2.6.0 support@omnikey.com00289502 readerfactory.c:249:RFAddReader() Using the pcscd polling thread00002051 readerfactory.c:1024:RFInitializeReader() Attempting startup of OMNIKEY CardMan 5×21 00 01 using /usr/lib/pcsc/drivers/ifdokrfid_lnx-2.6.0.bundle/Contents/Linux/ifdokrfid.so00000028 readerfactory.c:741:RFLoadReader() Reusing already loaded driver for /usr/lib/pcsc/drivers/ifdokrfid_lnx-2.6.0.bundle/Contents/Linux/ifdokrfid.so00000071 readerfactory.c:877:RFBindFunctions() Loading IFD Handler 3.0OK OMNIKEY CardMan RFID  IA32 v2.6.0 support@omnikey.com00393999 readerfactory.c:385:RFAddReader() Using the pcscd polling thread00385840 Card ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 16 00 00 00 00 74

ちゃんとリーダライタと接続できているようです。

別のターミナルを起動して、以下のコマンドを実行します。

pcsc_scan

すると下記のようなメッセージが表示されます。

PC/SC device scanner

V 1.4.16 (c) 2001-2009, Ludovic Rousseau <ludovic.rousseau@free.fr>

Compiled with PC/SC lite version: 1.5.3

Scanning present readers…

0: OMNIKEY CardMan 5×21 00 00

1: OMNIKEY CardMan 5×21 00 01

Tue May 18 09:19:21 2010

Reader 0: OMNIKEY CardMan 5×21 00 00

Card state: Card removed,

Tue May 18 09:19:21 2010

Reader 1: OMNIKEY CardMan 5×21 00 01

Card state: Card removed,

これは、現在カードをリーダライタに載せていない状態です。
カードを載せるとさらにメッセージが表示されます。
Tue May 18 09:03:31 2010
Reader 1: OMNIKEY CardMan 5×21 00 01
Card state: Card inserted,
ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 16 00 00 00 00 74
ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 0A 00 16 00 00 00 00 74
+ TS = 3B –> Direct Convention
+ T0 = 8F, Y(1): 1000, K: 15 (historical bytes)
TD(1) = 80 –> Y(i+1) = 1000, Protocol T = 0
—–
TD(2) = 01 –> Y(i+1) = 0000, Protocol T = 1
—–
+ Historical bytes: 80 4F 0C A0 00 00 03 06 0A 00 16 00 00 00 00
Category indicator byte: 80 (compact TLV data object)
Tag: 4, len: F (initial access data)
Initial access data: 0C A0 00 00 03 06 0A 00 16 00 00 00 00
+ TCK = 74 (correct checksum)
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
NONE
Your card is not present in the database.
You can get the latest version of the database from
http://ludovic.rousseau.free.fr/softwares/pcsc-tools/smartcard_list.txt
or use: wget http://ludovic.rousseau.free.fr/softwares/pcsc-tools/smartcard_list.txt –output-document=/home/xxx/.smartcard_list.txt
If your ATR is still not in the latest version then please send a mail
to <ludovic.rousseau@free.fr> containing:
– your ATR
– a card description (in english)
Tue May 18 09:06:21 2010
Reader 1: OMNIKEY CardMan 5×21 00 01
Card state: Card removed,
Scanning present readers…
0: OMNIKEY CardMan 5×21 00 01
無事タグのIDが読み込めたようです。
ただし、1つ警告が出ています。
指示に従い下記のコマンドを実行します。
wget http://ludovic.rousseau.free.fr/softwares/pcsc-tools/smartcard_list.txt –output-document=/home/xxx/.smartcard_list.txt
※/home/xxxは、自分の環境に合わせてください
もし、ユーザに関係なく反映させるなら、/usr/share/pcsc/smartcard_list.txtを上書きして下さい
これでpcscデーモンを再起動し、pcsc_scanを実行すると警告もなくなりました。
テストが終わったので、pcscデーモンを起動していたターミナルで、CTRL+Cキーを押して終了し、下記コマンドを実行してデーモンとして起動させます。
sudo /etc/init.d/pcscd start
この状態で、pcsc_scanを実行し、無事ICカードの読み取りができればOKです。

ubuntu9.04+bluetoothでSkype(VAIO typeP&Let’sNote CF-W7)

ubuntuは更新が激しいため、更新の度にAV関係が動かなくなります。

この方法がいつまで使えるか分かりませんので、ご注意を。
(使えなくなったら、またご報告します)

今までSkypeを使うには、pulseAudioを削除し、ALSAaudioを使うのが常識でした。

しかし、Skypeが2.1(beta)にバージョンアップし、pulseAudioが正しく使えるようになっています。

ここでは、pulseAudioでの実行方法を説明します。

VAIO type PとLet’s Note CF-W7で動作確認しました。

なお、Bluetoothヘッドセットには、Sony DRC-BT15を使いました。

1.pulseAudio関連パッケージのインストール

  • synapticパッケージマネージャを起動します。
  • 「設定」-「リポジトリ」メニューを選択し、ダイアログを表示します。
  • 「サードバーティのソフトウェア」タブを選択します。
  • [追加]ボタンを押し、次の文字を入力します。
deb http://ppa.launchpad.net/themuso/ppa/ubuntu jaunty main
  • もう1回[追加]ボタンを押し、次の文字を入力します。
deb-src http://ppa.launchpad.net/themuso/ppa/ubuntu jaunty main
  • 端末画面を開き、以下のコマンドを入力します。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B88A1AA8
  • Synapticのメイン画面の[再読込]ボタンを押します。
  • [検索]ボタンを押し、pulseと入力して検索します。
  • リストが表示されますので、下記のものをインストール指定してください。(既にインストールされている物については、そのままにしてください)
  1. gstreamer0.10-pulseaudio
  2. libasound2-plugins
  3. libgsm1
  4. libpulse-browse0
  5. libpulse-mainloop-glib0
  6. libpulse0
  7. libpulsecore9
  8. padevchooser
  9. paman
  10. paprefs
  11. pavucontrol
  12. pavumeter
  13. pulseaudio
  14. pulseaudio-esound-compat
  15. pulseaudio-module-bluetooth
  16. pulseaudio-module-gconf
  17. pulseaudio-module-hal
  18. pulseaudio-module-x11
  19. pulseaudio-module-zeroconf
  20. pulseaudio-utils
  • インストール指定が終わったら、[適用]ボタンを押して、インストールします。

2.bluemanのインストール

標準でインストールされているbluez-gnomeは大変使いにくいし、接続できないことが多いのですが、bluemanをインストールすると簡単に接続できて楽です。

  • Synapticパッケージマネージャを起動します。
  • pulseaudioでリポジトリを追加した方法と同じやり方で、以下の2つを追加します。
deb http://ppa.launchpad.net/blueman/blueman-dailies/ubuntu jaunty main 
deb-src http://ppa.launchpad.net/blueman/blueman-dailies/ubuntu jaunty main 
  • 端末を起動し、下記のコマンドを実行します。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 951DC1E2
  • synapticのトップ画面から、[再読込]ボタンを押します。
  • [検索]ボタンを押し、bluemanと入力して検索します。
  • bluemanをインストール指定し、[適用]ボタンを押します。
  • このとき、「bluez-manを削除します。」と言う内容のメッセージが出るので、そのままOKします。
  • インストールが終わったら、念のためubuntuを再起動します。

「念のため再起動」というのは、ubuntuを使うときには重要です。

3.pulseAudioの設定(1)

  • 「システム」-「サウンド」メニューを選択します。
  • イベントの音、楽曲と動画、音声会議をすべてPulseAudioサウンド・サーバに変更します。
  • サウンドメニューを閉じます。

4.bluetoothヘッドセットとペアリングします。

  • ヘッドセットの電源をいれ、画面右上のbluetoothアイコンをクリックします。
  • 目的のヘッドセットが表示されたら、ペアリングし、信頼設定します。
  • 結合できたら、該当のヘッドセットアイコンを右クリックし、「ヘッドセットサービスを接続」をクリックします。
  • 「成功しました!」というメッセージがステータスウィンドウに表示されれば、完了です。

※音楽を聞くのであれば、「A2DPサービスを接続」を選択する方法もあります。

5.pulseAudioの設定(2)

  • 「アプリケーション」-「サウンドとビデオ」-「PulseAudioDeviceChooser」を選択します。
  • 画面右上にヘッドフォンジャックのようなアイコンが表示されますので、それをクリックします。
  • 「Manager」をクリックし、ダイアログを表示させます。
  • Devicesタブをクリックし、SinksやSourcesに接続したヘッドセットが追加されていることを確認します。
  • 画面右上のヘッドフォンジャックアイコンをクリックし、「Volume Control」をクリックします。
  • 「Output Devices」タブをクリックし、ヘッドセットの箇所の右端に「へ」が逆になったアイコンがありますので、クリックし、「default」にチェックをつけます。
  • 「Input Devices」タブをクリックし、ヘッドセットの箇所を同様に「default」にチェックをつけます。

あとは、SkypeのサイトからSkype2.1(beta)をダウンロードしてインストールするだけです。

これで、Skypeを起動すると、ほぼ何も設定せず、通話できます。

ちなみに、ubuntuの再起動の度にbluetoothヘッドセットへの「ヘッドセットサービスを接続」や、InputDevices,OutputDevicesへの「default」チェックは手動で行う必要があります。

また、Skypeで会話ができなくなることがありますので、その時はSkypeを再起動してください。

今までUbuntuでbluetoothやSkypeを使うのはかなり大変でしたが、

やっとその苦労から解放されそうな予感がします。

ちなみに、この設定でビデオやインターネットラジオを聞くと、ちゃんとbluetoothヘッドセットから聞こえます。

bluetoothのA2DPサービスを使ってもビデオやインターネットラジオは聞けますが、Skypeの場合には呼び出し音までしか再生されず、通話音は聞けなくなりましたので、ヘッドセットサービスを使う必要があります。
※使用しているデバイスによるかもしれません