Mobile Development: a native remote desktop client (rdesktop port win32)
The famous rdesktop running natively on windows ce and windows mobile
Intro and Background
Some times ago I found that message of Jay Sorg and retrieved a copy of his code for a native rdesktop win32 version. I played a little and got the code compile with Visual Studio 2005 with the Windows Mobile SDK.
I tried to implement windows clipboard support to enhance the transfer of texts between the client and server, but unfortunately I was not successful yet. Hopefully someone jumps in and helps enhancing the code and adds some features.
Rdesktop is open source and you can go with the wince implementation here, but if it does not work for you, you have either change the code yourself (and publish it) or find someone that is able to do for you.
There is a template uiports/xxxwin.c in the actual rdesktop source you can use as a starter to compile the actual rdesktop version for windows mobile if you manage to get all the dependencies to work. If you success, forget this post and go with this version (maybe you leave me a note?).
Why another Remote Desktop/Terminal Server Client?
The Windows Mobile Remote Desktop Client (or Remote Desktop Mobile, RDM) lacks some useful features available in the Windows CE version or the Desktop Windows version:
- No automated login
- No kiosk mode
- Function keys are not sent to server
- …
The first item is essential if you like to start a Terminal Server session without user intervention.
The second item is important for using RDM in a production environment.
The third item is useful to run applications on the Terminal Server (TS) that use Function keys.
Commercial RDM
There are some commercial remote desktop clients available for windows mobile:
- Mochasoft RDP client
“Windows 200x servers and terminal servers are not supported, as to a Microsoft patent license.” - zaDesktop
This is currently in an early state. - RDP Finster
Not really clear where this comes from.
I assume some of the commercials are either using mstscax or rdesktop code. Some time ago MS published the RDP documentation. Maybe the commercial apps did start from there. Going with the TSC COM library mststcax would be great, but who has the doc for this? For desktop PCs it is documented but not for windows mobile. If someone has a doc to this leave me a note. Then we can start to write a TSC around this library.
There are also some rewritten TSC for the desktop not using mstscax. One is called ProperJavaRDP and maybe a good starting point to rewrite a dotnet based native TSC for windows mobile.
Usage of the free opensource rdesktop-ce
You can start winrdesktop on windows mobile either with an ini file or with command line arguments:
Sample winrdesktop.ini
(place either in program dir or in root)
[main] server=192.168.128.5 port=3389 username=YourUserName password=YourPassword bpp=16 geometry=1024x768 #fullscreen
server : provide the server IP or DNS host name
port : provide the port to use for RDP, usually 3389
username : provide the login user name for the terminal client session
password : provide the password of the user
bpp : define the bits per pixel to be used (number of colors per pixel)
geometry : define the size of the remote desktop window width x height An application to be used on windows mobile devices should match the screen size of the device. For example 240×320 (QVGA). Otherwise the user has to scroll the window to get access to all of the remote screen.
fullscreen : currently not supported
UPDATE 23. nov 2010:
fullscreen now supported. Fullscreen will switch rdesktop to not show a caption and no menu bar. If geometry matches the device’s screen size, there will also be no scrollbars.
This screenshot was taken of an app I wrote running on a Windows 2003 server of a QVGA device with following winrdesktop.ini:
[main] server=192.168.128.5 port=3389 username=rdesktop password=rdesktop bpp=16 geometry=240x320 fullscreen
Rdesktop usage
Command line
WinRDesktop [-g widthxheight] [-t port] [-a bpp] [-f] [-u username] [-p password] [-d domain] [-s shell] [-c working directory] [-n host name] server-name-or-ip
options are the same as in winrdesktop.ini plus:
-d domain : specify the domain of the user login -s shell : define a shell to use on TSC -c working directory : define a working directory for the session -n host name : specify the host name to use for the client (visible on TSC)
OUTDATED: DO NOT USE, look for latest at github!
Restrictions of current code
See googlecode issues for a list of known restrictions.
Downloads
Windows Mobile Executable and INI sample file at googlecode
Source code: see googlecode
Hi,
I have a Motorola Symbol MC3090 on Windows CE5.0. I have copied all the files (exe + dll + ini) on a given directory but when I run the exe, I have a error popup “Cannot find ‘rdesktopce’ or one of this component….”.
Any ideas ?
Thank you !
“All the files”, great, and which ones did you download? See my github site.
Hello Josef,
I hope you could help me. I`d like to run rdesktop on Windows Mobile 5.0 (5.1.478)
I copy the exe, dlls and ini to a new folder : Computer\Pocket_PC\Application\rdp
But I receive an error starting rdesktopce.exe
Error: The file “redesktopce” cannot be opened. Either it is not signed with a trusted certificate, or one of its components cannot be found. You might need to reinstall or restore this file.
Could you help?
Best regards
Mark
to ALL and MARK
if you use an exe and dlls please specify what you exactly downloaded from which location.
There are several binaries available at github. The exe for CE5 based devices is at https://github.com/hjgode/rdesktopce_rdp5/tree/master/source/Windows%20Mobile%205.0%20Pocket%20PC%20SDK%20%28ARMV4I%29/Debug
The CE5 compatible DLLs are at https://github.com/hjgode/rdesktopce_rdp5/tree/master/source/dll
~josef
Hi.
Thanks for the amazing work.
As of now if the terminal loses its connection to the server it gets a tcp error and then gets stuck.
Would there be a way to change this behaviour by exiting the program in such a case.
I took a look at the source code, I was thinking of updating the error() method to achieve this.
According to the header file it should be in rdesktop.c but I can’t find this file in the project.
Maybe I’m missing something…
Thanks
Fabrice
Hello Fabrice
first of all I did not do the code but make it compile with VS.
You can exit rdesktopce by double clicking in the top middle screen area (see handle_WM_LBUTTONDBLCLK in win32.c).
~josef
Hi,
I’ve done everything you mentioned above.
I have MC3090 device, I put all libraries in one folder in Application. But ‘cannot find ‘rdesctopce’ (or one of its components). Make sure the path and filename are correct and that all the required libraries are available’.
https://ibb.co/cu8XVF
изображения
Could you help me?
Hi Alex
comments like ‘I have done everything’ or ‘I used the latest’ are useless.
You should do it in details:
Having a Windows Mobile 6.x running device go to https://github.com/hjgode/rdesktopce_rdp5/tree/master/source/binary/rdesktopce_rdp5 and download all the files.
Copy the files to a new dir on the device
Edit the ini to match your setup
Ensure the line #barcodescanner is in there if you do not have an Intermec device
Start the application
If you still get the ‘cannot find ..’ error message, download PEInfo (ie from here: http://hjgode.de/dev/tools.htm) and copy it to the device. Start PEInfo and open rdesktopce.exe. Then use PEInfo menu to get an Import report. This will list the exe’s dependencies and if all DLLs can be loaded.
~Josef
Hi,
Does anyone have issue where the screen is black when connecting to a Windows server 2012 R2?
If I use the Windows Remote Desktop Client it works fine.
When I connect to another server. Running Windows Server 2012 it works fine with RDesktop.
I use Zebra MC55A0 with Windows Mobile 6.5.3.
Best Regards Andreas
Hi,
Anyone having issue with black screen when logging in to a Windows Server 2012 R2?
The inbuilt Remote Desktop Client works fine connecting to the same server with same username and password.
When trying to connect to a Windows Server 2012, Rdesktops and inbuilt RDC works fine.
I have tried with Zebra MC55A0 WinMobile 6.5.3 and Intermec CN70 WinMobile 6.5.3. Same issue with both.
BR Andreas
Hey.
Thanks for the great work.
When you connect to Windows 10 or Windows Server 2008-2012 Remote Desktop, the connection is normal. But when you enable NLA, a connection error occurs. Systems with Windows Mobile are still relevant, but security requirements are increasing. Rdesktop-ce requires NLA mode support. You can help with this problem.
Sorry for the bad english.
Nick
Hello Nick
as Windows Mobile days are already counted, I will not put any resources on changing rdesktop-ce to support NLA.
Sorry
Josef
Hi Andreas
sorry for the late response. The black display is caused by the windows 2012 starting with the new designed start screen (Metro UI) in contrast to the old desktop view. See https://community.spiceworks.com/topic/839566-server-2012-standard-boot-to-desktop how to change that and there should be no more issue.
with regards
Josef