﻿# КМАЗС-ОФИС на Linux: подключение считывателя IronLogic Z-2 USB (упрощенная инструкция)

Эта инструкция написана для пользователей с минимальным опытом Linux.
Все команды выполняйте по очереди и проверяйте результат после каждого шага.

## 1) Что важно знать заранее

1. Официально для Z-2 USB обычно используется USB-UART на базе FTDI (чаще всего VID:PID 0403:1234).
2. На практике у некоторых ридеров и совместимых устройств USB-чип может отличаться.
3. Если чип другой, логика подключения та же: Linux должен назначить драйвер и создать порт /dev/ttyUSB* или /dev/ttyACM*.

Проверенные признаки:
- в lsusb виден ридер;
- в usb-devices у ридера указан Driver=... (не Driver=(none));
- в dmesg после подключения есть строка про ttyUSB0/ttyUSB1/ttyACM0 и т.д.

## 2) Подключите ридер и проверьте, что Linux его видит

1. Подключите ридер к USB-порту.
2. Выполните:
lsusb
3. Найдите строку с IronLogic.

Для классического Z-2 USB часто видно:
ID 0403:1234 Future Technology Devices International, Ltd IronLogic RFID Adapter [Z-2 USB]

Сохраните пару VID:PID (например, 0403:1234) - она может понадобиться дальше.

## 3) Проверьте, назначен ли драйвер

1. Выполните:
usb-devices
2. Найдите блок вашего ридера (удобно ориентироваться по Vendor/ProdID, Manufacturer и Product).
3. В строке, начинающейся с I:, проверьте параметр Driver=.

Если видите Driver=ftdi_sio (или другой драйвер, но не (none)), переходите к шагу 5.
Если видите Driver=(none), переходите к шагу 4.

## 4) Если Driver=(none) (вариант для FTDI 0403:1234)

Ниже - самый частый случай для Z-2 USB (FTDI).

1. Отключите ридер.
2. Загрузите модуль драйвера:
sudo modprobe ftdi_sio
3. Зарегистрируйте устройство в драйвере:
echo 0403 1234 | sudo tee /sys/bus/usb-serial/drivers/ftdi_sio/new_id > /dev/null
4. Подключите ридер снова.
5. Проверьте последние сообщения ядра:
dmesg | tail -n 30

Ожидаемый результат: появится строка вида
... attached to ttyUSB0 (номер может быть другим).

Если у вас не 0403:1234, не используйте эту команду с чужими значениями "наугад" - сначала уточните чип/драйвер по lsusb, usb-devices и dmesg.

## 5) Определите имя COM-порта (последовательного порта)

После подключения выполните:
ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null

Обычно будет что-то вроде /dev/ttyUSB0.
Запомните это имя (дальше в примерах используется /dev/ttyUSB0).

## 6) Быстрый тест чтения карты

1. Настройте порт на скорость 9600:
stty 9600 -F /dev/ttyUSB0 raw -echo
2. Откройте поток данных с ридера:
cat /dev/ttyUSB0
3. Приложите карту/брелок к считывателю.

Если все работает, в терминале появится строка похожая на:
Mifare[A06AD64E] 1K (0004,08) 214,27296

Для выхода нажмите Ctrl+C.

Если есть ошибка "Permission denied", проверьте:
- пользователь добавлен в группу dialout;
- вы перелогинились после добавления в группу.

## 7) Настройка КМАЗС-ОФИС через стабильный путь /dev/serial/by-id

Использовать "голый" ttyUSB0 в настройках программы не рекомендуется - номер может меняться после перезагрузки.

### 7.1 Узнайте постоянное имя устройства

Выполните:
ls /dev/serial/by-id/

Пример:
usb-ILogic_USB_IL_Mifare_Adapter_XXXXX-if00-port0

### 7.2 Создайте (или отредактируйте) файл /opt/kmazs/serial-ports.txt

Пример через редактор:
kate /opt/kmazs/serial-ports.txt
или
pluma /opt/kmazs/serial-ports.txt

Добавьте строку:
IronLogic=usb-ILogic_USB_IL_Mifare_Adapter_XXXXX-if00-port0

Комментарий можно добавить строкой выше:
# Карт-ридер IronLogic Z-2 USB

Важно: для записи в /opt/kmazs/ у пользователя должны быть права (группа kmazs-admins, см. setup-user-groups.txt).

### 7.3 Альтернатива без ручного редактирования

Если устройство подключено, можно дописать строку командой:
echo "IronLogic=$(ls /dev/serial/by-id/ | grep -i ILogic)" | sudo tee -a /opt/kmazs/serial-ports.txt

## 8) Настройка в программе КМАЗС-ОФИС

1. Откройте: Настройки -> Настройки программы -> Ключи / карты.
2. Включите флаг: Ридер бесконтактных карт подключен.
3. В поле Тип ридера выберите IronLogic.
4. В поле COM-порт выберите IronLogic (имя из serial-ports.txt).
5. Нажмите ОК и перезапустите программу.

## 9) Автозагрузка настройки FTDI при старте Linux (только если это действительно нужно)

Делайте этот раздел только если после перезагрузки снова появляется Driver=(none) для 0403:1234.

### 9.1 Создайте скрипт /etc/load-iron-logic.sh

Сначала создайте файл в домашнем каталоге текущего пользователя (это проще и безопаснее):
nano ~/load-iron-logic.sh

Вставьте в файл следующее содержимое (обычно в терминале: Ctrl+Shift+V, либо Shift+Insert, либо правая кнопка мыши -> Вставить):

#! /bin/bash
modprobe ftdi_sio
echo 0403 1234 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id

Сохраните файл и закройте редактор (в nano: Ctrl+O, Enter, затем Ctrl+X).

Команды установки:
sudo cp ~/load-iron-logic.sh /etc/
sudo chmod +x /etc/load-iron-logic.sh

### 9.2 Создайте службу /etc/systemd/system/load-iron-logic.service

Сначала создайте файл службы сразу в системном каталоге:
sudo nano /etc/systemd/system/load-iron-logic.service

Вставьте в файл следующее содержимое (обычно в терминале: Ctrl+Shift+V, либо Shift+Insert, либо правая кнопка мыши -> Вставить):

[Unit]
Description=Load FTDI driver for IronLogic Z-2 USB
[Service]
Type=oneshot
ExecStart=/etc/load-iron-logic.sh
[Install]
WantedBy=multi-user.target

Сохраните файл и закройте редактор (в nano: Ctrl+O, Enter, затем Ctrl+X).

Команды включения:
sudo systemctl daemon-reload
sudo systemctl enable load-iron-logic
sudo systemctl start load-iron-logic
systemctl status load-iron-logic

Что означает каждая команда:
1. sudo systemctl daemon-reload
   - systemd перечитывает файлы служб после добавления нового .service.
2. sudo systemctl enable load-iron-logic
   - включает автозапуск службы при старте Linux.
3. sudo systemctl start load-iron-logic
   - запускает службу сразу, без перезагрузки.
4. systemctl status load-iron-logic
   - показывает состояние службы.

Как понять результат проверки:
- если видите Active: active (exited), служба отработала успешно;
- если видите failed, посмотрите текст ошибки в этом же выводе и проверьте:
  - существует ли файл /etc/load-iron-logic.sh;
  - выдано ли ему право на запуск (chmod +x);
  - нет ли опечаток в файле /etc/systemd/system/load-iron-logic.service.

## 10) Если у ридера не FTDI-чип

По открытым источникам для Z-2 USB базовый вариант - FTDI (0403:1234), но у других моделей/совместимых устройств могут быть иные USB-мосты.

Что делать безопасно:
1. Всегда сначала смотрите lsusb, usb-devices, dmesg.
2. Если Linux уже назначил драйвер (например, не ftdi_sio, а другой), обычно дополнительная ручная регистрация не нужна.
3. Цель одна: получить рабочий порт /dev/ttyUSB* или /dev/ttyACM* и затем настроить /dev/serial/by-id/ для КМАЗС-ОФИС.
4. Если драйвер не назначается (Driver=(none)), зафиксируйте вывод трех команд и передайте его специалисту для точного подбора драйвера.

Минимальный набор диагностики для обращения в поддержку:
- lsusb
- usb-devices
- dmesg | tail -n 80