Topic: libnfc 1.3.x releases

Dear developers,

We are proud to announce the new version 1.3.0 of libnfc.

This release would not have been possible without the help of the following contributors:
- Adam Laurie
- Emanuele Bertoldi (Zuck)
- François Kooman (fkooman)
- Roger Brown (snapdev)
- Romain Tartière (romain)
- XXV
and others... ;-)

There are many fixes, improvments and changes:

Fixes:
 - build: Add workarounds for libusb when compiling using C99;
 - build: Attempt to fix rpath issue on linux platform (it is already deprecated in main distributions. i.e. http://wiki.debian.org/RpathIssue);
 - build: wrong paths in pkg-config file;
 - libnfc: Remove warnings when compiling;
 - libnfc: Various code fixes and cleanup;
 - bus uart: Added support for recv/send of larger data chunks (>default_os_buffer);
 - bus uart: Fix some some buffer synchronization problems under POSIX system;
 - bus uart: Add configure option: --disable-serial-autoprobe to disable autoprobing;
 - libnfc: Fix nfc_target_init doesn't correctly reset the parity during initalization;
 - libnfc: added support for WUPA and 7,10 byte UID in nfc_initiator_select_tag();
 - libnfc: Fix tag re-selection with UID length > 4 bytes (like DESFire or Ultralight);
 - nfc-mfclassic: Fix authenticated only with KEYA;

Improvments:
 - build: Build on FreeBSD;
 - build: Add alternative build system (CMake);
 - build: Add new files usefull for desktop GNU/Linux users: some rules for udev to allow non-root access to PN53x USB devices;
 - build: Update msinttypes up to revision 26. (used when compiling under Windows);
 - build: Add "make doc" directive: it will build API documentation using Doxygen. (--enable-doc flag is required at configure time);
 - libnfc: Add C++ compatibility;
 - libnfc: Add driver agnostic nfc_pick_device(), nfc_list_devices();
 - libnfc: It is now possible to specify a wanted device using new struct "nfc_device_desc_t";
 - libnfc: Add device name to device descriptions (nfc_device_desc_t) to select a given PCSC device;
 - libnfc: Finally removed all dirty globals, it 'should' be thread-safe now;
 - libnfc: Less confusing message for bitstreams display;
 - libnfc: chips level introduction with pn53x.h/c;
 - drivers: Add PN532 UART driver;
 - drivers pn533_usb and pn531_usb: Lets search continuing to find other USB readers if any in PN531 and PN533 USB drivers;
 - drivers pn533_usb and pn531_usb: Support for the generic vendorid/productid of the NXP chip;
 - drivers pn533_usb and pn531_usb: Consolidate duplicated code;
 - examples: Add MIFARE Ultratag tool;
 - examples: Add man page for nfc-mfultool;
 - examples: MIFARE examples (mftool and mfultool) have now a better help message;
 - examples: Add NFCIP (NDEP) as experimental feature;
 - examples: add quiet mode to improve timing of emulate, relay and anticol commands;
 - nfc-list: List all devices in nfc-list(1);
 - nfc-list: Simply turns off the RF field upon exit;
 - nfc-emulate: allow UID to be specified;
 - nfc-relay: Initialize initiator device explicitly;
 - nfc-relay: Capture ctrl-c for quitting cleanly the relay attack application;
 - nfc-relay: exit properly if emulator initialization failed;
 - nfc-mfclassic: Add default keys tries;

Changes:
 - API: Rename tag_info to nfc_target_info_t;
 - API: Rename init_modulation to nfc_modulation_t;
 - API: Rename dev_config_option to nfc_device_option_t;
 - API: Use NULL instead of INVALID_DEVICE_INFO to know if device is valid;
 - API: Rename chip_type to nfc_chip_t;
 - API: Rename dev_spec to nfc_device_spec_t;
 - API: Rename dev_info struct to nfc_device_t;
 - API: Variables have been renamed to match coding conventions;
 - API: Changed length parmeters from uint32_t to size_t;
 - Files: Remove defines.h public header;
 - Files: Prefix messages.h and types.h headers by "nfc-";
 - Files: Revamp libnfc source tree;
 - Files: Move examples into src/examples subdirectory;
 - Examples: Rename nfc-mftool to nfc-mfclassic;
 - Examples: Rename nfc-mfultool to nfc-mfultralight;

Archives are available for both POSIX compliant systems and Windows as the usual location
http://code.google.com/p/libnfc/downloads/list

Have fun !

Romuald Conty

Re: libnfc 1.3.x releases

Dear developers,

libnfc 1.3.4 is out, it comes with some important fixes.

Fixes:
   - Fix CT (Cascade Tag) byte when using 10 bytes long UID.
   - Strip CT (Cascade Tag) from UIDs in nfc_initiator_select_tag().
   - Fix CMake build (mainly on Windows related stuff)
   - Minors fixes in documentation.
   - Suppress almost all compilation warnings.

  Changes:
   - API: Provide ISO14443A CRC function.
   - Remove annoying info message when probing uart devices while serial autoprobing is disabled.
   - Rename README-Windows.txt (compilation using CMake) into CMake-Windows.txt
   - Add README for Windows compilation using win32/Makefile.

Due to CT bugs fixes, its highly recommanded to use this new version in case of long UID usage.

libnfc archives could be find at usual location¹.

Note: full ChangeLog can be found, as usual, at libnfc's main site² and in libnfc archive.
Note for libfreefare³ users: libnfc 1.3.4 (or higher) is a requirement to run actual version of libfreefare.

[1] http://code.google.com/p/libnfc/downloads/list
[2] http://www.libnfc.org/documentation/changelog
[3] http://code.google.com/p/nfc-tools/wiki/libfreefare

Romuald Conty

Re: libnfc 1.3.x releases

Dear developers,

Libnfc team members are happy to annouced libnfc 1.3.9 which is no more than a release candidate for future stable series 1.4.x.

Like previous versions it comes with some important fixes and improvments.

Please take a special care to the new API: many changes could make your code unusable in special cases.

Fixixes:
   - libnfc: fix ATS
   - pn53x_usb: fix USB issues
   - nfc-mfultralight: fix read and write counters

  Improvments:
   - libnfc: rearrange source code
   - libnfc: enhance documentation
   - libnfc: add regression tests (not as much as expected but its here!)
   - build: configure script now supports --with-drivers option instead of --disable-pcsclite and --disable-libusb (see --help)
   - nfc-mfultralight: we now can write OTP bytes if user want to

  Changes:
   - API: nfc_initiator_select_tag() is now nfc_initiator_select_passive_target()
   - API: nfc_initiator_deselect_tag() is now nfc_initiator_deselect_target()
   - API: new function nfc_initiator_list_passive_targets() to list available targets in field
   - API: new nfc_perror(), nfc_strerror() and nfc_strerror_r() functions to handle errors
   - API: new types: nfc_target_type_t and nfc_target_t
   - API: new configuration option NDO_AUTO_ISO14443_4 to enable/disable auto iso14443-4 mode.
   - API: new configuration option NDO_EASY_FRAMING to enable/disable auto frames encapsulation and chaining
   - API: nfc_initiator_transceive_dep_bytes(), nfc_target_receive_dep_bytes() and nfc_target_send_dep_bytes() have been removed (unset NDO_EASY_FRAMING instead of these functions)
   - API: (experimental) new nfc_initiator_poll_targets() which allow to use hardware polling function
   - examples: add draft of a new example: nfc-sam. It tests the comunication with a connected SAM (Secure Access Module)
   - examples: add new example to show how to use new polling function
   - examples: add new example to diagnose basic elements (communication, rom and ram) of pn53x
   - nfc-mfultralight: on write failure, continue if authenticate works.
   - nfc-mfclassic: take care of 16-blocks-long sectors of Mifare Classic 4K in the nfc-mfclassic example's blocks counting routine.
   - nfc-mfclassic: now fails ealier when something goes wrong (this allow to prevent from false-success).
   - nfc-mfclassic: disable ISO14443-4 auto-switching in order to read devices that emulate Mifare Classic with ISO14443-4 compliance.(e.g. Nokia 6212 Classic)

Important note: This release will no more install extra headers (like mifare.h), programs that depends on should copy theses files into their sources.

libnfc archives could be find at usual location¹.

Note: full ChangeLog can be found, as usual, at libnfc's main site² and in libnfc archive.
Note for libfreefare³ users: libnfc 1.3.9 (or higher) is a requirement to run the new 0.2.0 version of libfreefare.

[1] http://code.google.com/p/libnfc/downloads/list
[2] http://www.libnfc.org/documentation/changelog
[3] http://code.google.com/p/nfc-tools/wiki/libfreefare

Romuald Conty