News and announcements
With release of version 0.12 the transition to GitHub is now completed. The Launchpad project site will stay active for questions and answers and the code section mirrors the GitHub repository.
What else is part of the 0.12 release can be read on https:/
For more than 6 years Launchpad and Bazaar have served well as the project home and SCM for nfcpy. While I still like Bazaar and I still like Launchpad it was time to move on and migrate to GitHub. It just integrates a lot better with external services and whatever tools there are, they work first and better with GitHub and git. I've never managed, for just one example, to get ReadTheDocs correctly build the documentation for trunk and release branches. Where in GitHub it's just a click to have it completely automated. So from now on the new development home for nfcpy will be at https:/
The release of nfcpy 0.11 brings encrypted peer-to-peer communication as defined in the recently published NFC Forum LLCP 1.3 specification. The implementation for nfcpy was development started with the candidate specification release and then tested against other implementations in an NFC Forum plugfest. With quite some confidence I'd recommend it to device manufacturers for in-house testing. A slightly longer article at http://
The new stable release starts the 0.10 series with increased support for NFC tags and a lot of internal updates geared towards future enhancements. The most visible change is probably that many tags are now known by product and can be formatted (for NDEF), made read-only or protected with a password (for tags that have such functionality). The tagtool.py example supports those new functions from the command line and, for password protection, also does key diversification of a master secret. Other enhancements are that Type 4B Tags are now finally supported, Type 1 Tags can be read with chips that would not normally support it (PN532/533) and the serial connection with a PN532 is run at 921.6 kbaud (Unfortunately the RasPi serial port only goes up to 112.6 unless the serial clock is changed. But with an FTDI it works pretty well).
A lot of things have changed and improved with the recent merge of the dev-phdc branch into trunk. Triggered by the wish to support the Sony RC-S380 certified reader and have tag emulation to fully implement NFC Forum PHDC (which is the Personal Health Device Communication specification), this work had the side effect of some general cleanup and improvements. Below is a list of things that have changed along from the new PHDC implementation.
- The driver API needed to change in order to support tag emulation, as possible now with the RC-S380 reader.
- The main application interface is now consolidated into the single method ContactlessFron
- Applications interface with connect through a set of callbacks, rather than combining different calls as before.
- All example programs are now based on the same command line interface code in cli.py and share the common options.
- The code in cli.py implements a common test framework so applications can concentrate on the test implementation.
- Much of the exception handling up and down the stack is improved and shows more robustness.
- A lot of unittests have been added as well as an NFC Forum DTA for the P2P tests (though still a bit left do)
- The ipsim driver used during the early days of LLCP implementation is replaced by a cleaner and better udp driver.
- Support for libusb-1.0 and pyusb-1.0 finally made it into nfcpy, which can now work with either the old or new version.
As popularized by Google some (late) spring cleaning has also happened:
- Implementation of the Google NDEF Push Protocol (NPP) is gone. Android supports NFC Forum SNEP and it's time to move on.
- The example code for D-Bus integration is gone. There is now official NFC support in Linux and that'll do the job better.
I'm afraid that all existing code built on nfcpy will initially be broken. However it will be fairly easy to adapt to
the new API and mostly be a matter of removing code that has become unnecessary, like running the poll-listen cycle.
Althoug still not complete, the documentation has seen quite a few improvements and especially the "getting started"
tutorial should help the transition.