diff --git a/check_conn b/check_conn
index 78487982df2cfb20ad1556be516ed182b429e967..bbf9842adb6cbfc07bb883172f673e8aa09811f7 100755
--- a/check_conn
+++ b/check_conn
@@ -9,16 +9,13 @@
 # ----------------------------------------------------------------------
 # 2021-11-05  v0.0  <axel.hahn@iml.unibe.ch>
 # 2023-07-27  v1.1  <axel.hahn@unibe.ch>      update help page
+# 2025-02-10  v1.2  <axel.hahn@unibe.ch>      no text on STDERR if portcheck fails
 # ======================================================================
 
 
-. $(dirname $0)/inc_pluginfunctions
-
-export self_APPVERSION=1.1
-
+. $(dirname $0)/inc_pluginfunctions || exit 1
+export self_APPVERSION=1.2
 cfgfile=$( dirname $0 )/$( basename $0 ).cfg
-
-
 out=""
 
 # ----------------------------------------------------------------------
@@ -88,11 +85,8 @@ case "$1" in
 esac
 
 configline=$( ph.getValueWithParam "" t "$@" )
-
 test -z "$configline" || cfgfile=""
 
-
-
 typeset -i iWarnings=0
 typeset -i iErrors=0
 typeset -i iOK=0
@@ -107,18 +101,18 @@ do
 $myline"
 
   # --- syntax check of config entry
-  echo "$myline" | grep -E "^(tcp|udp)/[a-z][a-z0-9\.\-]*/[0-9]*$" >/dev/null 2>&1
-  if [ $? -ne 0 ]; then
+  if ! echo "$myline" | grep -Eq "^(tcp|udp)/[a-z][a-z0-9\.\-]*/[0-9]*$" 
+  then
     out="$out SKIP: INVALID ENTRY"
     iWarnings=$iWarnings+1
   else 
-    >/dev/$myline
-    if [ $? -ne 0 ]; then
-        out="$out FAILED"
-        iErrors=$iErrors+1
-    else
+    if timeout 1 bash -c "> /dev/$myline " 2>/dev/null
+    then
         out="$out OK"
         iOK=$iOK+1
+    else
+        out="$out FAILED"
+        iErrors=$iErrors+1
     fi
   fi
 done
diff --git a/docs/20_Checks/check_conn.md b/docs/20_Checks/check_conn.md
new file mode 100644
index 0000000000000000000000000000000000000000..87db84254ed43b33e94c37d29f3eac2d106c5122
--- /dev/null
+++ b/docs/20_Checks/check_conn.md
@@ -0,0 +1,77 @@
+## Check TCP or UDP connection
+
+Script: `check_conn`
+
+It is a plugin to check oe or mmultiple tcp and udp connections to localhost or a remote system.
+
+## Standalone installation
+
+From this repository ypu need next to this script:
+
+* `inc_pluginfunctions` shared function for all IML checks written in bash
+
+## Syntax
+
+```txt
+______________________________________________________________________
+
+CHECK_CONN
+v1.2
+
+(c) Institute for Medical Education - University of Bern
+Licence: GNU GPL 3
+
+https://os-docs.iml.unibe.ch/icinga-checks/Checks/check_conn.html
+______________________________________________________________________
+
+SYNTAX:
+check_conn OPTIONS
+
+You can create a file named ./check_conn.cfg
+and add your connections there. 
+To start you can copy the file ./check_conn.cfg.dist
+
+OPTIONS:
+
+    -h or --help   show this help.
+    -t CONNECTION  test given connection; This param ignores entries
+                   in the config file. For multiple connection tests
+                   quote the parameter value and set spaces between
+                   the connections.
+
+PARAMETERS:
+
+    CONNECTION     Connection in the same syntax like in the config:
+                   tcp/host/port
+                   udp/host/port
+EXAMPLES:
+
+check_conn         If no param is given it checks entries in ./check_conn.cfg
+
+check_conn -t "tcp/api.example.com/443"
+                   Check a single connection
+
+check_conn -t "tcp/api.example.com/443 tcp/localhost/3306"
+                   Check multiple connections.
+
+
+```
+
+## Examples
+
+Check a single tcp port which is currently open:
+
+```txt
+./check_conn -t "tcp/localhost/80"
+OK: tcp check - 1 checks - 1 OK; 0 warnings; 0 errors 
+tcp/localhost/80 OK
+```
+
+Check multiple connections - one port is open the other closed:
+
+```txt
+./check_conn -t "tcp/localhost/22 tcp/localhost/443"
+CRITICAL: tcp check - 2 checks - 1 OK; 0 warnings; 1 errors 
+tcp/localhost/22 FAILED
+tcp/localhost/443 OK
+```