• Stars
    star
    3,409
  • Rank 13,117 (Top 0.3 %)
  • Language
    C
  • License
    Other
  • Created over 10 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Connect external monitors to your system via Wifi-Display specification also known as Miracast

MiracleCast - Wifi-Display/Miracast Implementation

Join the chat at https://gitter.im/albfan/miraclecast 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. 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.

Requirements

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/

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/write-udev-rule.sh 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

Ubuntu

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

Arch linux

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

Other flavours

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

Documentation

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

UIBC

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.

Autocompletion

Source res/miraclecast-completion for autocompletion

License

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

Credits

This software is originally maintained by: David Herrmann [email protected]

This fork is maintained by: Alberto Fanjul [email protected]

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

Additional urls

More Repositories

1

bash-ini-parser

Shell
133
star
2

jmeld

A visual diff and merge tool
Java
41
star
3

git-changemail

M4
18
star
4

terminator

fork of terminator with bzr2git sync capabilities
Python
18
star
5

mvnexec

bash script to find and execute java classes with main methods
Shell
18
star
6

gst-rtsp-server-wfd

This module is implemented to run miracast(wifi-display) source side using gstreamer.
C
18
star
7

systemd-ubuntu-with-dbus

systemd for Ubuntu with dbus enabled
C
13
star
8

git-find-file

Find files on git history
Shell
11
star
9

jEdit

A mature programmer's text editor
Java
11
star
10

git-ignore

Easy configuration of git ignored and excluded files
Shell
9
star
11

git-rebase-reword

amend any git commit not only last
7
star
12

PatienceMeld

Meld diff tool using patience algorithm
Python
7
star
13

aur-miraclecast

aur instructions to build miraclecast
Shell
6
star
14

git-showtool

A visual git show
Shell
5
star
15

dotfiles

A repo with configuration files for easy replication
Shell
4
star
16

rust-tree-sitter-ast-viewer

Show how to link rust-tree-sitter with all the parsers
C++
4
star
17

x-diff

Java
4
star
18

vim-git-graph

Vim Script
3
star
19

bindutils-gdb

The GNU Binutils are a collection of binary tools. https://www.gnu.org/software/binutils/
C
3
star
20

sqlworkbenchj

Java
3
star
21

scapy-gui-ipv6

Automatically exported from code.google.com/p/scapy-gui-ipv6
Python
3
star
22

gtask-example

This is the reconstruction of a question and answer from stackoverflow https://stackoverflow.com/questions/36971139/gui-becomes-unresponsive-after-clicking-the-button-using-gtk-in-c
C
3
star
23

git-backup-clean

2
star
24

rtfm

wip on documentation
C
2
star
25

SimulIDE

Real Time Electronic Circuit Simulator
C++
2
star
26

ramdebugger

free Tcl/tk debugger
Tcl
2
star
27

x-diff-c

C++
2
star
28

aur-gpaste-git

AUR gpaste package from master
Shell
2
star
29

taskwarriorandroidcli

2
star
30

ssddiff

C++
2
star
31

redmine_webodf

Integrate webodf with redmine
2
star
32

git-graph

Shell
2
star
33

git-showupstream

Shows info about defined upstreams
Shell
2
star
34

jclazz

A fork for this discontinued java decompiler
Java
2
star
35

uml2sql

Full sql code generation from UML
Java
1
star
36

aur-akira-git

AUR package for Akira
Shell
1
star
37

catdoc

catdoc - convert an MS-Office files to text
C
1
star
38

sedd

Shell
1
star
39

csv2dynhtml

A script using pandoc and python to transform csv input into dynamic html table
HTML
1
star
40

filter-word-diff

Filter diffs about indentation changes
Python
1
star
41

parcellite

Parcellite is a lightweight GTK+ clipboard manager. This is a stripped down, basic-features-only clipboard manager with a small memory footprint for those who like simplicity
C
1
star
42

gxmlviewer

C
1
star
43

dwww

Perl
1
star
44

samygochanedit

Program to reorder channels for samsung TVs
Java
1
star
45

akira-win-installer

Project to build standalone installer for Akira on windows
Shell
1
star
46

vmtools

Java
1
star
47

tree-sitter-c-parser-example

An example to use tree-sitter with C code.
C
1
star
48

scriptybase

A poor's man liquibase. Your own database sql script updater/maintainer
Shell
1
star
49

miracast-windows-sink

App implementing miracast protocol to act as a sink running under windows 10
1
star
50

git-diff-word-context

Script to limit surrounds of git diff word diff
Shell
1
star
51

kartodromo-tapia-casariego

Tapia de Casariego karting 3d render
1
star
52

git-log-interactive

Shell
1
star
53

w3m

C
1
star
54

diffmk

Java
1
star
55

ldid

ldid port to nix OS
C++
1
star
56

taskwarriorandroid

Java
1
star
57

aur-xdg-desktop-portal-gtk-git

Gtk implementation of xdg-desktop-portal (to implement window sharing)
Shell
1
star
58

kdbg

C++
1
star
59

node-tutorial

Learn node from examples
JavaScript
1
star
60

tvmanradio

Escuchar la radio en linux por internet
1
star
61

python-diff-properties

Python script to diff property files
Python
1
star
62

chunkEditor

diff chunk editor based on levenstein distance
Java
1
star
63

javafxTest

Java FX test based on https://picodotdev.github.io/blog-bitix/2015/10/javafx-scene-builder-editor-para-crear-archivos-fxml/
Java
1
star
64

jclazz-gui

GUI for the promissing java decompiler jclazz
Java
1
star
65

jclazz-original

Java
1
star
66

primefaces-tutorial

A guide to use primefaces
Java
1
star
67

cbrowser

tcl/tk browser for cscope
Tcl
1
star
68

systemd-219

1
star
69

script-manager

Shell
1
star
70

modmap

1
star
71

ant-netbeans

Shell
1
star
72

javaProperties

Output java system properties
Java
1
star
73

fsnotifier

File watcher
C
1
star
74

nerdtree-file-filter-plugin

Vim Script
1
star
75

3dm

Java
1
star
76

dbus-getwindows

Calling dbus org.gnome.Shell GetWindows from C
C
1
star
77

tepl

C
1
star
78

treeless

Shell
1
star
79

diffxml

diffxml (and patchxml) are tools for comparing and patching XML files.
Java
1
star
80

bashcov-test

Testing nested bash scripts
Shell
1
star
81

test-joysticks

App to check input from joysticks using OpenTK
C#
1
star
82

org.freedesktop.Sdk.Extension.vls

Vala Language Server Extension
1
star
83

bash-gallery

Shell
1
star
84

arduino-gps-logger

An Arduino project to build a gps logger (BN-220) with an OLED display
C++
1
star
85

rlwrap

wrapper for programs without readline funcionality
C
1
star