# Типичные проблемы

Короткий список: симптом → что проверить. Всё, что относится к драйверу, подробно разобрано
в [гайде](guide.ru.html), живой режим — в [live-setup.md](live-setup.md).

## Камера не видна на шине

```bash
ioreg -p IOService -w0 | grep -i "11c1"                    # контроллер на месте?
ioreg -p IOService -w0 -l -r -n "pci11c1,5901" -d 2 | grep ASFWDriver
systemextensionsctl list | grep ASFW                       # [activated enabled]?
```

- Порядок адаптеров жёсткий: `A1790 (TB3→TB2) в Mac → A1463 (TB→FW) в него → кабель в камеру`.
  A1790 однонаправленный, наоборот не работает.
- Кабель втыкать **только при выключенной камере**: горячее подключение FireWire — классический
  способ сжечь порт i.LINK.
- Камера: питание от сети, `POWER → VCR` или `CAMERA`, кассета внутри.
- Если камера в CAMERA без кассеты — через ~10 минут включается демонстрационный режим
  (мануал, стр. 139): вставьте кассету или выставьте `DEMO MODE → OFF`.

## Живой режим не поднимается

- `startDVCapture failed (IR busy or driver error)` — почти всегда уже запущен второй захват.
  Ярлык глушит прошлый сам, при ручном запуске: `pkill -f -- "--syphon"`.
- Смотрите `~/Library/Logs/MiniDVLive.log` и логи драйвера:

```bash
log show --last 5m --style compact --predicate 'processImagePath CONTAINS[c] "ASFWDriver"' | tail -40
```

## Звука нет

```bash
/Applications/ASFW.app/Contents/MacOS/ASFW --list-audio-devices     # BlackHole в списке?
/Applications/ASFW.app/Contents/MacOS/ASFW --audio-selftest 3       # тон слышно?
```

- Нет BlackHole: `brew install --cask blackhole-2ch`, затем перезапустить ярлык.
- В OBS: источник `BlackHole 2ch` есть, но в микшере **mute** или ползунок в нуле.
- Запись идёт, а звука в файле нет — mute у источника в микшере, либо в настройках вывода
  не выбрана нужная звуковая дорожка.
- Звук идёт в колонки вместо приложений — приёмник не BlackHole: проверьте `--audio-device`.

## В браузере камера в списке, но картинка чёрная

1. В OBS нажата **Start Virtual Camera**? Расширение `OBS Virtual Camera` видно в списке камер
   **всегда**, даже когда OBS закрыт; кадры идут только при активном выходе.
2. Полностью перезапустите браузер (⌘Q) — он кэширует возможности камер.
3. Разрешения: macOS → Конфиденциальность → Камера/Микрофон (для браузера), затем разрешение
   для самого сайта (иконка камеры в адресной строке).
4. Проверьте формат: расширение объявляет единственный **1920×1080@60**. Если приложение требует
   ровно 30 к/с — будет отказ. Запустите `tools/camera-test/camera-test.command` и нажмите
   «frameRate ровно 30» / «ровно 60» — страница покажет точную ошибку.
5. `chrome://media-internals` (или `chrome://webrtc-internals`) — покажет, какой формат запрошен
   и на чём споткнулся.

## Картинка сжата по ширине

Это `16:9WIDE` (анаморфная запись) в старом приложении: 720×576 отдаётся как квадратный пиксель,
то есть 5:4 вместо 16:9. Проверка и лечение:

```bash
/Applications/ASFW.app/Contents/MacOS/ASFW --dv-frame-selftest wide.dv --png wide.png
# ожидаем: «режим кадра: 16:9 (анаморфно)» и 720×576 → 1024×576
```

- Убедитесь, что стоит свежий `ASFW.app` (в нём есть `DVFrameGeometry`).
- После обновления разрешение источника в OBS меняется (720×576 → 1024×576): правый клик по
  источнику → **Transform → Fit to screen**, иначе OBS применит старый масштаб.

## Источник Syphon в OBS чёрный

- В свойствах источника не выбран сервер. Сервер определяется по `uuid`, а после перезапуска ASFW
  uuid меняется — тогда совпадение ищется по паре `name` + `app_name`. Ярлык прописывает все три
  поля на каждом запуске; при ручной настройке просто выберите `[ASFW] Sony DCR-PC115E` в списке.
- Проверить, что сервер жив: `ioreg` не поможет, смотрите лог приложения и `videoActive` через
  помощник ярлыка (`tools/minidv-live/obs-sources.js`).

## Расширение драйвера не активируется

```bash
csrutil status                       # должно быть disabled
sudo systemextensionsctl developer on
systemextensionsctl list | grep ASFW
```

- Сборка ad-hoc, поэтому SIP обязан быть выключен, иначе AMFI не запустит dext.
- Застряло в `terminating for uninstall but still running` — перезагрузка; после неё в списке
  должна остаться ровно одна запись.
- `IOUserServerCDHash` в `ioreg` меняется при каждой пересборке — так проверяют, что загружена
  свежая сборка, а не закешированная старая.

## Полный откат

Порядок важен: сначала снять расширение, потом включать SIP, иначе возможен осиротевший
kernel-stub и паника на старте. Пошагово — в [гайде](guide.ru.html), раздел 6.
