*-
* Free/Libre Near Field Communication (NFC) library
*
* Libnfc historical contributors:
* Copyright (C) 2009 Roel Verdult
* Copyright (C) 2009-2015 Romuald Conty
* Copyright (C) 2010-2012 Romain Tartière
* Copyright (C) 2010-2013 Philippe Teuwen
* Copyright (C) 2012-2013 Ludovic Rousseau
* Additional contributors:
* See AUTHORS file
-*
libnfc เป็นไลบรารีที่อนุญาตให้แอปพลิเคชัน userspace เข้าถึงอุปกรณ์ NFC
เว็บไซต์อย่างเป็นทางการคือ: http://www.nfc-tools.org/
เว็บไซต์ฟอรัมอย่างเป็นทางการคือ: http://www.libnfc.org/community/
เว็บไซต์การพัฒนาอย่างเป็นทางการคือ: https://github.com/nfc-tools/libnfc
หมายเหตุสำคัญ: ไฟล์นี้ครอบคลุมถึงระบบ POSIX สำหรับ Windows โปรดอ่าน README-Windows.md
ไดรเวอร์ NFC บางตัวขึ้นอยู่กับซอฟต์แวร์ของบุคคลที่สาม:
pn53x_usb และ acr122_usb:
acr122_pcsc:
ชิ้น:
ชุดทดสอบการถดถอยขึ้นอยู่กับเฟรมเวิร์กเครื่องตัด: http://cutter.sf.net
หมายเหตุ: หากทำงานโดยตรงจากโคลน git ของที่เก็บ จำเป็นต้องสร้างไฟล์บางไฟล์ก่อน หากต้องการทำสิ่งนี้ ให้รัน autoreconf -vis
หรือใช้เวอร์ชัน .tar.bz2 ของแพ็คเกจรีลีส (ซึ่งมี ./configure อยู่แล้ว): https://github.com/nfc-tools/libnfc/releases/
บิลด์ควรเรียบง่ายเหมือนกับการรันคำสั่งเหล่านี้:
./configure
make
หากต้องการสร้างด้วยไดรเวอร์เฉพาะ โปรดดูตัวเลือก --with-drivers=...
รายละเอียดใน ./configure --help
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=
: LIBNFC_DEFAULT_DEVICE=pn532_uart:/dev/ttyACM0
จะใช้ pn532 บน /dev/ttyACM0 เป็นอุปกรณ์เริ่มต้นLIBNFC_DEVICE=
จะละเว้นอุปกรณ์ทั้งหมดในไฟล์กำหนดค่า และใช้เฉพาะอุปกรณ์ที่กำหนดในตัวแปรเท่านั้นLIBNFC_AUTO_SCAN=
แทนที่ตัวเลือก allow_autoscan
ในไฟล์กำหนดค่าLIBNFC_INTRUSIVE_SCAN=
แทนที่ตัวเลือก allow_intrusive_scan
ในไฟล์กำหนดค่าLIBNFC_LOG_LEVEL=<0|1|2|3>
แทนที่ตัวเลือก log_level
ในไฟล์กำหนดค่า หากต้องการรับการเชื่อมต่อของอุปกรณ์ที่รู้จัก คุณสามารถใช้ nfc-scan-device
: LIBNFC_AUTO_SCAN=true nfc-scan-device
จะแสดงชื่อและการเชื่อมต่อของอุปกรณ์ที่พบทั้งหมด
หากต้องการรายงานจุดบกพร่อง โปรดไปที่ 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
หากแพตช์แก้ไขข้อบกพร่อง โดยปกติแล้วจะเป็นความคิดที่ดีที่จะรวมข้อมูลทั้งหมดที่อธิบายไว้ใน "วิธีรายงานข้อบกพร่อง"
หาก libnfc ตรวจพบอุปกรณ์ Touchatag หรือ ACR122 ของคุณไม่สำเร็จ ตรวจสอบให้แน่ใจว่าติดตั้ง PCSC-lite daemon ( pcscd
) แล้วและกำลังทำงานอยู่
หากอุปกรณ์ Touchatag หรือ ACR122 ของคุณล้มเหลวในการตรวจพบโดย PCSC-lite daemon ( pcsc_scan
ไม่เห็นอะไรเลย) ให้ลองลบการตรวจจับเฟิร์มแวร์ปลอมของ libccid: แก้ไขไฟล์การกำหนดค่า libccid_Info.plist (ปกติคือ /etc/libccid_Info.plist
) และค้นหา
เปลี่ยนค่า
เป็น 0x0004
เพื่ออนุญาตอุปกรณ์ปลอมและรีสตาร์ท pcscd daemon
การใช้อุปกรณ์ ACR122 ที่มี libnfc และไม่มีแท็ก (เช่น การใช้โหมด NFCIP หรือการจำลองการ์ด) จำเป็นต้องมีการปรับแต่ง PCSC-lite อีกครั้ง: คุณต้องอนุญาตให้ใช้คำสั่ง CCID Exchange ในการดำเนินการนี้ ให้แก้ไขไฟล์การกำหนดค่า libccid_Info.plist
(ปกติคือ /etc/libccid_Info.plist
) และค้นหา
เปลี่ยนค่า
เป็น 0x0001
เพื่ออนุญาตการแลกเปลี่ยน CCID หรือ 0x0005
เพื่ออนุญาต แลกเปลี่ยน CCID และอุปกรณ์ปลอม (อ้างอิงหมายเหตุก่อนหน้า) และรีสตาร์ท pcscd daemon
คำเตือน: หากคุณใช้ไดรเวอร์ ACS CCID (acsccid) ไฟล์การกำหนดค่าจะอยู่ในรูปแบบเช่น: /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist
Libnfc ไม่สามารถใช้พร้อมกันกับไดรเวอร์ที่เป็นกรรมสิทธิ์ของ PCSC ของ SCL3711 สองวิธีที่เป็นไปได้:
ตั้งแต่เคอร์เนล Linux เวอร์ชัน 3.1 จะต้องไม่โหลดโมดูลเคอร์เนลบางตัวเพื่อใช้ libnfc : "nfc", "pn533" และ "pn533_usb" เพื่อป้องกันไม่ให้เคอร์เนลโหลดโมดูลเหล่านี้โดยอัตโนมัติ คุณสามารถแบล็คลิสต์โมดูลเหล่านั้นในไฟล์ conf ของ modprobe ได้ ไฟล์นี้มีให้ภายในไฟล์เก็บถาวร libnfc:
sudo cp contrib/linux/blacklist-libnfc.conf /etc/modprobe.d/blacklist-libnfc.conf
Libnfc สามารถทำงานร่วมกับไดรเวอร์ bR500 และ R502 ที่เป็นเอกสิทธิ์ของ PCSC ได้ ซึ่งมีอยู่แล้วในการตั้งค่า Linux ส่วนใหญ่ หากต้องการเปิดใช้งานการสนับสนุน PCSC: ./configure --with-drivers=pcsc
ผู้อ่านที่รู้จักทำงาน:
โปรแกรมอ่านเหล่านี้รองรับ CCID ตั้งแต่เวอร์ชัน 1.4.25 ตรวจสอบให้แน่ใจว่าไดรเวอร์ CCID ของคุณเป็นเวอร์ชันที่สูงกว่าหรือเท่ากับ 1.4.25
บน MacOS คุณสามารถตรวจสอบเวอร์ชัน CCID ของคุณด้วยคำสั่งต่อไปนี้ และหากจำเป็น คุณสามารถติดตั้งไดรเวอร์ CCID ล่าสุดได้จาก https://github.com/martinpaljak/osx-ccid-installer/releases
grep -A 1 CFBundleShortVersionString /usr/local/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist
บน Linux คุณสามารถตรวจสอบเวอร์ชัน CCID ของคุณด้วยคำสั่งต่อไปนี้ และหากจำเป็น คุณสามารถติดตั้งไดรเวอร์ CCID ล่าสุดได้จาก https://ccid.apdu.fr/
grep -A 1 CFBundleShortVersionString /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
FeliCa เป็นเครื่องหมายการค้าจดทะเบียนของ Sony Corporation MIFARE เป็นเครื่องหมายการค้าของ NXP Semiconductors Jewel Topaz เป็นเครื่องหมายการค้าของ Innovision Research & Technology เครื่องหมายการค้าอื่นๆ ทั้งหมดเป็นทรัพย์สินของเจ้าของที่เกี่ยวข้อง