транслировать экран телефона

Обмен опытом по установке Линукс на разные аппаратные конфигурации

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 16753
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

транслировать экран телефона

Непрочитанное сообщение Olej » 14 сен 2022, 21:12

Это в продолжение обсуждения темы протокола Miracast в теме Подключение документ-камеры AverVision M70W:
Как транслировать экран телефона в Ubuntu?
...
Установите пакет scrcpy snap. Пакет Snapd присутствует в Ubuntu 16.04, поэтому устанавливать его не нужно. …
Подключаем телефон через USB. После завершения подготовки вам просто нужно подключить телефон с помощью USB-кабеля.
Запустите Scrcpy. …

Аватара пользователя
Olej
Писатель
Сообщения: 16753
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: транслировать экран телефона

Непрочитанное сообщение Olej » 14 сен 2022, 21:12

Olej писал(а):
14 сен 2022, 21:12
Запустите Scrcpy.

Код: Выделить всё

olej@compaq:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Linuxmint
Description:	LMDE 5 (elsie)
Release:	5
Codename:	elsie

Код: Выделить всё

olej@compaq:~$ aptitude search scrcpy
p   scrcpy                                                        - Display and control your Android device
p   scrcpy:i386                                                   - Display and control your Android device
p   scrcpy-server                                                 - Display and control your Android device - server binary
v   scrcpy-server:i386              

Код: Выделить всё

olej@compaq:~$ sudo apt install scrcpy
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  adb android-libadb android-libbase android-libboringssl android-libcrypto-utils android-libcutils android-liblog
  android-sdk-platform-tools-common scrcpy-server
Следующие НОВЫЕ пакеты будут установлены:
  adb android-libadb android-libbase android-libboringssl android-libcrypto-utils android-libcutils android-liblog
  android-sdk-platform-tools-common scrcpy scrcpy-server
Обновлено 0 пакетов, установлено 10 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 1.094 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 3.211 kB.
Хотите продолжить? [Д/н] y
Пол:1 http://mirror.mirohost.net/debian bullseye/main amd64 android-liblog amd64 1:10.0.0+r36-7 [44,4 kB]
Пол:2 http://mirror.mirohost.net/debian bullseye/main amd64 android-libbase amd64 1:10.0.0+r36-7 [41,5 kB]
Пол:3 http://mirror.mirohost.net/debian bullseye/main amd64 android-libboringssl amd64 10.0.0+r36-1 [612 kB]
Пол:4 http://mirror.mirohost.net/debian bullseye/main amd64 android-libcrypto-utils amd64 1:10.0.0+r36-7 [12,3 kB]
Пол:5 http://mirror.mirohost.net/debian bullseye/main amd64 android-libcutils amd64 1:10.0.0+r36-7 [33,3 kB]
Пол:6 http://mirror.mirohost.net/debian bullseye/main amd64 android-libadb amd64 1:10.0.0+r36-7 [165 kB]
Пол:7 http://mirror.mirohost.net/debian bullseye/main amd64 android-sdk-platform-tools-common all 28.0.2+3 [8.020 B]
Пол:8 http://mirror.mirohost.net/debian bullseye/main amd64 adb amd64 1:10.0.0+r36-7 [104 kB]
Пол:9 http://mirror.mirohost.net/debian bullseye/main amd64 scrcpy-server all 1.17-1 [36,3 kB]
Пол:10 http://mirror.mirohost.net/debian bullseye/main amd64 scrcpy amd64 1.17-1 [36,3 kB]
Получено 1.094 kB за 1с (1.442 kB/s)
Выбор ранее не выбранного пакета android-liblog.
(Чтение базы данных … на данный момент установлено 301642 файла и каталога.)
Подготовка к распаковке …/0-android-liblog_1%3a10.0.0+r36-7_amd64.deb …
Распаковывается android-liblog (1:10.0.0+r36-7) …
Выбор ранее не выбранного пакета android-libbase.
Подготовка к распаковке …/1-android-libbase_1%3a10.0.0+r36-7_amd64.deb …
Распаковывается android-libbase (1:10.0.0+r36-7) …
Выбор ранее не выбранного пакета android-libboringssl.
Подготовка к распаковке …/2-android-libboringssl_10.0.0+r36-1_amd64.deb …
Распаковывается android-libboringssl (10.0.0+r36-1) …
Выбор ранее не выбранного пакета android-libcrypto-utils.
Подготовка к распаковке …/3-android-libcrypto-utils_1%3a10.0.0+r36-7_amd64.deb …
Распаковывается android-libcrypto-utils (1:10.0.0+r36-7) …
Выбор ранее не выбранного пакета android-libcutils.
Подготовка к распаковке …/4-android-libcutils_1%3a10.0.0+r36-7_amd64.deb …
Распаковывается android-libcutils (1:10.0.0+r36-7) …
Выбор ранее не выбранного пакета android-libadb.
Подготовка к распаковке …/5-android-libadb_1%3a10.0.0+r36-7_amd64.deb …
Распаковывается android-libadb (1:10.0.0+r36-7) …
Выбор ранее не выбранного пакета android-sdk-platform-tools-common.
Подготовка к распаковке …/6-android-sdk-platform-tools-common_28.0.2+3_all.deb …
Распаковывается android-sdk-platform-tools-common (28.0.2+3) …
Выбор ранее не выбранного пакета adb.
Подготовка к распаковке …/7-adb_1%3a10.0.0+r36-7_amd64.deb …
Распаковывается adb (1:10.0.0+r36-7) …
Выбор ранее не выбранного пакета scrcpy-server.
Подготовка к распаковке …/8-scrcpy-server_1.17-1_all.deb …
Распаковывается scrcpy-server (1.17-1) …
Выбор ранее не выбранного пакета scrcpy.
Подготовка к распаковке …/9-scrcpy_1.17-1_amd64.deb …
Распаковывается scrcpy (1.17-1) …
Настраивается пакет scrcpy-server (1.17-1) …
Настраивается пакет android-sdk-platform-tools-common (28.0.2+3) …
Настраивается пакет android-liblog (1:10.0.0+r36-7) …
Настраивается пакет scrcpy (1.17-1) …
Настраивается пакет android-libboringssl (10.0.0+r36-1) …
Настраивается пакет android-libcrypto-utils (1:10.0.0+r36-7) …
Настраивается пакет android-libbase (1:10.0.0+r36-7) …
Настраивается пакет android-libcutils (1:10.0.0+r36-7) …
Настраивается пакет android-libadb (1:10.0.0+r36-7) …
Настраивается пакет adb (1:10.0.0+r36-7) …
Обрабатываются триггеры для man-db (2.9.4-2) …
Обрабатываются триггеры для libc-bin (2.31-13+deb11u4) …
Он устанавливает всё что требуется для adb под Android...

Аватара пользователя
Olej
Писатель
Сообщения: 16753
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: транслировать экран телефона

Непрочитанное сообщение Olej » 14 сен 2022, 21:19

Olej писал(а):
14 сен 2022, 21:12
Он устанавливает

Код: Выделить всё

olej@compaq:~$ which adb
/usr/bin/adb

Код: Выделить всё

olej@compaq:~$ scrcpy
INFO: scrcpy 1.17 <https://github.com/Genymobile/scrcpy>
adb: error: failed to get feature set: no devices/emulators found
ERROR: "adb push" returned with value 1
Вот так! :-(

Код: Выделить всё

olej@compaq:~$ sudo adb devices -l
List of devices attached
olej@compaq:~$ 

Аватара пользователя
Olej
Писатель
Сообщения: 16753
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: транслировать экран телефона

Непрочитанное сообщение Olej » 14 сен 2022, 21:23

Olej писал(а):
14 сен 2022, 21:19
Вот так!
Всё потому что (забыл я на этом телефоне!) нужнго включить режим разработчика и в нём отладку по USB...
Scrcpy – зеркалирование и управление вашим Android телефоном с рабочего стола Ubuntu Linux
Вам также необходимо включить отладку Android (параметры разработчика> Отладка USB) и параметры разработчика. Включите параметры разработчика в Android, перейдя в Настройки> Система> О телефоне и постоянно нажимая номер сборки / версии, пока не появится уведомление.
"тапать" по номеру сборки нужно раз 7, кажется...

Аватара пользователя
Olej
Писатель
Сообщения: 16753
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: транслировать экран телефона

Непрочитанное сообщение Olej » 14 сен 2022, 21:25

Olej писал(а):
14 сен 2022, 21:23
"тапать" по номеру сборки нужно раз 7, кажется...
После чего:

Код: Выделить всё

olej@compaq:~$ adb devices -l
List of devices attached
1b63e277               device usb:2-1.6 product:hydrogen model:MI_MAX device:hydrogen transport_id:1
И дальше:

Код: Выделить всё

olej@compaq:~$ scrcpy
INFO: scrcpy 1.17 <https://github.com/Genymobile/scrcpy>
/usr/share/scrcpy/scrcpy-server: 1 file pushed. 2.8 MB/s (34015 bytes in 0.011s)
[server] INFO: Device: Xiaomi MI MAX (Android 7.0)
INFO: Renderer: opengl
INFO: OpenGL version: 3.0 Mesa 20.3.5
INFO: Trilinear filtering enabled
INFO: Initial texture: 1080x1920
...
И вот требуемый скрин (как-раз страница установки отладки по USB):
Вложения
Снимок экрана от 2022-09-14 21-04-02.png
Снимок экрана от 2022-09-14 21-04-02.png (132.17 КБ) 76 просмотров

Аватара пользователя
Olej
Писатель
Сообщения: 16753
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: транслировать экран телефона

Непрочитанное сообщение Olej » 14 сен 2022, 23:57

Olej писал(а):
14 сен 2022, 21:25
И вот требуемый скрин
Но меня то интересует как-раз scrcpy без провода USB!
Когда и используется Miracast...
1). создаю на смартфоне WiFi точку доступа (т.е. переключаю WiFi режим):
Снимок экрана от 2022-09-14 23-50-23.png
Снимок экрана от 2022-09-14 23-50-23.png (98.03 КБ) 76 просмотров
2). смотрю в Anroid его IP (по ping приложению, или в настройках...) - у меня это 10.98.78.243
3). подключаюсь в Linux (Network Manager) к точке доступа MiPhone
4). делаю (пытаюсь):

Код: Выделить всё

olej@compaq:~$ adb tcpip 5555

olej@compaq:~$ adb connect 10.98.78.243:5555
...
Оно висит а я получаю отлуп :-o

Аватара пользователя
Olej
Писатель
Сообщения: 16753
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: транслировать экран телефона

Непрочитанное сообщение Olej » 15 сен 2022, 00:02

Olej писал(а):
14 сен 2022, 23:57
Оно висит а я получаю отлуп
Начинаю разбираться....

Код: Выделить всё

olej@compaq:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether e8:39:35:4f:85:bd brd ff:ff:ff:ff:ff:ff
    altname enp0s25
    inet 192.168.1.193/24 brd 192.168.1.255 scope global dynamic noprefixroute eno1
       valid_lft 167522sec preferred_lft 167522sec
    inet6 fe80::d901:49c4:77df:7acc/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wlxc83a35c1eb3f: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether c8:3a:35:c1:eb:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.55/24 brd 192.168.43.255 scope global dynamic noprefixroute wlxc83a35c1eb3f
       valid_lft 3444sec preferred_lft 3444sec
    inet6 fe80::476:37bf:c4b2:ac10/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
Вот тот wlxc83a35c1eb3f - это интерфейс Linux подключенный к точке доступа MyPhone на Android:

Код: Выделить всё

olej@compaq:~$ ping 10.98.78.243 -I wlxc83a35c1eb3f -c3
PING 10.98.78.243 (10.98.78.243) from 192.168.43.55 wlxc83a35c1eb3f: 56(84) bytes of data.
64 bytes from 10.98.78.243: icmp_seq=1 ttl=64 time=98.4 ms
64 bytes from 10.98.78.243: icmp_seq=2 ttl=64 time=97.5 ms
64 bytes from 10.98.78.243: icmp_seq=3 ttl=64 time=100 ms

--- 10.98.78.243 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 97.473/98.668/100.139/1.105 ms
Но:

Код: Выделить всё

olej@compaq:~$ ping 10.98.78.243 -c3
PING 10.98.78.243 (10.98.78.243) 56(84) bytes of data.

--- 10.98.78.243 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2029ms
Нужно разбираться с роутингом на Android!

Аватара пользователя
Olej
Писатель
Сообщения: 16753
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: транслировать экран телефона

Непрочитанное сообщение Olej » 15 сен 2022, 00:05

Olej писал(а):
15 сен 2022, 00:02
Нужно разбираться с роутингом на Android!

Код: Выделить всё

olej@compaq:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 eno1
default         _gateway        0.0.0.0         UG    600    0        0 wlxc83a35c1eb3f
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1
192.168.43.0    0.0.0.0         255.255.255.0   U     600    0        0 wlxc83a35c1eb3f
Естественно! :-P Роутинга в подсеть 10.*.*.* - нет!
Добавил:

Код: Выделить всё

olej@compaq:~$ sudo route add -net 10.98.78.0 netmask 255.255.255.0 dev wlxc83a35c1eb3f

Код: Выделить всё

olej@compaq:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.3     0.0.0.0         UG    100    0        0 eno1
0.0.0.0         192.168.43.1    0.0.0.0         UG    600    0        0 wlxc83a35c1eb3f
10.98.78.0      0.0.0.0         255.255.255.0   U     0      0        0 wlxc83a35c1eb3f
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1
192.168.43.0    0.0.0.0         255.255.255.0   U     600    0        0 wlxc83a35c1eb3f

Код: Выделить всё

olej@compaq:~$ ping 10.98.78.243 -c3
PING 10.98.78.243 (10.98.78.243) 56(84) bytes of data.
64 bytes from 10.98.78.243: icmp_seq=1 ttl=64 time=7.03 ms
64 bytes from 10.98.78.243: icmp_seq=2 ttl=64 time=3.00 ms
64 bytes from 10.98.78.243: icmp_seq=3 ttl=64 time=3.47 ms

--- 10.98.78.243 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 2.996/4.500/7.034/1.802 ms
Трафик поехал!

Аватара пользователя
Olej
Писатель
Сообщения: 16753
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: транслировать экран телефона

Непрочитанное сообщение Olej » 15 сен 2022, 00:07

Olej писал(а):
15 сен 2022, 00:05
Трафик поехал!

Код: Выделить всё

olej@compaq:~$ adb connect 10.98.78.243:5555
connected to 10.98.78.243:5555

Код: Выделить всё

olej@compaq:~$ adb devices
List of devices attached
10.98.78.243:5555	device
adb подключен по TCP/IP.
Дальше:

Код: Выделить всё

olej@compaq:~$ scrcpy
INFO: scrcpy 1.17 <https://github.com/Genymobile/scrcpy>
/usr/share/scrcpy/scrcpy-server: 1 file pushed. 1.1 MB/s (34015 bytes in 0.030s)
adb: error: more than one device/emulator
ERROR: "adb reverse" returned with value 1
WARN: 'adb reverse' failed, fallback to 'adb forward'
27183
[server] INFO: Device: Xiaomi MI MAX (Android 7.0)
INFO: Renderer: opengl
INFO: OpenGL version: 3.0 Mesa 20.3.5
INFO: Trilinear filtering enabled
INFO: Initial texture: 1080x1920
И вот скрин Android отображаемый на мониторе Linux по TCP/IP!
Вложения
Снимок экрана от 2022-09-14 23-46-22.png
Снимок экрана от 2022-09-14 23-46-22.png (87.12 КБ) 75 просмотров

Аватара пользователя
Olej
Писатель
Сообщения: 16753
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: транслировать экран телефона

Непрочитанное сообщение Olej » 15 сен 2022, 15:30

Olej писал(а):
14 сен 2022, 23:57
Но меня то интересует как-раз scrcpy без провода USB!
Когда и используется Miracast...
Хотя судя по вот этому - Как использовать Miracast в Ubuntu?:
Дистрибутивы Linux имеют доступ к поддержке беспроводных дисплеев через программное обеспечение Intel для беспроводных дисплеев с открытым исходным кодом для ОС Linux. Android поддерживает Miracast в Android 4.2 (KitKat) и Android 5 (Lollipop). Однако Google отказался от встроенной поддержки Miracast в Android 6 (Marshmallow) и более поздних версиях.
Т.е. это не Miracast, а некое "программное обеспечение Intel".
Хотя мне то какая разница? ... для поставленной задачи.

P.S. Т.к. при желании использовать протокол Miracast, как пишут, нужно организовать WiFi соединение точка-точка (p2p) - Стандарт Miracast — старые протоколы в новой обёртке:
Для тех, кому было лень вникать в технические подробности тезисно обрисую процедуру соединения для Miracast-based устройств:
1. Используя Wi-Fi direct, устройства находят друг друга (обычно — источник видео-данных находит устройство отображения)
2. Используя ту или иную форму аутентификации (в нашем случае — pbc) устройства объединяются в P2P-группу
3. Одно из устройств получает IP-адрес по DHCP (в нашем случае — это источник видео-данных)
4. На источнике данных на порту 7236 запускается RTSP-сервер
5. Клиент подключается к RTSP-серверу, и запрашивает некий предопределенный URL (/wfd1.0/streamid=0)
6. RTSP-сервер начинает передавать видео (и, возможно, аудио) данные в форме MPEG-TS упакованных в RTP-пакеты.
7. Клиент распаковывает данные и отображает их на устройстве вывода.

Ответить

Вернуться в «Железо для Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя