Протоколы ODRFID-M/N/E и ODRFID-485
Справочник по AT-командам ODRFID-M/N/E, протоколам ODRFID-485 и Modbus RTU: режимы сканирования, чтение и запись памяти, настройки и форматы ответов.
Редакция 1.11 от 26 августа 2026 года. Документ охватывает несколько поколений устройств и вариантов прошивки. Для ODRFID-RS485 используйте руководство по интеграции ODRFID-RS485.
Содержание
- 1 Обзор
- 2 Возможности
- 3 Прошивка CDC и AT-команды ODRFID
- 4 Прошивка HID ODRFID
- 5 Протокол AT ODRFID-485
- 6 ODRFID-485: Modbus RTU
- 7 Синтаксис строки форматирования
- 8 Коды типов меток
- 9 Аппаратные ревизии
- 10 Ревизии документации
1 Обзор
Руководство описывает устройства ODRFID, варианты встроенного ПО и протоколы интеграции. Откройте документацию по своей модели или обратитесь в техническую поддержку.
Поведение команд зависит от поколения и версии прошивки. Для современных USB-считывателей ODRFID-M/N/E режимы SCAN0–3 и различия прошивок 3.x описаны в руководстве по AT-интеграции.
2 Возможности
2.1 ODRFID
- USB 2.0 Full Speed, разъём Micro-USB;
- размеры — 10,3 × 6,8 × 1,1 см;
- индикация — зелёный светодиод, если он установлен, и зуммер;
- варианты встроенного ПО:
- HID — эмуляция клавиатуры без дополнительных драйверов в Windows, macOS и Linux;
- CDC/ACM — виртуальный последовательный порт без дополнительных драйверов в Windows 8 и более новых версиях, macOS и Linux; для Windows 7 доступен отдельный драйвер;
- совмещённый HID + CDC/ACM — композитное USB-устройство с эмуляцией клавиатуры и управлением через виртуальный последовательный порт;
- RS485 — протокол CDC/ACM, обёрнутый в двоичный протокол для линии RS485;
- Modbus RTU — передача совместимых AT-команд и ограниченное управление через регистры Modbus;
- в зависимости от аппаратного исполнения — метки EM41xx и совместимые с ними на 125 кГц;
- в зависимости от аппаратного исполнения — MIFARE Classic 1K/4K/Mini, Ultralight, NTAG и Plus на 13,56 МГц;
- обновление встроенного ПО через загрузчик USB HID или USB Mass Storage.
Различия аппаратных исполнений описаны в разделе «Аппаратные ревизии».
2.2 ODRFID-485
- питание — 5–20 В постоянного тока;
- интерфейс данных — RS485;
- индикация — зелёный и красный светодиоды, зуммер;
- варианты встроенного ПО — AT-команды через RS485 или Modbus RTU;
- поддерживаемые метки 13,56 МГц — MIFARE Classic 1K/4K/Mini, Ultralight, NTAG и Plus.
3 ODRFID (прошивка CDC)
Устройство определяется в операционной системе как виртуальный последовательный порт и соответствует спецификации USB Communications Device Class, Abstract Control Model (CDC/ACM). Windows 8 и более новые версии, Linux и macOS работают с ним без дополнительного драйвера. Набор AT-команд предназначен для опроса, чтения и записи бесконтактных карт, а также для настройки считывателя.
3.1 Параметры порта
Устройство определяется как виртуальный последовательный порт. Настройки скорости, чётности и количества бит данных не влияют на обмен, поэтому настраивать эти параметры не требуется.
3.2 Формат пакета данных
- Пакет от ПК начинается с
ATи заканчивается символом возврата каретки (CR, ASCII 13,0x0D, строка\r). - Каждый пакет от устройства начинается и заканчивается последовательностью
CR LF(ASCII 13 и 10,0x0D 0x0A, строка\r\n). - Ответ состоит из одного или нескольких пакетов. Последний пакет —
\r\nOK\r\nпри успешном выполнении или\r\nERROR\r\nпри ошибке. - Не добавляйте в начало или конец команды пробелы, табуляцию и переводы строк,
кроме обязательного
CR. Анализатор не удаляет лишние символы, поэтому команда завершится ошибкой.
3.3 Режимы устройства
Устройство поддерживает ручное и автоматическое сканирование. Режим после
подачи питания или перезагрузки задаётся в конфигурации; по умолчанию выбран
SCAN1.
SCAN0— считыватель работает только по командам от ПК и не опрашивает метки постоянно.SCAN1— считыватель постоянно опрашивает поле с заданным в конфигурации интервалом. При появлении метки он отправляет\r\nSCAN:+<HEX DATA>\r\n, при её выходе —\r\nSCAN:-<HEX DATA>\r\n.SCAN2— форматированный автоматический вывод, доступный начиная с версии1.3Fот 17 декабря 2018 года. При появлении метки считыватель отправляет\r\n<formatted data>\r\n; содержимое задаёт строка форматирования. При выходе метки пакет не отправляется. Если убрать метку из поля и поднести снова, считыватель повторно отправит пакет.
Дополнение:
- Начиная с версии
1.0Fот 3 апреля 2018 года содержимоеHEX DATAв режимеSCAN1определяется настройками выбора данных и SAK. Если выводится UID, к нему можно добавить SAK. - До версии
1.0FсодержимоеHEX DATAвсегда равноUID + SAK. - Начиная с версии 1.5 режим
SCAN1считается устаревшим и фактически совпадает сSCAN2.
3.4 Коды ошибок
При ошибке операции с меткой устройство передаёт дополнительный пакет
+CME ERROR: <code>. Код — десятичное представление 32-битного поля:
| Битовая маска | Ошибка |
|---|---|
0x00000001 | Protocol error |
0x00000002 | Parity error |
0x00000004 | Checksum error |
0x00000008 | Collision |
0x00000010 | Buffer overflow |
0x00000020 | Tear event |
0x00000040 | IC overheated |
0x00000080 | FIFO write error |
0x00000100 | время операции истекло |
0x00000200 | MIFARE NAK |
0x00000400 | ошибка аутентификации |
0x00000800 | общая ошибка обмена с меткой |
0x00001000 | метка вернула больше данных, чем ожидалось; версия 1.5 и новее |
0x00002000 | ошибка целостности ответа метки; версия 1.5 и новее |
Биты 16–31 зарезервированы для внутреннего использования; клиент должен их игнорировать.
3.5 Набор AT-команд
3.5.1 Информация об устройстве
Команда запрашивает описание устройства, версию и дату сборки прошивки, серийный номер. Учитывайте уточнение 3.6.1.
Синтаксис: ATI\r.
Пример ответа:
Open-Development RFID Reader (CDC-AT)1.0F Jan 17 2018
S/N 220333635434B431500280010
OK
3.5.2 Сброс буфера
Начиная с версии 1.6 команда очищает внутренний буфер данных, ожидающих отправки на ПК.
Запрос: ATH\r. Успешный ответ: OK.
3.5.3 Управление светодиодом
Команда управляет светодиодом, если он установлен. Если светодиода нет,
устройство возвращает ERROR.
0— выключить;1— включить;2— включить мигание;- пустое значение, например
AT+D1=, — вернуть управление встроенному ПО.
Синтаксис: AT+D1=<режим>\r. Запрос AT+D1?\r возвращает текущее состояние.
Запрос: AT+D1=1\r
Ответ: OK
Запрос: AT+D1?\r
Ответ: +D1=1
OK
3.5.4 Управление зуммером
Команда управляет зуммером:
0— выключить;1— включить;- пустое значение, например
AT+B=, — вернуть управление встроенному ПО.
Синтаксис: AT+B=<режим>\r. Запрос AT+B?\r возвращает текущее состояние.
Запрос: AT+B=1\r
Ответ: OK
Запрос: AT+B?\r
Ответ: +B=1
OK
3.5.5 Управление режимом работы устройства
Команда переключает режим сканирования.
Синтаксис: AT+SCAN<режим>\r. Успешный ответ: OK. Начиная с версии
1.4F запрос AT+SCAN?\r возвращает текущий режим.
Запрос: AT+SCAN?\r
Ответ: +SCAN=0
OK
Режим SCAN2 поддерживается с версии 1.3F. Начиная с версии 1.5F режим
SCAN1 считается устаревшим и работает как SCAN2.
3.5.6 Управление полем
Команда включает и выключает радиочастотное поле. Сканирование возможно только при включённом поле.
Примечание 1.
В двухдиапазонных считывателях команда управляет обеими антеннами, но только если соответствующий диапазон включён командами
AT+hиAT+m. Не используйте запрос состояния поля: его результат ненадёжен.В однодиапазонных считывателях команда управляет единственной антенной; команды
AT+hиAT+mнедоступны.
Примечание 2. В режиме автоматического сканирования результат запроса
+RF? ненадёжен. Начиная с версии 2.2 запрос отключён в считывателях
13,56 МГц и двухдиапазонных моделях.
Синтаксис: AT+RF=<режим>\r, где 0 выключает поле, а 1 включает.
Успешный ответ: OK.
3.5.7 Сканирование всех меток
Команда запрашивает идентификаторы всех меток в поле. Устройство возвращает
ноль или несколько пакетов с UID, затем обязательный пакет OK. После
сканирования все найденные метки перезапускаются. Опрос может занять некоторое
время; отправляйте следующую команду только после полного ответа.
Запрос: AT+I\r. Формат пакета метки: +UID=<UID><SAK>. Таких пакетов
может быть несколько или не быть вовсе.
+UID=EC6D140708
+UID=343D7091725D8600
OK
3.5.8 Сканирование первой метки
Команда выбирает первую метку согласно процедуре антиколлизии и переводит её в
состояние halted. В ответе приходят UID с SAK и пакет OK. Если меток нет,
устройство возвращает только OK.
Запрос: AT+i\r.
+UID=EC6D140708
OK
3.5.9 Сканирование следующей метки
Команда деактивирует текущую метку и выбирает следующую метку 13,56 МГц
согласно процедуре антиколлизии. Выбранная метка переводится в состояние
halted. В ответе приходят UID с SAK и пакет OK; если меток больше нет —
только OK. Исполнения -E не поддерживают команду и возвращают ERROR.
Запрос: AT+n\r.
+UID=343D7091725D8600
OK
3.5.10 Выбор метки по идентификатору
Команда выбирает и активирует метку с заданным UID. Последующие команды чтения
и записи работают с меткой, которую последней выбрала одна из команд AT+i,
AT+n или AT+SELECT=.... Пустой UID деактивирует текущую метку. Исполнения
-E не поддерживают команду и возвращают ERROR.
Синтаксис: AT+SELECT=<UID>\r. Устройство возвращает OK, если метка
выбрана, и ERROR, если метки с таким UID нет.
3.5.11 Проверка наличия метки
Команда проверяет наличие метки с указанным UID, но не делает её выбранной.
Найденная метка после проверки переходит в состояние halted. Исполнения -E
не поддерживают команду и возвращают ERROR.
Синтаксис: AT+C=<UID>\r. Устройство возвращает OK, если метка
присутствует, и ERROR, если её нет. Ранее выбранная метка не меняется.
3.5.12 Информация о выбранной метке
Команда запрашивает UID, SAK, размер блока (BS), количество блоков (BC) и
тип выбранной метки (T). UID и SAK возвращаются в шестнадцатеричном формате,
остальные поля — в десятичном. Коды типов перечислены в разделе
«Типы меток».
Запрос: AT+S\r.
+UID=EC6D140708,BC=64,BS=16,T=0
OK
Если метка не ответила или включён автоматический режим, устройство возвращает
ERROR.
3.5.13 Чтение блока данных
Команда читает блок Classic, Plus S/X в режиме SL1, Ultralight или NTAG.
Сначала выберите метку командой AT+i, AT+n или AT+SELECT. Номер блока
должен входить в диапазон BC, а длина ответа равна BS байтам. До версии 3.2
номер передаётся в десятичном формате. Начиная с версии 3.2 допустим и
шестнадцатеричный формат: AT+R10 или AT+R0xA. В ответе номер блока всегда
десятичный. Исполнения -E не поддерживают команду и возвращают ERROR.
Синтаксис: AT+R<номер блока>\r.
Запрос: AT+R0\r
Ответ: +DATA 0:EC6D1407920804009944314230353913
OK
Если метка не ответила либо не пройдена аутентификация, устройство возвращает
+CME ERROR: <код>. В автоматическом режиме команда возвращает ERROR.
3.5.14 Запись блока данных
Команда записывает блок Classic, Plus S/X в режиме SL1, Ultralight или NTAG.
Номер блока должен входить в диапазон BC. После двоеточия передайте BS байт
данных, то есть 2 × BS шестнадцатеричных цифр. До версии 3.2 номер блока
десятичный. Начиная с версии 3.2 допустим и шестнадцатеричный формат:
AT+W10:... или AT+W0xA:.... Исполнения -E не поддерживают команду и
возвращают ERROR.
Синтаксис: AT+W<номер блока>:<данные>\r.
Запрос: AT+W1:000102030405060708090A0B0C0D0E0F\r
Ответ: OK
Если метка не ответила либо не пройдена аутентификация, устройство возвращает
+CME ERROR: <код>. При ошибке синтаксиса или в автоматическом режиме команда
возвращает ERROR.
3.5.15 Блок значения
Начиная с версии 1.6 команда увеличивает или уменьшает число в блоке значения
MIFARE Classic или Plus S/X в режиме SL1. I означает увеличение, D —
уменьшение. Отрицательные значения не поддерживаются. Начиная с версии 3.2
номер блока можно передавать в шестнадцатеричном формате:
AT+V<I/D>10:... или AT+V<I/D>0x0A:.... Исполнения -E не поддерживают
команду и возвращают ERROR.
Синтаксис: AT+V<I|D><номер блока>:<значение>\r.
Запрос: AT+VI1:42\r
Ответ: OK
При ошибке чтения, записи или аутентификации устройство возвращает
+CME ERROR: <код>. При ошибке синтаксиса или в автоматическом режиме —
ERROR.
3.5.16 Смена идентификатора
Примечание. Менять UID можно только у специальных MIFARE Classic с перезаписываемым блоком 0. Несовместимая метка может перестать работать.
Команда доступна начиная с версии 1.5. Длина нового UID должна совпадать с
длиной прежнего. Исполнения -E не поддерживают команду и возвращают ERROR.
Синтаксис: AT+~<UID>\r. Успешный ответ: OK.
3.5.17 Набор команд для MIFARE Plus
Команды поддерживаются начиная с версии 1.6. Исполнения -E и часть исполнений
-M их не поддерживают и возвращают ERROR.
3.5.17.1 Аутентификация
Выполняет аутентификацию MIFARE Plus для заданного блока. Учитывайте уточнение 3.6.4.
Синтаксис: AT+N<номер блока>\r. Устройство возвращает OK при успехе,
+CME ERROR: <код> при ошибке аутентификации и ERROR при ошибке синтаксиса.
Для сброса аутентификации передайте номер блока 0. До версии 3.2 номер блока
должен быть десятичным. Начиная с версии 3.2 допустимы AT+N10 и AT+N0x0A.
3.5.17.2 Чтение блока данных
Команда читает блок после успешной аутентификации соответствующей области.
Синтаксис: AT+M<номер блока>\r.
Запрос: AT+M1\r
Ответ: +DATA 1:EC6D1407920804009944314230353913
OK
Если метка не ответила или вернула ошибку, устройство возвращает
+CME ERROR: <код>. В автоматическом режиме команда возвращает ERROR.
До версии 3.2 номер блока должен быть десятичным. Начиная с версии 3.2 допустимы
AT+M10 и AT+M0xA. В ответе номер блока всегда десятичный.
3.5.17.3 Запись блока данных
Команда записывает 16 байт в указанный блок после успешной аутентификации.
После двоеточия передайте 32 шестнадцатеричные цифры. До версии 3.2 номер блока
должен быть десятичным. Начиная с версии 3.2 допустимы AT+E10:... и
AT+E0xA:....
Синтаксис: AT+E<номер блока>:<данные>\r.
Запрос: AT+E1:000102030405060708090A0B0C0D0E0F\r
Ответ: OK
Если метка не ответила либо не пройдена аутентификация, устройство возвращает
+CME ERROR: <код>. При ошибке синтаксиса или в автоматическом режиме —
ERROR.
3.5.17.4 Смена уровня безопасности
Повышает уровень безопасности MIFARE Plus. Новый уровень передаётся десятичным числом.
Синтаксис: AT+J<уровень>\r. Устройство возвращает OK при успехе,
+CME ERROR: <код> при ошибке обмена или аутентификации и ERROR при ошибке
синтаксиса либо в автоматическом режиме.
3.5.18 Набор команд для меток 125 кГц
Команды поддерживают только исполнения -E и -M.
3.5.18.1 Запись меток типа T55x7
Команда программирует T5557, T5567, T5577 и совместимые с ними микросхемы в режиме эмуляции EM4100. После записи метка определяется как EM4100 с указанным идентификатором.
В стандартном для T5577 режиме совместимости с e5555 бифазное кодирование инвертировано относительно EM4100. Поэтому считыватель пытается записать такую метку в расширенном режиме с совместимым бифазным кодированием. Операция может завершиться ошибкой; предпочтительно использовать манчестерское кодирование.
Синтаксис: AT+@HHHHHHHHHH\r, где десять шестнадцатеричных символов задают
пять байт: идентификатор заказчика (один байт) и UID (четыре байта).
Если перед этим выбрана метка EM-Marine, идентификатор можно не передавать: команда запишет UID выбранной метки.
Запрос: AT+@4201020304\r
Ответ: OK
Чтобы перенести UID ранее выбранной EM-Marine, сначала выберите исходную метку
командой AT+i, уберите её, поднесите новую T55x7 и отправьте AT+@\r без
идентификатора.
Устройство не проверяет, находится ли в поле совместимая метка и завершилась ли
запись успешно. Оно возвращает OK независимо от фактического результата.
После записи уберите и снова поднесите метку, затем прочитайте её UID.
3.5.18.2 Запись меток типа T55x7 с защитой паролем
Команда записывает идентификатор и включает защиту совместимой T55x7 паролем.
Синтаксис: AT+xPPPPPPPP,HHHHHHHHHH\r, где PPPPPPPP — 32-битный пароль,
а HHHHHHHHHH — пятибайтный идентификатор. Оба значения передаются в
шестнадцатеричном формате. Ответ: OK.
Для записи UID ранее выбранной EM-Marine запятую и следующие 10 символов можно не передавать. Пароль и UID задаются в шестнадцатеричном формате.
3.5.18.3 Сброс пароля метки T55x7
Безопасность: команда снимает только защиту метки. Пароль и данные остаются в памяти и становятся доступны для чтения.
Устройство не может проверить, что в поле находится совместимая метка, пароль верен и защита действительно снята. Проверьте результат отдельным чтением.
Синтаксис: AT+uPPPPPPPP\r, где PPPPPPPP — 32-битный пароль в
шестнадцатеричном формате. Ответ: OK.
3.5.18.4 Классификация метки 125 кГц
Команда раздельно определяет протокол, который виден в эфире, и физическое
семейство микросхемы. Она доступна в исполнениях -M и -E и не изменяет
память метки.
Перед ручной классификацией остановите автоматическое сканирование:
AT+SCAN0
AT+LFCLASS=FULL
Поддерживаются три формы команды:
AT+LFCLASS?— быстрая классификация;AT+LFCLASS=FAST— то же действие: проверка стандартного T55xx downlink без длительного пассивного поиска EM4x50;AT+LFCLASS=FULL— перебор всех поддержанных T55xx downlink-режимов и полный поиск известных LF-семейств.
Формат ответа:
+LFCLASS=<status>,<air>,<chip>,<evidence>,<chipinfo>
| Поле | Значение |
|---|---|
status | OK, AIR_ONLY, NO_SIGNAL или BUSY |
air | Протокол в эфире: EM4100_COMPAT, HID_PROX, UNKNOWN или NONE |
chip | Обнаруженное физическое семейство микросхемы либо NONE |
evidence | Ответ, на котором основана классификация |
chipinfo | Конфигурационное слово или часть заводских данных микросхемы |
Корректный EM4100-совместимый поток сам по себе не доказывает, что метка изготовлена на EM4100. Например, T5577 может передавать такой же код. Если считыватель подтвердил семейство по заводским данным T5577, ответ выглядит так:
+LFCLASS=OK,EM4100_COMPAT,T5577,T5577_TRACE,E0151234
Если получена корректная конфигурация T55xx, но точная разновидность не
подтверждена заводскими данными, поле chip содержит общее семейство T55XX:
+LFCLASS=OK,EM4100_COMPAT,T55XX,T55XX_CONFIG,00148040
Если считыватель обнаружил только EM4100-совместимый поток, а команды поддерживаемого семейства с чтением и записью не получили подтверждённого ответа, классификация относится только к протоколу в эфире:
+LFCLASS=AIR_ONLY,EM4100_COMPAT,NONE,NONE,00000000
Для совместимости сохранена команда AT+LFINFO?. Она выполняет полный поиск,
но возвращает ответ старого формата. В новом ПО используйте AT+LFCLASS=FULL:
он отдельно сообщает протокол в эфире, семейство микросхемы и основание
классификации.
3.5.18.5 Диагностика сигнала 125 кГц
Перед выполнением команд перейдите в ручной режим: AT+SCAN0. Диагностические
команды не изменяют память метки.
| Команда | Результат |
|---|---|
AT+LFSEARCH? | Захватывает LF-сигнал и возвращает наличие сигнала, число фронтов, переполнение, минимальную, среднюю и максимальную длительность уровня, предполагаемую модуляцию и скорость |
AT+LFRAW? | Возвращает первые 16 пар delta/level из последнего захвата |
AT+LFRAW=<offset> | Возвращает до 16 пар delta/level, начиная с указанного смещения |
AT+LFDEBUG? | Возвращает статистику последнего активного или пассивного захвата, найденную конфигурацию T55xx и оценку качества |
Пример краткой диагностики:
Запрос: AT+LFSEARCH?
Ответ: +LFSEARCH=1,742,0,32,61,80,FSK1,50
OK
Поля LFSEARCH: наличие сигнала, число фронтов, признак переполнения,
min/avg/max в микросекундах, предполагаемая модуляция и скорость в периодах
несущей. LFRAW возвращает смещение, число элементов на странице, общее число
элементов и пары <delta>/<level>. Например:
+LFRAW=0,16,742,0028/1,0040/0,...
Ответ LFDEBUG содержит число фронтов, число декодированных битов, период бита,
признак переполнения, min/avg/max, модуляцию, скорость, номер T55xx
downlink-режима, конфигурационный блок и оценку качества. Downlink 255
означает, что ни один режим не дал корректного ответа.
3.5.18.6 Чтение памяти T55xx
Команды работают в SCAN0. Для T55xx допустимы страницы 0 и 1, блоки
0–7.
| Команда | Назначение | Пример ответа |
|---|---|---|
AT+LFTRACE? | Прочитать два заводских traceability-блока T5577/T5555 со страницы 1 без пароля | +LFTRACE=E0151234,89ABCDEF |
AT+LFREAD=T,<page>,<block> | Прочитать 32-битный блок в normal mode | +LFREAD=T,0,1,FF801234 |
AT+LFREAD=T,<page>,<block>,P,<password> | Прочитать блок в password mode; пароль — восемь шестнадцатеричных символов | +LFREAD=T,0,3,DEADBEEF |
Перед чтением с паролем считыватель автоматически отправляет AOR wake-up.
Команда AT+LFTRACE? использует обычное чтение страницы 1 и не передаёт
пароль.
3.5.18.7 Запись произвольного блока T55xx
Примечание. Команда изменяет память метки. Блокировка необратимо запрещает дальнейшую запись выбранного блока по радиоканалу. Не повторяйте команду автоматически после ошибки.
Синтаксис:
AT+LFWRITE=T,<page>,<block>,<data>,<lock>,<access>,<password>,<confirmation>
| Поле | Допустимое значение |
|---|---|
page | 0 или 1 |
block | 0–7; запись Page 1 Block 0 запрещена |
data | ровно восемь шестнадцатеричных символов |
lock | 0 — не блокировать; 1 — необратимо заблокировать блок |
access | N — normal mode; P — password mode |
password | NONE для normal mode или текущий пароль из восьми шестнадцатеричных символов для password mode |
confirmation | CONFIRM при lock=0; CONFIRM_LOCK при lock=1 |
Примеры:
AT+LFWRITE=T,0,3,DEADBEEF,0,N,NONE,CONFIRM
AT+LFWRITE=T,1,1,E0151234,0,P,11223344,CONFIRM
AT+LFWRITE=T,0,4,01020304,1,N,NONE,CONFIRM_LOCK
После одной последовательности программирования считыватель читает тот же блок и сравнивает все 32 бита. Успешный ответ имеет вид:
+LFWRITE=OK,T,0,3,DEADBEEF,0
OK
При lock=1 считыватель не может прочитать сам бит блокировки. Ответ
OK_LOCK_UNVERIFIED подтверждает записанные данные, но не состояние этого
бита. При несовпадении данных возвращается VERIFY_MISMATCH; автоматической
повторной записи нет.
Page 0 Block 0 задаёт конфигурацию, Page 0 Block 7 может содержать пароль, Page 1 Block 1/2 обычно содержит traceability, а Page 1 Block 3 — настройки аналогового тракта. Ошибочное значение может сделать метку нечитаемой.
3.5.18.8 Чтение EM4x05 и EM4x50
Команды доступны в SCAN0 и не изменяют память метки.
| Команда | Назначение | Пример ответа |
|---|---|---|
AT+LFREAD=E,<word> | Прочитать слово 0–15 EM4205, EM4305, EM4369 или EM4469 без пароля | +LFREAD=E,0,0,00040072 |
AT+LFSTREAM? | Пассивно прочитать поток standard read EM4150, EM4350, EM4450 или EM4550 | +LFSTREAM=3,01234567,89ABCDEF,00112233 |
AT+LFSTREAM? не передаёт метке команду. Ответ начинается с числа найденных
слов, после которого идут 32-битные значения в шестнадцатеричном формате.
3.5.19 Конфигурация устройства
Команды этого раздела изменяют параметры устройства независимо от режима
сканирования. Часть настроек действует только до перезагрузки. Чтобы сохранить
их в энергонезависимой памяти, выполните AT+P.
3.5.19.1 Светодиод
Параметр разрешает или запрещает прошивке включать светодиод при поднесении
метки. Он не влияет на прямое управление командой AT+D1.
AT+L0\r— не включать светодиод при поднесении метки;AT+L1\r— включать светодиод;AT+L?\r— прочитать настройку.
Команда изменения возвращает OK, а запрос — значение +L0 или +L1, затем
OK.
3.5.19.2 Зуммер
Параметр разрешает или запрещает прошивке включать зуммер при поднесении метки.
Он не влияет на прямое управление командой AT+B.
AT+Z0\r— не включать зуммер при поднесении метки;AT+Z1\r— включать зуммер;AT+Z?\r— прочитать настройку.
Команда изменения возвращает OK, а запрос — значение +Z0 или +Z1, затем
OK.
3.5.19.3 Чувствительность приёмника
Параметр задаёт усиление приёмника 13,56 МГц. Значение по умолчанию — 33 дБ. Доступны 18, 23, 33, 38, 43 и 48 дБ. Если передать другое число из диапазона 18–48, устройство округлит его вверх до ближайшего доступного.
AT+G=<значение>\r— задать чувствительность;AT+G=\r— вернуть значение по умолчанию, 33 дБ;AT+G?\r— прочитать действующее значение.
Например, запрос AT+G=24\r задаст 33 дБ: устройство округлит значение вверх
до ближайшего поддерживаемого. Изменение применяется не сразу. Успешный ответ:
OK.
3.5.19.4 Интервал опроса меток
В автоматическом режиме команда задаёт интервал между опросами: от 100 до 65 535 мс. Значение меньше 100 заменяется на 100 мс; значение выше 65 535 вызывает ошибку. Интервал по умолчанию — 1000 мс в версиях до 1.4 и 200 мс начиная с версии 1.4.
Синтаксис: AT+T<интервал>\r. Запрос AT+T?\r возвращает текущее значение,
например +T1000, затем OK. Команда изменения возвращает OK.
3.5.19.5 Ключи аутентификации
Для доступа к памяти MIFARE Classic и Plus требуется ключ. Команда задаёт Key A
или Key B для Classic, пароль Ultralight/NTAG либо ключ Plus. По умолчанию все
байты равны 0xFF.
Ключи передаются по этому протоколу открытым текстом. После AT+P они также
сохраняются в энергонезависимой памяти и доступны для последующего чтения. Если
ключ сохранять нельзя, перед AT+P верните для него значение из байтов FF.
Для MIFARE Classic используйте AT+K<тип><ключ>\r, где тип — A или B, а
ключ состоит из 12 шестнадцатеричных символов. Успешный ответ: OK.
Ultralight и NTAG
Начиная с версии 1.5 тип U задаёт четырёхбайтный пароль Ultralight EV1 и
NTAG:
AT+KU<пароль>\r— задать четыре байта пароля, то есть восемь шестнадцатеричных символов;AT+KP\r— аутентифицировать текущую метку и запросить её двухбайтный PACK.
Ответ на AT+KP\r имеет вид +P<PACK>, затем приходит OK.
MIFARE Plus
Начиная с версии 1.6 тип X задаёт 16-байтный ключ MIFARE Plus:
AT+KX<ключ>\r, где ключ состоит из 32 шестнадцатеричных символов. Успешный
ответ: OK.
Запрос AT+K?\r возвращает сохранённые значения отдельными пакетами:
+A...или+B...— тип и ключ MIFARE Classic;+U...— пароль Ultralight, начиная с версии 1.5;+X...— ключ MIFARE Plus, начиная с версии 1.6;- завершающий пакет
OK.
3.5.19.6 Управление виртуальной клавиатурой
Раздел относится к ODRFID-N/M/E третьего поколения с прошивкой 3.0 или новее. Версии 3.0–3.11 одновременно предоставляют CDC и HID-клавиатуру. Начиная с версии 3.12 к ним добавлен отдельный бинарный HID.
По умолчанию клавиатура включена. Если её выключить, компьютер всё равно видит HID-интерфейс, но ввод от него не поступает. В версиях 3.0–3.11 включённая клавиатура направляет форматированный результат автоматического сканирования в HID вместо CDC. Начиная с версии 3.12 события передаются через CDC независимо от настройки клавиатуры; настройка управляет только генерацией нажатий.
HID отправляет коды клавиш, а не готовые символы. Например, одна клавиша может
дать d в английской раскладке и в в русской. Результат и активное окно
зависят от настроек операционной системы.
AT+H0\r— выключить передачу через виртуальную клавиатуру;AT+H1\r— включить;AT+H?\r— прочитать состояние.
Команда изменения возвращает OK, а запрос — +H0 или +H1, затем OK.
3.5.19.7 Управление приёмопередатчиком 13,56 МГц
Команда доступна только в исполнениях -M. По умолчанию приёмопередатчик
включён. Если он выключен, метки 13,56 МГц не сканируются. При включённых двух
диапазонах сначала сканируются метки 125 кГц. Для версий 2.0–2.1 учитывайте
уточнение 3.6.3.
AT+h0\r— выключить приёмопередатчик;AT+h1\r— включить;AT+h?\r— прочитать состояние.
Команда изменения возвращает OK, а запрос — +h0 или +h1, затем OK.
3.5.19.8 Управление приёмопередатчиком 125 кГц
Команда доступна только в исполнениях -M. По умолчанию приёмопередатчик
включён. Если он выключен, метки 125 кГц не сканируются. При включённых двух
диапазонах метки 125 кГц сканируются первыми.
AT+m0\r— выключить приёмопередатчик;AT+m1\r— включить;AT+m?\r— прочитать состояние.
Команда изменения возвращает OK, а запрос — +m0 или +m1, затем OK.
3.5.19.9 Режим записи меток 125 кГц
Команда доступна в исполнениях -M и -E. Она задаёт манчестерское или
бифазное кодирование и скорость 32 или 64 перехода на бит при записи T55x7.
Синтаксис: AT+c<кодирование>,<скорость>\r.
- кодирование:
0— манчестерское,1— бифазное; - скорость:
0— 64 перехода на бит,1— 32 перехода на бит.
Запрос AT+c?\r возвращает два значения, например +c0,1, затем OK.
3.5.19.10 SAK
Команда работает в версии 1.0F от 3 апреля 2018 года и более ранних и не
поддерживается начиная с 1.5F. По умолчанию в автоматическом режиме SAK
добавляется к UID; параметр позволяет отключить это поведение.
AT+A0\r— не добавлять SAK;AT+A1\r— добавлять SAK;AT+A?\r— прочитать настройку.
Команда изменения возвращает OK, а запрос — +A=0 или +A=1, затем OK.
3.5.19.11 Выбор данных в режиме сканирования
Команда работает в версии 1.0F от 3 апреля 2018 года и более ранних и не
поддерживается начиная с 1.5F. Значение 1 выбирает UID, значение 0 — блок,
указанный отдельным параметром.
AT+U0\r— выводить блок;AT+U1\r— выводить UID, значение по умолчанию;AT+U?\r— прочитать настройку.
Команда изменения возвращает OK, а запрос — +U=0 или +U=1, затем OK.
3.5.19.12 Номер блока в режиме сканирования
Команда работает в версии 1.0F от 3 апреля 2018 года и более ранних и не
поддерживается начиная с 1.5F. Она выбирает блок для автоматического вывода.
Если блока нет или его нельзя прочитать, например из-за ошибки аутентификации,
устройство ничего не отправляет.
Синтаксис: AT+b<номер блока>\r. Запрос AT+b?\r возвращает выбранный номер,
например +b=0, затем OK. Команда изменения возвращает OK.
3.5.19.13 Формат вывода данных в режиме SCAN2
Команда доступна начиная с версии 1.3F от 17 декабря 2018 года. CDC и HID
используют одинаковый синтаксис. Формат по умолчанию — HU*\n; до первого
ключа a, d, h или H данные выводятся заглавными шестнадцатеричными
символами.
Последовательности \r и \n сохраняются в строке форматирования, но при
выводе через последовательный порт игнорируются, потому что конфликтуют с
разделителем пакетов. Символ ; зарезервирован для разделения команд. Начиная
с версии 3.2 символ с ASCII-кодом 0xHH можно передать как &#HH; например,
для точки с запятой используйте B.
AT+F=<формат>\r— задать строку форматирования;AT+F?\r— прочитать её.
Например, запрос возвращает +F=HU*\n, затем OK. Команда
AT+F=hB1%*\r задаёт вывод блока 1 строчными шестнадцатеричными символами.
3.5.19.14 Сохранение настроек
Команда сохраняет текущую конфигурацию в энергонезависимой памяти.
Запрос: AT+P\r. Успешный ответ: OK.
3.5.20 Управление устройством
Следующие команды управляют самим устройством и доступны в режиме автоматического сканирования.
3.5.20.1 Перезагрузка
Перезагружает устройство.
Запрос: AT+Q\r. Ответ перед перезагрузкой: OK.
3.5.20.2 Обновление встроенного ПО
Перезагружает устройство во встроенный загрузчик. Загрузчик доступен не во всех
исполнениях; если его нет, команда работает как AT+Q.
Запрос: AT+X\r. Ответ перед перезагрузкой: OK.
3.5.20.3 Счётчик времени работы
Команда AT&ODOMETER? доступна в рабочих вариантах ODRFID-M/N/E на STM32L151
начиная с прошивки 3.13. Она возвращает суммарное время работы в полных минутах:
Запрос: AT&ODOMETER?
Ответ: &ODOMETER=12345
OK
Если прошивка обнаружила повреждённую запись или ошибку data EEPROM, к ответу
добавляется FAULT:
&ODOMETER=12345,FAULT
Сбросить счётчик AT-командой нельзя. В сборке автономного LF-сниффера одометр отключён.
3.6 Errata
3.6.1 Информация об устройстве
В версиях до 3.1 включительно ответ на ATI содержит два пакета вместо трёх:
описание продукта и серийный номер разделены одной последовательностью \r\n,
затем приходит OK.
Не используйте ATI в таком парсере либо учитывайте этот формат: распознавайте
\r\nS/N как границу полей и допускайте пустые пакеты между двумя
последовательными разделителями.
3.6.2 Смена уровня безопасности
Версии ПО: с v3.0 до v3.1
Действие: переход с уровня 1 на уровень 3 командой
AT+J3.Фактический результат: метка остаётся на уровне 1, а устройство перестаёт сканировать до перезагрузки.
Решение: обновить прошивку. Переход с уровня 0 на уровень 1 работает штатно.
3.6.3 Управление приёмопередатчиком 13,56 МГц
Версии ПО: с 2.0 до 2.1
Действие: изменение состояния командой
AT+h....Фактический результат: команда может не примениться.
Решение: проверьте состояние командой
AT+h?и при необходимости повторите изменение.
3.6.4 Сброс аутентификации MIFARE Plus
Версии ПО: все до 3.1 включительно
Действие: сброс аутентификации командой
AT+N0.Ожидаемый результат: аутентификация сброшена, получен пакет
OK.Фактический результат: аутентификация не сброшена, получен пакет
ERROR.Решение: обновить прошивку.
3.7 Команды автономного сниффера 125 кГц
Эти команды доступны только в отдельной отладочной сборке с автономным LF-сниффером. В обычной прошивке ODRFID-M/N/E они не работают, а в сборке сниффера отклоняются обычные активные LF-команды.
| Команда | Назначение | Пример ответа |
|---|---|---|
AT+LFSNIFF? | Получить состояние и метаданные сохранённой трассы | +LFSNIFF=STORED,1,0,742,1218,80000,89ABCDEF |
AT+LFSNIFFDATA? | Получить первые 32 байта сжатых данных | +LFSNIFFDATA=0,32,1218,001122... |
AT+LFSNIFFDATA=<offset> | Получить следующую страницу с указанного смещения в байтах | +LFSNIFFDATA=32,32,1218,AABBCC... |
AT+LFSNIFFCLEAR=CONFIRM | Удалить сохранённую трассу и перейти в ожидание | +LFSNIFFCLEAR=OK |
Поля LFSNIFF: состояние, версия формата, флаги, число фронтов, размер сжатых
данных, длительность в микросекундах и CRC-32. Возможные состояния: ARMED,
CAPTURING, WRITING, STORED и CORRUPT. Сначала запросите статус, затем
прочитайте данные страницами до указанного общего размера. Очищайте устройство
только после сохранения нужной трассы.
4 ODRFID (прошивка HID)
В исходной редакции этот раздел доступен только на английском языке.
5 ODRFID-485 (протокол AT)
В исходной редакции этот раздел доступен только на английском языке.
6 ODRFID-485: Modbus RTU
Устройство принимает AT-команды и отправляет ответы через RS485 по протоколу Modbus RTU. Набор команд почти совпадает с CDC, но поддерживаются только следующие функции Modbus:
чтение регистров ввода — функция 4;
чтение регистров хранения — функция 3;
запись одного регистра хранения — функция 6;
запись нескольких регистров хранения — функция 16.
Остальные функции не поддерживаются и вызывают исключение Modbus.
6.1 Соглашение о нумерации
В документации Modbus регистры хранения часто обозначают как 40001–49999, но в
кадре передаётся относительный адрес: 0 для 40001, 1 для 40002 и так далее.
Ниже используются только относительные адреса с нуля.
6.2 Регистры Modbus
6.2.1 Регистры ввода
0— число байтов во внутреннем буфере, ожидающих чтения.1— признак наличия метки, поддерживается начиная с версии 3.1:0— метки нет;любое другое значение — метка есть;
более ранние версии возвращают исключение;
в ручном режиме регистр хранит результат последней команды сканирования. Метки уже может не быть в поле, потому что устройство не проверяет её присутствие самостоятельно;
в автоматическом режиме регистр обновляется после каждого опроса с интервалом
T. После включения режима подождите не менееT, лучше2 × T, прежде чем читать регистр.
Остальные регистры ввода не поддерживаются; попытка чтения вызывает исключение.
6.2.2 Регистры хранения
0–125(0x00–0x7D) — внутренний буфер данных:при записи содержимое передаётся устройству как AT-команда. Рекомендуется начинать с адреса 0; допустим другой адрес, если данные остаются в диапазоне;
при чтении возвращается запрошенная часть буфера. Число доступных байтов находится во входном регистре 0. Они начинаются с адреса 0 и занимают
ceil(N / 2)регистров. Устройство всегда возвращает запрошенное число регистров и не проверяет, содержат ли они актуальные данные. Чтение не очищает буфер.
126(0x7E) — запись любого значения очищает буфер и обнуляет входной регистр 0. Во время сканирования всех меток команда игнорируется.127(0x7F) — запись любого значения перезагружает устройство.128(0x80) — запись любого значения перезагружает устройство в DFU. Протокол DFU несовместим с Modbus RTU; для обновления устройство придётся отключить от линии Modbus.130(0x82) — доступен начиная с версии 2.1 только для чтения, а с версии 2.2 — для чтения и записи:чтение возвращает длину UID последней отсканированной метки;
запись обнуляет регистры
130–141.
131–141(0x83–0x8D) — доступны начиная с версии 2.1 только для чтения:131(0x83) — тип последней отсканированной метки;132— первый байт её UID;133— второй байт UID и так далее;число регистров с UID определяется значением регистра
130. Для версий 2.1–2.2 учитывайте уточнение 6.7.1.
143(0x8F) — доступен начиная с версии 3.1 только для записи. Значение0x4242(16962) сбрасывает адрес, скорость, конфигурацию и остальные настройки к заводским, затем перезагружает устройство.
Остальные регистры хранения не поддерживаются. Регистры 130–141 обновляются
только в автоматическом режиме.
6.3 Пример команды без данных в ответе
Адрес устройства по умолчанию — 95 (0x5F).
Очистите буфер: запишите любое значение в регистр хранения
126.>> 5F 06 007E 0000 E4AC << 5F 06 007E 0000 E4ACПередайте
AT+SCAN0в регистрах хранения0–3. Восемь байтов занимают четыре регистра. Команду с нечётным числом байтов нужно дополнить0x00.>> 5F 10 0000 0004 08 41542B5343414E30 4A48 << 5F 10 0000 0004 CCB4Функция
0x10в ответе означает успех; при исключении вернулась бы0x90. Пакеты\r\nOK\r\nи\r\nERROR\r\nв режиме Modbus не передаются.Для проверки прочитайте входной регистр
0. После этой команды данных в буфере быть не должно.>> 5F 04 0000 0001 3CB4 << 5F 04 02 0000 10FD
6.4 Пример команды с данными в ответе
Очистите буфер через регистр хранения
126.>> 5F 06 007E 0000 E4AC << 5F 06 007E 0000 E4ACПередайте
AT+G?\0в регистрах хранения0–2. Пять значащих байтов занимают три регистра после округления вверх.>> 5F 10 0000 0003 06 41542B473F00 A682 << 5F 10 0000 0003 8D76Прочитайте входной регистр
0, чтобы узнать длину ответа.>> 5F 04 0000 0001 3CB4 << 5F 04 02 0009 D0FBВ буфере 9 байт, поэтому нужно прочитать
ceil(9 / 2) = 5регистров.Прочитайте пять регистров хранения.
>> 5F 03 0000 0005 88B7 << 5F 03 0A 0D0A2B473D33330D0A30 F147Значащие 9 байт —
0D0A2B473D33330D0A, то есть\r\n+G=33\r\n. Последний байт0x30находится за объявленной длиной и должен быть отброшен.Очистите буфер после обработки.
>> 5F 06 007E 0000 E4AC << 5F 06 007E 0000 E4AC
Мастер может очищать буфер до команды или после неё, пока тот не переполняется, но хотя бы одна из этих операций обязательна.
6.5 Настройки порта
По умолчанию используются 115200 бит/с, 8 бит данных, один стоп-бит, без
контроля чётности (8N1) и адрес 0x5F (95). Команда AT+[ изменяет эти
параметры. Новые значения сохраняются в энергонезависимой памяти и применяются
после перезагрузки.
6.6 Формат пакета
Правила ниже относятся к данным, которые передаются через чтение и запись регистров хранения.
Команда от мастера начинается с
AT. Для заполнения последнего 16-битного регистра её можно завершить нулевым байтом0x00. В отличие от CDC, символ\rнеобязателен. Для прошивок до версии 2.2 включительно учитывайте уточнение 6.7.2.Пакеты данных от устройства ограничены последовательностью
CR LF—0x0D 0x0A, строка\r\n.Ответ состоит из одного или нескольких пакетов.
\r\nOK\r\nи\r\nERROR\r\nне передаются: успех или ошибку показывает ответ Modbus, где старший бит кода функции обозначает исключение.Не добавляйте пробелы, табуляцию и переводы строк, не предусмотренные синтаксисом команды. Анализатор их не удаляет.
6.6.1 Сканирование всех меток
Команда выполняется асинхронно. После сканирования UID помещаются в регистры
хранения 0–125. Пока идёт опрос, устройство не отвечает на другие запросы.
6.6.2 Управление вторым светодиодом
Помимо зелёного светодиода AT+D1, устройство поддерживает красный светодиод
AT+D2.
AT+D2=0— выключить красный светодиод;AT+D2=1— включить красный светодиод.
Результат выполнения передаётся кодом ответа Modbus RTU.
6.6.3 Управление выходом
Команда AT+Y=[0|1] управляет выходом OUT с открытым коллектором без подтяжки.
AT+Y=0— отключить выход: OUT остаётся неподтянутым;AT+Y=1— включить выход: OUT соединяется с землёй;AT+Y?— прочитать состояние выхода.
На запрос состояния устройство отвечает +Y=0 или +Y=1. Результат команды
изменения состояния передаётся кодом ответа Modbus RTU.
6.6.4 Чтение входного канала
Команда AT+y? читает состояние входа, если он установлен.
Запрос: AT+y?.
+y=0— вход подтянут к земле;+y=1— вход подтянут к питанию.
6.6.5 Управление UART/RS485
Команда читает и задаёт адрес, скорость, число бит, чётность, стоп-биты и межсимвольный интервал UART/RS485. В ответе возвращаются значения из энергонезависимой памяти. Сразу после изменения они могут отличаться от действующих: новые параметры применяются при следующей перезагрузке.
Формат: AT+[=<a>,<s>,<p>,<b>,<r>,<t>.
| Параметр | Значение |
|---|---|
<a> | адрес устройства от 1 до 247 в десятичном формате |
<s> | стоп-биты: 10 — один, 15 — полтора, 20 — два |
<p> | чётность: 0 — нет, 1 — нечётная, 2 — чётная; значения 1 и 2 доступны с версии 2.0 |
<b> | количество бит данных; поддерживается только значение 8, остальные значения принимаются, но игнорируются |
<r> | скорость передачи данных, бит/с |
<t> | межсимвольный интервал |
При изменении параметров UART/RS485 устройство сохраняет все настройки, включая
конфигурацию, как при выполнении команды AT+P.
Пример чтения параметров:
Запрос: AT+[?
Ответ: +[=95,10,0,8,115200,10
Ответ соответствует адресу 95 (0x5F) и параметрам 115200 8N1 с
межсимвольным интервалом 10 мс.
6.7 Errata
6.7.1 Регистры хранения 131–141
В версиях 2.1 и 2.2 чтение произвольного диапазона регистров 131–141 может
вернуть неверные данные вместо типа и идентификатора метки. Всегда начинайте
чтение с регистра 130 и используйте функцию 3.
Например, для получения данных из регистров 132–135:
- неверно: функция
3, начальный адрес132, количество4; - верно: функция
3, начальный адрес130, количество6.
6.7.2 Символ конца пакета CR
Во всех версиях до 2.2 включительно символ CR (\r) в конце пакета от
мастера вызывает ошибку Modbus. Не добавляйте CR. Если нужно дополнить пакет
до целого количества 16-битных регистров, используйте нулевой байт 0x00
(\0).
7 Синтаксис строки форматирования
Коды и примеры приведены в актуальном справочнике строки форматирования.
8 Типы меток
| Код | Тип метки |
|---|---|
0 | MIFARE Classic 1K |
1 | MIFARE Classic 4K |
2 | MIFARE Classic Mini |
3 | MIFARE Ultralight |
4 | MIFARE Ultralight C, доступен только UID |
5 | MIFARE Ultralight EV1, 640 бит |
6 | MIFARE Ultralight EV1, 1312 бит |
7 | MIFARE Plus S 2K, SL1 |
8 | MIFARE Plus S 4K, SL1 |
9 | MIFARE DESFire, доступен только UID |
10, 11 | MIFARE DESFire, устаревшие коды |
12 | MIFARE Classic 2K |
13 | MIFARE Plus X 2K, SL1 |
14 | MIFARE Plus X 4K, SL1 |
15 | MIFARE Plus X, SL0 |
16 | MIFARE Plus X 2K, SL2 |
17 | MIFARE Plus X 4K, SL2 |
18 | MIFARE Plus X, SL3 |
19 | MIFARE Plus S, SL0 |
20, 21 | зарезервировано (RFU) |
22 | MIFARE Plus S, SL3 |
23 | NTAG213 |
24 | NTAG215 |
25 | NTAG216 |
26 | MIFARE Ultralight Nano |
27 | EM41xx 125 кГц и совместимые метки |
28 | NTAG413 |
29 | NTAG424 |
30 | MIFARE Plus X 4K, SL3 |
31 | MIFARE Plus S 4K, SL3 |
32 | карта ISO 14443-4 / ISO 7816-4 |
33 | EMV-совместимая карта |
34–254 | зарезервировано |
255 | неизвестный тип |
Особенности совместимости версий:
- прошивки до версии 1.5 возвращают код
3для MIFARE Ultralight, Ultralight EV1 и NTAG; - считыватель не работает с памятью MIFARE DESFire и предоставляет только UID;
начиная с версии 1.5 такие карты получают код
9, а более ранние версии могли возвращать9,10или11; - MIFARE Plus X/S 2K и 4K в режиме SL3 могут получать общие коды
18и22вместо30и31для обратной совместимости; - EMV-карты являются подмножеством ISO 14443-4 / ISO 7816-4 и до чтения
содержимого могут определяться кодом
32; - у EM41xx нет SAK, поэтому считыватель подставляет
SAK=0xFFдля совместимости с форматом данных меток 13,56 МГц.
9 Аппаратные ревизии
| Поколение | Ревизия | Код прошивки | Частоты | Поддержка и индикация |
|---|---|---|---|---|
| ODRFID | без обозначения | F | 13,56 МГц | MIFARE Classic и Ultralight; светодиод и зуммер |
| ODRFID | -M | m | 13,56 МГц и 125 кГц | MIFARE Classic, Ultralight, NTAG и Plus; Plus — только в режиме совместимости с Classic; чтение EM-Marine, запись T5577; зуммер |
| ODRFID | -N | n | 13,56 МГц | MIFARE Classic, Ultralight, NTAG и Plus; зуммер |
| ODRFID | -E | e | 125 кГц | чтение EM-Marine, запись T5577; зуммер |
| ODRFID 2021 | -M (r3) | m | 13,56 МГц и 125 кГц | MIFARE Classic, Ultralight, NTAG и Plus; светодиод и зуммер |
| ODRFID 2021 | -N | n | 13,56 МГц | MIFARE Classic, Ultralight, NTAG и Plus; светодиод и зуммер |
| ODRFID 2021 | -E | e | 125 кГц | чтение EM-Marine, запись T5577; светодиод и зуммер |
У ранних ревизий ODRFID были отдельные прошивки CDC и HID. Перейти с одной на другую можно обновлением встроенного ПО, даже если номер версии не меняется. Обновление не меняет аппаратную ревизию: -M, -E и -N несовместимы между собой. Перед прошивкой проверьте обозначение устройства. Установка файла для другой ревизии может сделать считыватель неработоспособным; для восстановления потребуется авторизованный сервисный центр.
Ревизии -M и -E читают EM41xx и совместимые метки 125 кГц с манчестерским и
бифазным кодированием, с 32 или 64 переходами на бит. Для EM4100 поддерживаются
оба варианта бифазного кодирования: middle-bit transition is zero и
middle-bit transition is one.
У устройств третьего поколения 2021 года одна прошивка одновременно предоставляет интерфейсы CDC и HID. Перепрошивка для смены интерфейса не нужна.
10 Ревизии документации
| Редакция | Дата | Изменения |
|---|---|---|
| 1.0 | 2018-01-22 | Первая версия |
| 1.1 | 2018-04-27 | Обновлён протокол, добавлен выбор UID или блока |
| 1.2 | 2019-04-07 | Добавлен протокол RS485 |
| 1.3 | 2019-08-20 | Описаны возможности прошивки 1.6 |
| 1.4 | 2019-10-29 | Добавлено устройство RS485-IO |
| 1.5 | 2020-01-27 | Добавлены устройства диапазона 125 кГц |
| 1.6 | 2020-12-08 | Добавлена прошивка Modbus 2.1 |
| 1.7 | 2021-03-16 | Исправлено описание HID-команд для 125 кГц |
| 1.8 | 2021-08-26 | Обновлён протокол для устройств третьего поколения |
| 1.9 | 2022-01-11 | Добавлен раздел Errata и русский перевод |
| 1.10 | 2026-08-12 | Добавлена классификация меток 125 кГц командой AT+LFCLASS |
| 1.11 | 2026-08-26 | Добавлены команды диагностики, чтения и записи LF-меток, одометр и команды автономного сниффера |