Разрабатываю VR-игру на Unity с использованием SteamVR Plugin, и в ней реализовано отслеживание кистей рук без контроллеров. Решил протестировать эту механику в PCVR-режиме на своём PICO 4 и сразу упёрся в проблему: стандартная актуальная версия PICO Connect эту функцию не поддерживает.
На форуме PICO нашёлся пост с конкретной рабочей связкой версий: PICO Connect 10.4.55 для ПК и Connect 10.4.5 для шлема.
Проблема в том, что версия на ПК ставится без проблем обычным установщиком, а вот версию в шлеме просто так не поставить, особенно если там уже стоит более новая. Пришлось разбираться с ADB, откатом обновлений и чисткой драйверов в SteamVR, чтобы всё это в итоге заработало. Подробная инструкция, как повторить этот процесс у себя - ниже!
1. Общая схема
Для работы отслеживания кистей в PCVR используются две части PICO Connect:
На компьютере: PICO Connect для Windows
В шлеме: Android-приложение Connect
Для режима передачи костей кистей применяется связка:
ПК: PICO Connect 10.4.55
Шлем: Connect 10.4.5
Приложение в шлеме имеет системный пакет:
com.picovr.picostreamassistant
Версия на компьютере устанавливается обычным .exe-файлом. Версия в шлеме устанавливается через ADB.
2. Подготовка ADB
2.1. Установка Platform-Tools
Скачать Android SDK Platform-Tools для Windows и распаковать архив, например, в папку:
C:\Tools\platform-tools
Проверить наличие файла:
C:\Tools\platform-tools\adb.exe
2.2. Подготовка APK
Создать папку:
C:\Temp
Скопировать нужный APK-файл в эту папку и переименовать его:
C:\Temp\PICOConnect-beta.apk
2.3. Включение отладки на шлеме
В настройках PICO 4 включить режим разработчика и параметр:
Отладка по USB
USB debugging
Подключить шлем к компьютеру кабелем USB-C.
При появлении запроса в шлеме разрешить отладку для подключённого компьютера. Рекомендуется отметить вариант постоянного разрешения.
3. Подготовка командной строки
Открыть командную строку:
Win + R
→ cmd
Задать переменные:
set "ADB=C:\Tools\platform-tools\adb.exe"
set "PKG=com.picovr.picostreamassistant"
set "APK=C:\Temp\PICOConnect-beta.apk"
set "VRPATHREG=E:\steam\steamapps\common\SteamVR\bin\win64\vrpathreg.exe"
Проверить подключение шлема:
"%ADB%" devices
Нормальный вывод:
List of devices attached
PA821CMGH2100058G device
Если устройство имеет статус:
unauthorized
нужно подтвердить запрос отладки в шлеме и повторить команду.
4. Проверка установленной версии в шлеме
Перед любыми изменениями проверить путь установленного приложения:
"%ADB%" shell pm path %PKG%
Проверить версии:
"%ADB%" shell dumpsys package %PKG% | findstr /i "versionName versionCode codePath flags"
Обычно вывод содержит две версии.
Пример:
codePath=/data/app/com.picovr.picostreamassistant-.../
versionName=10.6.6
flags=[ SYSTEM ... UPDATED_SYSTEM_APP ]
codePath=/system/app/StreamingAssistant
versionName=9.4.7
Это означает:
/data/app/...→ активное обновление приложения/system/app/StreamingAssistant→ базовая версия, встроенная в прошивку шлема
Базовую системную версию удалять не требуется.
5. Обычная установка новой версии
Если устанавливаемая версия новее текущей, выполнить:
"%ADB%" install -r "%APK%"
Параметр:
-r
позволяет заменить установленную версию приложения.
При успешной установке появится:
Performing Streamed Install
Success
После установки проверить версию:
"%ADB%" shell dumpsys package %PKG% | findstr /i "versionName versionCode codePath"
Для нужной версии ожидается:
versionName=10.4.5
versionCode=1000405001
После установки перезагрузить шлем.
6. Установка более старой версии
Если в шлеме уже установлена более новая версия, обычная установка завершится ошибкой:
INSTALL_FAILED_VERSION_DOWNGRADE
Для проверки можно выполнить:
"%ADB%" install -r -d "%APK%"
Параметр:
-d
разрешает попытку установки более старой версии.
Для обычного релизного приложения этого обычно недостаточно. Если снова появилась ошибка:
INSTALL_FAILED_VERSION_DOWNGRADE
нужно удалить только активное обновление Connect и вернуть встроенную системную версию.
7. Откат обновления Connect
Перед откатом ещё раз проверить текущее состояние:
"%ADB%" shell pm path %PKG%
"%ADB%" shell dumpsys package %PKG% | findstr /i "versionName versionCode codePath flags"
Если активный путь начинается с:
/data/app/
а в выводе присутствует:
UPDATED_SYSTEM_APP
значит поверх встроенной версии установлено обновление.
Удалить активное обновление:
"%ADB%" uninstall %PKG%
После этого обязательно проверить результат:
"%ADB%" shell pm path %PKG%
"%ADB%" shell dumpsys package %PKG% | findstr /i "versionName versionCode codePath flags"
Ожидаемый результат:
package:/system/app/StreamingAssistant/...
versionName=9.4.7
После возврата к встроенной версии установить нужный APK:
"%ADB%" install -r "%APK%"
Проверить установленную версию:
"%ADB%" shell dumpsys package %PKG% | findstr /i "versionName versionCode codePath"
Ожидаемый результат:
versionName=10.4.5
versionCode=1000405001
После установки перезагрузить PICO 4.
8. Команды, которые не следует использовать
Не выполнять команду:
"%ADB%" shell cmd package uninstall-system-updates %PKG%
На некоторых версиях прошивки PICO она работает нестандартно: вместо отката одного приложения пытается удалить обновления сразу у нескольких системных пакетов.
Также не выполнять без необходимости:
"%ADB%" shell pm uninstall --user 0 %PKG%
Эта команда может скрыть системное приложение для текущего пользователя вместо нормального возврата к встроенной версии.
9. Установка версии PICO Connect на компьютере
Версия на компьютере устанавливается без ADB.
Закрыть:
SteamVR
PICO Connect
Unity
VR-приложение
Открыть список установленных программ:
Win + R
→ appwiz.cpl
Удалить текущую версию:
PICO Connect
Установить:
PICO Connect 10.4.55
После запуска проверить номер версии в левом нижнем углу окна:
V10.4.55
10. Удаление старого Streaming Assistant с компьютера
Если ранее использовался Streaming Assistant, его нужно удалить полностью. Иначе SteamVR может видеть два драйвера PICO одновременно.
Открыть список программ:
Win + R
→ appwiz.cpl
Удалить:
Streaming Assistant
Проверить остаточную папку:
if exist "C:\Program Files\Streaming Assistant" (echo ПАПКА ОСТАЛАСЬ) else (echo ПАПКА УДАЛЕНА)
Если папка осталась, удалить её:
rmdir /s /q "C:\Program Files\Streaming Assistant"
Если Windows сообщает, что файлы заняты, определить процесс:
tasklist /m driver_pico.dll
Пример вывода:
steam.exe 21968 driver_pico.dll
Завершить найденный процесс:
taskkill /F /PID 21968 /T
Подождать несколько секунд:
timeout /t 3
Проверить повторно:
tasklist /m driver_pico.dll
После освобождения файлов удалить папку:
rmdir /s /q "C:\Program Files\Streaming Assistant"
11. Очистка драйверов PICO в SteamVR
После удаления старого Streaming Assistant проверить список внешних драйверов SteamVR:
"%VRPATHREG%" show
Проблемный вариант:
External Drivers:
pico : C:/Program Files/PICO Connect/openvr_driver/
pico : C:/Program Files/Streaming Assistant/driver
При наличии двух драйверов с одинаковым именем pico не следует удалять их по одному. Точечное удаление может затронуть не ту запись.
Удалить все регистрации драйвера pico:
"%VRPATHREG%" removedriverswithname pico
Проверить:
"%VRPATHREG%" show
После очистки блок внешних драйверов должен быть пустым.
Добавить только драйвер актуального PICO Connect:
"%VRPATHREG%" adddriver "C:/Program Files/PICO Connect/openvr_driver/"
Проверить итог:
"%VRPATHREG%" show
Ожидаемый результат:
External Drivers:
pico : C:/Program Files/PICO Connect/openvr_driver/
12. Итоговая конфигурация
На компьютере:
PICO Connect 10.4.55
В шлеме:
Connect 10.4.5
Пакет в шлеме:
com.picovr.picostreamassistant
В SteamVR зарегистрирован один драйвер:
pico : C:/Program Files/PICO Connect/openvr_driver/
Старая папка отсутствует:
C:\Program Files\Streaming Assistant
После завершения настройки перезагрузить:
компьютер
PICO 4
Запускать программы в порядке:
PICO Connect
Подключение PICO 4
SteamVR
Проверка отслеживания рук без контроллеров
VR-приложение
Краткая памятка команд
Задать путь к ADB
set "ADB=C:\Tools\platform-tools\adb.exe"
Задать имя пакета Connect
set "PKG=com.picovr.picostreamassistant"
Задать путь к APK
set "APK=C:\Temp\PICOConnect-beta.apk"
Задать путь к vrpathreg
set "VRPATHREG=E:\steam\steamapps\common\SteamVR\bin\win64\vrpathreg.exe"
Проверить подключение шлема
"%ADB%" devices
Проверить путь установленного пакета
"%ADB%" shell pm path %PKG%
Проверить установленную версию
"%ADB%" shell dumpsys package %PKG% | findstr /i "versionName versionCode codePath flags"
Установить APK поверх текущей версии
"%ADB%" install -r "%APK%"
Проверить возможность установки более старой версии
"%ADB%" install -r -d "%APK%"
Удалить активное обновление Connect
"%ADB%" uninstall %PKG%
Проверить возврат к встроенной версии
"%ADB%" shell pm path %PKG%
Повторно установить нужный APK
"%ADB%" install -r "%APK%"
Проверить список драйверов SteamVR
"%VRPATHREG%" show
Удалить все регистрации драйвера pico
"%VRPATHREG%" removedriverswithname pico
Добавить драйвер PICO Connect
"%VRPATHREG%" adddriver "C:/Program Files/PICO Connect/openvr_driver/"
Найти процесс, который блокирует старый драйвер
tasklist /m driver_pico.dll
Завершить найденный процесс
taskkill /F /PID 21968 /T
Удалить остаточную папку Streaming Assistant
rmdir /s /q "C:\Program Files\Streaming Assistant"





















