diff --git a/family/how-to/htpc-system.md b/family/how-to/htpc-system.md index 53bba455..2f9357ca 100644 --- a/family/how-to/htpc-system.md +++ b/family/how-to/htpc-system.md @@ -98,37 +98,59 @@ speaker-test -t sine -f 440 -c 2 ## Автосон / Sleep management -### Текущее состояние (2026-05-15) -Sleep работает штатно — HTPC засыпает по таймеру KDE PowerDevil. +### Текущее состояние (2026-05-23) + +Sleep управляется `htpc-sleep-guard` — Python-скрипт + systemd-сервис. +**PowerDevil не используется для сна** — HTPC запущен в gamescope/Steam session, где PowerDevil не детектирует idle. Guard сам вызывает `systemctl suspend`. + +### Сервисы + +| Сервис | Статус | Роль | +|---|---|---| +| `htpc-sleep-guard` | **active/enabled** | актуальный guard | +| `transmission-sleep-guard` | disabled | старый, отключён (дублировал и держал ингибитор постоянно) | + +### Логика guard + +**Дневное окно (11:00–23:00):** +- Торренты активны → держит systemd inhibitor (HTPC не спит) +- Торренты не активны → inhibitor не держится, machine idle + +**Ночное окно (23:00–11:00):** +- Guard отпускает ингибитор и вызывает `systemctl suspend` +- Если торренты были активны → ставит RTC wake-alarm на 11:00 (`rtcwake`) +- Если торренты не активны → будильник не ставится + +### Скрипт и конфиг + +Сервис: `/etc/systemd/system/htpc-sleep-guard.service` +Скрипт: путь в `ExecStart` сервиса (на HTPC, `~bazzite/`) + +Патчи применённые 2026-05-23: +- **409 retry**: при HTTP 409 от Transmission обновляет `X-Transmission-Session-Id` и повторяет запрос +- **suspend trigger**: при переходе из "hold → release" вызывает `systemctl suspend` (без sudo, через polkit/logind) ### Разбудить/усыпить вручную + ```bash -# Усыпить -echo bazzite | sudo -S systemctl suspend +# Усыпить немедленно +systemctl suspend -# Заблокировать автосон (если нужно) -sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target +# Пробудить через N секунд (RTC wake) +sudo rtcwake -m no -s 3600 -# Снять маску (восстановить автосон) -sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target +# Проверить ингибиторы +systemd-inhibit --list + +# Статус guard +systemctl status htpc-sleep-guard +journalctl -u htpc-sleep-guard -n 50 --no-pager ``` -### Настройки KDE PowerDevil -`~/.config/powermanagementprofilesrc`: -```ini -[AC][SuspendSession] -idleTime=1800000 # 30 минут (в мс) -suspendType=1 # suspend -``` +## SMB / Сетевые ресурсы -### ⚠️ Проблема: реальный таймаут = 15 мин (не 30) -По журналу: HTPC засыпает ровно через **15 минут** после пробуждения, хотя KDE-конфиг говорит 30. -Источник suspend — `systemd-logind` по команде от KDE PowerDevil. -Источник 15-минутного таймаута **не найден** (требует дальнейшего расследования): -- `/etc/xdg/powermanagementprofilesrc` — нет `[AC][SuspendSession]` (не источник) -- HHD, Steam BPM sleep timer — не найдено -- PowerDevil запущен с 8 мая, конфиг изменён 14 мая — возможно читает кэш при старте сессии -- Кандидаты для проверки: старый `powerdevilrc` (мигрирован), Steam Gaming Mode sleep timer через dbus +`smb://htpc` — упоминается пользователем, но конфигурация **не задокументирована**. +Требует уточнения: что раздаётся, как настроено (Samba? systemd automount?). ## OSTree / Обновления - `/usr/local/bin` слетает при `rpm-ostree` upgrade (новый `/usr` overlay)