diff --git a/family/how-to/router-bishkek-asus.md b/family/how-to/router-bishkek-asus.md index ee2b1f19..3830b155 100644 --- a/family/how-to/router-bishkek-asus.md +++ b/family/how-to/router-bishkek-asus.md @@ -64,6 +64,15 @@ address=/tv/192.168.1.75 ## Полезные команды ```bash +# Скорость/состояние портов коммутатора (Broadcom, robocfg) +ssh admin@192.168.1.1 'robocfg show' +# → Port 0: 1000FD (CPU/аплинк), Port 3/4: LAN, Port 5: WAN +# Формат: , DOWN = порт не подключён, mac = устройство на порту + +# Версия бинарника / модель +ssh admin@192.168.1.1 'nvram get productid' # RT-AC68U +# ⚠️ /sys/class/net/eth0/speed даёт 10Mb — это внутренний CPU-порт, НЕ показатель + # Проверить DNS резолвинг локальных имён dig @192.168.1.1 htpc +short dig @192.168.1.1 tv +short @@ -78,6 +87,39 @@ ssh -i ~/.ssh/id_rsa admin@192.168.1.1 "service restart_dnsmasq" ssh -i ~/.ssh/id_rsa admin@192.168.1.1 "nvram show | grep -E '^(dhcp_dns|wan_dns|wan0_dns)'" ``` +## Диагностика скорости линка портов (2026-09-20) + +**Метод: сопоставить MAC на порту (`robocfg show`) с устройством из `arp -a`.** + +Фактическое состояние на 2026-09-20: + +| Порт | Скорость | MAC | Устройство | +|---|---|---|---| +| 0 | 1000FD | `6c:44:2a:9d:76:c5` | CPU / аплинк (норма) | +| 3 | **100FD** ⚠️ | `ac:5a:f0:25:11:c6` | **LG TV** (провод) | +| 4 | **1000FD** ✅ | `2c:cf:67:64:03:f3` | **Kraken** (LAN-порт) | +| 5 | 1000FD | `f0:79:59:77:9b:70` | WAN | + +**Kraken = гигабит, ТВ = сотка.** Оба плеча НЕ base1000. + +### ✅ Кабельный тест (решающий, 2026-09-20) + +Чтобы отличить «кабель» от «потолок устройства»: **подключить к тому же кабелю другое устройство с известным гигабитным портом** и посмотреть линк с обеих сторон. + +```bash +# на роутере: сменился ли MAC на порту и осталась ли сотка +ssh admin@192.168.1.1 'robocfg show | grep "Port 3"' +# на Mac (USB-Ethernet Realtek): на какой скорости слинковался +ifconfig | awk '/^[a-z]/{ifc=$1} /100baseTX|1000baseT/{print ifc, $NF}' +``` + +**Результат:** Mac (USB-Ethernet Realtek, MAC `00:e0:4c:68:04:88`, интерфейс `en8`) на этом кабеле слинковался на **`100baseTX`**; роутер порт 3 дал `100FD`. +→ **Виноват кабель, а не ТВ.** Если бы ТВ был ограничен, Mac дал бы гигабит. + +**Фикс:** заменить кабель на **CAT5e / CAT6** (проверить все 8 жил — обрыв одной пары роняет линк на 100). Если после замены кабеля сотка остаётся — смотреть порт роутера или порт ТВ. + +> 📌 Тот же линк 100 Mbit/s у ТВ был отмечен ещё 2026-09-04 (см. таблицу устройств). Тест 20.09 подтвердил причину — **кабель**. + ## Кастомный dnsmasq Файл: `/jffs/configs/dnsmasq.conf.add` diff --git a/personal/tech/jellyfin-db-schema-mismatch.md b/personal/tech/jellyfin-db-schema-mismatch.md index 97ea24da..45ae1b58 100644 --- a/personal/tech/jellyfin-db-schema-mismatch.md +++ b/personal/tech/jellyfin-db-schema-mismatch.md @@ -1,7 +1,7 @@ # Jellyfin: сервер старше БД — `no such column: p.Permission_Permissions_Guid` > **Обнаружено:** 2026-09-20 на Kraken (RPi5/OMV, arm64, Docker). -> **Статус:** 🔴 **НЕ ЗАФИКСИРОВАНО** — диагноз подтверждён, фикс согласован, ждёт апрува Alex. +> **Статус:** ✅ **ЗАФИКСИРОВАНО 2026-09-20** — контейнер пересоздан на образе 12.1.0.0, jellyfin `healthy`, Alex подтвердил «Заработало». См. раздел «Результат» ниже. > **Симптом:** `jellyfin` не подключается (`http://kraken:8096` → **503**), контейнер `Up` но `unhealthy`, health-check бесконечно пишет `Server is could not complete startup. Check logs.` > **Связанные:** [[personal/tech/docker-data-root-mount-race]], [[family/how-to/kraken-access]], [[family/plans/kraken-backup-to-truenas]] @@ -71,7 +71,7 @@ scp kraken:/tmp/jf.db /Users/admin/kraken-recovery/jellyfin-db/jellyfin.db **Питфолл тега `latest`:** `docker inspect` показывает digest, откуда образ БЫЛ СКАЧАН, а не текущий `latest`. Локальный «latest» может быть сильно старше, чем `latest` в реестре. Проверять версию **внутри образа**: `docker run --rm --entrypoint sh jellyfin/jellyfin:latest -c '/jellyfin/jellyfin --version'`. -## Фикс (согласован с Alex, ЖДЁТ ВЫПОЛНЕНИЯ) +## Фикс (ВЫПОЛНЕН 2026-09-20) **Миграцию вручную запустить НЕЛЬЗЯ и не нужно** — миграции уже применены (до 12.1.0.0), запускать нечего; даунгрейд схемы EF Core не поддерживает. Проблема не в БД, а в **образе контейнера**. @@ -94,6 +94,17 @@ ssh kraken 'docker exec jellyfin sh -c "curl -s -o /dev/null -w \"%{http_code}\n **Риск:** низкий. Данные (`/config`) не трогаются, пересоздаётся только контейнер. Бэкап БД обязателен — откатываться больше некуда. +## ✅ Результат (2026-09-20) + +| Шаг | Факт | +|---|---| +| Бэкап БД | `/home/kraken/backups/jellyfin-recreate-20260920-165750/` — `jellyfin.db` (24.5 МБ) + `-wal` + `-shm` | +| Пересоздание | `docker compose up -d --force-recreate` → `Container jellyfin Recreated / Started`, rc=0 | +| Статус через 15 с | **`Up 15 seconds (healthy)`** — сразу healthy, без периода `starting` | +| Подтверждение Alex | «Заработало» | + +> Контейнер теперь работает на образе `jellyfin/jellyfin:latest` = **12.1.0.0**, что согласовано с версией БД. Проблема `no such column` закрыта. + **Compose jellyfin** (`/srv/.../docker/jellyfin/docker-compose.yml`): ```yaml image: jellyfin/jellyfin # без тега = latest