#iPhone + DroidCam OBS (Flatpak): odłączenie przewodu od iPhone'a powoduje, że nie można przywrócić obrazu z iPhone'a DroidCam OBS bez restartu OBS. Trwała naprawa.
# Przyczyna: reguła udev kończyła usbmuxd po odpięciu telefonu (usbmuxd -x),
# a po wpięciu startował nowy z nowym plikiem gniazda. OBS w sandboxie
# zostawał przy starym i nie widział telefonu bez restartu.
# 1. Reguła udev bez linii "-x" (kopia w /etc ma pierwszeństwo i przeżywa aktualizacje)
sudo cp /lib/udev/rules.d/39-usbmuxd.rules /etc/udev/rules.d/39-usbmuxd.rules
sudo sed -i '/usbmuxd -x/d' /etc/udev/rules.d/39-usbmuxd.rules
sudo udevadm control --reload
# 2. usbmuxd startuje razem z systemem (przed OBS)
sudo mkdir -p /etc/systemd/system/multi-user.target.wants
sudo ln -sf /lib/systemd/system/usbmuxd.service /etc/systemd/system/multi-user.target.wants/usbmuxd.service
# 3. Automatyczny restart demona po awarii
sudo mkdir -p /etc/systemd/system/usbmuxd.service.d
printf '[Service]\nRestart=always\nRestartSec=1\n' | sudo tee /etc/systemd/system/usbmuxd.service.d/restart.conf
# 4. Załaduj i uruchom
sudo systemctl daemon-reload
sudo systemctl start usbmuxd
# 5. Kontrola (po restarcie komputera, przed uruchomieniem OBS)
grep -n "usbmuxd -x" /etc/udev/rules.d/39-usbmuxd.rules # brak wyniku = OK
systemctl is-active usbmuxd # ma być: active
# ===== Użycie =====
# Po zerwaniu kabla: wepnij kabel, w OBS w źródle DroidCam kliknij Refresh
# i wybierz telefon. Restart OBS niepotrzebny.
# ===== Diagnostyka (gdyby znów przestało działać) =====
ls -i /run/usbmuxd
flatpak enter $(flatpak ps --columns=instance,application | awk '/obsproject/{print $1}') ls -i /run/usbmuxd
# Różne numery = OBS trzyma stare gniazdo. Jedyne wyjście: restart OBS (poza streamem).
systemctl status usbmuxd
# ===== Cofnięcie zmian =====
sudo rm /etc/udev/rules.d/39-usbmuxd.rules
sudo rm /etc/systemd/system/multi-user.target.wants/usbmuxd.service
sudo rm -r /etc/systemd/system/usbmuxd.service.d
sudo udevadm control --reload
sudo systemctl daemon-reload