forked from nfc-tools/libnfc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
807 lines (676 loc) · 38.4 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
May 22, 2020 - 1.8.0
--------------------
Fixes:
- Restore nfc_modulation_type enum order to keep compatibility with libnfc 1.7.1
Changes:
- Bump revision due to changes in API introduced in v1.7.2
- Bump library version to 6.0.0
May 21, 2020 - 1.7.2 (avoid using it, incompatible with 1.7.1)
--------------------
Fixes:
- Remove unreachable code
- nfc_emulate_uid: cleaner exit on interrupt
- Fix reporting of modulations and baud rates by nfc-scan-device -v
- Fix out-of-bounds access in nfc-mfultralight
- Several Cygwin compilation fixes
- Fix comparison when nfc_initiator_target_is_present() with a specified target
- Fix nfc_initiator_poll_target without tag on PN532
- Export iso14443b* symbols
- Fix udev rule which was executed too early
- Fix improper device name initialization
- Fix setenv()/unsetenv() for Windows
- Fix win32/nfc.def according to nfc.h
- Fix missing timeout in pn53x_initiator_select_passive_target()
- nfc-mfclassic: fix option to tolerate write errors
- nfc-poll: fix card removing check
- nfc-relay-picc: fix wrong open mode for file descriptor
Improvements:
- Allow ISO14443A to be used at higher baud rates
- nfc_initiator_select_passive_target() now checks against
reported modulations and baud rates for current device
- More serial devices on MAC OS X
- Add section to README to help to configure libnfc
- Various cmake improvements
- Drop PCRE dependency on Windows
- Remove deprecated readdir_r
- Markdown conversion of the text files
- Use hardcoded PN533 descriptors to be more robust on Windows
- Add support for SCL3712
- Add support for ACR1222U-C1
- Add support for NetBSD
- Add support for PN532 on RPi3 UART
- Add support for cross-compilation of 32b & 64b versions of the library for Windows
- Add pn533_usb to the kernel modules blacklist
- Add support for pn71xx NXP's NFC Controllers through Linux Libnfc-nci (untested)
- Add support for contactless PC/SC readers (only as initiator)
- Add support for Feitian R502 and bR500 into pcsc driver
- Add support for HID iClass (Picopass) support (nfc-iclass tool in external nfc-tools repo)
- Allows for sending empty data in nfc_initiator_transceive_bits
- driver i2c: respect proper timing specifications
- driver i2c: add retry on error mechanism
- nfc-mfclassic: improvements fo magic cards
- nfc-mfclassic: add option to specify UID
- nfc-mfclassic/nfc-mfsetuid: add support for new gen (1b) of magic 4K cards
- nfc-mfclassic: Add RATS support indicator
- nfc-mfsetuid: allow to write complete Block0, instead of only UID
- nfc-mfultralight: add automatic modes and --check-magic
- nfc-mfultralight: add support for magic gen2 cards
- nfc-mfultralight: add option to specify UID
- nfc-mfultralight: add support for Ultralight NTAG213/215/216
- nfc-barcode: new command to read and decode NFC Barcodes (Tag-Talks-First)
Changes:
- nfc_device_get_supported_baud_rate() takes now a "mode" parameter
- New nfc_device_get_supported_baud_rate_target_mode()
- New NFC modulation type NMT_BARCODE and nfc_barcode_info struct to support Thinfilm NFC Barcode protocol
- New NFC modulation type NMT_ISO14443BICLASS and NMT_ISO14443BICLASS struct to support HID iClass (Picopass)
- pn53x_transceive() is now part of public API
Special thanks to:
- Jim Anastassiou, Frédéric Bourgeois, Dario Carluccio, Emmanuel Dreyfus,
Julien Ehrhart, S. Fabri, John Galt, Christoph Gritschenberger,
Alexander Inyukhin, Arnaud Kapp, David Kreitschmann, Adam Laurie, Ray Lee,
Maxim Martyanov, Paul Menzel, Boris Moiseev, Yerzhan Mukhamejan,
Olliver Shinagl, Jairo Andres Suarez, Mati Vait, Marcos Vives Del Sol,
Hidde Wieringa, Simon Yorkston, timzi, usk-johnny-s, xantares, Hanno
Heinrichs, jgeslin, Mikolaj Stawiski, rstular, Khem Raj, Frank Morgner, jpwidera,
Feitian Technologies
Feb 24, 2014 - 1.7.1
--------------------
Fixes:
- Fix several issues reported by Coverity Scan
(mem leaks, buff overflows, reuse after free, etc)
- More robust when several conflicting uart drivers are in the config
- Fix racing condition with uart_flush_input()
- Silent pn53x_check_communication error messages when scanning
- Fix nfc_target_init(), was returning success in case of timeout
- Windows: fix several compilation issues
- On tag selection, save current target info also for ISO14443B*
- nfc-read-forum-tag3: fix incomplete NDEF retrieval and size of output file
Improvements:
- nfc-list: New option to choose which technologies to poll for
- UART: drivers now supported under kFreeBSD
- New LIBNFC_DEVICE env var to use one reader and exclude all other readers
while LIBNFC_DEFAULT_DEVICE only prepends it to the configured devices list
- New LIBNFC_AUTO_SCAN env var to enable(default)/disable auto scan
- On tag selection, save current target info even if pnt=NULL
- On tag selection, grant NP_INFINITE_SELECT also for ISO14443B*
- Save & restore NP_INFINITE_SELECT status when changing it internally
- nfc-mfclassic: add format/wipe command (thanks to Adam Laurie)
- nfc-jewel: new utility to read/write Topaz/Jewel tags (thanks to Pim 't Hart)
- nfc_initiator_select_passive_target() provides defaults if pbtInitData=NULL
- nfc-read-forum-tag3: add -q option, add full parsing of NDEF Attribute Block
Fixes & improvements specific to nfc_initiator_target_is_present():
- Supports fully PN532 & PN533, not tested on other chips
- Fix usage after nfc_initiator_poll_target()
- Set correctly last_error
- Fix issue when there was no saved target
- Allow NULL pointer to tag
- Fix issues in case of tear off conditions
- Now works with:
* MFUL, MFC, MFC Mini, MFC 7-byte (re-selection: you'll need to auth again)
* ISO14443-4A, ISO14443-4B
* ISO14443-4B', ASK CTx, ST SRx
* Jewel
* FeliCa
Sep 03, 2013 - 1.7.0
--------------------
Fixes:
- pn53x: only create a current target when at least one have been found
- pn532_uart: fix 'operation abort' feature with this driver
- pn532_uart: let more time to PN532 to wake-up, this fix some specific cases
where PN532 shown one of two runs (Thanks to Marcello Morena)
- nfc-mfclassic: allow option f for read operation too
- Avoid clash with system's htole32 if it exists
- Include <stdlib.h>, required for getenv(3)
- usb: fix USB enumeration issue (Thanks to Mike Auty)
- acr122_pcsc: fix compilation on Mac OSX 10.8.4
- Fix pn53x_initiator_transceive_bytes_timed() measures for TypeB
- Various minor fixes: warnings, style, etc.
Improvements:
- New PN532 over I2C driver, see contrib/libnfc/pn532_i2c_on_rpi.conf.sample
- ACR122/Touchatag: misc improvements
- ReadMobib/ReadNavigo: improve shell script portability
- Add ISO14443-4 chaining support for RX (MI)
- UART: add support for BeagleBone serial ports (Thanks to Johan Henselmans)
- nfc-mfultralight: allow setting of UID for special 'chinese' ultralight cards
Special thanks to:
- Laurent Latil (new pn532_i2c driver for linux)
- Nobuhiro Iwamatsu (warning fixes and debian package)
Apr 05, 2013 - 1.7.0-rc7 (release candidate)
--------------------------------------------
Fixes:
- Fix bug when compiling without libusb
- Fix several memory leaks in error handling conditions
- Remove calls to exit() from the library
- Create safer snprint_nfc_*() instead of sprint_nfc_*() functions
- Fix warnings returned by cppcheck & clang/scan-build
- Obsolete function 'usleep' => nanosleep()
- Non reentrant function 'readdir' => readdir_r()
- Non reentrant function 'strtok' => new connstring_decode()
- Buffer may not be null-terminated after call to strncpy()
- scanf without field width limits can crash with huge input data
- Resource leaks: missing fclose()
- Dead code, unused vars & vars scopes warnings
- Unify copyright notices & update authors lists
- Windows: Fix compilation due to new usbbus file
- Windows: Clean up compiler/linker warnings
- Fixed the suppression of the auto-fixup for linking against MS built libs
- Fixed all the formatting warnings by shifting to inttypes.h specifiers
- shifted to %lu for DWORD printf
- nfc-anticol: fix ATS length
- nfc-mfclassic: fix reporting of processed blocks total
- nfc-mfclassic: detect MIFARE Plus 2K as 2K instead of 1K
- pn53x_usb/acr122_usb: check usb_open() returns before using it
Improvements:
- New PN532 over SPI driver, see contrib/libnfc/pn532_spi_on_rpi.conf.sample
- Devels HACKING file: introduce clang/scan-build & cppcheck for better code
- Better internal dependencies handling (bus <> drivers)
- Cleaner handling of portability patches
- Windows: logging via OutputDebugString(), ease debugging
- nfc-mfclassic: use smaller files for cards < 4k
- nfc-mfclassic: by defaut don't authorise wrong keyfile, use "f" to force
- quick_start_example1.c: remove err.h dependency, easier for Windowsians
- nfc-mfclassic: support some new magic cards with writeable sector #0
- nfc-anticol: add -t option to use timed functions
Changes:
- Upon malloc error, nfc_init() doesn't force exit() anymore
so now you should test if context != NULL after nfc_init() call
- API: nfc_initiator_target_is_present() & str_nfc_target()
now take a pointer to nfc_target as argument instead of passing by value
Special thanks to:
- Eugeny Boger (new pn532_spi driver for linux)
Mar 03, 2013 - 1.7.0-rc6 (release candidate)
--------------------------------------------
Fixes:
- Fix several memory leaks (nfc_drivers, libusb, config parser)
- Fix stack smash while displaying long data transmission (LOG_HEX)
- pn53x-tamashell: allow larger commands up to full extended frame
- Add missing windows file in archive (version.rc.in)
- Fix compilation warnings & potential bugs
- Fix documentation
- Fix missing malloc() calls checks
- Fix missing free() calls in some error handlers
Improvements:
- Allow to disable conffils & envvar supports on embedded platforms
- Add option to nfc-mfclassic to tolerate RW errors
Changes:
- Replace usb_set_debug() in applications by LIBNFC_LOG_LEVEL libusb group
Feb 16, 2013 - 1.7.0-rc5 (release candidate)
--------------------------------------------
Fixes:
- Add missing sample configuration file in archive
- Add missing windows files in archive
- Preserve error code while using pn53x_set_property_bool() with
NP_AUTO_ISO14443_4 flag
Improvements:
- New nfc_register_driver() function allowing to hook custom drivers
- New nfc_free() function to free allocated buffers
Special thanks to:
- Ahti Legonkov (new nfc_register_driver())
Feb 04, 2013 - 1.7.0-rc4 (release candidate)
--------------------------------------------
Fixes:
- Fix tag selection for nfc-mfclassic, nfc-mfultralight, nfc-read-forum-tag3
and nfc-relay-picc
- Fix crash in nfc-relay-picc -i/-t if fd3 or fd4 is missing
Improvements:
- Windows support build with CMake
Changes:
- Configuration directory (ie. libnfc.conf) can now be set a compile-time
- Log can be enabled/disabled using CMake
Special thanks to:
- Alex Lian (Windows support improvements)
- Nobuhiro Iwamatsu (Debian package improvements)
Jan 31, 2013 - 1.7.0-rc3 (release candidate)
--------------------------------------------
Fixes:
- Fix pn53x_usb bulk write timeout
- Fix BCC in nfc-emulate-uid example
- Fix nfc-relay-picc example
- Fix a miss returned value within some internal functions (user program could
be affected)
- Fix nfc-scan-device -i option
- Remove wrong exit() calls in library
- Fix issue in driver acr122_usb affecting Touchatag
- Reenable some idle in all drivers, add selectively PowerDown when possible
Changes:
- nfc_emulate_target() now takes timeout parameter
Special thanks to:
- Alex Lian (Windows support refresh)
Jan 20, 2013 - 1.7.0-rc2 (release candidate)
--------------------------------------------
Fixes:
- Fix API version in debian files
- Fix wrong condition to display a warning when user disables autoscan
- Fix unit tests
- Fix ISO14443B' ATS
Improvements:
- Allow device.optional=true to tolerate missing device
Changes:
- pn532_uart driver is now enabled by default
Dec 09, 2012 - 1.7.0-rc1 (release candidate)
--------------------------------------------
Fixes:
- nfc_initiator_deselect_target() now returns 0 on success (as expected by caller)
- example/pn532-sam: Fix few bugs
- Fix ACR122S device detection when no ACR122S device available (endless UART receive)
- Suppress a lot of compiler warnings !.. which fixes many potential bugs
- Display right driver name while detecting PCSC
- Correctly handle PCSC header files on Mac OS X
- Fix nfc-emulation (now works with utils/nfc-emulate-forum-tag4 and Nexus S)
Improvements:
- New nfc_initiator_init_secure_element() function to set SAM as wired card (only relevant with a PN532 SAM-equipped)
- New str_nfc_target(), str_nfc_modulation_type(), str_nfc_baud_rate() function to convert some libnfc's types into allocated string
- New nfc_device_target_is_present() to check if passed target is in the field
- --enable-serial-autoprobe option at compile time to replace it with some run-time options
- New -i option to nfc-scan-device to allow intrusive scan
- New feature, libnfc now uses configuration files:
* main configuration file can be used to set options (ie. intrusive, autoscan, log-level)
* main configuration file can contains a device as default device, HIGHLY recommended for UART devices users
* multiple devices files can be used to declare multiple devices and ordered them
- UART port scan now includes ttyAMA* to detect UART-devices connected on Raspberry Pi (e.g. `nfc-scan-device -i`)
- Support for OpenPCD2 (with a dedicated firmware)
- Support for FTDI dongle under MacOS
- Enhance messages display
- Provides modprobe configuration file and instructions for Linux >3.1 with PN533 users.
- Greatly improve log facility with log level filter, configurable using conf file (ie. /etc/nfc/libnfc.conf) or environment var LIBNFC_LOG_LEVEL
- New man page for nfc-read-forum-tag3 utility (Thanks to UNFORGiVEN512)
- New man page for nfc-scan-device utility
- New man page for nfc-emulate-forum-tag2 example
- README: Add few words about device permissions and udev/devd rules available in package
- utils/nfc-emulate-forum-tag4: add support for v2.0 of the spec
- New "make style" command to have a beautiful code
- Code cleanup (indentation, white spaces, etc.)
Changes:
- New nfc_device_get_information_about() now allocates returned string
- No more in/out paramaters in nfc_initiator_transceive_*() functions
- Rename nfc-probe to nfc-scan-device
- Rename abtUid from struct mifare_param_auth into abtAuthUid: this is not the UID while using 7-bytes UID MIFARE Classic tags.
- utils/nfc-list: always display the card type when a card is found
- nfc-utils: new fingerprinting method closer to AN10833, (Thanks to Balazs Bucsay)
See NEWS file for major changes (ie. API changes)
Special thanks to:
- Ludovic Rousseau (Code cleanup, tests under MacOS, etc.)
- Frank Morgner
Feb 27, 2012 - 1.6.0-rc1 (release candidate)
--------------------------------------------
Fixes:
- utils/nfc-mfclassic: use MIFARE instead of Mifare typo
- utils/nfc-list: continue to attempt to reach devices after a connection failure
- libnfc: avoid readline auto-detection when cross-compiling
- driver/pn53x_usb: fix path usage for FreeBSD
- doc: quick_start_example1.c fixed
- utils/*: verbose option back for nfc-list, and newly implemented in nfc-poll
Improvements:
- libnfc: enhanced documentation
- libnfc: debug facility back without external depends
- libnfc: add nfc_device_get_supported_modulation() and nfc_device_get_supported_baud_rate() functions
- libnfc: enhanced code indent
- drivers: implement driver for ACR122S device
- utils/nfc-mfclassic: remove non-conscistent "extract payload" option in nfc-mfclassic
- utils/nfc-emulate-forum-tag2: add missing manpage
- utils/nfc-read-forum-tag3: add missing manpage
- tests/*: fix some warnings in test
- tests/test_dep*: add some DEP tests (Active/Passive in several baud rates)
- doc: quick_start_example1 is now compiled when running make check or distcheck
- libnfc: a printf-based logging replaces log4c
- libnfc: various minor fixes/enhancements
- utils/*: nfc-probe example added to show devices connection strings
Changes:
- PN53x specific errors are not public anymore;
- Timeouts are now integers instead of timeval structure
- Removes libusb types workaround (r200) as it seems to not be needed anymore but may disturb compiler
- Removes parse_args() from nfc-utils.[hc]
- Move nfc-emulate-forum-tag2 from utils to examples.
- contrib: move udev and devd files into contrib/
- debian: udev rules file renamed
See NEWS file for major changes (ie. API changes)
Special thanks to:
- Thomas Hood (Debian packages and various fixes/contributions)
- Anugrah Redja (ACR122S driver)
Oct 17, 2011 - 1.5.1 (unstable)
-------------------------------
Fixes:
- libnfc: fix invalid memory access when a new driver is probing for hardware and the number of requested devices was already reached
- chips/pn53x: fix bug in _timed fcts
- drivers/pn53x_usb: fix crash when usb_bulk_read() fails.
- drivers/pn53x_usb: continue to search a available device on usb errors (ie. Device Busy)
- drivers/pn53x_usb: make PN53x usb connection more stable
- examples/nfc-relay: fix UID problem
- windows: fix uart_receive() under Win32 platform
Improvements:
- libnfc: add logging facility using log4c.
- libnfc: abort mecanism is now implemented in driver layer, so it can use pipe-based mecanism (as PN532_UART or ARYGON driver does under POSIX system) or flag-based mecanism.
- libnfc: add ISO/IEC 14443 B' aka Type B' modulation partial support
- libnfc: add partial support (list) for ISO14443B-3 ST SRx & ASK CTx cards
- libnfc: compile unit tests only on demand unless using --enable-debug.
- libnfc: error handling improvements
- libnfc: new function nfc_idle() to set the NFC device in idle mode
- libnfc: add partial support for Sony S360 reader
- libnfc: some manual test reports have been added
- libnfc: list_targets support for ASK CTS512B (no anticol support yet)
- libnfc: nfc_disconnect() now switches NFC device into idle before disconnecting
- libnfc: nfc_initiator_poll_target() is now available for all devices
- libnfc: implement software polling for non-PN532 equipped device
- chips/pn53x: add pn53x_data_new() function to alloc and init pn53x_data structure
- chips/pn53x: add some SFR registers description
- chips/pn53x: implement WriteBack cache
- chips/pn53x: new pn53x_PowerDown wrapper for PowerDown (PN532) command
- chips/pn53x: prints a debug trace when reading PN53x registers
- chips/pn53x: set some parameters in ISO/IEC 14443A when using DEP mode (ie. SAK says ISO/IEC 18092 compliant) (Android NFC stack now detects the target as DEP)
- chips/pn53x: some optimisations in registers initialisation
- chips/pn53x: list_passive_targets() fixed for TypeB on LoGO
- chips/pn53x: pn53x_data now have a operating_mode enum to know the current running mode (initiator, target or idle)
- drivers/*: all commands are now abortable
- drivers/pn532_uart,arygon: make valgrind happy with UART-based drivers
- drivers/pn53x*: use shared pn53x_ack_frame[] and pn53x_nack_frame[] instead of local declaration
- drivers/pn53x_usb: all USB errors are now reported in text format
- drivers/pn53x_usb: enable progressive field on init to allow pn53x-tamashell to works (note: it does not distrib progressive field enabling when nfc_list_passive_target() is used)
- drivers/pn53x_usb: implement PN53x extended information frames with USB devices
- drivers/pn53x_usb: use progressive field on/off only for ISO14443 Type B target listing
- buses/uart: now provides an abort mecanism for windows users
- buses/uart: UART based drivers could now use uart_flush_input() to discard junk bytes on input.
- examples/nfc-anticol: add -f option to force RATS
- examples/nfc-mfclassic: handle 7-byte UID cards & MFC Mini
- examples/nfc-anticol: now use nfc_abort_command()
- examples/nfc-dep-*: disconnect from NFC device on error.
- examples/nfc-emulate-forum-tag2: add new example to emulate a NFC Forum Tag Type 2
- examples/nfc-emulate-forum-tag4: add document references.
- examples/nfc-emulate-forum-tag4: this example now fails with ENOTSUPP when used with a non-PN532 chip.
- examples/nfc-mfclassic: write special Mifare 1K cards, including Block 0 / UID
- examples/nfc-mfsetuid: add a new example to set UID of special Mifare 1K cards
- examples/nfc-read-forum-tag3: add new example to read a NFC Forum Tag Type 3
- examples/pn53x-tamashell-scripts: minor enhancements
- tests/test-dep: add a threaded DEP test to check DEP communication between two local devices
- debian: enable all drivers at compile time
- debian: improve debian packaging (Thanks to Thomas Hood)
- debian: use a numbering that allow to have libnfc pre-version and debian package pre-version too. (Thanks to Thomas Hood)
- freebsd: add FreeBSD devd(8) snippet configuration for Sony S330 readers.
- windows: implement abort mecanism in pn532_uart driver (Based on provided patch: many thanks to Edwin Evans)
- windows: USB drivers now relies on libusb-win32 with version >= 1.2.4.x (1.2.4.6 recommended) (Many thanks to Glenn)
- windows: implement automatic uart port detection and input flush (Thanks to Edwin Evans)
Changes:
- libnfc: add 'struct timeval *timeout' parameter for pn53x_transceive(), pn53x_target_receive_bytes() and pn53x_target_send_bytes().
Apr 29, 2011 - 1.5.0 (unstable)
-------------------------------
Fixes:
- libnfc: silent warnings with more strict CFLAGS
- libnfc: update devd(8) rules file for FreeBSD
- libnfc: make libnfc compile under Windows
- libnfc: fix nfc_pick_device() when called from nfc_connect with NULL nfc_device_desc_t parameter
- chips/pn53x: fix a bug when value is larger than mask when using WriteRegister
- chips/pn53x: adapt MaxRetries to avoid issue with 2 tags on PN531
- examples/nfc-mfclassic: UID was shown reverse-ordered
Improvements:
- libnfc: use a new way to handle drivers, introduce a real HAL
- libnfc: use absolute include path instead of relative ones
- libnfc: move some nfc_device_t members in a better place
- libnfc: improve nfc_driver_t struct to embedded HAL API
- libnfc: nfc_device_t now embeddeds driver data and chip data pointers (useful to be more generic)
- libnfc: use more readable variables instead of strange coding convention
- libnfc: move PRINT_HEX macro into nfc-internal.h
- libnfc: introduce an abort mecanism
- libnfc: suppress any PN53x references in nfc.c
- libnfc: nfc-mfclassic and nfc-mfcultralight examples are now compiled under Windows
- chips/pn53x: use the powerful C99 writing to construct PN53x commands
- chips/pn53x: remove almost all memcpy()
- chips/pn53x: WriteRegister, ReadRegister and SetParameters command wrappers are correctly named
- chips/pn53x: introduce chip state (SLEEP, NORMAL or EXECUTE)
- chips/pn53x: add SAMConfiguration command wrapper (need to be improved)
- chips/pn53x: remove almost all const arrays
- chips/pn53x: use human readable defines for commands instead of hex values
- chips/pn53x: in debug mode, the PN53x command is shown in human-readable string, awesome isn't it? ;-)
- chips/pn53x: try to determine IC version instead of hardcode it.
- chips/pn53x: new fonction to build frames instead of build them in each driver
- chips/pn53x: enable aborting blocking commands (e.g. TgInitAsTarget) and refactor *_check_communication() as pn53x_check_communication().
- chips/pn53x: add timed versions of transceive_bytes/bits, allow to detect emulated/non-emulated tags and more...
- chips/pn53x: support CRC auto-handling in ...transceive_bytes_timed
- drivers/pn53x_usb: ASK LoGO: enable progressive field feature.
- drivers/pn532_uart: major improvement of UART handling
- drivers/pn532_uart: check PN53x frames when received
- drivers/pn53x_usb: enhance ASK LoGO dedicated code
- drivers/pn53x_usb: add LEDs support for ASK LoGO and SCL3711
- drivers/pn532_uart: implement extended frame send/receive for PN532_UART driver.
- drivers/arygon: use the new way to drive UART (its far more stable)
- drivers/arygon: do not hard code PN532 chip type: pn53x_init() determine it and ARYGON device seems to not need to be waken up.
- drivers/arygon: reject too heavy payload (ARYGON does not support PN53x extended frame even with PN532 equipped device)
- drivers/pn532_uart & arygon: now runs almost twice faster than the previous stable release
- buses/uart: receive() is now based on expected bytes instead of calculated timeouts..
- buses/uart: simplify uart_send() on POSIX systems.
- examples/nfc-emulate-tag: minor comments improvements.
- examples: remove nfc-message.h usage from examples.
- examples/nfc-emulate-forum-tag4: fully reworked example: it now support all NFC-Forum device in read and write mode
- examples/pn53x-tamashell: add an example for LoGO LEDs
- examples/pn53x-tamashell: add a script to read Mobib card.
- examples/pn53x-tamashell: add a script to read Navigo card.
Changes:
- libnfc: merge macros from nfc-messages.h into nfc-internal.h
- libnfc: remove useless files: nfc-messages.h, buses.h and chips.h
- API: new nfc_emulate_target() that ease target emulation for developer
- macros: show PRINT_HEX result on stderr in debug mode (that helps to sync with debug msg which are printed on standard error output.)
- drivers: split transceive() into send() and receive() to be able to handle more cases (differed replies, abort commands, etc) later
- drivers: use a const structure of functions instead of -dirty- callbacks array
- drivers/pn53x_usb: pn531_usb and pn533_usb drivers are now merged and use the pn53x IC version autodetection
- buses/uart: use a smart way to determine available ports on POSIX systems (tested on Linux and FreeBSD)
Feb 21, 2011 - 1.4.2
--------------------
Fixes:
- libnfc: fgets instead of getline, bring MacOSX / BSD without glibc alive
- libnfc: add missing CMake files to generated tarball needed by windows users (Thanks to Glenn)
- drivers/pn532_uart: fix pn532 wakeup response handling
- buses/uart: prevent from retrieving more than buffer length (potential buffer overflow)
- buses/uart: intent to speed up interface
- nfc-emulate-uid: use a correct UID
- nfc-mfclassic: fixes a segfault when using only 1 argument
Improvements:
- libnfc: silent some compilation warnings
- drivers/pn533_usb: support new device: ASK / LoGO. (Thanks to ASK for sending one sample)
- chips/pn53x: set register directly if mask cover whole value.
- pn53x-tamashell: accepts script as arg, this makes shebang possible
- pn53x-tamashell: add pause command & doc
- documentation: add a README-Windows.txt file
- documentation: add more pcsc-lite related instruction in README
Feb 1, 2011 - 1.4.1
-------------------
Fixes:
- libnfc: fix missing pn53x-tamashell-scripts in generated tarball. (Thanks to usermeister)
- buses/uart: improved UART communication on POSIX systems: slower devices can be detected and high speed devices works better
- buses/uart: serial autoprobe now skips invalid devices but checks all ports in the list
- drivers/pn53x_usb: prevent from stack corruption when using PN533-based device and add errors handling for ReadRegister and WriteRegister
- drivers/arygon: fix polling on ARYGON devices
- examples/nfc-emulate-tag: switch off easy framing when we are not emulating a ISO14443-4 target
- examples/nfc-mfclassic: fix crash when file cannot be opened for writing
- examples/nfc-mfultralight: fix 7 bytes UID display
Improvements:
- libnfc: add a "troubleshooting" section in README to document ACR122 problems with pcsclite.
- libnfc: inform user if target UID can not be emulated
- example/nfc-mfultralight: handle lock page writing
- examples/nfc-emulate-tag: handle HALT & READ
- tests: add register access test
Experimental: Windows platform support (Thanks to Glenn Ergeerts)
Nov 17, 2010 - 1.4.0
--------------------
Fixes:
- libnfc: fix Felica listing
- libnfc: fix storage of ISO14443B targets data
- libnfc: fix MacOS build
- libnfc: fix some errors string (ie. well-known "Invalid Parameter")
- libnfc: fix memory leak while using *_pick()
- drivers/pn53x_usb: fix ZLP USB issue
- drivers/pn53x_usb: workaround for PN532 toggle bit USB bug
- drivers/pn53x_usb: fix timeout problem in emulation mode
- drivers/pn53x_usb,pn532_uart,arygon: more robust recovery from unstable states such as interrupted emulation modes
- drivers/acr122: fix escape ioctl under Linux
- buses/uart: fix UART default serial ports under Linux.
- examples/nfc-anticol: fix bug preventing to run nfc-anticol after some other programs
- examples/nfc-anticol: fix display of UID
- ... and many other minor fixes
Improvements:
- libnfc: major emulation improvements: libnfc can now be used to emulate ISO/IEC 14443 type A tag (MIFARE, ISO14443-4), FeliCa and D.E.P. target
- libnfc: documentation improvements
- libnfc: decode select/initialization datas for almost all supported target types (ISO14443 A/B, Jewel/Topaz, FeliCa)
- libnfc: add ISO/IEC 14443B baud rates: 212, 424 and 847 kbps
- libnfc: cache some chip registers for faster communication
- libnfc: greatly improved D.E.P. support
- buses/uart: adjust UART's timeouts from baud rate: faster communication at high speed and more reliable at low speed (affect pn532_uart and arygon drivers)
- drivers/arygon: retrieve ARYGON µC firmware version
- examples/nfc-anticol: adds support for CL3
- examples/nfc-anticol: cascade based on SAK rather than CT, better for educational purpose
- examples/nfc-anticol: Computes CRC rather than hardcoded one.
- examples/nfc-utils: print_iso14443b_info() now displays many decoded information in verbose mode
- examples/nfc-utils: print_iso14443a_info() now displays many decoded information and shows attempt to determine tag name in verbose mode
- examples/nfc-list: new option -v for verbose mode
- examples/nfc-list: now support for Jewel/Topaz too
- examples/nfc-poll: now poll using all supported modulations
- examples/nfc-dep-target: add hack to allow to use two devices on the same machine (for tests/debug purpose)
- examples/pn53x-tamashell: New PN53x TAMA communication demonstration shell (support scripting)
- examples/nfc-relay-picc: New tool to relay ISO14443-4 communications (even over network... Enjoy!)
- examples/nfc-emulate-forum-tag4: New example to emulate a NFC Forum tag type 4
- examples/nfc-emulate-tag: New example to emulate tags
- examples: add missing man pages
- ... and many other minor improvements
Changes:
- API: Many changes, see NEWS file for more info how to migrate
- buses/uart: split UART implementations: one file for POSIX and another one for Windows
- examples: nfcip-* renamed to nfc-dep-*
- examples: nfc-sam renamed to pn53x-sam
- examples: nfc-emulate renamed to nfc-emulate-uid
- examples: change examples license for the sake of consistency: LGPL covers library, re-usable examples code is now under BSD license.
Aug 31, 2010 - 1.3.9
--------------------
Fixes:
- 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)
Note: This release will not install extra headers (like mifare.h), programs that depends on should copy theses files into their sources.
Apr 6, 2010 - 1.3.4
--------------------
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.
Note: Windows users could now take main tarball using CMake to build or Windows specific archive using MinGW GNU/Make.
Feb 17, 2010 - 1.3.3
--------------------
Fixes:
- libnfc: Attempt to fix build on Windows using CMake;
- libnfc: Fix build on NetBSD;
- libnfc: Fix build on MacOS X;
- nfc-relay: fix usage of two devices that use the same driver.
Feb 01, 2010 - 1.3.2
--------------------
Fixes:
- libnfc: Fix compilation issue under FreeBSD (should now compile on FreeBSD 6, 7 and 8).
Note: Experimental CMake files are provided with this release, issues reports are welcome.
Jan 20, 2010 - 1.3.1
--------------------
Fixes:
- libnfc: Fix compilation issue under Windows;
- uart bus: Fix possible invalid file descriptor in uart_close();
- uart bus: Serial autoprobing is now DISABLED to avoid UART disturbing. (Feature can be enabled using –enable-serial-autoprobe option while configure).
Jan 14, 2010 - 1.3.0
--------------------
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;
Improvements:
- 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;
Jul 24, 2009 - 1.2.1
--------------------
- Fix ACR122 on 64 bits architecture under GNU/Linux.
Jul 22, 2009 - 1.2.0
--------------------
- License changed from GPLv3 to LGPLv3
- ARYGON ADRA-USB/ADRB-USB reader support
- PN533 support
- C99 standard (all custom defined types have been renamed)
- Autotoolized for GNU/Linux, *BSD and MacOSX
- nfc examples (anticol, emulate, list, mftool, relay) are now prefixed by "nfc-"
Mar 27, 2009 - 1.1.0
--------------------
- Next generation, support for ACR122v2 and PN531 USB devices
Feb 12, 2009 - 1.0.0
--------------------
- Initial release