Обмен технологиями

Orange Pie 5plus работает с облачным решением для мобильных телефонов — redroid (с аппаратным ускорением)

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Первый адрес:https://mp.weixin.qq.com/s/1e8er_amC94DTVCaNbSuUw

Предисловие

Цель этой штуки — не играть в игры или что-то в этом роде, я просто хочу меньше зависеть от мобильного телефона при обратном проектировании приложения. В конце концов, шаги по прошивке мобильного телефона довольно раздражают, и он может легко заблокироваться, если вы не будете осторожны.

Например, на нем можно протестировать некоторые приложения, не требующие строгих требований к экологическому тестированию, что также упрощает изменение исходного кода системы и последующую прошивку компьютера. Но жаль, что ядро ​​нельзя настроить (Redroid и Waydroid используют контейнерные решения и разделяют ядро ​​с хостом. Если вы хотите настроить ядро, вы можете использовать только каракатицу от Google или avd, но они имеют ограниченную поддержку). на руке и можно запустить, но ускорения графического процессора нет, поэтому каракатицу попробую позже.

Флэш-Убунту

Я не буду вдаваться в процесс обновления Ubuntu с помощью Orange Pie. Если вам интересно, прочтите предыдущую статью:Orange Pie 5plus запускает Ubuntu с SSD . Если вы прошьете эту систему, вам не нужно ничего устанавливать или настраивать для запуска redroid. Однако, если вы хотите использовать виртуальный WIFI или ebpf, вам все равно придется изменить параметры ядра и скомпилировать ядро ​​Linux самостоятельно. В следующей статье будет конкретно рассмотрен процесс компиляции.

редроид

Официальный учебник:https://github.com/remote-android/redroid-doc

Проверьте необходимые условия

grep binder /proc/filesystems grep ashmem /proc/misc

Если ничего не печатается, возможно, вам придется запустить его вручную (я просто использую следующие две команды на машине с установленной Ubuntu Kunpeng 920. Хотя на этой машине установлена ​​видеокарта AMD, она не может напрямую вызывать графический процессор)

sudo modprobe ashmem_linux sudo modprobe binder_linux devices=binder,hwbinder,vndbinder

Если эти две команды сообщают об ошибке или не оказывают никакого эффекта, возможно, текущее ядро ​​Linux не поддерживает эти две функции. Вам необходимо обратиться к следующим инструкциям хранилища, чтобы установить поддерживаемое ядро ​​или скомпилировать ядро, чтобы включить эти две функции. :https://github.com/remote-android/redroid-modules

ускорение графического процессора

Его можно запустить, используя официальный образ докера, но ускорение графического процессора отсутствует, а видео декодируется программно (симуляция процессора), поэтому в github операция выполняется относительно медленно.проблема[1]Найдите rk3588, и вы увидите несколько комментариев об ускорении графического процессора.

Но никто раньше не рассказывал, как скомпилировать изображение с ускорением графического процессора. В комментариях можно сделать лишь несколько полезный вывод: получите несколько файлов драйверов, связанных с ускорением графического процессора, из официального исходного кода SDK Orange Pi и поместите их в Android. исходный код. Или скопируйте эти файлы прямо в докер-контейнер и перезапустите контейнер.

Этот вывод слишком расплывчатый и здесь должно быть много подводных камней, поэтому я не пробовал его.Пока большой парень не выдал полныйПроцесс компиляции и исходный код[2]

Учебник написан очень подробно. Вы можете скомпилировать его один раз и пройти, следуя инструкциям. кроме того,И босс[3]На основе этого изображения была добавлена ​​одна вещь.

Так что используйте это здесьЗеркальное отражение босса[4], перед этим взгляните на упомянутые им зависимости (версия ядра 5.10.160 и mali ddk g18p0):

Это не должно быть проблемой. Он также упомянул, что будет.mali_csffw.binФайл скопирован в/lib/firmware/Далее я проверил а есть ли в этой папке этот файл.

Значение по умолчанию связаноg15p0, поэтому мы удаляем эту мягкую ссылку и создаем новую ссылку наg18p0 .Однако после тестирования используйтеg15p0Контейнер версии redroid также может нормально использовать графический процессор.

Тест чистки видео прошел нормально. Могу только сказать, что оно не застревает и не плавное. В конце концов, текущая конфигурация мобильного телефона уже очень высокая, и она намного более плавная, чем эта плата для разработки.

Установить докер

sudo apt install docker.io -y sudo usermod -aG docker $USER sudo chmod a rw /var/run/docker.sock

Последние две строки команд предназначены для запуска docker обычными пользователями без добавления sudo.

Запустить контейнер

Затем вытащите изображение: docker pull cnflysky/redroid-rk3588:12.0.0-latest

docker run -d --privileged 
    -p 5555:5555 
    -v ~/redroid-data:/data 
   --name redroid 
   cnflysky/redroid-rk3588:12.0.0-latest androidboot.redroid_height=1920 androidboot.redroid_width=1080 androidboot.redroid_magisk=1  androidboot.redroid_virt_wifi=1

Затем используйте adb для подключения к этому порту (adb connect 192.168.31.208:5555) может быть использованQtScrcpyПосмотреть рабочий стол этого контейнера

Сначала установите aida64, чтобы проверить, нормально ли выполняются вызовы видеокарты:

Если вы используете для рендеринга видеокарту mali-G610, проблем не будет, а частота обновления составит 60 Гц. Если вы используете программное решение, частота обновления будет всего 15 Гц.

магиск

Когда этот контейнер запускается, он выдаетandroidboot.redroid_magisk=1Просто включите magisk, чтобы вы могли видеть, что magisk работает нормально после включения компьютера. При первом входе вам может потребоваться перезагрузка.docker restart redroidЕго можно использовать в обычном режиме после перезапуска.

lsposed

Сначала откройте zygisk в magisk, а затем с помощью команды adb push поместите установочный пакет lspose в контейнер. Затем установите его в «Модули», затем перезапустите, и вы увидите, что lspose также работает нормально.

Просто установите модуль xposed, и вы сможете войти в интерфейс настроек lspose.

пробелы

Это официальноРуководство[5]Объясните, как скомпилировать образ докера с помощью гаппсов Однако даже с гаппсами он не может пройти гугл.safetynetПроверка, многие приложения использовать невозможно.

Кто-то тоже спрашивал в вопросе, но решения нет:https://github.com/remote-android/redroid-doc/issues/378 . Загруженные изображения включают Google Store.

Виртуальный Wi-Fi

После прочтения вопроса, если вы не настроите виртуальный WIFI, какое-то программное обеспечение определит, что сети нет, даже если сеть есть, например QQ. Потому что они обнаруживают только WIFI и трафик, которые недоступны в контейнере докеров. Однако мой тест показал, что многие программы с виртуальным WIFI покажут, что сети нет, но интернет будет работать нормально без включения виртуального WIFI, поэтому рекомендуется его не включать, просто знайте, что такая штука есть. .

Итак, нам нужно получить виртуальный WIFI в контейнере, нам нужноПоддержка ядра[6]

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

переключить наip6tables-legacyПосле этого докеру необходимо перезапустить службу.sudo systemctl restart docker, перезапускать машину бесполезно, и контейнер отключится от Интернета.

Установленное ядро ​​системы не поддерживает этот параметр.zcat /proc/config.gz | grep CONFIG_MAC80211_HWSIM

Код ядра, предоставленный github, очень прост в компиляции и может быть скомпилирован за один шаг. К сожалению, нет возможности изменить параметры ядра, и когда вы изменяете файл конфигурации ядра, он будет изменен обратно во время компиляции.

После нескольких дней борьбы я просмотрел все вопросы в выпуске и не смог найти ответа. У меня не было другого выбора, кроме как самому просмотреть сценарий компиляции. Этот конкретный процесс будет обсуждаться в следующей статье. ядро представлено здесь.

Обновить ядро

Адрес загрузки пакета ядра ядра, используемый системойUbuntu22[7]https://www.123pan.com/s/ihEKVv-TbOx.html Код извлечения:AZ3A . В дополнение к вышеуказанным параметрам я также добавил параметры, связанные с ebpf, о которых речь пойдет позже.

Сначала сuname -aПроверьте текущую информацию о ядре

Сначала перенесите скомпилированный файл ядра на машину, а затем запуститеsudo dpkg -i *.debВсего имеется пять файлов deb. Первый представляет собой информацию о сборке и не требует установки.

Затем используйтеsudo rebootПерезагрузитесь и проверьте информацию о ядре.

Параметры ядра тоже включаются нормально:

Яма 1

После обновления ядра и перезапуска первоначально созданный контейнер отключается от Интернета, и только контейнеры, созданные позже, могут нормально выходить в Интернет. Сначала я подумал, что проблема с ядром, поэтому пришлось обновить систему и перекомпилировать ядро.

Яма 2

Несмотря на наличие подключения к Интернету, видео станции B не может быть обновлено. Я могу обновить только домашнюю страницу, а браузер не может получить доступ к веб-странице. (Примечание: сначала вам необходимо зайти в настройки, чтобы подключиться к виртуальному WIFI, прежде чем вы сможете подключиться к Интернету)

По инструкции здесь:https://github.com/CNflysky/redroid-rk3588/issues/2

Только гарантированное беспроводное соединение?Хотя я не понимаю, что это значит, может быть, маршрут может быть только один? Видите?ip routeПо умолчанию есть два маршрута

Второй — виртуальный WIFI. Как насчет того, чтобы удалить первый и попробовать: ip route del 192.168.200.0/24 dev radio0 proto kernel scope link src 192.168.200.2

Я обнаружил, что иногда при наличии подключения к Интернету видео можно воспроизвести. В большинстве случаев оно зависает, и загрузка видео занимает некоторое время. Однако обновление домашней страницы происходит очень быстро, и комментарии тоже очень. быстрый. Изменение DNS тоже не помогает. Позже попробую другое программное обеспечение, чтобы посмотреть, произойдет ли то же самое.

впн

Вы можете обратиться к:https://github.com/CNflysky/redroid-rk3588/issues/5 , не буду пробовать. По инструкции реддроида также можно указать агент при запуске. Если вы установите VPN глобально, adb может отключиться.

Аудио

Может не получиться, просто попробуйте еще несколько раз.

Справочная ссылка
  • [1] https://github.com/remote-android/redroid-doc/issues?q=rk3588
  • [2] https://github.com/redroid-rockchip
  • [3] https://blog.csdn.net/CNflysky/article/details/136452455
  • [4] https://github.com/CNflysky/redroid-rk3588
  • [5] https://github.com/remote-android/redroid-doc/blob/master/android-builder-docker/README.md
  • [6] https://github.com/redroid-rockchip/vendor_redroid_ext/tree/master/wifi
  • [7] https://github.com/Joshua-Riek/ubuntu-rockchip/releases