Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

OSDP-NAK-0x06 IP-Телефония и СКУД

Ошибка OSDP NAK 0x06: Устройство не готово (Device Not Ready / Busy)

Обновлено: 21.08.2026 · Официальная документация ↗

Механизм составных сообщений (Multi-Part Messages) и код NAK 0x06

Когда контроллеру СКУД требуется передать на периферийное устройство объемный массив данных (например, файл обновления прошивки командой osdp_FILETRANSFER (0x7C), биометрический шаблон лица/отпечатка пальца osdp_BIOMATCH, либо крупное графическое изображение для дисплея), данные разбиваются на фрагменты (Multi-part Message fragments). Если периферийное устройство (PD) еще занято записью предыдущего блока во Flash-память, производит криптографическую проверку фрагмента или его внутренний буфер переполнен, оно отвечает кодом NAK 0x06 (Device Not Ready for Multi-Part Message / Busy).

Бизнес-риски

Срыв процесса удаленного обновления считывателей (риск получить «окирпиченное» устройство на двери), невозможность загрузить базу биометрических шаблонов в автономные терминалы, зависание интерфейса контроллера.

Спецификация передачи файлов (OSDP File Transfer)

Параметр фрагментаЗначениеВлияние на состояние Busy
FtTotalSize4 байтаОбщий размер передаваемого файла прошивки.
FtOffset4 байтаТекущее смещение. Несовпадение смещения вызывает NAK 0x06.
FtFragmentSize2 байтаРазмер текущего блока (обычно от 64 до 512 байт).

Регламент устранения ошибки OSDP NAK 0x06

Сценарий 1: Увеличение межфрагментного интервала (Transfer Delay)

Flash-память микроконтроллеров считывателей требует времени на стирание и запись страницы (Page Erase / Program time до 10–50 мс):

  1. В утилите обновления прошивки увеличьте параметр Inter-fragment Delay (Transfer Throttle) с 0 мс до 50–100 мс.
  2. Уменьшите размер фрагмента (Chunk size) с максимального значения (1024 байта) до безопасных 128 или 256 байт.

Сценарий 2: Проверка статуса готовности через команду osdp_MFG (Vendor Status)

# Пример скрипта контроля статуса прошивки устройства перед отправкой фрагмента
import time, serial
# Отправка команды опроса статуса готовности устройства
def check_device_ready(ser, address):
    # Формирование пакета osdp_POLL (0x60)
    poll_cmd = bytes([0x53, address, 0x06, 0x00, 0x04, 0x60, 0x00]) # + CRC
    ser.write(poll_cmd)
    response = ser.read(10)
    # Если считыватель вернул osdp_ACK (0x40), он готов к следующему блоку
    return b'\x40' in response

# Пауза до подтверждения готовности буфера
while not check_device_ready(ser, 1):
    time.sleep(0.05)

Сценарий 3: Проверка доступной памяти и структуры биометрического шаблона

Если NAK 0x06 возникает при отправке шаблонов пользователей: проверьте, не переполнена ли локальная база данных считывателя (например, лимит 5000 шаблонов исчерпан), и соответствует ли формат биометрии спецификации (ANSI-378 / ISO 19794-2).

Типовые ошибки администраторов

  • Попытка одновременной массовой прошивки всех считывателей на общей шине RS-485: Возникает коллапс пропускной способности, устройства не успевают отвечать и массово выдают NAK 0x06 / NAK 0x03.
  • Игнорирование статуса аккумулятора/питания при прошивке: Просадка напряжения ниже 9V в момент записи во Flash вызывает аварийную блокировку контроллера считывателя.
Требуется обновление или миграция парка считывателей СКУД?
Инженеры ITSTM организуют централизованное бесшовное обновление прошивок и биометрических баз данных без простоя точек доступа.
💡 Практика специалистов: При выполнении OSDP File Transfer по длинным линиям RS-485 всегда временно переводите скорость порта на 115200 bps (если это поддерживается), но устанавливайте задержку между пакетами 40 мс. Это ускоряет передачу тяжелых файлов прошивок (до 2 Мб) с 40 минут до 2–3 минут.

Частые вопросы (FAQ)

Является ли NAK 0x06 фатальной ошибкой?

Нет, NAK 0x06 является индикатором состояния ожидания (Flow Control / Busy). Контроллер должен повторить передачу того же самого фрагмента через заданный тайм-аут, не прерывая общую сессию.

Сколько повторных попыток должен делать контроллер при NAK 0x06?

По спецификации SIA OSDP рекомендуется делать от 5 до 10 попыток отправки фрагмента с интервалом не менее 100 мс, прежде чем прерывать операцию с кодом File Transfer Aborted.

Почему считыватель возвращает 0x06 при чтении смартфонов по BLE/NFC?

При обмене со смартфоном по Bluetooth считыватель может быть временно занят криптографическим спариванием с мобильным приложением и не успевает параллельно обработать опрос от ACU.

Как предотвратить зависание считывателя при повреждении файла прошивки?

Современные считыватели имеют структуру памяти Dual-Bank Flash. Пока новый образ не проверен по CRC-32/SHA-256, устройство продолжает работать на старой рабочей прошивке.

Полезные материалы
Рекомендуем