Internals - AtesComp/miraclecast GitHub Wiki
Internals:
The Miracast specification is implemented on MiracleCast by:
- miracle-wifid: Is a daemon which spawns a
wpa_supplicant
with special configuration to pair with other devices by Wifi P2P and manage dhcp on created network - miracle-sinkctl: Is a controller connected to
miracle-wifid
which selects interface to use and manage RSTP communication, program to play audio/video screening and UIBC (input on source from sink) interaction. - miracle-wifictl: Is a controller connected to
miracle-wifid
to use miraclecast as source (implementation not finished) - miracle-gst and gstplayer: Players for streamed video
- miracle-uibcctl: Is a controller runned in parallel with
gstplayer
to send input events
WIP:
Source Implementation:
With WIP source implementation, source side functionalities are implemented by:
- miracle-dispd: Is a daemon which maintains WiFi-Display session(s) and spawn
gstencoder
to stream your screen and audio to the sink. - miracle-dispctl: Is a front-end to control
miracle-wifid
andmiracle-dispd
for user to establish WiFi-Display session(s). - gstencoder: Encode your screen and/or audio then stream to sink.
Run as a service and access to privileged resources
WIP source implementation also added DBus and systemd service files for miracle-wifid
and miracle-dispd
, this way, the two daemons can be launched on-demand (eg. by running miracle-dispctl
).
In the systemd service files, unused caps are dropped (further fine grained permission control are needed), if any EPERM
error encountered, try to relax it from miracle-wifid.service
or miracle-dispd.service
. miracle-dipsd
also switches to the user who request to establish WiFi-Display session (the user who owns the display session) and restricts it to gain new caps by prctl()
.
Windows compatibility
With WIP windows fix you can do screen mirroring with a a Windows 10 OS as sink