Coder Social home page Coder Social logo

uxplay's People

Contributors

alexmyczko avatar antimof avatar fduncanh avatar linus-ha avatar lolwat97 avatar march1993 avatar thiccaxe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

uxplay's Issues

Docker Container

Is there any reason why this couldn't run in a Docker container?

I've managed to install all the dependencies & build using debian:buster base image.

I can get it to run into a state where by the following outputs:

supported audio format 1: AAC-ELD 44100/2
supported audio format 2: ALAC 44100/16/2
supported audio format 3: AAC-LC 44100/2
supported audio format 4: PCM 44100/16/2 S16LE
Initialized GStreamer video renderer
using system MAC address 6c:4b:90:ce:67:18
Initialized server socket(s)

In which the server doesn't appear on my client.

So could well mean it's an Avahi issue.

I've attempted to install avahi-daemon, but when attempting to run prior to executing uxplay the following occurs:

[ ok ] Starting system message bus: dbus.
[....] Starting Avahi mDNS/DNS-SD Daemon: avahi-daemonTimeout reached while wating for return value
Could not receive return value from daemon process.
 (warning).

Here's my start.sh script:

#!/bin/bash

/etc/init.d/dbus start
/etc/init.d/avahi-daemon start

uxplay -d

Gracefully restart on iOS screen lock timeout

When I lock the screen on my iOS device while mirroring the display, in ~3 minutes it disconnects from UxPlay. However, the disconnect is not as clean as if I disconnected via "stop mirroring".

using network ports UDP 7011 6001 6000 TCP 7100 7000 7011

using randomly-generated MAC address 46:83:ba:f5:46:ae

Initialized server socket(s)
Accepted IPv4 client on socket 23
Local: 192.168.1.4
Remote: 192.168.1.7
httpd receiving on socket 23
conn_request
Handling request GET with URL /info
INFO len = 2110761036
httpd receiving on socket 23
conn_request
Handling request POST with URL /pair-setup
httpd receiving on socket 23
conn_request
Handling request POST with URL /pair-verify
httpd receiving on socket 23
conn_request
Handling request POST with URL /pair-verify
httpd receiving on socket 23
conn_request
Handling request POST with URL /fp-setup
httpd receiving on socket 23
conn_request
Handling request POST with URL /fp-setup
httpd receiving on socket 23
conn_request
Handling request SETUP with URL rtsp://192.168.1.4/12782608526220018135
DACP-ID: 305495EC8973FCCC
Active-Remote: 2985253283
Transport: null
SETUP 1
eiv_len = 16
ekey_len = 72
fairplay_decrypt ret = 0
timing_rport = 51170
raop_ntp parse remote ip = 192.168.1.7
raop_ntp starting time
raop_ntp local timing port socket 24 port UDP 7011
raop_rtp parse remote ip = 192.168.1.7
raop_rtp_mirror parse remote ip = 192.168.1.7
eport = 7000, tport = 7011
raop_ntp send_len = 32
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = -1627418942623265
Accepted IPv4 client on socket 25
Local: 192.168.1.4
Remote: 192.168.1.7
httpd receiving on socket 23
conn_request
Handling request GET with URL /info
INFO len = 2110761036
httpd receiving on socket 23
conn_request
Handling request GET_PARAMETER with URL rtsp://192.168.1.4/12782608526220018135
httpd receiving on socket 23
conn_request
Handling request RECORD with URL rtsp://192.168.1.4/12782608526220018135
raop_handler_record
httpd receiving on socket 23
conn_request
Handling request SETUP with URL rtsp://192.168.1.4/12782608526220018135
DACP-ID: 305495EC8973FCCC
Active-Remote: 2985253283
Transport: null
type = 110
streamConnectionID = 2921897089093618468
raop_rtp_mirror starting mirroring
raop_rtp_mirror local data port socket 26 port TCP 7100
Mirroring initialized successfully
raop_rtp_mirror accepting client
httpd receiving on socket 23
conn_request
Handling request SET_PARAMETER with URL rtsp://192.168.1.4/12782608526220018135
raop_rtp_mirror width_source = 1440.000000 height_source = 1080.000000 width = 1440.000000 height = 1080.000000
raop_rtp_mirror sps size = 18
raop_rtp_mirror pps size = 4
raop_rtp_mirror video ntp = 1629807735267031, now = 1629807735215912, latency = -51119
(...)

(mirroring starts)
(screen lock)

(...)
httpd receiving on socket 23
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
raop_ntp send_len = 32
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = -1876897
(...)
httpd receiving on socket 23
conn_request
Handling request SET_PARAMETER with URL rtsp://192.168.1.4/12782608526220018135
raop_rtp_mirror width_source = 1440.000000 height_source = 1080.000000 width = 1440.000000 height = 1080.000000
raop_rtp_mirror sps size = 18
raop_rtp_mirror pps size = 4
raop_rtp_mirror tcp socket closed
httpd receiving on socket 23
conn_request
Handling request TEARDOWN with URL rtsp://192.168.1.4/12782608526220018135
raop_rtp_mirror exiting TCP thread
httpd receiving on socket 23
conn_request
Handling request TEARDOWN with URL rtsp://192.168.1.4/12782608526220018135
httpd receiving on socket 23
Connection closed for socket 23
Destroying connection
raop_ntp stopping time thread
raop_ntp exiting thread
raop_ntp stopped time thread
httpd receiving on socket 25
Connection closed for socket 25
Destroying connection

After this, the gstreamer window stays open, and no new connection can be made from the iOS device until UxPlay restart.

Changing -vs results in an error

Hello. I am trying to use fullscreen mode as described in #46 however, (on MacOS and Crostini, both Debian 11.2 and the latest Arch Linux), I get this in the terminal.

username@usernames-macbook-pro UxPlay % ./uxplay -nc -vs vaapisink
macOS detected: use -nc option as workaround for GStreamer problem
Assertion Failed: (renderer->sink), function video_renderer_init, file /Users/username/UxPlay/renderers/video_renderer_gstreamer.c, line 136
zsh: abort ./uxplay -nc -vs vaapisink

If you could help, it would be great, because I would like to use vaapisink for the MacBook Pro I am using.

Only audio working

Hi, thanks for this amazing project

I'm trying to make it work on my machine but I get audio only, no video shows up.
I installed both AUR packages, then tried to compile myself without gstreamer-vaapi
Tried also both "-vs ximagesink" and "-vs xvimagesink"

I can't see anything wrong in debug logs except for a raop_ntp receive timeout; however, after compiling from source I don't get that timeout message anymore

Here is part of my logs, please tell me which part could be useful because are very large

httpd receiving on socket 28
conn_request

POST /feedback RTSP/1.0
CSeq: 61
DACP-ID: EAB6CE19D67DEC4D
Active-Remote: 2416368236
User-Agent: AirPlay/545.22.21

Handling request POST with URL /feedback
raop_handler_feedback

RTSP/1.0 200 OK 
CSeq: 61 
Server: AirTunes/220.68 

raop_ntp send_len = 32
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = 0
httpd receiving on socket 28
conn_request

Rebroadcast the stream?

This is a blatant feature request. I think it would be cool, but feel free to ignore it. :)

Since this project is using gstreamer—and gstreamer has an rtsp server plugin—I wonder if it would be possible to add an option to rebroadcast the received AirPlay stream over RTSP? This would make it possible to run UXPlay on a headless server, and display the video on other devices in e.g. VLC Media Player.

HLS streaming would be great too for added compatibility, but it doesn't look like there's a gstreamer plugin for that, so it would probably be too much effort.

Anyway, this project is awesome, great work! Cheers!

GStreamer error: GStreamer encountered a general resource error.

Hi guys

I'm triyng to use this incredible project in my old Toshiba C845.

The machine use Nitrux OS 1.6.1, KDE 5.22.5 and Wayland (so far I get the same error with X11), you can see the complete release notes here.

Here is the log

>./uxplay -d
Initialized server socket(s)
Accepted IPv4 client on socket 29
Local: 192.168.100.72
Remote: 192.168.100.14
Open connections: 1
httpd receiving on socket 29
conn_request
Handling request GET with URL /info
INFO len = 511686756
httpd receiving on socket 29
conn_request
Handling request POST with URL /pair-setup
httpd receiving on socket 29
conn_request
Handling request POST with URL /pair-verify
httpd receiving on socket 29
conn_request
Handling request POST with URL /pair-verify
httpd receiving on socket 29
conn_request
Handling request POST with URL /fp-setup
httpd receiving on socket 29
conn_request
Handling request POST with URL /fp-setup
httpd receiving on socket 29
conn_request
Handling request SETUP with URL rtsp://192.168.100.72/12281695283857607771
DACP-ID: C08112678A645905
Active-Remote: 2973092858
Transport: null
SETUP 1
eiv_len = 16
ekey_len = 72
fairplay_decrypt ret = 0
timing_rport = 51562
raop_ntp parse remote ip = 192.168.100.14
raop_ntp starting time
raop_ntp local timing port socket 31 port UDP 59109
raop_rtp parse remote ip = 192.168.100.14
raop_rtp_mirror parse remote ip = 192.168.100.14
eport = 38505, tport = 59109
raop_ntp send_len = 32
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = -1633355484039148
Accepted IPv4 client on socket 32
Local: 192.168.100.72
Remote: 192.168.100.14
Open connections: 2
httpd receiving on socket 29
conn_request
Handling request GET with URL /info
INFO len = 511686756
httpd receiving on socket 29
conn_request
Handling request GET_PARAMETER with URL rtsp://192.168.100.72/12281695283857607771
httpd receiving on socket 29
conn_request
Handling request RECORD with URL rtsp://192.168.100.72/12281695283857607771
raop_handler_record
httpd receiving on socket 29
conn_request
Handling request SET_PARAMETER with URL rtsp://192.168.100.72/12281695283857607771
httpd receiving on socket 29
conn_request
Handling request SETUP with URL rtsp://192.168.100.72/12281695283857607771
DACP-ID: C08112678A645905
Active-Remote: 2973092858
Transport: null
type = 110
streamConnectionID = 7038138042667847646
raop_rtp_mirror starting mirroring
raop_rtp_mirror local data port socket 33 port TCP 35331
Mirroring initialized successfully
raop_rtp_mirror accepting client
raop_rtp_mirror width_source = 608.000000 height_source = 1080.000000 width = 608.000000 height = 1080.000000
raop_rtp_mirror sps size = 17
raop_rtp_mirror pps size = 4
raop_rtp_mirror video ntp = 1633401082400163, now = 1633401082343811, latency = -56352
raop_rtp_mirror video ntp = 1633401082416829, now = 1633401082349601, latency = -67228
raop_rtp_mirror video ntp = 1633401082466838, now = 1633401082365292, latency = -101546
raop_rtp_mirror video ntp = 1633401082500179, now = 1633401082397554, latency = -102625
raop_rtp_mirror video ntp = 1633401082533510, now = 1633401082436430, latency = -97080
raop_rtp_mirror video ntp = 1633401082566848, now = 1633401082466260, latency = -100588
raop_rtp_mirror video ntp = 1633401082600185, now = 1633401082497924, latency = -102261
raop_rtp_mirror video ntp = 1633401082633515, now = 1633401082543668, latency = -89847
raop_rtp_mirror video ntp = 1633401082666851, now = 1633401082573901, latency = -92950
raop_rtp_mirror video ntp = 1633401082700190, now = 1633401082618073, latency = -82117
GStreamer error: GStreamer encountered a general resource error.
Re-launching server...
raop_rtp_mirror video ntp = 1633401082733521, now = 1633401082713219, latency = -20302
raop_rtp_mirror video ntp = 1633401082766854, now = 1633401082717303, latency = -49551
raop_rtp_mirror video ntp = 1633401082800187, now = 1633401082735017, latency = -65170
raop_rtp_mirror video ntp = 1633401082833521, now = 1633401082766942, latency = -66579
raop_rtp_mirror video ntp = 1633401082866854, now = 1633401082815581, latency = -51273
Removing connection for socket 29
Destroying connection
Open connections: 1
raop_ntp stopping time thread
raop_ntp exiting thread
raop_ntp stopped time thread
raop_rtp_mirror exiting TCP thread
Removing connection for socket 32
Destroying connection
Open connections: 0
Exiting HTTP thread
Initialized server socket(s)

I have this libraries installed (Gstreamer)

gir1.2-gst-plugins-base-1.0:amd64
gir1.2-gstreamer-1.0:amd64
gstreamer1.0-alsa:amd64
gstreamer1.0-libav:amd64
gstreamer1.0-plugins-bad:amd64
gstreamer1.0-plugins-base:amd64
gstreamer1.0-plugins-good:amd64
gstreamer1.0-plugins-ugly:amd64
gstreamer1.0-pulseaudio:amd64
gstreamer1.0-qt5:amd64
gstreamer1.0-vaapi:amd64
libgstreamer-gl1.0-0:amd64
libgstreamer-plugins-bad1.0-0:amd64
libgstreamer-plugins-base1.0-0:amd64
libgstreamer-plugins-base1.0-dev:amd64
libgstreamer1.0-0:amd64
libgstreamer1.0-dev:amd64
libqt5multimediagsttools5:amd64
phonon-backend-gstreamer
phonon-backend-gstreamer-common:amd64
phonon4qt5-backend-gstreamer:amd64

So far I have the same version of UxPlay in my Lenovo T430 with MX 19.04 (X11+XFCE) and work like a charm.

Somebody can help me?

Best Regards and Thank you in advance

Does not play when streaming audio only

Segfaulted twice, not sure what causes it (on audio only).

raop_rtp audio: ntp = 1632842560238364, now = 1632842563331949, latency=3093585, rtp=1961122080
zsh: segmentation fault  ./uxplay -p -d -vs ximagesink -s 1280x720

There is not much useful output other than that :(

Support for TuneBlade airplay audio server from Windows

I have read the issues and documentation regarding the support for AIrMyPC and i am hoping that similar support could be established for TuneBlade audio. I use TuneBlade all over the house mostly to Shairport-Sync and would like to start using UxPlay on some systems.

I have UxPlay working with my iPhone IOS 15.x on a Pi Zero W with a JustBoom Digi and a Pi 4.

I can test and provide feedback as needed. There is a free version of TuneBlade that will play for 10 minutes that should work for others that want to test.

Thanks for the great project!

Here is the debug log when TuneBlade tries to connect:

root@DietPi:/UxPlay# ./uxplay -as alsasink -d
supported audio format 1: AAC-ELD 44100/2
supported audio format 2: ALAC 44100/16/2
supported audio format 3: AAC-LC 44100/2
supported audio format 4: PCM 44100/16/2 S16LE
Initialized GStreamer video renderer
using system MAC address dc:a6:32:14:81:13
Initialized server socket(s)
Accepted IPv4 client on socket 29
Local: 192.168.1.177
Remote: 192.168.1.139
Open connections: 1
httpd receiving on socket 29
Connection closed for socket 29
Destroying connection
Open connections: 0
Accepted IPv4 client on socket 29
Local: 192.168.1.177
Remote: 192.168.1.123
Open connections: 1
httpd receiving on socket 29
conn_request

OPTIONS * RTSP/1.0
CSeq: 1
User-Agent: TuneBlade/1.0 (Windows)
Client-Instance: 56B6CB929BB20486
DACP-ID: 1E5ED18983C3BB5A
Active-Remote: 166409750

Handling request OPTIONS with URL *

RTSP/1.0 200 OK
CSeq: 1
Server: AirTunes/220.68
Public: SETUP, RECORD, PAUSE, FLUSH, TEARDOWN, OPTIONS, GET_PARAMETER, SET_PARAMETER

httpd receiving on socket 29
conn_request

ANNOUNCE rtsp://192.168.1.123/3121287335 RTSP/1.0
CSeq: 2
Content-Type: application/sdp
Content-Length: 186
User-Agent: TuneBlade/1.0 (Windows)
Client-Instance: 56B6CB929BB20486
DACP-ID: 1E5ED18983C3BB5A
Active-Remote: 166409750

76 3d 30 0d 0a 6f 3d 69 54 75 6e 65 73 20 33 31
32 31 32 38 37 33 33 35 20 30 20 49 4e 20 49 50
34 20 31 39 32 2e 31 36 38 2e 31 2e 31 37 37 0d
0a 73 3d 69 54 75 6e 65 73 0d 0a 63 3d 49 4e 20
49 50 34 20 31 39 32 2e 31 36 38 2e 31 2e 31 37
37 0d 0a 74 3d 30 20 30 0d 0a 6d 3d 61 75 64 69
6f 20 30 20 52 54 50 2f 41 56 50 20 39 36 0d 0a
61 3d 72 74 70 6d 61 70 3a 39 36 20 41 70 70 6c
65 4c 6f 73 73 6c 65 73 73 0d 0a 61 3d 66 6d 74
70 3a 39 36 20 33 35 32 20 30 20 31 36 20 34 30
20 31 30 20 31 34 20 32 20 32 35 35 20 30 20 30
20 34 34 31 30 30 0d 0a 0d 0a

Handling request ANNOUNCE with URL rtsp://192.168.1.123/3121287335

RTSP/1.0 200 OK
CSeq: 2
Server: AirTunes/220.68

httpd receiving on socket 29
conn_request

SETUP rtsp://192.168.1.123/3121287335 RTSP/1.0
CSeq: 3
Transport: RTP/AVP/UDP;unicast;interleaved=0-1;mode=record;control_port=6002;timing_port=6003
User-Agent: TuneBlade/1.0 (Windows)
Client-Instance: 56B6CB929BB20486
DACP-ID: 1E5ED18983C3BB5A
Active-Remote: 166409750

Handling request SETUP with URL rtsp://192.168.1.123/3121287335
DACP-ID: 1E5ED18983C3BB5A
Active-Remote: 166409750
Transport: RTP/AVP/UDP;unicast;interleaved=0-1;mode=record;control_port=6002;timing_port=6003

RTSP/1.0 200 OK
CSeq: 3
Server: AirTunes/220.68
Content-Type: application/x-apple-binary-plist
Content-Length: 42

httpd receiving on socket 29
Connection closed for socket 29
Destroying connection
Open connections: 0

pair-pin-start

I can't mirror since it requires a PIN and there is no option described in the man pages or help to set it.
Running uxplay -d provides the following:

using system MAC address xx:xx:xx:xx:xx:xx
Initialized server socket(s)
Accepted IPv4 client on socket 38
Local: 192.168.1.10
Remote: 192.168.1.155
Open connections: 1
httpd receiving on socket 38
conn_request
Handling request GET with URL /info
INFO len = 1879041996
httpd receiving on socket 38
conn_request
Handling request POST with URL /pair-pin-start
httpd receiving on socket 38
Connection closed for socket 38
Destroying connection
Open connections: 0
uname -rsm
Linux 5.15.5-arch1-1 x86_64

gldisplay "could not find or open DRM device"

Hi, I can't solve this, on RaspberryPi.

0:00:01.124568875 9435 0x179fc60 WARN gleglgbm gstgl_gbm_utils.c:472:gst_gl_gbm_find_and_open_drm_node: Found no matching DRM devices
0:00:01.124909969 9435 0x179fc60 ERROR gldisplay gstgldisplay_gbm.c:394:gst_gl_display_gbm_new: could not find or open DRM device
0:00:01.133443405 9435 0x179fc60 WARN glwindow gstglwindow.c:293:gst_gl_window_new: Could not create window. user specified (null), creating dummy window

Full log below:
Pastebin Link

installed on RPI 4 server open connection but no mirroring

cloned latest build, then build and installed on a PI4 w/ 2GB on ubuntu server 21.10 impish

Build went fine, no errors
Server starts and accepts connections from local Macbook (12.3 beta) and iPhone 12 (IOS 15.4)

output in terminal looks fine:

pi@ubuntu:~/UxPlay$ ./uxplay
using system MAC address dc:a6:32:01:a2:fb
Initialized server socket(s)
Accepted IPv4 client on socket 27
Local: 192.168.178.105
Remote: 192.168.178.37
Open connections: 1
Client identified as User-Agent: AirPlay/610.14.1
Accepted IPv4 client on socket 29
Local: 192.168.178.105
Remote: 192.168.178.37
Open connections: 2
raop_rtp_mirror starting mirroring
raop_rtp_mirror tcp socket closed
Connection closed for socket 27
Destroying connection
Open connections: 1
Connection closed for socket 29
Destroying connection
Open connections: 0

PI is connected through HDMI to 34" screen.
Although everything looks fine no content is mirrored.

Tried through SSH and with keyboard in front of screen, same results.

RPIplay works on some server, though audio does not mirror hence wanted to use UxPlay.

Any advise?

Android Client

Is there a known Android client that works well?

Thank you!

Package for Fedora

Hi, I made a fork and added a spec file so this awesome project can be used on Fedora more easily.
From Fedora it can now be used with a simple dnf copr enable laolux/UxPlay, followed by dnf install uxplay. All dependencies should be resolved automatically.
Please let me know if you are interested in keeping the spec file for generating the rpm package here, though I am quite happy to keep it separated as not so spam the original code base with packaging related commits.
Also, if you prefer the package not to be available for direct install (for example because you are afraid packaging issues would be reported here), then please tell me so and I will remove the package from copr.
However, if you like the package being easier accessible for others, I would be happy to add a note to the readme about how to install UxPlay on Fedora using the copr package.

Connection Error. Screen appears and then disappears.

Hi there! I have just installed this software but when attempting to connect from my mac it opens a window only to immediately close it.

This is what happens in the terminal:
pi@raspi-4{colon}/UxPlay $ uxplay
using system MAC address e4:5f:01:05:86:51
Initialized server socket(s)
Accepted IPv4 client on socket 28
Local: 192.168.133.211
Remote: 192.168.133.245
Open connections: 1
Client identified as User-Agent: AirPlay/610.14.1
Accepted IPv4 client on socket 30
Local: 192.168.133.211
Remote: 192.168.133.245
Open connections: 2
raop_rtp_mirror starting mirroring
GStreamer error: No valid frames decoded before end of stream
Removing connection for socket 28
Destroying connection
Open connections: 1
Removing connection for socket 30
Destroying connection
Open connections: 0
Initialized server socket(s)
^C
Stopping...
pi@raspi-4{colon}~/UxPlay $

Why might this be happening?

Fails to stream with "GStreamer error: Internal data stream error"

I'm running UxPlay on a Radxa Zero (Amlogic S905Y) with Debian Buster on Linux 5.10.
I have installed all possible GStreamer plugins under the sun (as per this guide: https://gstreamer.freedesktop.org/documentation/installing/on-linux.html?gi-language=c ), and I'm able to launch a GStreamer window when using gst-launch-1.0 videotestsrc ! videoconvert ! autovideosink

UxPlay launches just fine, as soon as I connect from my iPad (iOS 15), I briefly see a transparent window flash, and in the terminal after "Mirroring initialized successfully" I get "GStreamer error: internal data stream error." and "Re-launching server..."

I have previously tried RPiPlay, it would hold the connection just fine, but it doesn't display a window

EDIT: also tried with -vs ximagesink and -vs glimagesink but to no avail

BUG: Illegal instruction when start

When inputting uxplay at the terminal, output

using system MAC address 04:0e:3c:::**
Initialized server socket(s)
fish: Job 1, 'uxplay' terminated by signal SIGILL (Illegal instruction)

How to solve the above problems

No window with mirror

using randomly-generated MAC address 36:96:e1:c6:89:d7

Initialized server socket(s)
Accepted IPv4 client on socket 28
Local: 10.9.2.54
Remote: 10.9.2.5
Accepted IPv4 client on socket 31
Local: 10.9.2.54
Remote: 10.9.2.5

and no window started.
looped on /feedback request

using randomly-generated MAC address 1e:87:19:30:20:0b

Initialized server socket(s)
Accepted IPv4 client on socket 24
Local: 10.9.2.54
Remote: 10.9.2.5
httpd receiving on socket 24
conn_request
Handling request GET with URL /info
INFO len = 297900300
httpd receiving on socket 24
conn_request
Handling request POST with URL /pair-setup
httpd receiving on socket 24
conn_request
Handling request POST with URL /pair-verify
httpd receiving on socket 24
conn_request
Handling request POST with URL /pair-verify
httpd receiving on socket 24
conn_request
Handling request POST with URL /fp-setup
httpd receiving on socket 24
conn_request
Handling request POST with URL /fp-setup
httpd receiving on socket 24
conn_request
Handling request SETUP with URL rtsp://10.9.2.54/2901359152534081471
DACP-ID: B857DEC4EF1349C5
Active-Remote: 2027036625
Transport: null
SETUP 1
eiv_len = 16
ekey_len = 72
fairplay_decrypt ret = 0
timing_rport = 61417
raop_ntp parse remote ip = 10.9.2.5
raop_ntp starting time
raop_rtp parse remote ip = 10.9.2.5
raop_rtp_mirror parse remote ip = 10.9.2.5
eport = 39133, tport = 52082
raop_ntp send_len = 32
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = -1628554502810687
Accepted IPv4 client on socket 31
Local: 10.9.2.54
Remote: 10.9.2.5
httpd receiving on socket 24
conn_request
Handling request GET with URL /info
INFO len = 297900300
httpd receiving on socket 24
conn_request
Handling request GET_PARAMETER with URL rtsp://10.9.2.54/2901359152534081471
httpd receiving on socket 24
conn_request
Handling request RECORD with URL rtsp://10.9.2.54/2901359152534081471
raop_handler_record
httpd receiving on socket 24
conn_request
Handling request SET_PARAMETER with URL rtsp://10.9.2.54/2901359152534081471
httpd receiving on socket 24
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
raop_ntp send_len = 32
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = 0
httpd receiving on socket 24
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
raop_ntp send_len = 32
httpd receiving on socket 24
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = 0
httpd receiving on socket 24
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
raop_ntp send_len = 32
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = 0
httpd receiving on socket 24
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
httpd receiving on socket 24
conn_request
Handling request POST with URL /feedback
raop_handler_feedback
raop_ntp send_len = 32
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = 0
httpd receiving on socket 24
conn_request
Handling request POST with URL /feedback

Package as a flatpak and submit to flathub

Making a flatpak package will make it easyer for people to install it and due to the confinement of flatpaks it will be unlikely to interfere with other programs and have bugs

Is there any way to control the window size?

Sorry, this is more like a question than an issue/bugreport, but I can't find a way to maintain the created window. I want it basically to be either maximized or fullscreened (doesn't matter which option it will be).
I tried to do two things:
– to find a gstreamer videosink that can accept window w/h or fullscreen as arguments: no luck here, the only sink which has such arguments is gl sink but the window width/height is readonly
– to find a piece of code in renderer where the window is created and pass params there: no luck here too because I just can't find a code with explicit window instantiation.
Just to clarify: I don't want to-rescale the video further, I just want a window to be maximized when the mirroring starts, now I have to click on "maximize" button provided by the window manager.

Systemd Service Requirements

I attempted to create a simple systemd service file to bring it up on startup as my personal user and it just crashes with no useful errors. Any ideas what environment the process needs to work correctly as a service? Here is my service file:

[Unit]
Description=UxPlay Airplay Mirror Service
After=network.target
Wants=network-online.target

[Service]
Restart=always
User=me
Type=simple
ExecStart=/usr/local/bin/uxplay -s 1920x1080@144
Environment='XDG_RUNTIME_DIR=/run/user/1000'

[Install]
WantedBy=multi-user.target

cmake install manpage into deprecated directory

According FHS and cmake install doc, I think the correct way to install man page should be:

install( FILES uxplay.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 )

instead of

install( FILES uxplay.1 DESTINATION man/man1 )

Current it installed into /usr/man/man1, in my system which is Gentoo Linux, I can't use man to read manpage from there.

Password or connection limit

Hi, I really love this project.

But for security in a company WiFi. Is it possible to implement a password for Login?

Maybe it could be possible to implement a maximum of connections. I can throw myself out of airplay with a seccond device. Maybe this can be prevented.

Distorted image

When I Airplay from an early gen iPad Pro, my desktop image is squished into this:
image

Altering the resolution via the -s flag doesn't seem to affect this ratio, is there a way to correct this?

Stalling after "Initialized server socket(s)" - but no firewall is active.

Well, the title says it all. I have no active firewall but UxPlay stalls after "Initialized server socket(s)", even using -d I only get my MAC adress and "Initialized server socket(s)".

UxPlay is visible on my iPad but won't connect. I use Linux Mint 20.2 and an 8th gen iPad running iPadOS 14.4.1.

Any idea what I could do about this?

After ~20 minutes my screen mirroring freeze forever

Hi, just started to use uxplay today, 1.46, then compile from git

The command is:

uxplay -s 3840x2160 -vs "waylandsink fullscreen=true" -fps 60 -as 0 -d

The problem is: after ~20 minutes screen mirror (Wayland window on Linux) freeze and on debug I see this:

POST /feedback RTSP/1.0
CSeq: 1066
DACP-ID: 92E04835971C9CF6
Active-Remote: 2323908967
User-Agent: AirPlay/600.8.1

Handling request POST with URL /feedback
raop_handler_feedback

RTSP/1.0 200 OK
CSeq: 1066
Server: AirTunes/220.68

raop_ntp send_len = 32
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = 0
raop_ntp send_len = 32
raop_ntp receive timeout
raop_ntp send_len = 32
raop_ntp receive timeout
raop_ntp send_len = 32
raop_ntp receive timeout
raop_ntp send_len = 32
raop_ntp receive timeout
raop_ntp send_len = 32
raop_ntp receive timeout
raop_ntp send_len = 32
raop_ntp receive timeout
raop_ntp send_len = 32
raop_ntp receive timeout
raop_ntp send_len = 32
raop_ntp receive timeout
raop_ntp send_len = 32
raop_ntp receive timeout
raop_ntp send_len = 32
raop_ntp receive timeout

Mac machine in this case don't drop connection
After some time RTP seems work again, but screen freezes for forever

Reconnect (e.g. disable mirroring on Mac and reenable) - impossible, MacOS just can't connect again, restart of uxplay resolve's this problem

Any ideas what is wrong?
Power savings on Linux machine was disabled (for Wi-Fi module and for PC in Gnome settings)

choppy audio

installing on ubuntu 16.04 but with nvidia card, removed gstreamer1.0-vaapi
Linux SAT 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Video works perfect now, audio is also coming but it is choppy and high pitched, sounds like everyone in haled a bunch of helium, maybe also slightly too fast. Saw that on the rpi version someone had similar problem but those options are not available for this version, but I also installed the RPiPlay on ubuntu, which works, when using the options as mentioned in the referred post, still choppy

debug output
uxplay -d -vs ximagesink -s 1920x1080@60
using randomly-generated MAC address 5e:2d:6b:c3:67:3f

Initialized server socket(s)
Accepted IPv4 client on socket 31
Local: 10.0.0.96
Remote: 10.0.0.64
Open connections: 1
httpd receiving on socket 31
conn_request
Handling request GET with URL /info
INFO len = -974112740
httpd receiving on socket 31
conn_request
Handling request POST with URL /pair-setup
httpd receiving on socket 31
conn_request
Handling request POST with URL /pair-verify
httpd receiving on socket 31
conn_request
Handling request POST with URL /pair-verify
httpd receiving on socket 31
conn_request
Handling request POST with URL /fp-setup
httpd receiving on socket 31
conn_request
Handling request POST with URL /fp-setup
httpd receiving on socket 31
conn_request
Handling request SETUP with URL rtsp://10.0.0.96/10433250987669012610
DACP-ID: FFF8EDD66112E8C9
Active-Remote: 67052714
Transport: null
SETUP 1
eiv_len = 16
ekey_len = 72
fairplay_decrypt ret = 0
timing_rport = 61480
raop_ntp parse remote ip = 10.0.0.64
raop_ntp starting time
raop_ntp local timing port socket 32 port UDP 46878
raop_rtp parse remote ip = 10.0.0.64
raop_rtp_mirror parse remote ip = 10.0.0.64
eport = 43047, tport = 46878
raop_ntp send_len = 32
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = -1633034736060039
Accepted IPv4 client on socket 33
Local: 10.0.0.96
Remote: 10.0.0.64
Open connections: 2
httpd receiving on socket 31
conn_request
Handling request GET with URL /info
INFO len = -974112740
httpd receiving on socket 31
conn_request
Handling request GET_PARAMETER with URL rtsp://10.0.0.96/10433250987669012610
httpd receiving on socket 31
conn_request
Handling request RECORD with URL rtsp://10.0.0.96/10433250987669012610
raop_handler_record
httpd receiving on socket 31
conn_request
Handling request SET_PARAMETER with URL rtsp://10.0.0.96/10433250987669012610
httpd receiving on socket 31
conn_request
Handling request SETUP with URL rtsp://10.0.0.96/10433250987669012610
DACP-ID: FFF8EDD66112E8C9
Active-Remote: 67052714
Transport: null
type = 110
streamConnectionID = 17152997732226384888
raop_rtp_mirror starting mirroring
raop_rtp_mirror local data port socket 34 port TCP 33862
Mirroring initialized successfully
raop_rtp_mirror accepting client
raop_rtp_mirror width_source = 1440.000000 height_source = 1080.000000 width = 1440.000000 height = 1080.000000
raop_rtp_mirror sps size = 18
raop_rtp_mirror pps size = 4
raop_rtp_mirror video ntp = 1633614429535841, now = 1633614429488758, latency = -47083
raop_rtp_mirror video ntp = 1633614429569176, now = 1633614429501917, latency = -67259
raop_rtp_mirror video ntp = 1633614429594177, now = 1633614429530584, latency = -63593
raop_rtp_mirror video ntp = 1633614429619179, now = 1633614429551446, latency = -67733
raop_rtp_mirror video ntp = 1633614429635845, now = 1633614429594381, latency = -41464
raop_rtp_mirror video ntp = 1633614429677515, now = 1633614429610596, latency = -66919
raop_rtp_mirror video ntp = 1633614429735851, now = 1633614429739675, latency = 3824
-----------------------------------(cut)----------------------------
raop_rtp audio: ntp = 1633614438837652, now = 1633614438478403, latency=-359249, rtp=694333607
raop_rtp audio: ntp = 1633614438848537, now = 1633614438478410, latency=-370127, rtp=694334087
raop_rtp_mirror video ntp = 1633614438565036, now = 1633614438485304, latency = -79732
httpd receiving on socket 31
conn_request
Handling request TEARDOWN with URL rtsp://10.0.0.96/10433250987669012610
raop_rtp exiting thread
httpd receiving on socket 31
conn_request
Handling request SET_PARAMETER with URL rtsp://10.0.0.96/10433250987669012610
raop_rtp_mirror video ntp = 1633614438615038, now = 1633614438540802, latency = -74236
raop_rtp_mirror width_source = 1440.000000 height_source = 1080.000000 width = 1440.000000 height = 1080.000000
raop_rtp_mirror sps size = 18
raop_rtp_mirror pps size = 4
raop_rtp_mirror tcp socket closed
httpd receiving on socket 31
conn_request
Handling request TEARDOWN with URL rtsp://10.0.0.96/10433250987669012610
raop_rtp_mirror exiting TCP thread
httpd receiving on socket 31
conn_request
Handling request TEARDOWN with URL rtsp://10.0.0.96/10433250987669012610
httpd receiving on socket 33
Connection closed for socket 33
Destroying connection
Open connections: 1
httpd receiving on socket 31
Connection closed for socket 31
Destroying connection
Open connections: 0
raop_ntp stopping time thread
raop_ntp exiting thread
raop_ntp stopped time thread
^CStopping...
Exiting HTTP thread

make fails on ubuntu 16.04

when running "make" it fails on ubuntu 16.04, libplist-dev is installed (" libplist-dev is already the newest version (1.12-3.1ubuntu0.16.04.1)."

Linux SAT 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

[100%] Linking CXX executable uxplay
lib/libairplay.a(raop.c.o): In function raop_handler_setup':
/home/jody/UxPlay/lib/raop_handlers.h:349: undefined reference to PLIST_IS_DATA'
/home/jody/UxPlay/lib/raop_handlers.h:397: undefined reference to PLIST_IS_ARRAY'
/home/jody/UxPlay/lib/raop_handlers.h:349: undefined reference to PLIST_IS_DATA'
collect2: error: ld returned 1 exit status
CMakeFiles/uxplay.dir/build.make100 recipe for target 'uxplay' failed
make[2]: *** [uxplay] Error 1
CMakeFiles/Makefile2:70: recipe for target 'CMakeFiles/uxplay.dir/all' failed
make[1]: *** [CMakeFiles/uxplay.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

Stuttering on odroid n2+

Hey I bought myself an odroid n2 +. And on my device, the movie is stuttering and has a terrible lag, but the audio is ok. How do I fix it. Is there hardware support for amlogic?

Segmentation fault

I have installed UxPlay on a debian machine. The machine can be seen through airplay on iOS devices in the same network. However, when trying to screen mirror through it, it shows a "Segmentation fault" error, I ran UxPlay in debug mode, it shows the following:

Initialized server socket(s) Accepted IPv4 client on socket 24 Local: 192.168.1.224 Remote: 192.168.1.121 Open connections: 1 httpd receiving on socket 24 conn_request Handling request GET with URL /info INFO len = 1946151172 httpd receiving on socket 24 conn_request Handling request POST with URL /pair-setup httpd receiving on socket 24 conn_request Handling request POST with URL /pair-verify httpd receiving on socket 24 conn_request Handling request POST with URL /pair-verify httpd receiving on socket 24 conn_request Handling request POST with URL /fp-setup httpd receiving on socket 24 conn_request Handling request POST with URL /fp-setup httpd receiving on socket 24 conn_request Handling request SETUP with URL rtsp://192.168.1.224/14647767658038641318 DACP-ID: [REDACTED] Active-Remote: [REDACTED] Transport: null SETUP 1 eiv_len = 16 ekey_len = 72 fairplay_decrypt ret = 0 timing_rport = 54999 raop_ntp parse remote ip = 192.168.1.121 raop_ntp starting time raop_ntp local timing port socket 26 port UDP 44549 raop_rtp parse remote ip = 192.168.1.121 raop_rtp_mirror parse remote ip = 192.168.1.121 eport = 42053, tport = 44549 raop_ntp send_len = 32 raop_ntp receive time type_t packetlen = 32 raop_ntp sync correction = -1634874414113411 Accepted IPv4 client on socket 27 Local: 192.168.1.224 Remote: 192.168.1.121 Open connections: 2 httpd receiving on socket 24 conn_request Handling request GET with URL /info INFO len = 1946151172 httpd receiving on socket 24 conn_request Handling request GET_PARAMETER with URL rtsp://192.168.1.224/14647767658038641318 httpd receiving on socket 24 conn_request Handling request RECORD with URL rtsp://192.168.1.224/14647767658038641318 raop_handler_record httpd receiving on socket 24 conn_request Handling request SET_PARAMETER with URL rtsp://192.168.1.224/14647767658038641318 httpd receiving on socket 24 conn_request Handling request SETUP with URL rtsp://192.168.1.224/14647767658038641318 DACP-ID: [REDACTED] Active-Remote: [REDACTED] Transport: null type = 110 streamConnectionID = [REDACTED] raop_rtp_mirror starting mirroring raop_rtp_mirror local data port socket 28 port TCP 38269 Mirroring initialized successfully raop_rtp_mirror accepting client raop_rtp_mirror width_source = 608.000000 height_source = 1080.000000 width = 608.000000 height = 1080.000000 raop_rtp_mirror sps size = 17 raop_rtp_mirror pps size = 4 raop_rtp_mirror video ntp = 1635023384196461, now = 1635023384141874, latency = -54587 raop_rtp_mirror video ntp = 1635023384246464, now = 1635023384149825, latency = -96639 raop_rtp_mirror video ntp = 1635023384263132, now = 1635023384161874, latency = -101258 raop_rtp_mirror video ntp = 1635023384296467, now = 1635023384199622, latency = -96845 raop_rtp_mirror video ntp = 1635023384329802, now = 1635023384229266, latency = -100536 raop_rtp_mirror video ntp = 1635023384363138, now = 1635023384271609, latency = -91529 raop_rtp_mirror video ntp = 1635023384396473, now = 1635023384300202, latency = -96271 raop_rtp_mirror video ntp = 1635023384429809, now = 1635023384337842, latency = -91967 raop_rtp_mirror video ntp = 1635023384463144, now = 1635023384371670, latency = -91474 raop_rtp_mirror video ntp = 1635023384496480, now = 1635023384403856, latency = -92624 Segmentation fault

Fullscreen mode

I have uxplay 1.44f (on archlinux/AUR) and it seems to work perfectly!
I would like to be able specify mode in which uxplay will open in fullscreen mode once device is connected.

My use case is:
I have running LXDE on raspberry4 with Kodi in fullscreen window.
Once the device gets connected to uxplay i want it to overtake the kodi focus and show mirrored video instead. once phone is disconnected i want to automaticaly return back to kodi fullscreen window.

Is it possible to have such mode?
Idealy with optional possibility to specify which monitor should display uxplay window on fullscreen in case i have multiple monitors.

Does not find dns_sd.h on void-linux

It's located in:
/usr/include/avahi-compat-libdns_sd/dns_sd.h
on void-linux, but UxPlay does not find it even if the respective package is installed.
I'll submit it to the package repository once I know what's up, and it compiles/runs successfully.

Thanks for your time.

error compiling.

image
apparently you added a new parameter videosink.c_str() but you didn't change the function's parameters itself.
btw I'm using the aur package

build fails on debian 11

hi,

probably a really simple thing but after some hours I give up. not experienced enough in compiling.

error is:

user@buildpc:~/Downloads/UxPlay/build$ make
[ 18%] Built target playfair
[ 30%] Built target llhttp
[ 84%] Built target airplay
[ 93%] Built target renderers
[ 96%] Linking CXX executable uxplay
/usr/bin/ld: lib/playfair/libplayfair.a(modified_md5.c.o): undefined reference to symbol 'sin@@GLIBC_2.2.5'
/usr/bin/ld: /lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/uxplay.dir/build.make:118: uxplay] Error 1
make[1]: *** [CMakeFiles/Makefile2:209: CMakeFiles/uxplay.dir/all] Error 2
make: *** [Makefile:149: all] Error 2

I've tried adding -lm in several places as that seems to be the way to solve this according to google.

Also tried git version and release 1.46.

Dependencies are all standard from the bullseye repositories. All needed deps should be installed.

Thanks in advance!

seems not work but no errors

installing on ubuntu 16.04 but with nvidia card, removed gstreamer1.0-vaapi
Linux SAT 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
uxplay starts, i see it on the ipad, but nothing happening on the screen, also tried the rpi version on this pc, same issue, works fine on raspberry though, any idea what I could do to get it working on pc? I assume that my pc is connected via vga should not make a difference.

./uxplay -d
using randomly-generated MAC address d6:28:dd:46:15:c5

Initialized server socket(s)
Accepted IPv4 client on socket 32
Local: 10.0.0.96
Remote: 10.0.0.64
Open connections: 1
httpd receiving on socket 32
conn_request
Handling request GET with URL /info
INFO len = 1166432284
httpd receiving on socket 32
conn_request
Handling request POST with URL /pair-setup
httpd receiving on socket 32
conn_request
Handling request POST with URL /pair-verify
httpd receiving on socket 32
conn_request
Handling request POST with URL /pair-verify
httpd receiving on socket 32
conn_request
Handling request POST with URL /fp-setup
httpd receiving on socket 32
conn_request
Handling request POST with URL /fp-setup
httpd receiving on socket 32
conn_request
Handling request SETUP with URL rtsp://10.0.0.96/11412413893314300445
DACP-ID: 42ADA2D6C4C7F6E7
Active-Remote: 1461888801
Transport: null
SETUP 1
eiv_len = 16
ekey_len = 72
fairplay_decrypt ret = 0
timing_rport = 59050
raop_ntp parse remote ip = 10.0.0.64
raop_ntp starting time
raop_ntp local timing port socket 33 port UDP 45365
raop_rtp parse remote ip = 10.0.0.64
raop_rtp_mirror parse remote ip = 10.0.0.64
eport = 37918, tport = 45365
raop_ntp send_len = 32
raop_ntp receive time type_t packetlen = 32
raop_ntp sync correction = -1632962674290389
Accepted IPv4 client on socket 34
Local: 10.0.0.96
Remote: 10.0.0.64
Open connections: 2
httpd receiving on socket 32
conn_request
Handling request GET with URL /info
INFO len = 1166432284
httpd receiving on socket 32
conn_request
Handling request GET_PARAMETER with URL rtsp://10.0.0.96/11412413893314300445
httpd receiving on socket 32
conn_request
Handling request RECORD with URL rtsp://10.0.0.96/11412413893314300445
raop_handler_record
httpd receiving on socket 32
conn_request
Handling request SET_PARAMETER with URL rtsp://10.0.0.96/11412413893314300445
httpd receiving on socket 32
conn_request
Handling request SETUP with URL rtsp://10.0.0.96/11412413893314300445
DACP-ID: 42ADA2D6C4C7F6E7
Active-Remote: 1461888801
Transport: null
type = 110
streamConnectionID = 15713346008141612446
raop_rtp_mirror starting mirroring
raop_rtp_mirror local data port socket 35 port TCP 40217
Mirroring initialized successfully
raop_rtp_mirror accepting client
raop_rtp_mirror width_source = 1440.000000 height_source = 1080.000000 width = 1440.000000 height = 1080.000000
raop_rtp_mirror sps size = 18
raop_rtp_mirror pps size = 4
raop_rtp_mirror video ntp = 1633525472716935, now = 1633525472671461, latency = -45474
raop_rtp_mirror video ntp = 1633525472750270, now = 1633525472681481, latency = -68789
raop_rtp_mirror video ntp = 1633525472775272, now = 1633525472708044, latency = -67228
raop_rtp_mirror video ntp = 1633525472800273, now = 1633525472732082, latency = -68191
raop_rtp_mirror video ntp = 1633525472816940, now = 1633525472776864, latency = -40076
raop_rtp_mirror video ntp = 1633525472858609, now = 1633525472791004, latency = -67605
raop_rtp_mirror video ntp = 1633525472908612, now = 1633525472841535, latency = -67077
raop_rtp_mirror video ntp = 1633525472958614, now = 1633525472890732, latency = -67882
raop_rtp_mirror video ntp = 1633525473008617, now = 1633525472941240, latency = -67377
raop_rtp_mirror video ntp = 1633525473058619, now = 1633525472991085, latency = -67534
raop_rtp_mirror video ntp = 1633525473108622, now = 1633525473041483, latency = -67139
raop_rtp_mirror video ntp = 1633525473158624, now = 1633525473091524, latency = -67100
raop_rtp_mirror video ntp = 1633525473208627, now = 1633525473142309, latency = -66318
raop_rtp_mirror video ntp = 1633525473258629, now = 1633525473193353, latency = -65276
raop_rtp_mirror video ntp = 1633525473308632, now = 1633525473241624, latency = -67008
raop_rtp_mirror video ntp = 1633525473358634, now = 1633525473291106, latency = -67528
raop_rtp_mirror video ntp = 1633525473408637, now = 1633525473339581, latency = -69056
raop_rtp_mirror video ntp = 1633525473441972, now = 1633525473374595, latency = -67377
raop_rtp_mirror video ntp = 1633525473475305, now = 1633525473442538, latency = -32767
raop_rtp_mirror video ntp = 1633525473500308, now = 1633525473453658, latency = -46650
raop_rtp_mirror video ntp = 1633525473550310, now = 1633525473486611, latency = -63699
raop_rtp_mirror video ntp = 1633525473600313, now = 1633525473540482, latency = -59831
raop_rtp_mirror video ntp = 1633525473650315, now = 1633525473589335, latency = -60980
raop_rtp_mirror video ntp = 1633525473700318, now = 1633525473636629, latency = -63689
raop_rtp_mirror video ntp = 1633525473741987, now = 1633525473674918, latency = -67069
raop_rtp_mirror video ntp = 1633525473791989, now = 1633525473723876, latency = -68113
raop_rtp_mirror video ntp = 1633525473841992, now = 1633525473775422, latency = -66570
raop_rtp_mirror video ntp = 1633525473891994, now = 1633525473825590, latency = -66404
raop_rtp_mirror video ntp = 1633525473941997, now = 1633525473875984, latency = -66013
raop_rtp_mirror video ntp = 1633525474000333, now = 1633525473939957, latency = -60376
raop_rtp_mirror video ntp = 1633525474050335, now = 1633525473988626, latency = -61709
raop_rtp_mirror video ntp = 1633525474100338, now = 1633525474035978, latency = -64360
raop_rtp_mirror video ntp = 1633525474150340, now = 1633525474089772, latency = -60568
raop_rtp_mirror video ntp = 1633525474200343, now = 1633525474139470, latency = -60873
raop_rtp_mirror video ntp = 1633525474250345, now = 1633525474189277, latency = -61068
raop_rtp_mirror video ntp = 1633525474292014, now = 1633525474225790, latency = -66224
raop_rtp_mirror video ntp = 1633525474342017, now = 1633525474275500, latency = -66517
raop_rtp_mirror video ntp = 1633525474400353, now = 1633525474333944, latency = -66409
raop_rtp_mirror video ntp = 1633525474450355, now = 1633525474383673, latency = -66682
raop_rtp_mirror video ntp = 1633525474508692, now = 1633525474446733, latency = -61959
^CStopping...
raop_rtp_mirror video ntp = 1633525474558694, now = 1633525474499740, latency = -58954
raop_rtp_mirror video ntp = 1633525474608697, now = 1633525474548862, latency = -59835
raop_rtp_mirror video ntp = 1633525474658699, now = 1633525474597804, latency = -60895
Removing connection for socket 32
Destroying connection
Open connections: 1
raop_ntp stopping time thread
raop_ntp exiting thread
raop_ntp stopped time thread
raop_rtp_mirror exiting TCP thread
Removing connection for socket 34
Destroying connection
Open connections: 0
Exiting HTTP thread

UxPlay decryption fails with third-party Windows AirPlay clients (AirMyPC)

UPDATED AGAIN!
( @arararar please note)

FIXED!!

The 16 byte AES key aeskey is obtained by FairPlay decryption of the 72 byte ekeyreceived from the client. The (audio) initial vector (iv) also needed for decryption is obtained from the client as the 16 byte eiv (you can see this in the debug outpu).

In UxPlay for modern Apple clients, aeskey is then decrypted a second time by a sha-512 hash with the 32 byte shared secret ecdh-secret created in the inital pairing handshake. OMITTING THIS STEP MAKES AirMyPC WORK! (This is obviously an older protocol, apple keeps adding more and more encryption as time ghoes on...)

We now have the aes (key,iv) pair for audio decription. The video (key, iv) pair are obtained by sha-512 hashing (AirPlayStreamKeyxxxx,AirPlayStreamIVxxxx) with the aeskey, where xxxx is the streamConnectionID (as text printed in %llu format) received from the client. This part of the protocol is unchanged....

[BUG] X Error of failed request: BadWindow (invalid Window parameter)

When I run uxplay and I try to connect to it I get this output:

sudo uxplay -vs xvimagesink -n aps

(gst-plugin-scanner:104669): GLib-GObject-WARNING **: 22:18:18.381: cannot register existing type 'GstQtQuick2VideoSink'

(gst-plugin-scanner:104669): GLib-GObject-CRITICAL **: 22:18:18.381: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(gst-plugin-scanner:104669): GLib-CRITICAL **: 22:18:18.381: g_once_init_leave: assertion 'result != 0' failed

(gst-plugin-scanner:104669): GStreamer-CRITICAL **: 22:18:18.381: gst_element_register: assertion 'g_type_is_a (type, GST_TYPE_ELEMENT)' failed
using system MAC address 64:6c:80:7d:22:29
Initialized server socket(s)
Accepted IPv4 client on socket 28
Local: ---.---.--.---
Remote: ---.---.--.--
Open connections: 1
Client identified as User-Agent: AirPlay/605.1
Accepted IPv4 client on socket 30
Local: ---.---.--.---
Remote: ---.---.--.--
Open connections: 2
raop_rtp_mirror starting mirroring
error: XDG_RUNTIME_DIR not set in the environment.
X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  20 (X_GetProperty)
  Resource id in failed request:  0xac00002
  Serial number of failed request:  6142
  Current serial number in output stream:  6142

another issue (antimof#77) has been filed in the old repository referencing to the same bug and the user that experienced it has the same system configuration (Arch Linux + KDE Plasma)

Add screen mirroring via USB

First, thank you for keeping this very handy tool alive!

Unfortunately, my company WiFi doesn't allow client-to-client communication. Would it be at all possible to add screen mirroring via wired connections to UxPlay?
I haven't found any solution to this particular case elsewhere, that's why I'm asking.

still problems with e.g. 3rd party windows mirrroring software, as airmypc

I think its a problem in the underlying sources (https://github.com/FD-/RPiPlay/issues/27) due to <ios9-implementation in the 3rd party software.

I am trying to offer my school the possibilty to both mirror ipads and surfaces wirelessly to our linux desktop pcs.
The ipads are working flawlessly with uxplay.
But the surfaces / windows notebooks are not working with e.g. "airmypc", i am getting the message:

... raotp_rtp_mirror.c:327: raop_rtp_mirror_thread: Assertion `nc_len > 0'

Is it possible to fix this problem?

Apple TV not showing

Hi guys. always thanks about your contributions though, I can mirror almost of app in my ipad and iphone EXCEPT Apple TV.

Whenever I play any serices of apple original, mirroring is stopped.

Is that problem of Apple? (prevent mirroring not real apple devices or something...)

Please help me :)

Lubuntu 18.04.3 needs gstreamer1.0-x

After a reinstall of Lubuntu 18.04.3 , I was not able to get uxplay to work.
0:00:01.456431080 6619 0x560031079a90 WARN waylandsink gstwaylandsink.c:333:gst_wayland_sink_find_display:<video_sink-actual-sink-wayland> warning: Failed to create GstWlDisplay: 'Failed to connect to the wayland display '(default)''

A google search suggested to install gstreamer1.0-x , and it worked!

Latency

At first the Latency between my ipad and UxPlay is like 1 second but then goes up to more than 2 minutes.

Tested on raspberry pi 4 8gb and Arch

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.