Difference between revisions of "Projector client"

From Fixme.ch
Jump to: navigation, search
(Update and cleanup)
 
(5 intermediate revisions by one other user not shown)
Line 1: Line 1:
[[Category:Ongoing_Projects]]
+
[[Category:Closed_Projects]]
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.
+
The projector client allows users to share their content without requiring them to connect physically to the projector or sound system. This facilitates sharing of media such as music, videos, and photos; as well as sharing your desktop during workshops and presentations. The idea is that everyone can easily share just about anything, with ease, from just about any device.
 +
 
 +
<sub>[https://pad.fixme.ch/p/projector-client Todo list] for improvements and fixes</sub>
  
 
__TOC__
 
__TOC__
Line 24: Line 26:
 
| 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
+
Issues with buffer - sound may be choppy sometimes
 
|}
 
|}
  
Line 35: Line 37:
 
! width="67%" | Usage
 
! width="67%" | Usage
 
|-
 
|-
| '''AirPlay'''
+
| '''AirPlay Audio'''
Audio/Video streams and screen mirroring
+
Audio streaming from OS X/iOS system sound or iTunes
 +
| align="center" style="background:#90EE90;" | Good
 +
| Select 'Audio' in AirPlay
 +
|-
 +
| '''AirPlay Video/Screen mirroring'''
 +
Video streams and screen mirroring
 
| align="center" style="background:#FFFFE0;" | Sometimes
 
| align="center" style="background:#FFFFE0;" | Sometimes
| Select 'Projector' in AirPlay
+
| Select 'Video' in AirPlay
 +
Only works when network is uncrowded, does not transmit audio. Development abandoned.
 
|-
 
|-
 
| '''VNC'''
 
| '''VNC'''
Line 78: Line 86:
 
| '''Chromecast'''
 
| '''Chromecast'''
 
Send audio to HiFi
 
Send audio to HiFi
| align="center" style="background:#F08080;" | Poor
+
| align="center" style="background:#BFBFBF;" | Unsupported
 
| Select 'Projector' from Chromecast menu
 
| Select 'Projector' from Chromecast menu
''Please note that Chromecast is a new standard and third party implementations are not always fully functional yet.''
+
No longer supported by open source software due to Google enforcing strong encryption and verification
 
|}
 
|}
 
+
Other Apps in testing: [https://shou.tv/ Shou] (root Airplay/DLNA mirroring - works well apart from small lag), BubbleUPNP Audiocast (root xposed sound mirroring over DLNA, 20 minute trial limit), AirAudio (root, airplay/dlna, 5 minute trial limit). All 3 work well, the later two require licences which is annoying. Untested: AllStream, AllCast (untested due to absurd license limits), feel free to suggest others
  
 
== Goal ==
 
== Goal ==
Line 103: Line 111:
 
=== Implemented ===
 
=== Implemented ===
 
===== VNC =====
 
===== VNC =====
xtightvncviewer on Pi
+
xtightvncviewer in reverse VNC listening mode on Pi
 
DISPLAY=:0 vncviewer -listen 0 -fullscreen -x11cursor #on pi (scripted already)
 
DISPLAY=:0 vncviewer -listen 0 -fullscreen -x11cursor #on pi (scripted already)
  
x11vnc or your favorite server on your laptop
+
x11vnc or your favourite server on your laptop, Veency on iOS, DroidVNC or others on Android
  
Veency on iOS
+
Works well, however the frame rate is too low for videos, and the resolution can be a bit finicky. If your laptop isn't set to 720x480 or 640x480, the screen will move around with your mouse.
 
+
DroidVNC or others on Android
+
  
 
==== AirPlay & Chromecast ====
 
==== AirPlay & Chromecast ====
[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.  
+
[http://www.vmlite.com/index.php?option=com_kunena&func=view&catid=23&id=10991 rPlay] is used for AirPlay and Chromecast. Sending music over airplay works fine most of the time, mirroring works intermittently - seems to depend on the number of devices on the network. Chromecast works sometimes, it seems that Youtube works best right now. Streaming side-loaded google music or any DHCP content does not work.
  
 
'''Chromecast using rPlay does not function very well, do not hesitate to suggest alternative servers.'''  
 
'''Chromecast using rPlay does not function very well, do not hesitate to suggest alternative servers.'''  
  
 
==== DLNA/UPnP ====
 
==== DLNA/UPnP ====
[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.
+
[https://github.com/hzeller/gmrender-resurrect Gmrender] is used for DLNA/UPnP. This works excellently, apps on Android phones can stream music without difficulty to the sound system.
 +
 
 +
If you're using apps like BubbleUPNP, make sure you deactivate your personal media server so that others can't see all the music/videos/photos on your device.
  
 
==== PulseAudio ====
 
==== 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.
+
[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. There also seem to be issues with discovery, debian doesn't seem to pick it up, but ubuntu does - to be troubleshooted. The buffer also needs to be setup...
 +
 
 +
==== Last FM Scrobbling ====
 +
Scrobbles (aka shares what's currently playing) music from MPD to our Last.fm account. You can have fancy visualisations such as [https://www.last.fm/user/hackerspace/now this], and charts/stats such as [https://www.last.fm/user/hackerspace/charts this]. The scrobbling is done by [https://github.com/hrkfdn/mpdas mpdas] (thanks dgellow!).
  
 
=== Not Implemented===
 
=== 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). [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.
+
* '''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: VLC installed, but was a huge massive pain to set up with proper hardware rendering. Should work, but it's untested and un-configured yet.
 
* [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.
 
* [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.
 
* '''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].  
 
* '''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].  
Line 131: Line 142:
 
* '''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.
 
* '''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.
 
* '''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.  
 
* '''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.  
 +
* '''Spotify ''' will play most music you want, and can be used on the Pi using [http://www.woutervanwijk.nl/pimusicbox/ mopidy]. Nevertheless, it requires someone with a premium subscription. Status: if someone has a premium subscription they're willing to share, let us know.
  
 
=== Control ===
 
=== Control ===
Line 142: Line 154:
 
* '''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.
 
* '''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.
 
* '''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.
 +
* '''April/May 2014''' - Extensive attempts to get the IR controller to work, but it doesn't work due to incompatible mosfets (they require minimum 4.5v and Pi has 3.3v output).
 +
* '''June 2014''' - Set up Last.fm scrobbler. Reinstalled Shairplay as default client for Airplay seeing as rPlay works very intermittently - there are now two Airplay clients, one for Audio (works well *knock on wood*), one for video. Banging head against wall with pulseaudio buffer.
  
 
== Participants ==
 
== Participants ==

Latest revision as of 15:03, 14 November 2019

The projector client allows users to share their content without requiring them to connect physically to the projector or sound system. This facilitates sharing of media such as music, videos, and photos; as well as sharing your desktop during workshops and presentations. The idea is that everyone can easily share just about anything, with ease, from just about any device.

Todo list for improvements and fixes

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

Issues with buffer - sound may be choppy sometimes


Mac

Name Functionality Usage
AirPlay Audio

Audio streaming from OS X/iOS system sound or iTunes

Good Select 'Audio' in AirPlay
AirPlay Video/Screen mirroring

Video streams and screen mirroring

Sometimes Select 'Video' in AirPlay

Only works when network is uncrowded, does not transmit audio. Development abandoned.

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

Unsupported Select 'Projector' from Chromecast menu

No longer supported by open source software due to Google enforcing strong encryption and verification

Other Apps in testing: Shou (root Airplay/DLNA mirroring - works well apart from small lag), BubbleUPNP Audiocast (root xposed sound mirroring over DLNA, 20 minute trial limit), AirAudio (root, airplay/dlna, 5 minute trial limit). All 3 work well, the later two require licences which is annoying. Untested: AllStream, AllCast (untested due to absurd license limits), feel free to suggest others

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 in reverse VNC listening mode on Pi DISPLAY=:0 vncviewer -listen 0 -fullscreen -x11cursor #on pi (scripted already)

x11vnc or your favourite server on your laptop, Veency on iOS, DroidVNC or others on Android

Works well, however the frame rate is too low for videos, and the resolution can be a bit finicky. If your laptop isn't set to 720x480 or 640x480, the screen will move around with your mouse.

AirPlay & Chromecast

rPlay is used for AirPlay and Chromecast. Sending music over airplay works fine most of the time, mirroring works intermittently - seems to depend on the number of devices on the network. Chromecast works sometimes, it seems that Youtube works best right now. Streaming side-loaded google music or any DHCP content does not work.

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 excellently, apps on Android phones can stream music without difficulty to the sound system.

If you're using apps like BubbleUPNP, make sure you deactivate your personal media server so that others can't see all the music/videos/photos on your device.

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. There also seem to be issues with discovery, debian doesn't seem to pick it up, but ubuntu does - to be troubleshooted. The buffer also needs to be setup...

Last FM Scrobbling

Scrobbles (aka shares what's currently playing) music from MPD to our Last.fm account. You can have fancy visualisations such as this, and charts/stats such as this. The scrobbling is done by mpdas (thanks dgellow!).

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: VLC installed, but was a huge massive pain to set up with proper hardware rendering. Should work, but it's untested and un-configured yet.
  • 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.
  • Spotify will play most music you want, and can be used on the Pi using mopidy. Nevertheless, it requires someone with a premium subscription. Status: if someone has a premium subscription they're willing to share, let us know.

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.
  • April/May 2014 - Extensive attempts to get the IR controller to work, but it doesn't work due to incompatible mosfets (they require minimum 4.5v and Pi has 3.3v output).
  • June 2014 - Set up Last.fm scrobbler. Reinstalled Shairplay as default client for Airplay seeing as rPlay works very intermittently - there are now two Airplay clients, one for Audio (works well *knock on wood*), one for video. Banging head against wall with pulseaudio buffer.

Participants