/PiDock

displaylink clone

Primary LanguageCGNU General Public License v3.0GPL-3.0

Opensource Docking station using a raspberry PI over ethernet.

xrandr output sink USB-IP http://tigervnc.org https://www.kernel.org/doc/htmldocs/drm/index.html http://1984.lsi.us.es/~pablo/docs/spae.pdf http://people.freedesktop.org/~marcheu/linuxgraphicsdrivers.pdf http://www.linuxjournal.com/article/2476

Concept

Requires kernel DRM module (with fbdev emulation? I want a console). Userland daemon connects via netlink socket. Driver must support xrandr 1.4 and function as an output sink.

Pluggable Encoder/Decoder

  • Allow OpenCL encoders using GPU
  • Multi-threaded encoding/decoding

JPEG GPU

Userland software(python?) is responsible for

Allow for DisplayPort GPIO adapter. Allowing 1 PI to power multiple displays. Ideally, this piece of hardware takes raw FB via memory mapped I/O and does the rest. Bandwidth may be an issue.

Optional middleman for network screens.

Network Protocol.(MsgPack)

  • Sink emits Beacon
  • Source receives Beacon. Connects to Mailbox.
  • Sink accepts connection, or refuses(in-use)
  • Sink sends EDID, VNC port, and authentication information to Source.
  • Source connects to Sink using libVNCServer.
  • Source authenticates over VNC(Backchannel)
  • Possible VNC Heartbeat extension to maintain connection.

Video Transfer Protocol

  • Updates only
  • Encoder/Decoder
  • JPEG encoding frames

VNC setup from server to client.

Sink(PiDock) uses ZRE to announce it's presence. Source will establish connection and authenticate. If the sink is already handling another session it should reject the connection with an error code.

After authentication sink will configure a reverse VNC port along with some means of verifying the Source connected. Backchannel? Require public-key crypto.

The Sink will then provide the equivalent of an EDID to the Source for output configuration. The source will pick an output format and then connect to the opened port.

Optional? The sink should stop broadcasting it's Beacon as long as the Source is connected.

Milestones