Перейти к содержанию

Протоколы 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-битного поля:

Битовая маскаОшибка
0x00000001Protocol error
0x00000002Parity error
0x00000004Checksum error
0x00000008Collision
0x00000010Buffer overflow
0x00000020Tear event
0x00000040IC overheated
0x00000080FIFO write error
0x00000100время операции истекло
0x00000200MIFARE 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>
ПолеЗначение
statusOK, 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>
ПолеДопустимое значение
page0 или 1
block0–7; запись Page 1 Block 0 запрещена
dataровно восемь шестнадцатеричных символов
lock0 — не блокировать; 1 — необратимо заблокировать блок
accessN — normal mode; P — password mode
passwordNONE для normal mode или текущий пароль из восьми шестнадцатеричных символов для password mode
confirmationCONFIRM при 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; например, для точки с запятой используйте &#3B.

  • 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).

  1. Очистите буфер: запишите любое значение в регистр хранения 126.

    >> 5F 06 007E 0000 E4AC
    << 5F 06 007E 0000 E4AC
    
  2. Передайте 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 не передаются.

  3. Для проверки прочитайте входной регистр 0. После этой команды данных в буфере быть не должно.

    >> 5F 04 0000 0001 3CB4
    << 5F 04 02 0000 10FD
    

6.4 Пример команды с данными в ответе

  1. Очистите буфер через регистр хранения 126.

    >> 5F 06 007E 0000 E4AC
    << 5F 06 007E 0000 E4AC
    
  2. Передайте AT+G?\0 в регистрах хранения 0–2. Пять значащих байтов занимают три регистра после округления вверх.

    >> 5F 10 0000 0003 06 41542B473F00 A682
    << 5F 10 0000 0003 8D76
    
  3. Прочитайте входной регистр 0, чтобы узнать длину ответа.

    >> 5F 04 0000 0001 3CB4
    << 5F 04 02 0009 D0FB
    

    В буфере 9 байт, поэтому нужно прочитать ceil(9 / 2) = 5 регистров.

  4. Прочитайте пять регистров хранения.

    >> 5F 03 0000 0005 88B7
    << 5F 03 0A 0D0A2B473D33330D0A30 F147
    

    Значащие 9 байт — 0D0A2B473D33330D0A, то есть \r\n+G=33\r\n. Последний байт 0x30 находится за объявленной длиной и должен быть отброшен.

  5. Очистите буфер после обработки.

    >> 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 Типы меток

КодТип метки
0MIFARE Classic 1K
1MIFARE Classic 4K
2MIFARE Classic Mini
3MIFARE Ultralight
4MIFARE Ultralight C, доступен только UID
5MIFARE Ultralight EV1, 640 бит
6MIFARE Ultralight EV1, 1312 бит
7MIFARE Plus S 2K, SL1
8MIFARE Plus S 4K, SL1
9MIFARE DESFire, доступен только UID
10, 11MIFARE DESFire, устаревшие коды
12MIFARE Classic 2K
13MIFARE Plus X 2K, SL1
14MIFARE Plus X 4K, SL1
15MIFARE Plus X, SL0
16MIFARE Plus X 2K, SL2
17MIFARE Plus X 4K, SL2
18MIFARE Plus X, SL3
19MIFARE Plus S, SL0
20, 21зарезервировано (RFU)
22MIFARE Plus S, SL3
23NTAG213
24NTAG215
25NTAG216
26MIFARE Ultralight Nano
27EM41xx 125 кГц и совместимые метки
28NTAG413
29NTAG424
30MIFARE Plus X 4K, SL3
31MIFARE Plus S 4K, SL3
32карта ISO 14443-4 / ISO 7816-4
33EMV-совместимая карта
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без обозначенияF13,56 МГцMIFARE Classic и Ultralight; светодиод и зуммер
ODRFID-Mm13,56 МГц и 125 кГцMIFARE Classic, Ultralight, NTAG и Plus; Plus — только в режиме совместимости с Classic; чтение EM-Marine, запись T5577; зуммер
ODRFID-Nn13,56 МГцMIFARE Classic, Ultralight, NTAG и Plus; зуммер
ODRFID-Ee125 кГцчтение EM-Marine, запись T5577; зуммер
ODRFID 2021-M (r3)m13,56 МГц и 125 кГцMIFARE Classic, Ultralight, NTAG и Plus; светодиод и зуммер
ODRFID 2021-Nn13,56 МГцMIFARE Classic, Ultralight, NTAG и Plus; светодиод и зуммер
ODRFID 2021-Ee125 кГцчтение 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.02018-01-22Первая версия
1.12018-04-27Обновлён протокол, добавлен выбор UID или блока
1.22019-04-07Добавлен протокол RS485
1.32019-08-20Описаны возможности прошивки 1.6
1.42019-10-29Добавлено устройство RS485-IO
1.52020-01-27Добавлены устройства диапазона 125 кГц
1.62020-12-08Добавлена прошивка Modbus 2.1
1.72021-03-16Исправлено описание HID-команд для 125 кГц
1.82021-08-26Обновлён протокол для устройств третьего поколения
1.92022-01-11Добавлен раздел Errata и русский перевод
1.102026-08-12Добавлена классификация меток 125 кГц командой AT+LFCLASS
1.112026-08-26Добавлены команды диагностики, чтения и записи LF-меток, одометр и команды автономного сниффера