Piracast (Miracast on Pi) Beta Release
This is a post on the Piracast project, source code released under GPL: https://github.com/codemonkeyricky/piracast
To compile and run, see README in the repository.
Limitations:
- Only works with TP-LINK TL-WN725N (Miracast requires hardware support, so it can't run on all Wifi dongles. I've only included the driver for this specific dongle). The specific one I have is a V2 (version 2).
- Only works with the 2014-01-07 (also work with 2013-12-20) Wheezy Raspbian image. The application will NOT work with previous version of the images because the driver has kernel version dependencies.
- Video only comes out of HDMI, audio only comes out of 3.5mm port (audio from HDMI will be in later release - ran out time).
- Does not support HDCP (the Pi doesn't provide an interface for HDCP decrypt).
Note:
- You MUST use the wifi dongle driver provided by the project. The provided driver has wifi-direct display support compiled in.
- The installation package installs a DHCP server and configures a static IP address on your wireless interface. If you don't know what that means, then you probably want to perform the next bullet.
- Exercise caution and back up your image if you are unfamiliar with Linux
Instruction & Demo Videos
Video of Piracast running:
http://www.youtube.com/watch?v=_xt3gBUbOvw&t=1m19s
Confirmed working based on feedback:
- Nexus 4
- Nexus 10
- LG G-Pad (LG-V500)
May or may not work:
- Samsung phones. Samsung patches the Android OS to include additional value adds. From what I was told depending on the firmware some Samsung phones only connects if HDCP is enabled (the Pi doesn't provide an interface for HDCP decrypt). Some users have reported getting their Galaxy S4 working, some reported otherwise. I personally tried a Galaxy Note and couldn't get it to work.
Confirmed NOT working based on feedback:
- Asus T100
- Galaxy s4
Releases: I have removed all release packages. Please refer to README in the github repository for installation instruction.
- 02/01/2014 Update: I've made some update based on feedbacks from user baumi (huge thanks), and addressed some asserts associated with m2ts interpretation. Hopefully this will address some of the issues some users are experiencing.
Please let me know if you have any questions or feedbacks.
Thank you,
Richard
To compile and run, see README in the repository.
Limitations:
- Only works with TP-LINK TL-WN725N (Miracast requires hardware support, so it can't run on all Wifi dongles. I've only included the driver for this specific dongle). The specific one I have is a V2 (version 2).
- Only works with the 2014-01-07 (also work with 2013-12-20) Wheezy Raspbian image. The application will NOT work with previous version of the images because the driver has kernel version dependencies.
- Video only comes out of HDMI, audio only comes out of 3.5mm port (audio from HDMI will be in later release - ran out time).
- Does not support HDCP (the Pi doesn't provide an interface for HDCP decrypt).
Note:
- You MUST use the wifi dongle driver provided by the project. The provided driver has wifi-direct display support compiled in.
- The installation package installs a DHCP server and configures a static IP address on your wireless interface. If you don't know what that means, then you probably want to perform the next bullet.
- Exercise caution and back up your image if you are unfamiliar with Linux
Instruction & Demo Videos
Video of Piracast running:
http://www.youtube.com/watch?v=_xt3gBUbOvw&t=1m19s
Confirmed working based on feedback:
- Nexus 4
- Nexus 10
- LG G-Pad (LG-V500)
May or may not work:
- Samsung phones. Samsung patches the Android OS to include additional value adds. From what I was told depending on the firmware some Samsung phones only connects if HDCP is enabled (the Pi doesn't provide an interface for HDCP decrypt). Some users have reported getting their Galaxy S4 working, some reported otherwise. I personally tried a Galaxy Note and couldn't get it to work.
Confirmed NOT working based on feedback:
- Asus T100
- Galaxy s4
Releases: I have removed all release packages. Please refer to README in the github repository for installation instruction.
- 02/01/2014 Update: I've made some update based on feedbacks from user baumi (huge thanks), and addressed some asserts associated with m2ts interpretation. Hopefully this will address some of the issues some users are experiencing.
Please let me know if you have any questions or feedbacks.
Thank you,
Richard
Last edited by rtang on Sun Feb 02, 2014 10:44 pm, edited 32 times in total.
Re: Piracast (Miracast on Pi) Beta Release
I think you mean the TP-LINK TL-WN725N ...
Re: Piracast (Miracast on Pi) Beta Release
Yes, you are right. I have updated the original post. Thanks.futaris wrote:I think you mean the TP-LINK TL-WN725N ...
Re: Piracast (Miracast on Pi) Beta Release
I have a problem!
When the smartphone are connecting to piracast, after of "Wireless display negotiation completed"
Tested with with nexus 4, xperita tablet z, lg g2, same error.
Thank for your work!
When the smartphone are connecting to piracast, after of "Wireless display negotiation completed"
Code: Select all
Traceback (most recent call last)
File "usr/local/lib/python2.7/dist-packages/cx_Freeze/initscripts/Console.py", line 27, in <module>
File "main.py", line 45, in <module>
File "main.py", line 17, in leased_ip_get
IndexError: list index out of range.
Thank for your work!
Re: Piracast (Miracast on Pi) Beta Release
Thanks for trying the app. Three questions:davidte wrote:I have a problem!
When the smartphone are connecting to piracast, after of "Wireless display negotiation completed"
Tested with with nexus 4, xperita tablet z, lg g2, same error.Code: Select all
Traceback (most recent call last) File "usr/local/lib/python2.7/dist-packages/cx_Freeze/initscripts/Console.py", line 27, in <module> File "main.py", line 45, in <module> File "main.py", line 17, in leased_ip_get IndexError: list index out of range.
Thank for your work!
1. Is your dhcp lease saved to the following location?
/var/lib/dhcp/dhcpd.leases
2. Can you post the content of the file?
3. What's the version of the python installed?
The app determines what IP was leased by looking at the file, then it uses the [-1] index to get the latest entry. The application is for whatever reason reporting index is out of bound (possibly due to parsing failure).
Re: Piracast (Miracast on Pi) Beta Release
1º & 2º - No, the dhcpd.leases is empty
Only this:
3º Python version 2.7.3
Is a new install of 2013-09-25 Wheezy Raspbian image
With LG G2 never goes out of
"read_all_sta"
Only this:
Code: Select all
#The format of this file is documented in the dhcpd.leases(5) manual page.
#This lease file was written by isc-dhcp-4.2.2
Is a new install of 2013-09-25 Wheezy Raspbian image
With LG G2 never goes out of
"read_all_sta"
Re: Piracast (Miracast on Pi) Beta Release
Now with Nexus 4 work fine.
With Xperia tablet z after "wps passed!"
With Xperia tablet z after "wps passed!"
Code: Select all
read_all_sta:
read_all_sta:
read_all_sta:
Wireless display negotitation completed!
Leasd IP: 192.168.2.30
Reveived 'OPTIONS * RTSP/1.0\r\nCSeq: 0\r\nRequire: org.wfa.wfda1.0\r\n\r\n'
[...]
Traceback (most recent call last):
File "usr/local/lib/python2.7/dist-packages/cx_Freeze/initscripts/Console.py", line 27, in <module>
File "main.py", line 50, in <module>
File "sink.py" line 127, in source_connect
AttributeError: 'NoneType' object has no attribute 'group'
Re: Piracast (Miracast on Pi) Beta Release
Uhm. I wrote the negotiation portion of the code based on the transaction with a Nexus 4. Seems like Xperia tablet may be returning a slightly different payload (and is causing the parsing to fail). I will attempt to include a transaction logger in the next release to help debugging these scenarios.davidte wrote:Now with Nexus 4 work fine.
With Xperia tablet z after "wps passed!"Code: Select all
read_all_sta: read_all_sta: read_all_sta: Wireless display negotitation completed! Leasd IP: 192.168.2.30 Reveived 'OPTIONS * RTSP/1.0\r\nCSeq: 0\r\nRequire: org.wfa.wfda1.0\r\n\r\n' [...] Traceback (most recent call last): File "usr/local/lib/python2.7/dist-packages/cx_Freeze/initscripts/Console.py", line 27, in <module> File "main.py", line 50, in <module> File "sink.py" line 127, in source_connect AttributeError: 'NoneType' object has no attribute 'group'
Just to confirm, so you were able to successfully setup Miracast with the Pi using a Nexus 4 (looking for some positive reinforcement here)?
-
- Posts: 18
- Joined: Sun Jun 24, 2012 1:17 pm
Re: Piracast (Miracast on Pi) Beta Release
I'm setting up my pi as soon as the wlan stick arrives. I'm using a Asus T100 (Windows 8.1 Tablet) and will post the results here.
Re: Piracast (Miracast on Pi) Beta Release
yesterday i was test your application, it works well, as you were saying in the video i test sometimes takes several times to work.
I found the following:
-The image sometimes has graphical glitches
-There are at least 2 second delay between nexus 4 actions and TV
- Sometimes error connecting jumps (need detail?)
The sound does not work (missing configuration?)
you're doing a great job! keep it up
if I can help in any way, I'm here
I found the following:
-The image sometimes has graphical glitches
-There are at least 2 second delay between nexus 4 actions and TV
- Sometimes error connecting jumps (need detail?)
The sound does not work (missing configuration?)
you're doing a great job! keep it up
if I can help in any way, I'm here
Re: Piracast (Miracast on Pi) Beta Release
Thanks for the feedback.segator wrote:yesterday i was test your application, it works well, as you were saying in the video i test sometimes takes several times to work.
I found the following:
-The image sometimes has graphical glitches
-There are at least 2 second delay between nexus 4 actions and TV
- Sometimes error connecting jumps (need detail?)
The sound does not work (missing configuration?)
you're doing a great job! keep it up
if I can help in any way, I'm here
Are you using a single HDMI connection to the TV? In this version audio only works through the 3.5mm jack right now.
Re: Piracast (Miracast on Pi) Beta Release
I did not read your message, with jack works well.
I think the next step is to implement an addon for raspbmc!
good job, impatiently await your updates
I think the next step is to implement an addon for raspbmc!
good job, impatiently await your updates

-
- Posts: 18
- Joined: Sun Jun 24, 2012 1:17 pm
Re: Piracast (Miracast on Pi) Beta Release
How do I connect the rasspberry pi to my network if the network is set to a static ip? Do I have to connect the pi with ethernet cable or do I have to setup something else?
Here's my terminal output after doing "sudo ./main"
Here's my terminal output after doing "sudo ./main"
Code: Select all
Increase rmem_default
Kill running applications
app: no process found
p2p_get_status...
Peer status: 0
Enable p2p ...
p2p_get_status...
p2p_status_get:
Peer status: 2
ad infinitum
Re: Piracast (Miracast on Pi) Beta Release
piracast use Wi-Di(Wifi Direct)la_tristesse wrote:How do I connect the rasspberry pi to my network if the network is set to a static ip? Do I have to connect the pi with ethernet cable or do I have to setup something else?
Here's my terminal output after doing "sudo ./main"
Code: Select all
Increase rmem_default Kill running applications app: no process found p2p_get_status... Peer status: 0 Enable p2p ... p2p_get_status... p2p_status_get: Peer status: 2 ad infinitum
This means that you do not use your router to connect your devices, this system conect directly the devices.
The configuration of the raspberry to your network is indifferent to piracast.
-
- Posts: 18
- Joined: Sun Jun 24, 2012 1:17 pm
Re: Piracast (Miracast on Pi) Beta Release
So how do I connect my device (asus t100 windows 8.1) to the raspberry pi if they arent on the same network?segator wrote: This means that you do not use your router to connect your devices, this system conect directly the devices.
The configuration of the raspberry to your network is indifferent to piracast.
Re: Piracast (Miracast on Pi) Beta Release
As indicated by segator, in a Miracast session the two wireless endpoints connect to each other 'directly' without going through a router (via Wifi-direct). Once a wifi connection is bridged between the two wireless endpoints, one of the wifi endpoints 'acts' as a router and issue IP address to another. In a Miracast session, the receiver (eg. Piracast) issues the IP to the sender (Asus T100).la_tristesse wrote:So how do I connect my device (asus t100 windows 8.1) to the raspberry pi if they arent on the same network?segator wrote: This means that you do not use your router to connect your devices, this system conect directly the devices.
The configuration of the raspberry to your network is indifferent to piracast.
This is also why Piracast requires a specific Wifi dongle, because Wifi-Direct requires hardware support.
Getting back to your question, my guess is that devices support Miracast either has two network interfaces, or the same interface can operate in both modes concurrently (which I have not explored yet).
So to install Piracast, you will need a connection to begin with (wired or wireless), allowing you to access the internet and install DHCP. If you followed through the instruction, you'll set static IP address on your wireless interface afterwards. After you set static IP to the wireless interface, the OS will no longer be able to access the public internet with the wireless interface, but may still get access via the wired interface. However at this point the OS may get confused about which interface to use to access the public internet, resulting in limited internet access (this is another issue I need to address).
-
- Posts: 18
- Joined: Sun Jun 24, 2012 1:17 pm
Re: Piracast (Miracast on Pi) Beta Release
Thanks for your detailed answer. My sender (asus t100) doesnt find the the receiver (raspberry pi). I did everything as describes and watched the video tutorials serval times. Heres are screenshot from the terminal output after I started piracast.

https://dl.dropboxusercontent.com/u/118 ... G_1499.JPG
Maybe the issue is related to "wpa_supplicant: no process found" or "hoastapd: no process found"
https://dl.dropboxusercontent.com/u/118 ... G_1499.JPG
Maybe the issue is related to "wpa_supplicant: no process found" or "hoastapd: no process found"
Re: Piracast (Miracast on Pi) Beta Release
Don't worry about the no process found errors - that was me being lazy and always kills relevant processes on start up. Since nothing is launched, the OS will report those errors.la_tristesse wrote:Thanks for your detailed answer. My sender (asus t100) doesnt find the the receiver (raspberry pi). I did everything as describes and watched the video tutorials serval times. Heres are screenshot from the terminal output after I started piracast.
https://dl.dropboxusercontent.com/u/118 ... G_1499.JPG
Maybe the issue is related to "wpa_supplicant: no process found" or "hoastapd: no process found"
If:
1. You are using this the exactly specified dongle dongle TP-LINK TL-WN725N
2. And you executed setup.py using sudo (have to be in superuser mode to install driver)
3. And you are using the September 25, 2013 raspberry Pi image (the driver ONLY works with this image. I had to re-compile the driver for this image due to kernel dependencies. I caught this when I tested against the image from May 2013. If you are using earlier image you may get 'unknown symbols table' or 'symbol insertion failed' or the likes during driver installation)
Then I don't know what it could be. The Miracast receivers appends certain information in the wifi broadcast frame to indicate its wifi display support capabilities. This is also how the Nexus 4 and other phones pick up Piracast as an available wifi display. Perhaps the Asus T100 is looking for certain information that the Piracast receiver is not advertising, and decides to filter Piracast out.
Re: Piracast (Miracast on Pi) Beta Release
This project is really awesome. Works perfect with Nexus 10. I would appreciate, if you could extend time, when piracast is staying connected.
Also is it somehow possible to make piracast be avialable over wlan?
Also is it somehow possible to make piracast be avialable over wlan?
Re: Piracast (Miracast on Pi) Beta Release
Thanks for the feedback. Good to know that it works well for you.Exand_0 wrote:This project is really awesome. Works perfect with Nexus 10. I would appreciate, if you could extend time, when piracast is staying connected.
Also is it somehow possible to make piracast be avialable over wlan?
As much as I'd like to make Piracast available over wlan, the wifi-direct requirement (and the hardware support) comes from the Miracast definition, and I can't change that. Unless they release a wlan friendly version of the protocol, and Android also implements the new revision, there's nothing a receiver implementation can do to enable wlan support.
Aside from AirPlay (proprietary) and Miracast (works over wifi-direct), I'm not aware of any other popular, well-supported protocols that works over wlan. If there was, I wouldn't mind spending the time investigating potential support on the Pi, as the Pi should have enough horse power to perform these types of tasks.
Re: Piracast (Miracast on Pi) Beta Release
I have a LG G-pad (LG-V500) and I got the following output.
For some reason, it doesn't successfully connect (but it does show "Piracast" under the Wi-Fi direct setting.
Any idea?
Code: Select all
Increase rmem_default...
Kill running application...
app: no process found
wpa_supplicant: no process found
p2p_get status...
p2p_status_get:
Peer status: 0
Enable p2p...
p2p_get status...
p2p_status_get:
Peer status: 2
p2p_get status...
p2p_status_get:
Peer status: 2
p2p_get status...
p2p_status_get:
Peer status: 2
p2p_get status...
p2p_status_get:
Peer status: 11
wlan0 Scan completed :
Cell 01 - Address: BE:F5:AC:DA:4B:68
ESSID:"DIRECT-"
Protocol:IEEE 802.11g
Frequency:2.437 GHz (Channel 6)
Encryption key:on
Bit Rates:54 Mb/s
IE: Unknown: DD760050F204104A0001101044000101101200020004103B0001001047001055B7F6F4E6B954F48721F61049794A74102100012010230001201024000120104200012010540008000A0050F204000510110015ED839CEC9881EC9790EC8AA4EC9794EC9790EC8AA41008000243881049000600372A000120
Quality=0/100 Signal level=96/100
p2p_get status...
p2p_status_get:
Peer status: 2
p2p_get status...
p2p_status_get:
Peer status: 8
Breaking out of loop
p2p_peer_devaddr_get:
peer_devaddr: BE:F5:AC:DA:4B:68
p2p_req_cm_get:
wlan0 p2p_get:
CM=pbc
p2p_wpsinfo:
p2p_status_get:
peer_status: 8
p2p_set_nego:
mac: BE:F5:AC:DA:4B:68
p2p_status_get:
peer_status: 10
Negotiation suceeded!
p2p_role_get:
Role: 2
p2p_opch_get:
---------------------------
wlan0 p2p_get:
---------------------------
Configuration file: p2p_hostapd.conf
drv->ifindex=3
l2_sock_recv==l2_sock_xmit=0x0x1a33630
Failed to request a scan of neighboring BSSes
+rtl871x_sta_deauth_ops, ff:ff:ff:ff:ff:ff is deauth, reason=2
rtl871x_set_key_ops
rtl871x_set_key_ops
rtl871x_set_key_ops
rtl871x_set_key_ops
Using interface wlan0 with hwaddr 64:66:b3:1e:7f:9b and ssid 'DIRECT-RT'
rtl871x_set_beacon_ops
rtl871x_set_hidden_ssid_ops
rtl871x_set_wps_assoc_resp_ie
rtl871x_set_wps_beacon_ie
rtl871x_set_wps_probe_resp_ie
rtl871x_set_key_ops
rtl871x_set_beacon_ops
rtl871x_set_hidden_ssid_ops
do_wps
Selected interface 'wlan0'
OK
wps passed!
read_all_sta:
read_all_sta:
read_all_sta:
Any idea?
-
- Posts: 18
- Joined: Sun Jun 24, 2012 1:17 pm
Re: Piracast (Miracast on Pi) Beta Release
1. Checkrtang wrote: If:
1. You are using this the exactly specified dongle dongle TP-LINK TL-WN725N
2. And you executed setup.py using sudo (have to be in superuser mode to install driver)
3. And you are using the September 25, 2013 raspberry Pi image (the driver ONLY works with this image. I had to re-compile the driver for this image due to kernel dependencies. I caught this when I tested against the image from May 2013. If you are using earlier image you may get 'unknown symbols table' or 'symbol insertion failed' or the likes during driver installation
2. Check
3. Check
I'm clueless. Must be related to the receiver device. Also the Asus T100 is confirmed to be miracast compatible: http://www.transformerforums.com/forum/ ... pport.html
Intel WiDi is intigated in Win8.1 no special Drivers needed.
Also Miracast is supported on Intel BayTrail Processors.
For me it works best with a Netgear PTV3000.
http://software.intel.com/en-us/articles/4th-generation-intel-atom-processor-based-tablet-overview wrote:Intel® Wireless Display benefits on Intel Atom processor
Intel® WiDi enables content-protected HD streaming and interactive usages between tablets and TVs. It supports full 1080p video and low latency gaming, and is Miracast compliant Intel® WiDi can be used to link health indicators as well. A few of the capabilities of Miracast-enabled apps are:
Share & Enjoy: use a big screen HDTV to enjoy and share media with family and friends
Wireless: quickly and securely connect with standard Wi-Fi to a TV without cables
Easy Set-up: simple user interface makes it easy to connect; no additional remote controls
Portable: adapter is small and light, so solution can move with you
Re: Piracast (Miracast on Pi) Beta Release
I got Piracast to work at home!thtpark wrote:I have a LG G-pad (LG-V500) and I got the following output.
wps passed!
read_all_sta:
read_all_sta:
read_all_sta:
[/code]
For some reason, it doesn't successfully connect (but it does show "Piracast" under the Wi-Fi direct setting.
Any idea?
After several read_all_sta: messages my S4 got accepted.
But if I try this setup at the Office it gets not further than read_all_sta.
At the Office there were several Devices that are Miracast enabled, perhaps Piracast could not select the right Device to enable the Stream.
Re: Piracast (Miracast on Pi) Beta Release
Yeah sorry, I don't know what it would be then.la_tristesse wrote:1. Checkrtang wrote: If:
1. You are using this the exactly specified dongle dongle TP-LINK TL-WN725N
2. And you executed setup.py using sudo (have to be in superuser mode to install driver)
3. And you are using the September 25, 2013 raspberry Pi image (the driver ONLY works with this image. I had to re-compile the driver for this image due to kernel dependencies. I caught this when I tested against the image from May 2013. If you are using earlier image you may get 'unknown symbols table' or 'symbol insertion failed' or the likes during driver installation
2. Check
3. Check
I'm clueless. Must be related to the receiver device. Also the Asus T100 is confirmed to be miracast compatible: http://www.transformerforums.com/forum/ ... pport.html
Intel WiDi is intigated in Win8.1 no special Drivers needed.
Also Miracast is supported on Intel BayTrail Processors.
For me it works best with a Netgear PTV3000.http://software.intel.com/en-us/articles/4th-generation-intel-atom-processor-based-tablet-overview wrote:Intel® Wireless Display benefits on Intel Atom processor
Intel® WiDi enables content-protected HD streaming and interactive usages between tablets and TVs. It supports full 1080p video and low latency gaming, and is Miracast compliant Intel® WiDi can be used to link health indicators as well. A few of the capabilities of Miracast-enabled apps are:
Share & Enjoy: use a big screen HDTV to enjoy and share media with family and friends
Wireless: quickly and securely connect with standard Wi-Fi to a TV without cables
Easy Set-up: simple user interface makes it easy to connect; no additional remote controls
Portable: adapter is small and light, so solution can move with you
My guess is the Piracast driver is failing to advertise certain key attribute the Asus is looking for that most other tablets aren't. I don't have access to a Asus T100, or any Windows 8 laptop for that matter at the moment. I will take a look at it when I do get my hands on one (though I don't know when that will be).
Thanks for trying though!
Re: Piracast (Miracast on Pi) Beta Release
Thank you. That's a very valuable piece of information. I've been lazy and assumed there's only one Miracast enabled device present in the Piracast code. I'll incorporate this feedback into future revisions.Minz0r wrote:I got Piracast to work at home!thtpark wrote:I have a LG G-pad (LG-V500) and I got the following output.
wps passed!
read_all_sta:
read_all_sta:
read_all_sta:
[/code]
For some reason, it doesn't successfully connect (but it does show "Piracast" under the Wi-Fi direct setting.
Any idea?
After several read_all_sta: messages my S4 got accepted.
But if I try this setup at the Office it gets not further than read_all_sta.
At the Office there were several Devices that are Miracast enabled, perhaps Piracast could not select the right Device to enable the Stream.