How to install a telnet client on a Synology NAS
Posted by Andre Kuehnemund, Last modified by Andre Kuehnemund on 22 November 2019 15:11
Synology used to include a telnet client with their DSM software until sometime in 2016. It was removed in later releases.

The P5 software includes a telnet server that is sometimes used for troubleshooting purposes. On occasion, you may be instructed by our support team to connect to that P5 telnet interface. The P5 telnet server allows only local connections. The removal of the telnet client from the DSM software by Synology therefore creates a problem.

The following is a list of steps of how to install a telnet client on a Synology NAS...

1. Install IPKG on the Synology NAS:

Please be patient! This process is very slow. Step #6 can be omitted
if one uses the full path to call 'ipkg' (see below).
2. Install 'inetutils' package (incl. a telnet client) using IPKG:
sudo /opt/bin/ipkg install inetutils
3. Launch P5 telnet session:
/opt/bin/telnet localhost 21000
For login instructions etc., please see here:
(1 vote(s))
Not helpful

Comments (1)
Christophe RĂ©mond
30 April 2020 17:41
I preferred to write a quick and dirty python script ''

#!/usr/bin/env python

import argparse
import socket

def main():

myParser = argparse.ArgumentParser(description='simple tool to check P5 access')
myParser.add_argument('--IPAddress', '-i', type=str, required=True, help='P5 host IP address')
myParser.add_argument('--port', '-p', type=int, default=8000, help='P5 used TCP port')
myArgs = myParser.parse_args()

mySocket= socket.socket()
mySocket. connect((myArgs.IPAddress,myArgs.port))
except socket.timeout:
print('[-] P5 on host ' + myArgs.IPAddress + ' for port ' + str(myArgs.port) + ' cannot be reached')

request = "GET / HTTP/1.1\r\nHost:%s\r\n\r\n" % myArgs.IPAddress

response = mySocket.recv(64)
http_response = repr(response)
http_response_len = len(http_response)

if 'NaviServer' in http_response:
print('[+] P5 on host ' + myArgs.IPAddress + ' for port ' + str(myArgs.port) + ' is alive')
print('[-] Port ' + str(myArgs.port) + ' on Host ' + myArgs.IPAddress + ' is open but this is not for P5')
print response
print(str(http_response_len) + ' bytes read from ' + myArgs.IPAddress)

if __name__ == '__main__':
Post a new comment
Full Name:
CAPTCHA Verification 
Please enter the text you see in the image into the textbox below (we use this to prevent automated submissions).