FAQ - AtesComp/miraclecast GitHub Wiki

Frequently Asked Questions

Does my hardware support MiracleCast requirements

Check your hardware with test-hardware-capabilities.sh

How do I capture support logs

$ sudo journalctl -f |& tee journal.log
$ sudo miracle-wifid --log-level trace |& tee wifid.log
$ sudo miracle-sinkctl --log-level trace --log-journal-level trace |& tee sink.log

Add wifid.log, sink.log and journal.log to a zip and upload to a new or existing issue. It is handy to include exact command line options used (miracle-wifid --log-level trace, miracle-sinkctl --log-level trace run 3, etc.)

Security Concerns: If you want to redact your MAC address from the logs, add this filter before tee:

  sed 's/..:..:..:..:..:../00:00:00:00:00:00/g'

Example:
  sudo miracle-wifid --log-level trace |& sed 's/..:..:..:..:..:../00:00:00:00:00:00/g' | tee wifid.log

Additionally, for DBus issues, use:

$ sudo dbus-monitor --system |& tee dbus.log

What are the Ubuntu requirements

The following packages are required to compile and run MiracleCast:

  • ubuntu-restricted-extras
  • gstreamer1.0
  • libglib2.0-dev
  • libreadline-dev
  • libudev-dev
  • libsystemd-dev
  • libusb-dev
  • build-essential

Optional packages:

  • git
  • check
  • cmake

Can I run MiracleCast on a Raspberry Pi

Choosing an Operating System (OS)

A concern, when choosing a OS image, is that MiracleCast needs a recent version of systemd (>219). The Raspbian image was not recent enough. An arch arm image had the updated systemd:

https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3

This image is based in rpi2. As of 2017, Raspbian OS (official recommended OS for raspberry pi) is based on debian stretch, and uses systemd 232 or greater:

https://packages.debian.org/stable/systemd

Choose whichever OS you want. However, check systemd version with:

$ systemctl --version

Any version greater than 219 should work with MiracleCast.

Links to Raspbian install:

The rpi1 and rpi2 devices do not include wireless NICs. A wireless NIC which support WiFi Direct will need to be attached (most modern usb wireless NICs support WiFi Direct). The rpi3 devices comes with a wireless NIC

There's a specific guide for rpi3 and arch arm raspberry pi 3

Preparing wireless interfaces

Failed to create interface p2p-dev-wlan0: -16 (Device or resource busy)

Means that the NIC used by MiracleCast is not ready to use. Something (maybe even MiracleCast) configured a wireless NIC without p2p.

Check if something restarted the normal wifi config. This is generally easy to detect as the wpa_supplicant spawned by MiracleCast has a control interface socket configured using option '-C /run/miracle/wifi/...'. The wpa_supplicant spawned by other network managers generally use option '-u' (a DBus interface)

Depending on your system, there will be a series of services and target that tries to reconfigure wpa_supplicant. Stop the services:

$ sudo systemctl stop NetworkManager
$ sudo systemctl stop wpa_supplicant

One of them should allow MiracleCast to work. When finished using MiracleCast, enable them again:

$ sudo systemctl start wpa_supplicant
$ sudo systemctl start NetworkManager

The recent MiracleCast executables should manage this for you. For example, miracle-sinkctl's set-managed command will take a NIC identified by a link number from and return it to NetworkManager. Also, miracle-dispctl's -i option will do the same for the supplied NIC id.

Miracast vs Chromecast

Many people see these technologies as similar. They are actually very different. However, the final result seems pretty similar.

Chromecast and other technologies (like AirPlay) use the same wifi process (i.e., common AP). Miracast is based on Wi-Fi Direct (No AP). This results in two devices communicating with the security level they provide (maybe none at all) instead of allowing access to a local network of unknown devices. Miracast is a "battery drainer" for this reason--it needs to keep its communication working continuously.

Microsoft OS Support

Windows support is still a "Work In Progress". You can find a Pull Request at #136. It provides a Q&D from reverse enginnering sessions from the Microsoft implementation. It is tested against Windows 10 and has been reported to works with Microsoft's wireless display adapter. Feedback is welcome.

Install DBus Policy

Copy the DBus policy .../res/org.freedesktop.miracle.conf to /etc/dbus-1/system.d/ to expose the MiracleCast DBus service.

All build systems do this in the install phase (i.e., sudo make install or sudo ninja install)