GithubHelp home page GithubHelp logo

jean343 / rpi-gpu-rdpclient Goto Github PK

View Code? Open in Web Editor NEW
81.0 81.0 400.0 120 KB

Hardware accelerated raspberry pi client for windows PC

License: MIT License

CMake 1.58% C++ 40.25% C 57.14% Cuda 1.04%

rpi-gpu-rdpclient's Introduction

RPI-GPU-rdpClient

Video on youtube: http://youtu.be/3HJuHhiXxuE

Hardware accelerated raspberry pi client for windows PC. It is more a proof-of-concept to show that OpenMAX can be used as a RDP viewer rather than a finished product. There is no authentication, use at your own risk.

It uses a NVIDIA graphic card to encode H.264 video, and OpenMAX to display the video. It can achieve 1080P 60FPS RDP on a RPI with a relatively low latency of ~200ms on two monitors. When the GPU is not accessible on the server, it falls back to CPU encoding at a lower FPS, around 10FPS depending on the CPU. It uses DXGI for accelerated desktop capture in Windows 8 It can work in a Virtual machine in order to be a true thin client.

To compile the client on the Raspberry PI

It needs the following packages. I started on a clean version of the Raspberian OS.

sudo apt-get install cmake
sudo apt-get install libboost-thread-dev libboost-system-dev
sudo apt-get install libx11-dev

To compile ilclient:

cd /opt/vc/src/hello_pi
sudo ./rebuild.sh

To compile the RDP client:

git clone https://github.com/jean343/RPI-GPU-rdpClient.git
cd RPI-GPU-rdpClient/RPI-Client
mkdir build && cd build/
cmake ..
make

To run the client

./client

###To compile the server in windows###

To run the server

./server monitor 0 port 8080

Contribute

Want to be part of the project? Great! All are welcome! We will get there quicker together :) Whether you find a bug, have a great feature request feel free to get in touch.

Known issues and limitations

  • There is no audio
  • There is no authentication, use only in a local LAN or under a VPN.
  • The software falls back to CPU encoding in a Virtual Machine, it is fast as it uses the x264 superfast preset, but the H.264 quality is reduced.

NOTES

From https://github.com/Hexxeh/rpi-update, update your pi:

sudo rpi-update

Update software:

sudo apt-get update && sudo apt-get upgrade

rpi-gpu-rdpclient's People

Contributors

jean343 avatar pawangamingxpro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rpi-gpu-rdpclient's Issues

Server crashes when client tries to connect

I manage to start server, but as soon as client starts to connect server crashes. Here is what I get on server:

C:\Users\ReNNo\Desktop\rPi Streaming\RPI-GPU-rdpClient-master\Server\build\Release>server monitor 0 port 8080
Version 0.9
monitor : 0
port : 8080
Encoding input : "(null)"
output : "(null)"
codec : "H264"
size : 1536x864
bitrate : 1024000 bits/sec
vbvMaxBitrate : 1024000 bits/sec
vbvSize : 51200 bits
fps : 20 frames/sec
rcMode : VBR
goplength : 200
B frames : 0
QP : 28
Input Format : YUV 420
preset : LOW_LATENCY_DEFAULT
Picture Structure : Frame Mode
devicetype : CUDA
Output 0: [\.\DISPLAY1] [attached] (0, 0, 1536, 864)
Failed to get duplicate output

Here is what I get on client:

pi@raspberrypi:/opt/vc/src/hello_pi/RPI-GPU-rdpClient/RPI-Client/build $ ./client 172.20.116.78 8080
Version 0.9
Open display[0]...
Display is 1920 x 1200
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injectorboost::system::system_error >'
what(): read: Connection reset by peer
Aborted

Any idea what is causing this problem?
btw, I'm using Windows 10 on server.

Cheers,

Compile the server in windows

"Install CMAKE and Boost
In cmake under the Server folder
Set BOOST_ROOT to the root of the Boost folder
Build, I used Visual Studio"

Can you please specify exactly where to add the Boost folder root?

Server does not compile in VS 2019

Hey Jean,

Thanks for this, I've been looking for a GPU accelerated remote desktop solution that works with RPI.

I'm having a bit of trouble building the server in VS. I'm on Windows 10, using CMAKE 3.22.0, VS 2019, and Cuda 10.0 and Cuda 11

Upon building the solution, I am getting identifier undefined errors as well as syntax errors.

What am I doing wrong? Any help would greatly be appreciated.
Errors1
Errors2

Compile the server in Linux

Please help me to compile this server in Linux (Kubuntu).
Or in Linux we have more easy way to organise this:
I want to show XBMC, started on server on one or several Raspberry Pi.
Is this possible with this RPI-GPU-rdpClient.

it doesn't implement the microsoft RDP protocol, does it? I want to port the server for linux, using NvFBC instead of DX.

I'm just wondering if you really using the RDP protocol, or if the rdp in the name is just for "remote Desktop"...

But I'm very interested in build the server in linux, as an attempt to create a faster remote desktop solution in linux, that can support 30 or even 60fps in 4k. (like parsec does in windows!)

Although the final goal is not for gaming, I want to use gaming as a sort of latency/quality "benchmark"... If I can use it for gaming (like parsec), it's more than perfect to use for VFX desktop applications, for example.

Would you have some tips on what I would need to re-write in order for the server to work in Linux? (apart from adding NvFBC->NvEnc to the capture)

Have you ever tried running the server on a linux machine before?

Have you ever attempt to run the client on a linux machine, other than raspberryPi with openMax?

thanks in advance...
-H

Unable to connect to Windows server

I've installed all of the prerequisites and compiled the source, but when I execute it with an IP and port number it just closes for me. Here is what I receive:

pi@raspberrypi ~/RPI-GPU-rdpClient/RPI-Client/build $ ./client 192.168.1.10 3389 
Version 0.9
Open display[0]...
Display is 1920 x 1080
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >'
  what():  write: Connection reset by peer
Aborted

Going to try rebooting and see if that helps, any ideas?

Unable to Compile

Hi there,

Have been trying for hours trying to get this to compile by following your instructions.

I appear to be able to generate server.sln correctly with cmake but run into multiple issues when I choose to build in Visual Studio.

Currently using Visual Studio 2015 to build on. Would love to get this working as it looks amazing from the youtube video. Errors are as follows.

Severity Code Description Project File Line Suppression State
Warning C4002 too many actual parameters for macro '_T' server c:\pi\server\wddm.h 290
Warning C4473 'printf' : not enough arguments passed for format string server c:\pi\server\wddm.h 290
Warning C4018 '>=': signed/unsigned mismatch server C:\Pi\Server\server.cpp 253
Warning C4018 '<': signed/unsigned mismatch server C:\Pi\Server\server.cpp 255
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avcodec.lib(dbpkbs00166.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avcodec.lib(dbpkbs00114.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avcodec.lib(dbpkbs00157.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avcodec.lib(dbpkbs00116.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avcodec.lib(dbpkbs00056.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avcodec.lib(dbpkbs00044.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avcodec.lib(dbpkbs00142.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avcodec.lib(dbpkbs00134.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avutil.lib(dhdkbs00181.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avutil.lib(dhdkbs00182.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avutil.lib(dhdkbs00327.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avutil.lib(dhdkbs00141.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avutil.lib(dhdkbs00145.o) 1
Error LNK2026 module unsafe for SAFESEH image. server C:\Pi\Server\Pi\avutil.lib(dhdkbs00244.o) 1
Error LNK1281 Unable to generate SAFESEH image. server C:\Pi\Server\Pi\Release\server.exe 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.