
プラットフォーム非依存のNear Field Communication (NFC)ライブラリ
*-
libnfc は、ユーザー空間アプリケーションが NFC デバイスにアクセスできるようにするライブラリです。
公式ウェブサイトは消滅しました。WayBackMachine でコピーを閲覧できます。
公式フォーラムサイトは消滅しました。WayBackMachine でコピーを閲覧できます。
公式開発サイトは: https://github.com/nfc-tools/libnfc
重要: このファイルは POSIX システムを対象としています。Windows については README-Windows.md を参照してください。
一部の NFC ドライバはサードパーティ製ソフトウェアに依存しています:
pn53x_usb & acr122_usb:
acr122_pcsc:
pcsc:
リグレッションテストスイートは cutter フレームワークに依存しています: http://cutter.sf.net
注: リポジトリの git クローンから直接作業する場合、一部のファイルを最初に生成する必要があります。これを行うには次のコマンドを実行してください:
autoreconf -vis
あるいは、パッケージリリースの .tar.bz2 版 (./configure を既に含む) を使用してください: https://github.com/nfc-tools/libnfc/releases/
ビルドは、次のコマンドを実行するだけで簡単に行えます:
./configure
make
特定のドライバを指定してビルドするには、./configure --help に詳細が記載されている --with-drivers=... オプションを参照してください。
make install
デバイスを操作するには、ユーザーに権限を付与する必要がある場合があります。 GNU/Linux システムで udev を使用している場合は、提供されている udev ルールを使用できます。 例: Debian、Ubuntu など。
sudo cp contrib/udev/93-pn53x.rules /lib/udev/rules.d/
FreeBSD で devd を使用する場合は、ルールファイル contrib/devd/pn53x.conf もあります。
ライブラリのデフォルトの動作を変更するために、libnfc は sysconfdir (./configure に指定された値) にある設定ファイルを使用します。
コメント付きのサンプルファイルがソース内にあります: libnfc.conf.sample
次のようにコンパイルした場合:
./configure --prefix=/usr --sysconfdir=/etc
設定ディレクトリを作成し、サンプルファイルをコピーできます:
sudo mkdir /etc/nfc
sudo cp libnfc.conf.sample /etc/nfc/libnfc.conf
複数のデバイスを設定するには、libnfc.conf を変更するか、nfc/devices.d ディレクトリ内にデバイスごとにファイルを作成します:
sudo mkdir -p /etc/nfc/devices.d
printf 'name = "My first device"\nconnstring = "pn532_uart:/dev/ttyACM0"\n' | sudo tee /etc/nfc/devices.d/first.conf
printf 'name = "My second device"\nconnstring = "pn532_uart:/dev/ttyACM1"\n' | sudo tee /etc/nfc/devices.d/second.conf
次の環境変数を使用して、実行時に特定の設定オプションを上書きできます:
LIBNFC_DEFAULT_DEVICE=<connstring>: LIBNFC_DEFAULT_DEVICE=pn532_uart:/dev/ttyACM0 は、/dev/ttyACM0 上の pn532 をデフォルトデバイスとして使用します。LIBNFC_DEVICE=<connstring> は、設定ファイル内のすべてのデバイスを無視し、変数で定義されたデバイスのみを使用します。LIBNFC_AUTO_SCAN=<true|false> は、設定ファイルの allow_autoscan オプションを上書きします。LIBNFC_INTRUSIVE_SCAN=<true|false> は、設定ファイルの allow_intrusive_scan オプションを上書きします。LIBNFC_LOG_LEVEL=<0|1|2|3> は、設定ファイルの log_level オプションを上書きします。認識されたデバイスの connstring を取得するには、nfc-scan-device を使用できます。LIBNFC_AUTO_SCAN=true nfc-scan-device は、見つかったすべてのデバイスの名前と connstring を表示します。
バグを報告するには、https://github.com/nfc-tools/libnfc/issues にアクセスし、バグ報告フォームに記入してください。
質問や意見がある場合は、開発者コミュニティに投稿することをお勧めします: http://www.libnfc.org/community
必ず以下を含めてください:
libnfc のバージョン
システムに関する情報。例:
その他、関連すると思われる情報。
デバッグを有効にしたトレース。
デバッグを有効にしてバグを再現してください。例えば、次のコマンドだった場合:
$ nfc-list -v
次のように実行します:
$ LIBNFC_LOG_LEVEL=3 nfc-list -v
バグの再現方法。
その動作を示す短いテストプログラムを含めてください。
最後の手段として、より大きなソフトウェアへのポインタを提供することもできます。
そのソフトウェアはダウンロード可能です。
バグがクラッシュだった場合は、出力された正確なテキスト。
クラッシュ発生時に出力された内容。
スタックトレースなどの追加情報は役立つ場合がありますが、
必須ではありません。
パッチは https://github.com/nfc-tools/libnfc/issues に投稿できます。
パッチがバグを修正する場合、通常は「バグの報告方法」に記載されているすべての情報を含めることをお勧めします。
Touchatag または ACR122 デバイスが libnfc によって検出されない場合は、PCSC-lite デーモン (pcscd) がインストールされて実行されていることを確認してください。
Touchatag または ACR122 デバイスが PCSC-lite デーモンによって検出されない場合 (pcsc_scan が何も表示しない場合) は、libccid の偽装ファームウェア検出を無効にしてみてください。libccid_Info.plist 設定ファイル (通常は /etc/libccid_Info.plist) を編集し、<key>ifdDriverOptions</key> を見つけて、<string>0x0000</string> の値を 0x0004 に変更して偽装デバイスを許可し、pcscd デーモンを再起動します。
ACR122 デバイスを libnfc でタグなしで使用する場合 (NFCIP モードやカードエミュレーションを使用する場合など) は、もう 1 つ PCSC-lite の調整が必要です: CCID Exchange コマンドの使用を許可する必要があります。これを行うには、libccid_Info.plist 設定ファイル (通常は /etc/libccid_Info.plist) を編集し、<key>ifdDriverOptions</key> を見つけて、<string>0x0000</string> の値を 0x0001 に変更して CCID exchange を許可するか、0x0005 に変更して CCID exchange と偽装デバイスを許可します (前の注意を参照)。その後、pcscd デーモンを再起動します。
警告: ACS CCID ドライバ (acsccid) を使用する場合、設定ファイルは /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist のような場所にあります。
Libnfc は SCL3711 の PCSC プロプライエタリドライバと同時に使用することはできません。 考えられる解決策は 2 つあります:
Linux カーネルバージョン 3.1 以降、libnfc を使用するにはいくつかのカーネルモジュールをロードしてはなりません: "nfc"、"pn533"、"pn533_usb"。
カーネルがこれらのモジュールを自動的にロードしないようにするには、modprobe 設定ファイルでブラックリストに登録できます。このファイルは libnfc アーカイブ内に提供されています:
sudo cp contrib/linux/blacklist-libnfc.conf /etc/modprobe.d/blacklist-libnfc.conf
Libnfc は、ほとんどの Linux 環境ですでに利用可能な bR500 および R502 の PCSC プロプライエタリドライバと連携できます。
PCSC サポートを有効にするには: ./configure --with-drivers=pcsc。
動作が確認されているリーダー:
これらのリーダーは CCID v1.4.25 以降でサポートされています。CCID ドライバのバージョンが 1.4.25 以上であることを確認してください。
MacOS では、次のコマンドで CCID バージョンを確認できます。必要に応じて、https://github.com/martinpaljak/osx-ccid-installer/releases から最新の CCID ドライバをインストールできます。
grep -A 1 CFBundleShortVersionString /usr/local/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist
Linux では、次のコマンドで CCID バージョンを確認できます。必要に応じて、https://ccid.apdu.fr/ から最新の CCID ドライバをインストールできます。
grep -A 1 CFBundleShortVersionString /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
FeliCa は、ソニー株式会社の登録商標です。 MIFARE は、NXP Semiconductors の商標です。 Jewel Topaz は、Innovision Research & Technology の商標です。 その他のすべての商標は、それぞれの所有者に帰属します。