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. Note: This is not implemented yet. Please see #4.
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.
In the root of the project directory, run sudo ./install.sh
Steps to run:
- Make sure 'NetworkManger', 'wpa_supplicant' and 'AP' are all stopped/killed.
- Make sure no instance of 'miracle-wifid' or 'miracle-sinkctl' are already running.
- Run
sudo miracle-wifid --log-level trace --log-date-time
in a terminal. - Run
sudo miracle-sinkctl -e run-vlc.sh --log-level trace --log-journal-level trace --log-date-time -- set-friendly-name VingMiracle
in a separate terminal.
OR
- Run
sudo systemctl start miracle-sink@<friendly-name>
orsudo systemctl start miracle-sink
to start - Run
sudo systemctl stop miracle-wifid
to stop
Steps for using audio through HDMI :
- Get into the directory
cd hdmi-audio-fix
- Run the script file as super user
sudo ./script.sh
- Reboot
- Verify the HDMI cards being loaded
pacmd list-cards
. If you see no soundcards, please raise an issue.
Now you should be able to cast your Windows 10/11 devices on Ving NUC.
If you want to connect the NUC to a WiFi network while MiracleCast is running, then create config file using the following command as super user (sudo su
)
wpa_passphrase <wifi_name_ssid> <password> | sudo tee ~/wpa_supplicant.conf
Restart MiracleCast.
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..)
-
gstreamer: MiracleCast rely on gstreamer to show cast its output. You can test if all needed is installed launching res/test-viewer.sh
-
wpa_supplicant: MiracleCast spawns wpa_supplicant with a custom config.
-
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/test-hardware-capabilities.sh
-
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..)
-
copy the dbus policy res/org.freedesktop.miracle.conf to
/etc/dbus-1/system.d/
To compile MiracleCast, you can choose from:
See more info on wiki Building
If you want to select the interface to start miraclecast with, add a udev rule with the script res/write-udev-rule.sh and configure miraclecast with
$ ../configure --enable-rely-udev
You can also choose the interface with --interface
option for miracle-wifid.
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
https://github.com/albfan/systemd-ubuntu-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
Use existing AUR package. Remember to enable kdbus to systemd-git dependency if you are below 221 systemd.
$ export _systemd_git_kdbus=--enable-kdbus
You can achieve installation using yaourt
If you feel confidence enough (since systemd is the entrypoint for an OS) extract instructions from arch linux AUR PKGBUILD:
-
shutdown wpa_supplicant and NetworkManager
$ systemctl stop NetworkManager.service $ systemctl stop wpa_supplicant.service
-
launch wifi daemon
$ sudo miracle-wifid &
-
launch sink control (your network card will be detected. here 3)
$ sudo miracle-sinkctl [ADD] Link: 3
-
run WiFi Display on link:
> run 3
-
Pair your machine with other miracast device (mirroring)
-
See your screen device on this machine
-
Repeat steps 1 and 2 from "use as sink"
-
launch wifi control
$ sudo miracle-wifictl
-
Enable visibility for other devices
-
Locate them using scanning
> p2p-scan
-
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 dh.herrmann@gmail.com
This fork is maintained by: Alberto Fanjul albertofanjul@gmail.com
If you have any questions, do not hesitate to contact one of the maintainers.
- Website: http://www.freedesktop.org/wiki/Software/miracle
- Original repo: git://people.freedesktop.org/~dvdhrm/miracle
- Fork repo: https://github.com/albfan/miraclecast
- Technical spec: https://www.wi-fi.org/file/wi-fi-display-technical-specification-v11 (free registration required)