Дебаг ошибки с Valve Index
Posted January 30, 2021 by Bohdan Kovalenko ‐ 12 min read
*или как я в VR врывался
Счастливый обладатель портала в мир виртуальной реальности.
Предыстория
Купил я, значит, в августе 2020г себе VR. Покупку долго обдумывал и подошел к выбору устройства взвешено. Выбрал Valve Index за хорошее качество картинки, частоту дисплея и бесподобные контроллеры. По всем показателям этот шлем сейчас самый привлекательный на рынке.
Первое подключение прошло гладко и я успешно. Я был счастлив и успешно пользовался шлемом где-то месяц. Но 7 сентября кое-что произошло - в этот момент все поменялось на до и после.
Что поменялось после 7 сентября?
Я купил новый стол.
Изменение вроде как и не значительное, но по факту все оказалось сложнее.
Сначала нужно вам показать как выглядело рабочее место до изменений.
Системник стоял в нише в компьютерном столе. К нему отностельно рандомно был подключен VR и все работало прекрасно.
Я решил собрать свой стол для того чтобы работать с женой вместе в большой комнате (до этого ей приходилось работать со спальни сидя в кровати)
Вот так это стало выглядеть
Системный блок переехал просто под стол. И один из мониторов перешел в пользование жене.
Первую неделю после утсановки стола я вообще не играл и VR поэтому даже не пробовал его подключать. В это же время я решил навести порядок в системнике (в плане дисков) и поэтому перенес винду с обычной ssd на M2. На остальных 2 ssd установил ubuntu. Нетронутой отсалась только ssd с играми.
Из изменений периферии - у меня отсался подключен только один монитор. Из-за этого изменились подключения клавиатуры и мыши так как раньше хабы мониторов были подключены последовательно.
Поменялись подключения сетевых фильтров (находяться на креплениях под столом)
После переустановки винды я установил все необходимое для VR и попробовал запустить шлем. Сразу же начались проблемы с подключением. Мне постоянно показывало ошибку о том что “кабель отключен” или “кабель откючен у шлема”. После часов и часов попыток перзапусить подключение и перепробовав все известные методы и все разьемы на на компьютере мне удалось пройти Room setup. Иногда я даже начинал видеть через линзы что в них появляеться виртуальное окружение, но при малейжем движении шлема картинка тут же пропадала или экран становился серым.
Первой мыслью конечно же стала software проблема, так как новая винда была самой значимой переменной во всем сетапе. Но не переустановка драйверов ни даунгрейд до более старых версий видео драйверов не дали эффекта. Ошибка подключения шлема была той же.
Моментально подозрение пало на кабель так как он больше всего поддавался механическим воздействиям ну и Steam VR на него же ругался.
Я позвонил продавцам шлема и выяснил досадную подробность о том, что на кабель распространяеться только месяц гарантии, так как он считаеться расходным материалом. И как на зло с момента покупки уже прошло чуть больше месяца. Это значит, что если бы я сразу же после подключения нового сетапа включил VR, то я бы мог усперь отправить кабель по гарантии.
Посмотрев цены на кабель (около 200$) и стиснув зубы, я понял, что особо выбора у меня нет. Но я хотел убедиться, что проблема действительно в кабеле.
Я отправил кабель в магазин и мне ответили спустя пару недель, что с кабелем все отлично. Это с одной стороны обрадовало меня, с другой огорчило. Хорошо было то, что проблема в шлеме - и вот он на годовой гарантии, но плохо было то, что надо было отправлять весь комплект.
Процесс дебага в магазине затянулся не на шутку. Делали они это супер долго. Ближе к концу срока на обслуживание (2 мес) они сообщили, что со шлемом действительно что-то не так и надо отправлять его обратно в США для обслуживания в оффициальном сервисе. На вопрос смогут ли они дать мне замену другие такие же - сказали нет, но предложили поменять на HTC Vive. Я отказался так как мне очень хотелось именно Valve Index.
Вернуть их в срок они мне, конечно, не могли поэтому мне удалось договориться, что я в течении еще 2х недель буду ждать и если они не успеют - будет возврат денег.
Паралельно мой друг предложил проверить действительно ли у них нет очков на замену. Он позвонил и сказал, что хочет купить Valve Index и у них, действительно, не было их в наличии.
Почти под новый год они позвонили моему другу и сказали, что им пришла партия очков и они готовы ему их продать. Это был знак для меня и я начал названивать им каждые пару дней.
В канун Нового Года выяснилось, что мои очки они так и не получили, но готовы прислать мне новый шлем на замену. “Это же джекпот!” подумал я.
Набор я получил 31го декабря. Как будто под ёлочку прямо :)
Шлем действительно выглядел новым. Серийный номер я забыл записать на старых очках. Но по запаху он был новым и кабеля были запакованы красиво.
К своему сожалению я обнаружил, что при подключении этого нового шлема у меня появляеться новая ошибка, но все так же связаная с подключением кабеля.
Это просто не мог быть еще один бракованый шлем. Вероятность этого была крайне мала.
После часов и часов дебага и разнообразых попыток поменять что-то при подключении - мне получилось все исправить. Я нашел на каком-то форуме информацию о том что можно запустить шлем в режиме восстановления зажав кнопку на шлеме и включив питание. Я повторил эти действия и о чудо все заработало!
На радостях я поиграл в то, что было на компе в течении пары часов и довольный пошел спать.
На следующий день я предложил жене поиграть и снова запустил все. И к огромному разочарованию снова появилась эта ошика.
Как выглядела ошибка?
Еще я должен по подробнее рассказать о том как выглядела проблема. Она предсавляла из себя замкнутый цикл.
Подключаем VR
Запускаем Steam VR
Шлем начинает определяться в программе на несколько сек и потом отключаеться
После нескольких подключений-отключений на шлеме начинают мигать красные светиодиоды
На экране осатеться надпись Headset Disconnected
Кликаем правой кнопкой на шлеме и жмем презагрузить
После перезагрузки Steam VR появляеться надпись о том что очки надо восстановить
Соглашаемся и нам показывает экран обновления Tracking device
После этого красные лампочки перестают мигать на очках. Сам Steam VR перезагружается еще раз и весь цикл проблем начинается заново. Подключение-Отключение несколько раз с интервалом в несколько сек и все по новой.
При всех этих изменениях можно наблюдать изменения которые происходят в диспетчере устройств. В подключенных устройствах можно так же видеть сообщение об ошибке драйвера как раз в моменты разъединения связи со шлемом.
Внезапное открытие
В процессе поиска нужных комбинаций для запуска я начал склоняться в сторону Hardware проблемы. Для подтверждения или опровержения этой гипотезы мне нужен был еще один компьютер способный потянуть VR шлем. Я внезапно понял, что моего ноутбука должно как раз хватить для этого (Macbook Pro 16). У меня как раз появился переходник type C - Display Port.
Я знал что Steam VR есть и для Macos поэтому попробовал с него. После установки не смог запустить саму программу. Прогуглив выяснил, что с мая 2020 года они перестали поддерживать Steam VR. Переключился на установленную на ноут Windows.
И о чудо, после установки Steam VR все запустилось, с пол тычка, не смотря на переходники. Результат был воспроизводим.
Это означало что проблема кроеться в моем системном блоке и что с кочками все нормально.
Это навело меня на мысль, что возможно и с моим первым шлемом тоже проблем не было. Но что тогда за проблему смогли воспроизвести у себя чуваки из поддержки? Может им тоже так не повезло?
Что я пробовал делать?
*Какие гипотезы проверял
Windows version
Одной из гипотез была в том что версия windows влияет на корректность работы очков. И действительно на ноутбуке более старая версия windows. Я пробовал переустанавливать windows из образа 2015г. По умолчанию я не смог установить даже видео драйвер из-за несовместимости с версией ОС. Пришлось обновиться на пару версий. Но это не помогло.
Дело в типе ОС?
Эту гипотезу я решил исключить запустив очки со второй, поддерживающей VR, ОС - ubuntu. После установки Steam VR относительно безболезненно получилось пройти Room Setup. При первом запуске Steam VR написал, что из-за ошибок он не запустил некоторые addons. Это был gamepad controller адон.
Еще выяснилось что Steam VR не хочет нормально перезагружаться и поэтому приходилось в ручную убивать все процессы связанные с vr через activity монитор после каждого выхода из программы. В какой-то момент получилось даже запустить домашнее окружение, но работало оно супер нестабильно и очень-очень было похоже, что это облегченная пролема с которой я имею дело и на windows.
В конечном итоге VR отказался работать хоть как-то и на ubuntu и очки постоянно находились в статусе searching как будто пытались найти базовые станции
Дело в USB контроллере
На одном из форумов было сказано, что одна из проблем в коннекте может крыться в контроллере USB шины и фикситься это должно через покупку PCI USB карты которая как раз и будет выступать отдельным контроллером для usb из VR. Найти удалось только одну модель за 10$. Она не помогла.
Я пробовал подключать очки через type C to USB 3.0 переходник (на материнке имеется type C) но результат тот же. Я так же подключал очки через type C на видеокарте (в одном из драйверов nvidia я видел пункт USB контроллер, что логично) Обычно в мониках которые подключаютсья через type C есть Type A разьемы и поэтому видюха должна уметь подключать USB устройства. Не помогло.
Дело в чипсете материнки
Это была одна из самых первых гипотез. Пробовал запускать с дефолтными драйверами от винды после переустановки винды - та же ошибка. Пробовал ставить новые - ничего не менялось.
Дело в BIOS
Пробовал обновлять bios до последней версии - безуспешно. Пробовал полность сбрасывать все настройки bios, пробовал менять все настройки связанные с USB - та же ошибка
Дело в драйверах
Эта гипотеза отлично подтверждается сообщением об ошибке драйверов в windows и тем, что при коннектах-дисконектах появлялся и исчезал пункт для быстрого извлечения устройств в трее.
Через iobit driver booster пробовал удалять все не подключенные HID драйвера. Это устраняет ошибку с драйвером до первой перезагрузки Steam VR и это был единственно достоверный способ улучшить ситуацию с подключением хотя бы на время.
Пробовал отключать автоматическую установку драйверов в windows, но они все равно устанавливаться при подключении устройства. Существует возможность запретить установку драйверов для определенных device id - это я не пробовал делать. При подключении VR появляется с десяток новых устройств в диспетчере.
Версия SteamVR
Пробовал beta и не beta версии - результат то же. Не помогла и старая версия 1.11.13
Спасибо парнише который опубликовал старую версию https://drive.google.com/file/d/1vF5czb3fmFtW9PSEZu8uhbTAr9zW-l9O/view
Неожиданный звук
Я решил, что правильным подходом будет организовать удобную установку для дебага хардварных проблем ибо лазить под стол при каждом переключении - дело не благодарное.
Я переставил комп из под стола, предварительно открутив крышки, и провел так один вечер играя в игры. В конце когда ребята разошлись я решил немного подебажить проблему с очками. Я был очень удивлен, когда услышал как при запуске Steam VR появляется высокочастотный писк катушек, который исчезает сразу же после того как очки выдают ошибку. Этот звук не возникал в игре или при подключении 4К монитора. Установить источник получилось только приблизительно в районе между материнкой и видеокартой.
При общении с другом узнал, что это вполне нормальное явление в компьютере, но меня никак не отпускает поразительная синхронность этого звука и появления проблемы со шлемом.
Я спросил в дискорд канале по VR - там сказали, что ничего страшног в этом звуке нет и порекомендовали прогнать бенчмарки “для видюхи - FurMark и 3Dmark. Для проца - OCCT”, чтобы проверить вызовут ли они звук. Не вызывали.
Должен еще раз подчеркнуть, что до этого я никогда не слышал этого звука (когда VR работал и до VR тоже). Я пару дней назад его услышал и при дебаге и принял за звук от блока питания VR, но так как шлем достоверно рабочий - я не придал этому значения.
Хеппи-энд
Как всегда решение было на поверхности 🙂 Дело было в электронном шуме, который появился после переключения системного блока в другую розетку. Теперь давайте с этого места по подробней.
Я уже больше полугода пользуюсь докстанцией для ноутбука. Докстанция HP и кней я по type-C подключаю свой ноутбук. Все было замечательно до перестановки (после которой и VR перестал работать).
При очередном звонке в discord своему другу (сразу после перестановки) друг пожаловался на жуктий фон в моем микрофоне. И действительно включив проверку микрофона я услышал это жуткий шум. Это была смесь фона 50Hz сети и каких-то высокочастотных помех. В этот момент я был подключен к докстанции. При отключении от нее - шум тут же исчез.
Первым делом я подумал, что в новой конфигурации возле блока докстанции просто проходит много проводов 220В, что и влияет на электронику станции и это передаётся по шнурку в ноутбук.
После дебаг сесии я установил, что шум четко связан с включением стационарного компа. Когда системный блок выключен - шума просто нет. И один из компонентов шума был жесткий диск (шум совпадал с активностью жесткого диска)
Я понимал, что поменялось не сильно много в конфигурации. Я нашел приемлемое решение в виде подключении стационарника через старый сетевой фильтр. Шум не ушел полностью но стал заметно меньше. Меня это устроило.
Я почему-то не сопоставил проблему со звуком с проблемой подключения VR и оказалось, что в этом была моя самая большая ошибка.
Так получилось, что уже после получения нового комплекта VR мне снова сказали про шум. И я на секунду вспомнил, что видел на сайте valve информацию о том, что радиопомехи могут стать причиной неадекватного поведения шлема.
Ну с этого момента уже было все просто. Я подключил ноут через докстанцию и начал тестить. Пере подключал все и везде. В разные розетки и т.п. И оказалось, что при подключении системника через удленитель в розетку в другой части комнаты шум исчезает. И о чудо - VR начал работать без проблем.
Чуть позже я вспомнил, что изначально мой системный блок был подключен в другую розетку и это удачное стечение обстоятельств работало для меня в те, предыдущие месяцы.
Выводы
Систематический подход рано или поздно приведет тебя к правильному ответу, все зависит от того готов ли ты идти до конца 😄
Ссылка на Discord сервер где можно задать вопросы VR знатокам.
UPD
Я ошибался по поводу источника шума - ним оказался блок питания компьютера. Мне удалось выяснить, что при определенных манипуляциях с проводами внутри компьютера - шум исчезает. Нигде не было видно повреждений проводов. По итогу я открутил блок питания от креплений и развенул его на 360 градусов вокруг оси (не отключая провода) чтобы провода перекрутились в другую сторону. После этого шум исчез вместе с проблемами VR.