You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Alberto Fanjul a13c1b7c33 Do not fail stopping existing links 3 weeks ago
.semaphore Use new semaphore 2.0 CI 2 months ago
cmake fix cmake compilation 5 years ago
m4 split monolithic to follow autotools standards 5 years ago
res Use travis as CI 2 months ago
src Do not fail stopping existing links 3 weeks ago
test remove valgrind checking since now it is optional 3 years ago
.gitignore Add meson build system 3 years ago
.travis.yml Use travis as CI 2 months ago
CMakeLists.txt Add option to use cppcheck in CMake 4 months ago
COPYING Change license to LGPL 6 years ago
LICENSE_gdhcp Initial MiracleCast Implementation 7 years ago
LICENSE_htable Initial MiracleCast Implementation 7 years ago
LICENSE_lgpl Change license to LGPL 6 years ago Adding code coverage 3 years ago
NEWS Initial MiracleCast Implementation 7 years ago Update travis build status 2 months ago Accept configure params on 3 years ago
autotools.Dockerfile Use travis as CI 2 months ago
cmake.Dockerfile Use travis as CI 2 months ago relay on PATH to find executables 4 years ago
config.h.cmake since shl_log.h does not include config.h, define BUILD_ENABLE_DEBUG through add_definitions() instead of config.h.cmake 4 years ago Use a guard to prevent dependency on pkg-config when it is not available 1 year ago
meson.Dockerfile Use travis as CI 2 months ago Set readline as required package 1 year ago
meson_options.txt Add meson build system 3 years ago
test.supp test: add valgrind memory checks 6 years ago

MiracleCast - Wifi-Display/Miracast Implementation

Join the chat at Semaphore CI Build Status Travis CI Build Status Coverage Status

The MiracleCast project provides software to connect external monitors to your system via Wi-Fi. It is compatible to the Wifi-Display specification also known as Miracast. MiracleCast implements the Display-Source as well as Display-Sink side.

The Display-Source side allows you to connect external displays to your system and stream local content to the device. A lot of effort is put into making this as easy as connecting external displays via HDMI.

On the other hand, the Display-Sink side allows you to create wifi-capable external displays yourself. You can use it on your embedded devices or even on full desktops to allow other systems to use your device as external display.


The MiracleCast projects requires the following software to be installed:

  • systemd: A system management daemon. It is used for device-management (udev), dbus management (sd-bus) and service management. Systemd >= 221 will work out of the box. For earlier versions systemd must be compiled with --enable-kdbus, even though kdbus isn't used, but only the independent, experimental sd-libraries. required: >=systemd-213

  • glib: A utility library. Used by the current DHCP implementation. Will be removed once sd-dns gains DHCP-server capabilities. required: ~=glib2-2.38 (might work with older releases, untested..)

  • check: Test-suite for C programs. Used for optional tests of the MiracleCast code base. optional: ~=check-0.9.11 (might work with older releases, untested..)

  • gstreamer: MiracleCast rely on gstreamer to show cast its output. You can test if all needed is installed launching res/

  • P2P Wi-Fi device Although widespread these days, there are some devices not compatible with Wi-Fi Direct (prior know as Wi-Fi P2P). Test yours with res/

  • copy the dbus policy res/org.freedesktop.miracle.conf to /etc/dbus-1/system.d/

Build and install

To compile MiracleCast, you can choose from:

See more info on wiki Building

Automatic interface selection with udev

If you want to select the interface to start miraclecast with, add a udev rule with the script res/ and configure miraclecast with

$ ../configure --enable-rely-udev

You can also choose the interface with --interface option for miracle-wifid.

Linux Flavours and general compilation instructions


Check your systemd version with:

$ systemctl --version

If you are on 221 or above your systemd has kdbus enabled.

If you are below 221, an alternative repo was created to install systemd with dbus

See there was interface changes on systemd 219, if you are below that version, use branch systemd-219 to compile miraclecast

See specific instructions on that repo

Arch linux

Use existing AUR package. Remember to enable kdus to systemd-git dependency if you are below 221 systemd.

$ export _systemd_git_kdbus=--enable-kdbus

You can achieve installation using yaourt

Other flavours

If you feel confidence enough (since systemd is the entrypoint for an OS) extract instructions from arch linux AUR PKGBUILD:


Steps to use it as sink

  1. shutdown wpa_supplicant and NetworkManager

    $ systemctl stop NetworkManager.service
    $ systemctl stop wpa_supplicant.service 
  2. launch wifi daemon

    $ sudo miracle-wifid &
  3. launch sink control (your network card will be detected. here 3)

    $ sudo miracle-sinkctl
    [ADD]  Link: 3
  4. run WiFi Display on link:

    > run 3
  5. Pair your machine with other miracast device (mirroring)

  6. See your screen device on this machine

Steps to use it as peer

  1. Repeat steps 1 and 2 from "use as sink"

  2. launch wifi control

    $ sudo miracle-wifictl
  3. Enable visibility for other devices

  4. Locate them using scanning

    > p2p-scan
  5. Apart from list, or show info with peer <mac> there's nothing useful here by now. For a Q&D see Using as peer


The User Input Back Channel (UIBC) is an optional WFD feature that when implemented facilitates communication of user inputs to a User Interface, present at the WFD Sink, to the WFD Source.

To use it just add --uibc on miracle-sinkctl startup. Single mouse events and key events are implemented.


Source res/miraclecast-completion for autocompletion


This software is licensed under the terms of the GNU-LGPL license. Please see ./COPYING for further information.


This software is originally maintained by: David Herrmann

This fork is maintained by: Alberto Fanjul

If you have any questions, do not hesitate to contact one of the maintainers.

Additional urls