Difference between revisions of "Projector client"

From Fixme.ch
Jump to: navigation, search
(Component)
(Update and cleanup)
Line 18: Line 18:
 
Send display to projector
 
Send display to projector
 
| align="center" style="background:#90EE90;" | Good
 
| align="center" style="background:#90EE90;" | Good
| DISPLAY=:0 vncviewer -listen 0 -fullscreen -x11cursor #on pi
+
| x11vnc -connect projector.fixme.ch:5500 -noxdamage
x11vnc -connect projector.fixme.ch:5500 -noxdamage #on laptop
+
 
|-
 
|-
 
| '''PulseAudio'''
 
| '''PulseAudio'''
Line 25: Line 24:
 
| align="center" style="background:#90EE90;" | Good
 
| align="center" style="background:#90EE90;" | Good
 
| Select ''pulse@projector'' from Sound settings
 
| Select ''pulse@projector'' from Sound settings
 +
Doesn't work too well over WiFi
 
|}
 
|}
  
Line 74: Line 74:
 
| align="center" style="background:#90EE90;" | Good
 
| align="center" style="background:#90EE90;" | Good
 
| Select 'Projector' from DLNA/UPnP devices
 
| Select 'Projector' from DLNA/UPnP devices
BubbleUPNP is a good software for this
+
Works with Samsung Video/Music/Photo default app, [https://play.google.com/store/apps/details?id=com.bubblesoft.android.bubbleupnp Bubble UPnP], [https://play.google.com/store/apps/details?id=com.skifta.android.app Skifta], other DLNA/UPnP compatible apps
 
|-
 
|-
 
| '''Chromecast'''
 
| '''Chromecast'''
 
Send audio to HiFi
 
Send audio to HiFi
| align="center" style="background:#FFFFE0;" | Sometimes
+
| align="center" style="background:#F08080;" | Poor
 
| Select 'Projector' from Chromecast menu
 
| Select 'Projector' from Chromecast menu
Works with YouTube, not all apps function
+
''Please note that Chromecast is a new standard and third party implementations are not always fully functional yet.''
 
|}
 
|}
  
 
The parts still need to be automated, a web control interface is desirable. Currently the clients need to be launched manually, although this can be done via ssh - scripts are available. More clients can be added as needed, and a further control interface for the projector and stereo system will need to be put in place. ssh -p 47382 pi@62.220.135.197
 
  
 
== Goal ==
 
== Goal ==
Line 101: Line 99:
 
*** e.g 1205 for HTTP x264 streams
 
*** e.g 1205 for HTTP x264 streams
 
* Link with trigger interface?
 
* Link with trigger interface?
 
== Obstacles ==
 
* There aren't any solid similar solutions for remote screen sharing, we have to hack something together
 
 
* Will the Raspberry Pi's power be sufficient?
 
  
 
== Component ==
 
== Component ==
=== Screen sharing ===
+
=== Implemented ===
 
+
===== HTTP x264/h264 =====
+
 
+
Advantage of HTTP x264 sharing is reduced lag (RPi limited to 100mbit ethernet)
+
VLC screen sharing (screen://) on sender + omxplayer on Pi (for hardware acceleration) (reeealy sketchy atm, can't get to work)
+
 
===== VNC =====
 
===== VNC =====
 
 
xtightvncviewer on Pi
 
xtightvncviewer on Pi
 +
DISPLAY=:0 vncviewer -listen 0 -fullscreen -x11cursor #on pi (scripted already)
  
 
x11vnc or your favorite server on your laptop
 
x11vnc or your favorite server on your laptop
Line 122: Line 110:
 
Veency on iOS
 
Veency on iOS
  
DroidVNC on Android
+
DroidVNC or others on Android
  
=== AirPlay ===
+
==== AirPlay & Chromecast ====
perl-net-sdp + shairport on Pi --> http://www.raywenderlich.com/44918/raspberry-pi-airplay-tutorial works now
+
[http://www.vmlite.com/index.php?option=com_kunena&func=view&catid=23&id=10991 rPlay] is used for everything AirPlay and Chromecast. Sending music over airplay works fine, mirroring works intermittently. Chromecast works sometimes.
  
rPlay for AirPlay mirroring (sketchy)
+
'''Chromecast using rPlay does not function very well, do not hesitate to suggest alternative servers.'''
=== DLNA/UPnP ===
+
  
[https://github.com/hzeller/gmrender-resurrect This]
+
==== DLNA/UPnP ====
=== MPD ===
+
[https://github.com/hzeller/gmrender-resurrect Gmrender] is used for DLNA/UPnP. This works quite well, apps on Android phones can stream music without difficulty to the sound system.
  
sudo apt-get install mpd basically
+
==== PulseAudio ====
 +
[http://www.foell.org/justin/raspberry-pulse/ Raspberry Pi pulse audio guide.] This was a pain to set up, however now you can select 'bcm2835 ALSA Analog Stereo on pulse@projector' on your laptop that has pulseaudio. Doesn't work very well over WiFi.
  
Maybe something like http://www.raspyfi.com/ ? Maybe we can build a nice interface too.
+
=== Not Implemented===
=== Chromecast ===
+
* '''HTTP x264/h264 Desktop Mirroring''' allows for less lag/higher framerate compared with VNC, seeing as the RPi has a hardware decoder, and compression helps overcome the RPi's bandwidth limitations (100mbit). [http://www.oblivion-software.de/index.php?id=56&type=98 Installing VLC with hardware acceleration on Pi]. [http://www.waitwut.info/blog/2013/06/07/desktop-streaming-with-vlc/ Using VLC for screen sharing]. Status: to be implemented. First attempts failed.
 
+
* [https://github.com/irtimmer/limelight-pi '''Limelight'''] is an open-source Java client which allows you to stream games from your home PC (as long as you have an Nvidia GTX 600 or 700 Series graphics card and enough bandwidth on your home network) to the Raspberry Pi that’s attached to your television. Status: not implemented, may be installed if there is demand in the future.
Turns out it's not really chromecast, it's a tool that allows you to open websites automatically and in full screen. Works with general websites, youtube links (opens FS and autoplay), netflix links, and a few other things by sending a link to the pi. Sounded better when I first heard of it.
+
* '''MPD''' is a music player demon that runs on a server, and is controllable from any device connected to the network. [http://www.raspyfi.com/ RaspyFi] is a distro specifically made for this. Status: not implemented, this is currently [https://fixme.ch/wiki/MPD_Daemon handled by foo].  
 
+
* [https://github.com/lanceseidman/PiCAST '''PiCast'''] opens links and plays streaming videos in fullscreen, Chromecast style. You can open links by sending it via an URL. Status: implemented but removed due to very poor performance and difficulty in setting up correctly. Not very useful either.
[https://github.com/lanceseidman/picast PiCast]
+
* '''Synergy''' allows for remote keyboard/mouse control. Status: installed, and then removed. Why? [http://i.imgur.com/WFcCb2K.png Because].
 
+
* '''MiraCast''' offers native screen sharing for many Android devices. Status: OSS implementation wasn't available when the project started, however there is one now ([https://github.com/codemonkeyricky/piracast Piracast]) which requires a TP-Link dongle and doesn't work with DRMd material. May be implemented in the future.
=== PulseAudio ===
+
* '''RDP''' is a Windows remote desktop utility, although proprietary, there are open source clients such as [https://github.com/FreeRDP/FreeRDP FreeRDP]. Status: in the future if there is demand.
[http://www.foell.org/justin/raspberry-pulse/]
+
 
+
=== LimeLight (?) ===
+
Limelight is an open-source Java client which allows you to stream games from your home PC (as long as you have an Nvidia GTX 600 or 700 Series graphics card and enough bandwidth on your home network) to the Raspberry Pi that’s attached to your television. (You do have a Raspberry Pi attached to your television, right?) And it’s not just Steam games: any content can be streamed. Right now, only mouse and keyboard are supported, but there’s work being done to support other controllers too. So now you can play PC content from the machine upstairs in the study on that great big flatscreen monolith in the corner of your living room, from the comfort of your own sofa.
+
 
+
https://github.com/irtimmer/limelight-pi
+
 
+
=== Other ===
+
{| border="1" cellspacing="0" cellpadding="2" stye="text-align:center;" width="100%"
+
|-
+
| '''PiCast'''
+
Any
+
| Sortof
+
| Send link via online interface
+
|-
+
| '''Synergy'''
+
Linux/Mac/Win
+
| Sortof
+
| Mouse and keyboard control
+
Doesn't work at the moment
+
|-
+
|'''MiraCast'''
+
Android devices
+
| No
+
| Android screen mirroring
+
|-
+
| '''LimeLight'''
+
| No
+
| Send from nVidia GTX 700 and 800 series cards
+
|}
+
  
 
=== Control ===
 
=== Control ===
 
 
Use RPi to turn on/off projector via IR LED, also (maybe) change the input of the stereo system. [http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/]
 
Use RPi to turn on/off projector via IR LED, also (maybe) change the input of the stereo system. [http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/]
 
Synergy was also installed on the Pi to allow access remotely
 
  
 
https://github.com/afaqurk/linux-dash?utm_source=explore-newsletter&utm_medium=email&utm_term=weekly&utm_campaign=explore-email
 
https://github.com/afaqurk/linux-dash?utm_source=explore-newsletter&utm_medium=email&utm_term=weekly&utm_campaign=explore-email
  
 
== Schedule ==
 
== Schedule ==
* '''December 2013''' - Zephyz bought pi with gcmalloc, sasha and noskill, each contributed 10 CHF, and the SD Card provided by fixme/rorist. Raspbian was set up and updated, ssh access was set up (see above), and experimentation began.
+
* '''December 2013''' - Zephyz bought pi with 10 CHF contributions from gcmalloc, sasha and noskill. The SD Card was provided by fixme/rorist. Raspbian was set up and updated, ssh access was set up, and experimentation began.
* '''January 2014''' - The Raspberry Pi was mounted in a custom 3D printed thing next to the projector, all the wires were hooked up and made tidyish. PiCast, VNC, Synergy and AirPlay were installed. Development rigorous at times.  
+
* '''January 2014''' - The Raspberry Pi was mounted in a custom 3D printed holder next to the projector, all the wires were hooked up. PiCast, VNC, Synergy and AirPlay were installed.
 +
* '''February 2014''' - Proper Airplay (with screen mirroring) and Chromecast were installed. An IR receiver and LED was hooked up in order to be able to control the projector remotely. A splitter was attached to the audio line to allow for playback from both MPD and the projector without switching.
 +
* '''March 2014''' - Synergy and Picast removed due to poor performance. A DLNA/UPnP receiver was set up on the Pi to allow streaming media from devices such as Android phones & tablets. A Pulseaudio sink was also installed. We experimented with an external DSP to amplify sound, however this didn't work. Reverse VNC now runs on startup so there is no need to run script each time.
  
 
== Participants ==
 
== Participants ==
 
* [[User:Sasha|Sasha]] (Leader)
 
* [[User:Sasha|Sasha]] (Leader)
* Zephyz
+
* [[User:Francois|Francois]]
* [[User:Gcmalloc|Gcmalloc]]
+
 
* Other ppl
 
* Other ppl

Revision as of 15:23, 27 March 2014

The idea is to up an interface/client for the projector, in order to play & display video/audio over the network remotely. This will allow for less shuffling and more compatibility with a wider range of devices, for which we may not have all the cables. It also allows for mobile devices, such as phones and tablets, to share media to the projector directly.

Usage

  • SSH Acces:
ssh -p 47382 pi@projector.fixme.ch

Linux

Name Functionality Usage
Reverse VNC

Send display to projector

Good x11vnc -connect projector.fixme.ch:5500 -noxdamage
PulseAudio

Send audio to HiFi

Good Select pulse@projector from Sound settings

Doesn't work too well over WiFi


Mac

Name Functionality Usage
AirPlay

Audio/Video streams and screen mirroring

Sometimes Select 'Projector' in AirPlay
VNC

Connect from projector to your mac

Good vncviewer -FullScreen -ViewOnly your IP #on pi

Enable Scree Sharing in System Settings > Sharing #on Mac


Windows

Name Functionality Usage
VNC

Connect from projector to your PC

Good vncviewer -FullScreen -ViewOnly your IP #on pi

TightVNC


Android

Name Functionality Usage
DLNA/UPnP

Send photos/videos/pictures to projector

Good Select 'Projector' from DLNA/UPnP devices

Works with Samsung Video/Music/Photo default app, Bubble UPnP, Skifta, other DLNA/UPnP compatible apps

Chromecast

Send audio to HiFi

Poor Select 'Projector' from Chromecast menu

Please note that Chromecast is a new standard and third party implementations are not always fully functional yet.


Goal

Data goals

  • Presenters to broadcast their presentations or demonstrations remotely during workshops
  • YouTube and other streaming video to be streamed directly to the projector
  • Play music directly from personal library or music streaming services (e.g. Pandora)
  • Share project photos or videos directly from personal devices
  • Your idea here

Control goals

  • Turn on and off projector using IR signals (to allow for cooling)
  • Have a script that automatically launches the correct data source
    • Maybe use a dedicated port for streaming, then run nmap every x seconds scanning for port, and then stream from the correlated IP?
      • e.g 5905 for VNC
      • e.g 1205 for HTTP x264 streams
  • Link with trigger interface?

Component

Implemented

VNC

xtightvncviewer on Pi DISPLAY=:0 vncviewer -listen 0 -fullscreen -x11cursor #on pi (scripted already)

x11vnc or your favorite server on your laptop

Veency on iOS

DroidVNC or others on Android

AirPlay & Chromecast

rPlay is used for everything AirPlay and Chromecast. Sending music over airplay works fine, mirroring works intermittently. Chromecast works sometimes.

Chromecast using rPlay does not function very well, do not hesitate to suggest alternative servers.

DLNA/UPnP

Gmrender is used for DLNA/UPnP. This works quite well, apps on Android phones can stream music without difficulty to the sound system.

PulseAudio

Raspberry Pi pulse audio guide. This was a pain to set up, however now you can select 'bcm2835 ALSA Analog Stereo on pulse@projector' on your laptop that has pulseaudio. Doesn't work very well over WiFi.

Not Implemented

  • HTTP x264/h264 Desktop Mirroring allows for less lag/higher framerate compared with VNC, seeing as the RPi has a hardware decoder, and compression helps overcome the RPi's bandwidth limitations (100mbit). Installing VLC with hardware acceleration on Pi. Using VLC for screen sharing. Status: to be implemented. First attempts failed.
  • Limelight is an open-source Java client which allows you to stream games from your home PC (as long as you have an Nvidia GTX 600 or 700 Series graphics card and enough bandwidth on your home network) to the Raspberry Pi that’s attached to your television. Status: not implemented, may be installed if there is demand in the future.
  • MPD is a music player demon that runs on a server, and is controllable from any device connected to the network. RaspyFi is a distro specifically made for this. Status: not implemented, this is currently handled by foo.
  • PiCast opens links and plays streaming videos in fullscreen, Chromecast style. You can open links by sending it via an URL. Status: implemented but removed due to very poor performance and difficulty in setting up correctly. Not very useful either.
  • Synergy allows for remote keyboard/mouse control. Status: installed, and then removed. Why? Because.
  • MiraCast offers native screen sharing for many Android devices. Status: OSS implementation wasn't available when the project started, however there is one now (Piracast) which requires a TP-Link dongle and doesn't work with DRMd material. May be implemented in the future.
  • RDP is a Windows remote desktop utility, although proprietary, there are open source clients such as FreeRDP. Status: in the future if there is demand.

Control

Use RPi to turn on/off projector via IR LED, also (maybe) change the input of the stereo system. [1]

https://github.com/afaqurk/linux-dash?utm_source=explore-newsletter&utm_medium=email&utm_term=weekly&utm_campaign=explore-email

Schedule

  • December 2013 - Zephyz bought pi with 10 CHF contributions from gcmalloc, sasha and noskill. The SD Card was provided by fixme/rorist. Raspbian was set up and updated, ssh access was set up, and experimentation began.
  • January 2014 - The Raspberry Pi was mounted in a custom 3D printed holder next to the projector, all the wires were hooked up. PiCast, VNC, Synergy and AirPlay were installed.
  • February 2014 - Proper Airplay (with screen mirroring) and Chromecast were installed. An IR receiver and LED was hooked up in order to be able to control the projector remotely. A splitter was attached to the audio line to allow for playback from both MPD and the projector without switching.
  • March 2014 - Synergy and Picast removed due to poor performance. A DLNA/UPnP receiver was set up on the Pi to allow streaming media from devices such as Android phones & tablets. A Pulseaudio sink was also installed. We experimented with an external DSP to amplify sound, however this didn't work. Reverse VNC now runs on startup so there is no need to run script each time.

Participants