iCopy-X v1.1.6 Released
Firmware v1.1.6 is out for the open-source iCopy-X. Contributors amec0e and Vost02 are behind this release: dumps can now be transferred directly to a ChameleonUltra/Tiny, renamed on the device or on a PC without breaking them, the card-size and UID handling behind Tag Info, Simulate, Write and Verify has been reworked to read from the dump files themselves, and two new plugins arrive alongside a text input field for the plugin UI. Grab it from the v1.1.6 release page.
Notable changes
Quality of Life
- Added on-device dump renaming through a new
KeyboardInputwidget, reached from Dump Files then Tag Info by pressing DOWN (the button is not shown on the button bar). - Added an uppercase keyboard set of A-Z, 0-9,
-and_, with characters not allowed in filenames refused and DEL always present. - Added
rename_dump_set()so every file sharing a dump’s name (.bin,.json,.emland others) is renamed together, with duplicate names refused and already-renamed files restored if any rename fails. - Changed Tag Info to read the values it needs from the dump contents when a dump no longer carries its device-generated name, keeping the previous filename-based behaviour when a file cannot supply a value.
- Added public dump readers to
appfiles(dump_uid,dump_mf1_size,dump_mf1_card,dump_mf1_block0,dump_mfu_uid,dump_t55xx_b0,dump_hf14a_uid,dump_json_card) so plugins can reuse them. - Fixed the Dump Files list shortening renamed files, for example
FRONT-DOOR_2listed asDOOR(2); device-created names keep their existing short labels. - Renaming is not offered for ICODE, Legic and FeliCa dumps, whose Tag Info still depends on the filename, or for old single-line LF dumps.
HF (High Frequency)
- Fixed MIFARE Plus 2K dumps being handled as 1K, so only 16 of 32 sectors were written; they are now type 26 and written in full.
- Changed the type 26 label in
template.pyfrom “M1 Mini 0.3K” to “M1 Plus 2K”. - Fixed renamed MIFARE Classic dumps taking their card size from the filename, which caused a renamed 4K dump to be treated as 1K; size now comes from the
.binlength. - Fixed the loss of UID, SAK and ATQA for MIFARE Classic dumps without a matching
.json, now taken from block 0. - Fixed Ultralight and NTAG dumps losing their UID, which made Verify report a failure even after a successful write.
- Fixed Tag Info showing a blank UID for HF14A dumps, now read from the saved
.txt.
LF (Low Frequency)
- Fixed Tag Info showing T55xx block 0 as
00000000, now read from the 48-byte.bin.
Localisation
- Added a
_keyboardentry todata/lang/<code>.jsonso the keyboard layout comes from the language pack, falling back to English and then to the built-in layout. - Added the new rename strings to the English, French and Chinese language packs, and
get_keyboard_layout()toresources.py. - Changed
tools/plugin_i18n.pyto extract thehintfield.
Plugins
- Added the
input_textcontent type for pluginui.json, a full-width word-wrapped editor with a reverse-video cursor,length,placeholder,valueandhintoptions, wrapping by display width so full-width CJK text fits;input:delete,input:charsetandinput:clearnow act in place, andinput_hexis unchanged. - Added
lib/card_notes.py, a note store keyed by family and UID at/mnt/upan/card_notes.json, resolving a card’s UID from the dump contents when the filename is no longer in device format. - Fixed a plugin whose
entry_classis aBaseActivitysubclass without aui.jsonrendering a blank screen, by detaching thePluginActivitywrapper instead of callingfinish().
Two new plugins ship with this release:
card_notes: browses dumps under/mnt/upan/dump/and attaches or clears a note per card, showing list rows asNAME (note), with English, French and Chinese language files.chameleon_dump: writes a dump into a slot on a Chameleon Ultra or Tiny and reads a slot back out as a dump over USB, auto-detecting the connected device and covering MIFARE Classic, NTAG213/215/216 and EM410x.