Created
February 8, 2026 01:01
-
-
Save kenwebb/f2228ee21d307c60a8c7cd6874975405 to your computer and use it in GitHub Desktop.
Remote Desktop - Raspberry Pi to Ubuntu
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?xml version="1.0" encoding="UTF-8"?> | |
| <!--Xholon Workbook http://www.primordion.com/Xholon/gwt/ MIT License, Copyright (C) Ken Webb, Sat Feb 07 2026 20:00:21 GMT-0500 (Eastern Standard Time)--> | |
| <XholonWorkbook> | |
| <Notes><![CDATA[ | |
| Xholon | |
| ------ | |
| Title: Remote Desktop - Raspberry Pi to Ubuntu | |
| Description: | |
| Url: http://www.primordion.com/Xholon/gwt/ | |
| InternalName: | |
| Keywords: | |
| My Notes | |
| -------- | |
| 2026 Feb 7 | |
| () https://en.wikipedia.org/wiki/Xrdp | |
| xrdp is a free and open-source implementation of Microsoft RDP (Remote Desktop Protocol) server | |
| that enables operating systems other than Microsoft Windows (such as Linux and BSD-style operating systems) | |
| to provide a fully functional RDP-compatible remote desktop experience. | |
| It works by bridging graphics from the X Window System to the client | |
| and relaying controls from the client back to X Window Server. | |
| () https://www.xrdp.org/ | |
| an open-source Remote Desktop Protocol server | |
| xrdp provides a graphical login to remote machines using RDP (Microsoft Remote Desktop Protocol). | |
| xrdp accepts connections from variety of RDP clients: | |
| FreeRDP, rdesktop, NeutrinoRDP and Microsoft Remote Desktop Client (for Windows, macOS, iOS and Android). | |
| As Windows-to-Windows Remote Desktop can, xrdp supports not only graphics remoting but also | |
| two-way clipboard transfer (text, bitmap, file) | |
| audio redirection | |
| drive redirection (mount local client drives on remote machine) | |
| RDP transport is encrypted using TLS by default. | |
| ]]></Notes> | |
| <markdown>< | |
| * **Client (Computer A - Raspberry Pi):** Download and install the NoMachine client from the same website. | |
| * NoMachine often requires creating an account, but it's generally well-regarded. | |
| **Important Considerations & Troubleshooting** | |
| * **Firewall:** Make sure your firewall (both on Computer B and potentially on your router) allows traffic on the appropriate ports. | |
| * **VNC:** Typically uses port 5900 + display number (e.g., 5901 for display :1) | |
| * **RDP:** Uses port 3389 | |
| * **SSH:** Uses port 22 | |
| * **NoMachine:** Uses port 4000 | |
| * On Ubuntu, use `sudo ufw allow <port>` to open ports. | |
| * **IP Addresses:** Make sure you know the correct IP address of Computer B. You can find it using `ip addr` or `ifconfig` on Computer B. Also, make sure both computers are | |
| on the same subnet. | |
| * **Username/Password:** You'll need a valid username and password for Computer B to authenticate. | |
| * **Desktop Environment:** If using a standalone VNC server (like `TightVNCServer`), you might need to configure the `.vnc/xstartup` file to launch your preferred desktop | |
| environment. This is usually not required with `xrdp`. | |
| * **Performance:** The Raspberry Pi 5 is capable, but performance will still be limited by its network connection and processing power. VNC and RDP are generally good | |
| choices. NoMachine often provides the best performance. X11 forwarding can be slow for a full desktop. | |
| * **Security:** For more sensitive data, consider using SSH tunneling with VNC or RDP. This encrypts the traffic between the computers. | |
| **My Recommendation (to get you up and running quickly):** | |
| 1. **On Computer B (Ubuntu):** Install `xrdp` (as described above). | |
| 2. **On Computer A (Raspberry Pi):** Install `Remmina`. | |
| 3. Connect using Remmina and specify Computer B's IP address. | |
| This combination is generally the easiest to set up and provides a reasonably good remote desktop experience. Let me know if you run into any specific problems or have further | |
| questions. Good luck! | |
| >>> Send a message (/? for help) | |
| ]]></markdown> | |
| <_-.XholonClass> | |
| <!-- domain objects --> | |
| <PhysicalSystem/> | |
| <Block/> | |
| <Brick/> | |
| <!-- quantities --> | |
| <Height superClass="Quantity"/> | |
| </_-.XholonClass> | |
| <xholonClassDetails> | |
| <Block> | |
| <port name="height" connector="Height"/> | |
| </Block> | |
| </xholonClassDetails> | |
| <PhysicalSystem> | |
| <Block> | |
| <Height>0.1 m</Height> | |
| </Block> | |
| <Brick multiplicity="2"/> | |
| </PhysicalSystem> | |
| <Blockbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[ | |
| var a = 123; | |
| var b = 456; | |
| var c = a * b; | |
| if (console) { | |
| console.log(c); | |
| } | |
| //# sourceURL=Blockbehavior.js | |
| ]]></Blockbehavior> | |
| <Heightbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[ | |
| var myHeight, testing; | |
| var beh = { | |
| postConfigure: function() { | |
| testing = Math.floor(Math.random() * 10); | |
| myHeight = this.cnode.parent(); | |
| }, | |
| act: function() { | |
| myHeight.println(this.toString()); | |
| }, | |
| toString: function() { | |
| return "testing:" + testing; | |
| } | |
| } | |
| //# sourceURL=Heightbehavior.js | |
| ]]></Heightbehavior> | |
| <Brickbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[ | |
| $wnd.xh.Brickbehavior = function Brickbehavior() {} | |
| $wnd.xh.Brickbehavior.prototype.postConfigure = function() { | |
| this.brick = this.cnode.parent(); | |
| this.iam = " red brick"; | |
| }; | |
| $wnd.xh.Brickbehavior.prototype.act = function() { | |
| this.brick.println("I am a" + this.iam); | |
| }; | |
| //# sourceURL=Brickbehavior.js | |
| ]]></Brickbehavior> | |
| <Brickbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[ | |
| console.log("I'm another brick behavior"); | |
| ]]></Brickbehavior> | |
| <SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml, | |
| <svg width="100" height="50" xmlns="http://www.w3.org/2000/svg"> | |
| <g> | |
| <title>Block</title> | |
| <rect id="PhysicalSystem/Block" fill="#98FB98" height="50" width="50" x="25" y="0"/> | |
| <g> | |
| <title>Height</title> | |
| <rect id="PhysicalSystem/Block/Height" fill="#6AB06A" height="50" width="10" x="80" y="0"/> | |
| </g> | |
| </g> | |
| </svg> | |
| ]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient> | |
| </XholonWorkbook> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment