# LCD - LCD дисплей для устройств

> Настройка LCD-дисплеев на аппаратных устройствах VyOS через LCDPROC - отображение системных метрик, статуса интерфейсов и информации о маршрутизации

Source: https://opennix.org/docs/vyos/system/vyos-lcd/


## Обзор

VyOS поддерживает конфигурацию и управление LCD дисплеями для аппаратных устройств, таких как 19-дюймовые серверы в стойках или специализированные сетевые устройства. LCD дисплеи позволяют отображать информацию о состоянии системы в реальном времени непосредственно на физическом устройстве без необходимости подключения монитора или удаленного доступа.

### Основные возможности

- **Отображение системной информации**: Загрузка CPU, использование памяти, сетевые интерфейсы
- **Статус сети**: IP-адреса, статистика интерфейсов, информация о соединениях
- **Пользовательские сообщения**: Настраиваемый текст для идентификации устройства
- **Поддержка LCDPROC**: Использование мощного демона LCDPROC для управления дисплеями
- **Множество типов подключения**: USB, последовательный порт (serial), параллельный порт

### Важные замечания

**Только для физического оборудования**: Функциональность LCD дисплея предназначена исключительно для bare-metal установок VyOS на физическом оборудовании. Данная функция не применима для виртуальных машин или облачных развертываний.

**Ограниченная поддержка моделей**: VyOS поддерживает ограниченный набор LCD дисплеев из коробки. Если ваша модель не поддерживается, создайте запрос на добавление функциональности через систему отслеживания проблем VyOS.

## Архитектура LCDPROC

VyOS использует LCDPROC - клиент-серверную архитектуру для управления LCD дисплеями:

- **LCDd (демон)**: Серверный процесс, который напрямую взаимодействует с аппаратным дисплеем
- **Клиенты**: Программы, которые подключаются к LCDd для отображения информации
- **Драйверы**: Специфичные для оборудования модули для различных моделей дисплеев

### Преимущества LCDPROC

1. **Модульность**: Разделение логики отображения от аппаратного управления
2. **Множественные клиенты**: Несколько программ могут использовать один дисплей
3. **Поддержка широкого спектра оборудования**: Обширная база драйверов
4. **Сетевая прозрачность**: Возможность удаленного управления дисплеем

## Поддерживаемые модели дисплеев

### CrystalFontz

VyOS официально поддерживает следующие модели CrystalFontz:

#### CFA-533

```
Модель: cfa533
Тип: LCD текстовый дисплей
Размер: 16x2 символа
Интерфейс: USB
Особенности:
  - 4 направленные кнопки навигации
  - Подсветка с регулируемой яркостью
  - Контрастность настраиваема программно
```

**Конфигурация:**

```bash
set system lcd device ttyUSB0
set system lcd model cfa533
commit
save
```

#### CFA-631

```
Модель: cfa631
Тип: LCD текстовый дисплей
Размер: 20x2 символа
Интерфейс: USB
Особенности:
  - Увеличенный размер дисплея
  - 4 направленные кнопки + 2 дополнительные
  - RGB подсветка
  - Встроенный температурный датчик
```

**Конфигурация:**

```bash
set system lcd device ttyUSB0
set system lcd model cfa631
commit
save
```

#### CFA-633

```
Модель: cfa633
Тип: LCD текстовый дисплей
Размер: 16x2 символа
Интерфейс: USB / Serial
Особенности:
  - Гибкое подключение (USB или RS-232)
  - 4 направленные кнопки
  - Подсветка с регулировкой
  - Совместимость с 5.25" отсеком
```

**Конфигурация (USB):**

```bash
set system lcd device ttyUSB0
set system lcd model cfa633
commit
save
```

**Конфигурация (Serial):**

```bash
set system lcd device ttyS0
set system lcd model cfa633
commit
save
```

#### CFA-635

```
Модель: cfa635
Тип: LCD текстовый дисплей
Размер: 20x4 символа
Интерфейс: USB / Serial
Особенности:
  - Большой дисплей 20x4
  - 6 направленных кнопок
  - RGB подсветка
  - До 4 вентиляторов с управлением
  - Температурные датчики (до 32)
  - DOW считыватель
```

**Конфигурация:**

```bash
set system lcd device ttyUSB0
set system lcd model cfa635
commit
save
```

### Matrix Orbital

**Расширенная поддержка**: Хотя официальная документация VyOS упоминает только модели CrystalFontz, LCDPROC поддерживает широкий спектр дисплеев Matrix Orbital. Для использования этих моделей может потребоваться ручная конфигурация LCDPROC или запрос на добавление поддержки.

Популярные модели Matrix Orbital:

- **GLK12232-25-USB**: Графический дисплей 122x32
- **GLK19264-7T-1U**: Графический дисплей 192x64
- **LK162-12**: Текстовый дисплей 16x2
- **LK204-25**: Текстовый дисплей 20x4

### Другие производители

LCDPROC поддерживает дисплеи от:

- **Hitachi HD44780**: Базовый LCD контроллер (множество производителей)
- **Noritake**: VFD дисплеи
- **SureElec**: USB LCD дисплеи
- **Tyan**: Встроенные дисплеи серверов
- **Shuttle**: Дисплеи для ПК-корпусов

## Конфигурация

### Базовая настройка

Минимальная конфигурация требует указания устройства и модели дисплея:

```bash
configure
set system lcd device <device_path>
set system lcd model <model_name>
commit
save
```

### Определение устройства

#### Автоматическое определение USB устройств

VyOS поддерживает tab-completion для доступных последовательных интерфейсов:

```bash
configure
set system lcd device <TAB>
```

Вывод:

```
Possible completions:
  ttyS0        Serial port 0
  ttyS1        Serial port 1
  ttyUSB0      USB serial device 0
  ttyUSB1      USB serial device 1
```

#### Определение USB LCD вручную

Для определения подключенного USB LCD дисплея:

```bash
lsusb
```

Пример вывода:

```
Bus 001 Device 003: ID 0403:fc0d Future Technology Devices International, Ltd
```

Проверка создания устройства:

```bash
ls -la /dev/ttyUSB*
```

Вывод:

```
crw-rw---- 1 root dialout 188, 0 Oct 15 10:23 /dev/ttyUSB0
```

#### Последовательные порты (Serial)

Стандартные последовательные порты:

- **ttyS0**: COM1 (IRQ 4, IO 0x3F8)
- **ttyS1**: COM2 (IRQ 3, IO 0x2F8)
- **ttyS2**: COM3 (IRQ 4, IO 0x3E8)
- **ttyS3**: COM4 (IRQ 3, IO 0x2E8)

Проверка доступности порта:

```bash
dmesg | grep ttyS
```

### Выбор модели дисплея

Список поддерживаемых моделей можно получить через tab-completion:

```bash
configure
set system lcd model <TAB>
```

Вывод:

```
Possible completions:
  cfa533       Crystalfontz CFA-533
  cfa631       Crystalfontz CFA-631
  cfa633       Crystalfontz CFA-633
  cfa635       Crystalfontz CFA-635
```

### Пример полной конфигурации

#### Пример 1: CFA-633 через USB

```bash
configure

# Настройка LCD дисплея
set system lcd device ttyUSB0
set system lcd model cfa633

# Применение конфигурации
commit

# Сохранение конфигурации
save

exit
```

#### Пример 2: CFA-635 через Serial

```bash
configure

# Настройка LCD дисплея
set system lcd device ttyS0
set system lcd model cfa635

# Применение конфигурации
commit

# Сохранение конфигурации
save

exit
```

#### Пример 3: CFA-533 для стоечного сервера

```bash
configure

# LCD дисплей для идентификации в стойке
set system lcd device ttyUSB0
set system lcd model cfa533

# Настройка hostname для отображения
set system host-name rack-router-01

# Применение и сохранение
commit
save

exit
```

## Отображаемая информация

### Системные экраны

LCDPROC автоматически циклически отображает следующую информацию:

#### Экран 1: Системная информация

```
VyOS 1.5.0-rc
Uptime: 5d 3h 42m
```

Отображает:

- Версию VyOS
- Время работы системы (uptime)

#### Экран 2: Процессор и память

```
CPU: 45% [||||    ]
MEM: 2.3G/8.0G 28%
```

Отображает:

- Загрузку процессора в процентах и графически
- Использование памяти (использовано/всего)

#### Экран 3: Сетевые интерфейсы

```
eth0: 192.168.1.1
UP 1000Mb/s Full
```

Отображает:

- IP-адрес основного интерфейса
- Статус линка и скорость соединения

#### Экран 4: Статистика сети

```
RX: 1.2TB 45Mb/s
TX: 834GB 12Mb/s
```

Отображает:

- Полученные данные (всего и текущая скорость)
- Отправленные данные (всего и текущая скорость)

#### Экран 5: Hostname

```
rack-router-01
Ready
```

Отображает:

- Имя хоста системы
- Статус готовности

### Время обновления

Информация на дисплее обновляется:

- **Системная информация**: Каждые 5 секунд
- **CPU/Memory**: Каждую секунду
- **Сетевая статистика**: Каждые 2 секунды
- **Переключение экранов**: Каждые 4-6 секунд

## Проверка конфигурации

### Просмотр активной конфигурации

```bash
show configuration commands | grep lcd
```

Вывод:

```
set system lcd device 'ttyUSB0'
set system lcd model 'cfa633'
```

### Проверка статуса LCDPROC

Проверка запущенного процесса LCDd:

```bash
ps aux | grep LCDd
```

Вывод:

```
root      1234  0.1  0.2  12345  6789 ?        Ss   10:23   0:01 /usr/sbin/LCDd
```

### Проверка логов

Просмотр логов LCDPROC для диагностики:

```bash
journalctl -u lcdproc.service
```

Или:

```bash
cat /var/log/syslog | grep -i lcdproc
```

### Тестирование подключения

Проверка доступности устройства:

```bash
ls -la /dev/ttyUSB0
```

Проверка прав доступа:

```bash
stat /dev/ttyUSB0
```

## Устранение неполадок

### Проблема: Дисплей не инициализируется

**Симптомы**: Дисплей остается пустым после конфигурации.

**Решение 1**: Проверить правильность устройства

```bash
# Список USB устройств
lsusb

# Список последовательных устройств
ls -la /dev/ttyUSB* /dev/ttyS*

# Проверить, что устройство создано
dmesg | tail -50
```

**Решение 2**: Проверить права доступа

```bash
# Добавить пользователя в группу dialout
sudo usermod -a -G dialout root

# Проверить права на устройство
ls -la /dev/ttyUSB0

# Должно быть: crw-rw---- 1 root dialout
```

**Решение 3**: Перезапустить службу LCDPROC

```bash
sudo systemctl restart lcdproc
sudo systemctl status lcdproc
```

### Проблема: Неправильная модель дисплея

**Симптомы**: Дисплей показывает искаженные символы или мерцает.

**Решение**: Убедиться в правильности модели

```bash
configure

# Удалить старую конфигурацию
delete system lcd model

# Установить правильную модель
set system lcd model <correct_model>

commit
save
```

### Проблема: USB устройство отключается

**Симптомы**: Дисплей периодически пропадает.

**Решение 1**: Отключить USB autosuspend

```bash
# Найти USB устройство
lsusb -t

# Отключить autosuspend для конкретного устройства
echo -1 > /sys/bus/usb/devices/1-1/power/autosuspend_delay_ms
```

**Решение 2**: Проверить питание USB

```bash
# Проверить ограничения по питанию
lsusb -v | grep -i maxpower

# Убедиться, что USB порт обеспечивает достаточное питание
```

### Проблема: Конфликт последовательного порта

**Симптомы**: Ошибка "Device is busy" при конфигурации.

**Решение**: Проверить, не используется ли порт другим процессом

```bash
# Проверить процессы, использующие устройство
lsof /dev/ttyUSB0

# Или через fuser
fuser /dev/ttyUSB0

# Остановить конфликтующий процесс
kill <PID>
```

### Проблема: Дисплей показывает старую информацию

**Симптомы**: Информация на дисплее не обновляется.

**Решение**: Перезапустить LCDPROC с очисткой

```bash
# Остановить службу
sudo systemctl stop lcdproc

# Очистить возможные блокировки
sudo rm -f /var/run/LCDd.pid

# Запустить снова
sudo systemctl start lcdproc

# Проверить статус
sudo systemctl status lcdproc
```

### Проблема: Неподдерживаемая модель

**Симптомы**: Нужная модель не появляется в tab-completion.

**Решение**: Запросить добавление поддержки

1. Проверить поддержку в LCDPROC напрямую
2. Создать feature request в VyOS Phabricator:
   - URL: https://vyos.dev/
   - Указать модель дисплея
   - Указать производителя и спецификации
   - Приложить документацию на дисплей

**Временное решение**: Ручная конфигурация LCDPROC

```bash
# Редактировать конфигурационный файл LCDPROC напрямую
sudo vi /etc/LCDd.conf

# Добавить секцию для вашего драйвера
[your_driver]
Device=/dev/ttyUSB0
Size=20x4

# Перезапустить службу
sudo systemctl restart lcdproc
```

## Расширенная конфигурация

### Ручная настройка LCDPROC

Для продвинутых настроек можно редактировать конфигурационный файл LCDPROC напрямую:

```bash
sudo vi /etc/LCDd.conf
```

Пример расширенной конфигурации для CFA-635:

```ini
[server]
Driver=CFontz635
Bind=127.0.0.1
Port=13666
ReportLevel=3
ReportToSyslog=yes

[CFontz635]
Device=/dev/ttyUSB0
Size=20x4
Contrast=560
Brightness=1000
OffBrightness=0
Speed=115200
NewFirmware=yes
Reboot=no
```

### Настройка контрастности и яркости

Для моделей с программной настройкой:

```ini
[CFontz633]
Device=/dev/ttyUSB0
Size=16x2
# Контрастность (0-1000)
Contrast=500
# Яркость (0-1000)
Brightness=800
# Яркость при неактивности (0-1000)
OffBrightness=100
```

### Настройка скорости порта

Для последовательных подключений:

```ini
[CFontz633]
Device=/dev/ttyS0
# Скорость передачи (baud rate)
Speed=19200
# Возможные значения: 1200, 2400, 9600, 19200, 38400, 57600, 115200
```

### Настройка кнопок

Для моделей с кнопками:

```ini
[menu]
# Включить меню с кнопками
MenuKey=Enter
# Назначение кнопок
UpKey=Up
DownKey=Down
LeftKey=Left
RightKey=Right
```

## Лучшие практики

### 1. Выбор устройства

- **USB предпочтительнее**: USB соединения более универсальны и просты в настройке
- **Serial для критичных систем**: Последовательные порты более надежны в суровых условиях
- **Избегайте длинных USB кабелей**: Используйте кабели не длиннее 3 метров

### 2. Идентификация в дата-центре

Используйте осмысленные имена хостов для облегчения идентификации:

```bash
set system host-name dc1-edge-router-01
set system domain-name example.com
```

Дисплей будет показывать:

```
dc1-edge-router-01
.example.com
```

### 3. Документирование конфигурации

Добавьте описание системы:

```bash
set system description "Edge Router - Rack 15, Position 23"
```

### 4. Мониторинг состояния дисплея

Создайте скрипт для периодической проверки:

```bash
#!/bin/bash
# /config/scripts/check_lcd.sh

if ! pgrep -x "LCDd" > /dev/null; then
    logger "LCD daemon not running, restarting..."
    systemctl restart lcdproc
fi
```

Добавьте в планировщик:

```bash
set system task-scheduler task check-lcd interval 5m
set system task-scheduler task check-lcd executable path /config/scripts/check_lcd.sh
```

### 5. Резервное копирование конфигурации

LCD конфигурация сохраняется в `/config/config.boot`:

```bash
# Резервная копия
sudo cp /config/config.boot /config/config.boot.backup

# Или через VyOS команду
save /config/config.boot.backup
```

### 6. Питание USB устройств

Для предотвращения проблем с питанием:

- Используйте порты USB 3.0 (больше мощности)
- Рассмотрите использование USB хаба с питанием
- Проверяйте потребление: `lsusb -v | grep MaxPower`

### 7. Совместимость с серверным оборудованием

При установке в серверное шасси:

- Проверьте размеры дисплея (5.25" или 3.5" отсек)
- Убедитесь в совместимости крепежа
- Проверьте доступность USB/Serial портов изнутри шасси

### 8. Тестирование при обновлении

После обновления VyOS:

```bash
# Проверить конфигурацию LCD
show configuration commands | grep lcd

# Проверить статус службы
systemctl status lcdproc

# Проверить логи
journalctl -u lcdproc.service -n 50
```

## Интеграция с мониторингом

### SNMP мониторинг дисплея

Можно мониторить статус LCD через SNMP:

```bash
configure

# Включить SNMP
set service snmp community public authorization ro
set service snmp community public network 192.168.1.0/24

commit
save
```

Проверка с удаленного хоста:

```bash
snmpwalk -v2c -c public <router-ip> .1.3.6.1.4.1.2021.11
```

### Интеграция с системными событиями

Можно расширить функциональность для отображения критических событий на дисплее через пользовательские скрипты и LCDPROC клиенты.

## Примеры использования

### Пример 1: Пограничный маршрутизатор в стойке

```bash
configure

# Основная конфигурация системы
set system host-name border-router-dc1-r15
set system domain-name corp.example.com
set system description "Border Router - DC1, Rack 15"

# LCD дисплей
set system lcd device ttyUSB0
set system lcd model cfa635

# Время и NTP
set system time-zone UTC
set system ntp server 0.pool.ntp.org
set system ntp server 1.pool.ntp.org

commit
save
```

### Пример 2: Firewall с последовательным дисплеем

```bash
configure

# Системная конфигурация
set system host-name fw-dmz-01
set system description "DMZ Firewall"

# LCD через последовательный порт
set system lcd device ttyS0
set system lcd model cfa633

# Конфигурация интерфейсов для отображения
set interfaces ethernet eth0 description "WAN"
set interfaces ethernet eth1 description "DMZ"
set interfaces ethernet eth2 description "LAN"

commit
save
```

### Пример 3: VPN концентратор

```bash
configure

# Системная конфигурация
set system host-name vpn-concentrator-01
set system description "VPN Gateway - Branch Office"

# LCD дисплей
set system lcd device ttyUSB0
set system lcd model cfa631

# VPN конфигурация будет видна на дисплее
set vpn ipsec site-to-site peer 203.0.113.1 description "HQ"

commit
save
```

## Сравнение моделей

| Модель | Размер | Интерфейс | Кнопки | Подсветка | Применение |
|--------|--------|-----------|--------|-----------|------------|
| CFA-533 | 16x2 | USB | 4 | Одноцветная | Базовое, компактное |
| CFA-631 | 20x2 | USB | 6 | RGB | Расширенное, цветное |
| CFA-633 | 16x2 | USB/Serial | 4 | Одноцветная | Универсальное |
| CFA-635 | 20x4 | USB/Serial | 6 | RGB | Профессиональное |

### Рекомендации по выбору

**CFA-533**:

- Бюджетный вариант
- Базовый функционал
- Компактные устройства

**CFA-631**:

- Средний сегмент
- Больше информации (20 символов)
- RGB подсветка для цветовой индикации

**CFA-633**:

- Универсальный выбор
- Гибкость подключения
- Совместимость с 5.25" отсеком

**CFA-635**:

- Профессиональный уровень
- Максимум информации (20x4)
- Дополнительный функционал (вентиляторы, датчики)
- Серверное применение

## Заключение

LCD дисплеи в VyOS предоставляют удобный способ мониторинга состояния системы непосредственно на физическом устройстве. Это особенно полезно для:

- **Дата-центров**: Быстрая идентификация устройств в стойке
- **Удаленных локаций**: Локальная диагностика без удаленного доступа
- **Критичных систем**: Мониторинг без зависимости от сети
- **Промышленных применений**: Надежное отображение в жестких условиях

### Ключевые моменты

1. **Только bare-metal**: Функция не работает в виртуальных средах
2. **Ограниченная поддержка**: Проверьте совместимость вашей модели
3. **Простая конфигурация**: Всего две команды для базовой настройки
4. **Автоматическое управление**: LCDPROC автоматически циклически отображает информацию
5. **Расширяемость**: Возможность ручной настройки LCDPROC для продвинутых сценариев

### Дальнейшие шаги

- Проверьте совместимость вашего LCD дисплея
- Определите тип подключения (USB или Serial)
- Примените базовую конфигурацию
- Проверьте отображение информации
- При необходимости настройте расширенные параметры

## Дополнительные ресурсы

- **VyOS Documentation**: https://docs.vyos.io/en/latest/configuration/system/lcd.html
- **LCDPROC Project**: http://lcdproc.org/
- **CrystalFontz Support**: https://www.crystalfontz.com/support/
- **VyOS Community**: https://forum.vyos.io/
- **VyOS Bug Tracker**: https://vyos.dev/

---

**Примечание**: Данная документация актуальна для VyOS 1.4 (Sagitta) и VyOS 1.5 (Circinus). Функциональность LCD дисплеев является стабильной и существенно не меняется между версиями.

