-
Notifications
You must be signed in to change notification settings - Fork 413
- My setup didn't work, how can I send info about my system? Log for support
- What dependencies are required for ubuntu? Ubuntu requirements
- Is my hardware supported? Checking hardware
- Is all software installed? Checking software
- How to run on a raspberry pi? raspberry pi instructions
- Failed to create interface p2p-dev-wlan0: -16 (Device or resource busy): bring down wifi interfaces
- Why bother, there's chromecast out there: Miracast vs Chromecast
- Is miraclecast compatible with Windows: Microsoft OS support
- No service avaliable: Install dbus policy
- Keep wifi running, use external wifi usb dongle: Using USB dongle
Check it running res/test-hardware-capabilities.sh
After install miraclecast, you can configure viewer in different ways, see config external player but default basic viewer is a gstreamer python plugin. It needs gstreamer plugins installed. You can check with test-viewer.sh:
./test-viewer.sh
testing plugins required:
test udpsrc... (passed)
test rtpjitterbuffer... (passed)
test rtpmp2tdepay... (passed)
test tsdemux... (passed)
test h264parse... (passed)
test avdec_h264... (passed)
test autovideosink... (passed)
everything installed
$ sudo journalctl -f |& tee journal.log
$ sudo miracle-wifid --log-level trace --log-date-time |& tee wifid.log
$ sudo miracle-sinkctl --log-level trace --log-journal-level trace --log-date-time |& tee sink.log
add wifid.log
, sink.log
and journal.log
to a zip and upload to a new or existing issue. Is handy to include exact command line used miracle-wifid --log-level trace
miracle-sinkctl --log-level trace run 3
etc.
Security concerns: If you're afraid to upload your mac address on logs, add this filter before tee
sed 's/..:..:..:..:..:../00:00:00:00:00:00/g'
to hide your mac address.
To provide logs for dbus you can use
$ sudo dbus-monitor --system |& tee dbus.log
- ubuntu-restricted-extras
- gstreamer1.0
- libglib2.0-dev
- libreadline-dev
- libudev-dev
- libsystemd-dev
- libusb-dev
- build-essential
optional:
- git
- check
- cmake
The only concern when choosing a OS is that miraclecast needs a recent version of systemd (>219) On first tries to install it, raspbians was not recent enough, so I use arch arm
https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3
which is based in rpi2. These days (2017) raspbian OS (official recommended OS for raspberry pi) is based on debian stretch, and comes now with systemd 232:
https://packages.debian.org/stable/systemd
So you can choose whatever OS you want, just check systemd version with
$ systemctl --version
If it is >219 is ok
- Download a image: https://www.raspberrypi.org/downloads/raspbian/
- Install it https://www.raspberrypi.org/documentation/installation/installing-images/README.md
- Build and compile miraclecast on it as usual
See rp1/2 do not include wifi card so you need to plug one which support Wifi Direct (these days I guess all usb support that). rpi3 comes with wifi card
There's a specific guide for rpi3 and arch arm raspberry pi 3
Failed to create interface p2p-dev-wlan0: -16 (Device or resource busy)
Means that interface used by miraclecast is not ready to use. Normally that means that something (many times miraclecast) left a wireless interface configured without p2p
Check if something restarted normal wifi config. It's easy to detect because wpa_supplicant spawned by miracast has a control interface socket configured by '-C /run/miracle/wifi/...' and wpa_supplicant by network managers normally was a '-u' (dbus interface)
Depending on your system there will be a series of services and target that tries to reconfig wpa_supplicant if you just kill it:
$ sudo systemctl stop NetworkManager
$ sudo systemctl stop wpa_supplicant
one of them should work. You can enable again after use miraclecast with:
$ sudo systemctl start NetworkManager
$ sudo systemctl start wpa_supplicant
Many people see these technologies as similar but they are far from being the same, although the final result seems pretty similar.
Chromecast and other technologies (like AirPlay9 are based on using all the devices under the same Wifi (i.e using an AP), while miracast is based on Wifi-Direct (No AP). This results in two devices communicating with the security level they decide two provide (maybe none at all), instead of allowing access to a local network to unknown devices. Miracast is too a battery drainer for this reason, as the need to keep communication working all the time
Microsoft extends the miracast protocol. Check extend request protocol, there's a config example too. Is tested against Windows 10, but people report it works with Microsoft wireless display adapter too. Feedback welcome.
You need to copy the dbus policy res/org.freedesktop.miracle.conf to /etc/dbus-1/system.d/ to expose miraclecast dbus service.
See all buildsystems will do this for you in the install phase (i.e. sudo make install, sudo ninja install)
after install dbus daemon needs to be reloaded. You can do restarting the system or without restart with this command:
dbus-send --system --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ReloadConfig
there's a know drawback on miraclecast. It do not allow to run simultaneously wifi and wifi direct (See https://github.com/albfan/miraclecast/issues/75). If you have two wifi network devices you can run both at same time. Supposing you use NetworkManager for network management:
nmcli device set wlan0 managed yes
nmcli device set wlan1 managed no
The interface not managed by your network manager will be used by miraclecast
- Run miraclecast on lazy manage mode:
sudo miracle-wifid --lazy-managed
then on miracle-*ctl
you can choose what link to use:
sudo miracle-sinkctl
list
set-managed 3 yes
run 3