The connectd daemon is used on your target device to create remote.it Services. The same daemon is used on the initiator side of a P2P connection, although in a different mode. The rest of this guide describes configuration of connectd on the initiator side.
The example below shows you how to download and run connectd.exe on your Windows machine. Open a command prompt, create a directory to keep P2P related files in, and cd to that directory; we will use a directory called P2P. Next, enter the commands as shown below. We are going to be using PowerShell for all commands in this example.
C:\Users\test\Downloads\remot3.it\P2P>powershellWindows PowerShellCopyright (C) Microsoft Corporation. All rights reserved.
Copy and paste the line below, starting with wget, to your PowerShell console. Press the Enter key to download the connectd.exe file.
PS > wget https://github.com/remoteit/misc_bins_and_scripts/raw/master/connectd/connectd.exe -O connectd.exePS >
To confirm that you have the correct connectd daemon, and that your network is configured correctly, run .\connectd.exe -n at the command line. You may have to configure any virus checker that you are using in order to allow connectd.exe to be run. The output should be similar to the following:
PS C:\Users\test\Downloads\remot3.it\P2P> .\connectd.exe -nConnectd built Apr 20 2019 at 16:38:16 Now Starting UpVersion 4.6 - (c)2019 remot3.it, Inc. All Rights ReservedBuilt with NATPMP BCASTER MALLOC_POOL RESOLVE BIGBUF pool=524288WIN32 Versionalloc poolRunning Network Diagnostics---------------------------------Checking if DNS works ... .[OK]Checking TCP connectivity to remote.it...<oip=192.168.1.160> [OK]Checking UDP connectivity to remote.it...Send to 18.104.22.168:5959  [mip=22.214.171.124] [oport=59612 mport=59612] [preserve port]Send to 126.96.36.199:5960  [mip=188.8.131.52] [oport=59612 mport=59612] [no remap] [preserve port]Send to 184.108.40.206:5961  [mip=220.127.116.11] [oport=59612 mport=59612] [no remap] [preserve port different IP] [OK]Checking if NAT-PMP Router is found...[Pub IP 18.104.22.168][epoch 4892265][FOUND]This router preserves ports, this is optimal.This router doesn't remap new connections to new ports.UPNP is enabled on this router, this is optimal.Static Pool FreeEndian : LittleSHA1 test:passed.RC4 test:passedXXTEA test:passed.Looks compatible.PS C:\Users\test\Downloads\remot3.it\P2P>
Next, we show 3 ways you might use the connectd daemon as a P2P initiator.
Using explicit command line parameters in foreground mode
Using explicit command line parameters in background mode
Using a provisioning file in background mode.
If you are using the P2P connection for an application that does not require the use of the command line (e.g. a web browser), then you may run connectd in the foreground (also called interactive mode). When you are done, you can simply type CTRL-C to terminate the connectd daemon. Foreground mode is demonstrated in option 1 below.
Foreground mode is useful for debugging if you have any problems initiating a P2P connection as it will show you connection status.
The examples supplied for options 2 and 3 use the PowerShell "Start-Process" command to force the connectd daemon to run in the background. This allows you to continue to use the same command prompt for an SSH connection, for example.
If you are developing your own apps including P2P mode, you'll need to keep track of the process ID (pid) so that you can kill the connectd daemon when you are done using the P2P connection. Examples 2 and 3 show one way this can be done.
connectd.exe -c \BASE_64_USER \BASE_64_PASSWORD \DEVICE_UID \BIND_PORT \ENCRYPTION_MODE \LOCAL_HOST_ADDRESS \MAXOUTSTANDING
run daemon in P2P initiator mode
Your Base64 encoded username (probably your email)
Your Base64 encoded remote.it password
The ID (also called address) of the device you want to connect to
The port you want to bind the connection to on your local machine (e.g. 33000)
The level of encryption to use. Choices are:
NOTE: Please use mode 2. Modes 0 and 1 are not secure.
Local address to use for this connection, usually 127.0.0.1.
Maximum number of packets allowed outstanding on a connection. Set to 12.
.\connectd.exe -s -c \eW91cm5hbWVAZXhhbXBsZS5jb20= \ # Base64 encoded username/email: firstname.lastname@example.orgVwM3JzZWtyZXQh \ # Base64 encoded password: sup3rsekret!80:00:00:00:00:00:00:F1 \ # Device UID on remote.itT33000 \ # Port to bind to, prefixed with "T"2 \ # Encryption mode (2 = XXTEA)127.0.0.1 \ # Localhost address12 # Maximum number of outstanding packets
run daemon in P2P initiator mode
display additional status information
The above command all on one line is:
.\connectd.exe -s -c eW91cm5hbWVAZXhhbXBsZS5jb20= c3VwM3JzZWtyZXQh 80:00:00:00:00:00:00:F1 T33000 2 127.0.0.1 12
Once the connection is established, (ten seconds or less) you should see the following:
...Starting Proxy on port 33000 on index 1.Proxy started.
Now you can use your established and running P2P connection using 127.0.0.1 on port 33000. For example, you can type 127.0.0.1:33000 in a browser window for a web application, or start an ssh connection to 127.0.0.1 port 33000 in a new console window. You can hit CTRL-C at any time in the console window that you used to start the connection above in order to terminate the P2P connection.
Script p2p.ps1 automates some of the tasks needed to make a repeatable P2P connection to a single Service. Download the p2p.zip file, then extract the p2p.ps1 script to the same folder where you downloaded connectd.exe on your system.
Edit the following values in the p2p.ps1 script as needed, then save the file with your changes:
uid : the UID of the Service that you wish to connect to.
address : any localhost address, usually 127.0.0.1
port : any number between 33000 and 65535
Now run the p2p.ps1 script using the following command (you may have to give permission for the script to run):
.\p2p.ps1 "username" "password"
where username and password are the credentials for your remote.it account.
Sample output from running the p2p.ps1 script is shown below.
PS C:\Users\test\Downloads\remot3.it\P2P> .\p2p.ps1 email@example.com passwordConnectd built Apr 20 2019 at 16:38:16 Now Starting UpVersion 4.6 - (c)2019 remot3.it, Inc. All Rights ReservedBuilt with NATPMP BCASTER MALLOC_POOL RESOLVE BIGBUF pool=524288WIN32 Versionproxy local port is TCP = 33001setting web config port to dest_server_port 80primary local ip = 192.168.1.160alloc poolUsing server on port 5959Using device uid = 00:00:00:00:00:00:00:00Using Server Channel Port 5980User firstname.lastname@example.org connecting to 80:00:00:75:3a:00:34:fbprimary local ip = 192.168.1.160local IP address found 192.168.1.160initialize proxy client target 127.0.0.1 port 80generate our own UID= f2:62:56:82:52:1b:08:1aNAT PMP router foundUsed NATPMP to map port 51670Command Processor now active.35733> req auth remote.it id email@example.com> Status redirect to 22.214.171.124:596835733> req auth remote.it id firstname.lastname@example.orgStarting Proxy on port 33001 on index 1.Proxy started....Created a P2P connection to 80:00:00:75:3A:00:34:FB on 127.0.0.1 port 33001.To terminate this connection, enter:Stop-Process 6044PS C:\Users\test\Downloads\remot3.it\P2P>
The p2p.ps1 script runs connectd.exe in the background so that you can continue to use the command prompt in the console window, and after about 10 seconds, shows you the PowerShell command that you can use to stop the connectd.exe process, and thus stop the connection when you are done. The value shown in the "Stop-Process" command is the process ID (PID) of the connectd daemon that was just launched.
Created a P2P connection to 80:00:00:75:3A:00:34:FB on 127.0.0.1 port 33001.To terminate this connection, enter:Stop-Process 6044PS C:\Users\test\Downloads\remot3.it\P2P>
The daemon connectd.exe allows the use of a provisioning, or configuration, file to allow better organization of multiple P2P connections. Here is a sample provisioning file for a P2P initiator.
# setting autoconnect to 1 will autoconnect the p2p initiator to the target# setting autoconnect to 2 will attempt to automatically reconnect in the event# of a network interruptionautoconnect 1#user ID to use for the initiator connection (required)user_id email@example.com#auth_pass users password to use to make the Initiator P2P connection (not recommended, use auth_hash)auth_pass weaved1234#local port to bind TCP proxy socket to, mandatoryproxy_local_port 33300#proxy local IP to bind to, can be 127.0.0.1, 0.0.0.0 or any local adapter IPproxy_bind_address 127.0.0.1#remote_address is the (UID) address of the target to connect to.\remote_address 80:00:00:00:01:00:0A:C2#Maximum buffer depth for each TCP connection (10-25) good range raise for high latency enviormentsmax_depth 12# keep this comment line here
Copy and save the above sample provisioning file to a file that corresponds to your target Service. For example, if the UID is for an ssh Service running on a Raspberry Pi, you could call this file SSH-Pi.txt, so you can remember which files correspond to which services.
Edit the following entries in the sample provisioning file to match your account and target device.
user_id : your remote.it account user name
auth_pass : your remote.it account password
remote_address : your target Service's UID
proxy_local_port : desired localhost port
Download p2p-file.ps1 to the same folder where you saved connectd.exe and SSH-Pi.txt. p2p-file.ps1 is similar to p2p.ps1 except p2p-file.ps1 uses a provisioning file rather than placing all connection and account information on the connectd.exe command line.
The script will output connection information, then after about 10 seconds, you should see the following output:
Starting Proxy on port 33301 on index 1.Proxy started....Created a P2P connection...To terminate this connection, enter:Stop-Process 11376PS C:\Users\test\Downloads\remot3.it\P2P>
Note the process ID (PID) for connectd.exe is displayed (here it is 11376). To kill the connectd process when you are done with the connection, run the following command:
You can set the autoconnect parameter value to 2 in the initiator provisioning file to have the daemon automatically attempt to reconnect to the target in the event of a network interruption.
Please see our guide on troubleshooting connections: