diff --git a/check_disk-io b/check_disk-io
index be43ab79ced48c70b2c6a44878e430ff772be581..31e1112c0931a95eac4465c6c7b48dd7a71804bc 100755
--- a/check_disk-io
+++ b/check_disk-io
@@ -2,44 +2,58 @@
 # ======================================================================
 #
 # Check DISK IO over all disks
+#
 # data besed on /proc/diskstats
 # https://www.kernel.org/doc/Documentation/iostats.txt
 #
 # based on /sys/block/*/stat
 # https://www.kernel.org/doc/Documentation/block/stat.txt
 #
+# Requires: bc, lsblk
+#
 # ----------------------------------------------------------------------
 # 2020-07-17  v1.0  <axel.hahn@iml.unibe.ch>
+# 2023-07-27  v1.1  <axel.hahn@iml.unibe.ch>  shell fixes; remove unsupported warn and critical
 # ======================================================================
 
 
-. `dirname $0`/inc_pluginfunctions
+. $( dirname $0 )/inc_pluginfunctions
 
+self_APPNAME=$( basename $0 | tr [:lower:] [:upper:] )
+self_APPVERSION=1.1
 
 # ----------------------------------------------------------------------
 # FUNCTIONS
 # ----------------------------------------------------------------------
 
 # diskinfo based on lsblk
-# 
+# param  string  comma separated list of names (no spaces)
 function _diskInfo(){
     local _fields=$1
-    test -z $_fields && _fields='NAME,MAJ:MIN,TYPE,SIZE,FSTYPE,MOUNTPOINT,STATE,ROTA,VENDOR,MODEL,SERIAL,HCTL'
-    lsblk -ai --output $_fields
+    test -z "$_fields" && _fields='NAME,MAJ:MIN,TYPE,SIZE,FSTYPE,MOUNTPOINT,STATE,ROTA,VENDOR,MODEL,SERIAL,HCTL'
+    lsblk -ai --output "$_fields"
 }
 
+# get a list of local disks
 function getDisks(){
     _diskInfo "NAME,TYPE" | grep "disk" | awk '{ print $1 }' | sed "s#[^a-z0-9]##g"
 }
-function getPartitions(){
-    _diskInfo "NAME,TYPE" | grep "part" | awk '{ print $1 }' | sed "s#[^a-z0-9]##g"
-}
 
+# UNUSED get a list of local partitions
+# function getPartitions(){
+#     _diskInfo "NAME,TYPE" | grep "part" | awk '{ print $1 }' | sed "s#[^a-z0-9]##g"
+# }
+
+# show help
 function showHelp(){
+    _self=$(basename $0)
 cat <<EOF
 ______________________________________________________________________
 
-CHECK_DISK IO AND LATENCY
+$self_APPNAME 
+v$self_APPVERSION
+
+Check dis io and latency
 
 (c) Institute for Medical Education - University of Bern
 Licence: GNU GPL 3
@@ -47,17 +61,18 @@ ______________________________________________________________________
 
 Disk infos based on /sys/block/[NAME]/stat
 See https://www.kernel.org/doc/Documentation/block/stat.txt
+and https://www.kernel.org/doc/Documentation/iostats.txt
+
+The system data are counters that are difficult to read.
+The output of this check for each value a delta value per second since 
+last check.
 
 SYNTAX:
-`basename $0` -m MODE [-w WARN_LIMIT] [-c CRITICAL_LIMIT]
+$_self -m MODE
 
 OPTIONS:
 
     -m MODE        set mode for type of output (required)
-
-    -w VALUE       warning level  (default: 0 for none)
-    -c VALUE       critical level (default: 0 for none)
-
     -h or --help   show this help.
 
 PARAMETERS:
@@ -68,7 +83,7 @@ PARAMETERS:
         wait       total wait time for all requests
 
 EXAMPLE:
-`basename $0` -m io
+$_self -m io
 
 EOF
 }
@@ -77,18 +92,8 @@ EOF
 # MAIN
 # ----------------------------------------------------------------------
 
-# TESTAREA 51
-# _diskInfo
-# echo "--- disks: "
-# getDisks
-# echo "--- partitions: "
-# getPartitions
-
-ph.require bc lsblk
-
 typeset -i iDelta=0
 
-
 case "$1" in
     "--help"|"-h")
         showHelp
@@ -97,12 +102,10 @@ case "$1" in
     *)
 esac
 
-# set default / override from command line params
-typeset -i iWarnLimit=`     ph.getValueWithParam 0 w "$@"`
-typeset -i iCriticalLimit=` ph.getValueWithParam 0 c "$@"`
+ph.require bc lsblk
 
 # --- set mode
-sMode=`                     ph.getValueWithParam '' m "$@"`
+sMode=$(                     ph.getValueWithParam '' m "$@")
 
 # --- labels and its columns in /sys/block/$myDisk/stat
 
@@ -143,20 +146,20 @@ case "$sMode" in
     *)
         echo "ERROR: missing or wrong MODE parameter -m"
         showHelp
-        exit 0
+        exit 1
 esac
 
 
 
 
 
-tmpfile1=`mktemp`
+tmpfile1=$(mktemp)
 
 # --- add data for each disk
-for myDisk in `getDisks`
+for myDisk in $(getDisks)
 do
-    echo >>$tmpfile1
-    echo "--- $myDisk" >> $tmpfile1
+    echo >>"$tmpfile1"
+    echo "--- $myDisk" >> "$tmpfile1"
 
     diskdata=$( cat /sys/block/$myDisk/stat )
     # echo $diskdata >> $tmpfile1
@@ -166,35 +169,35 @@ do
         column=${aColums[$index]}
         value=$( echo $diskdata | cut -f $column -d " " )
 
-        iDelta=`ph.perfdeltaspeed "$label" $value`
+        iDelta=$(ph.perfdeltaspeed "$label" $value)
         
         typeset -i aTotals[$index]=${aTotals[$index]}+$iDelta
-        # echo "    $label $iDelta per sec ... total: $value" >> $tmpfile1
-        printf "%30s %10d \n" "$label:" "$iDelta" >> $tmpfile1
+        # echo "    $label $iDelta per sec ... total: $value" >> "$tmpfile1"
+        printf "%30s %10d \n" "$label:" "$iDelta" >> "$tmpfile1"
 
     done
 done
 
 # --- add total
-echo >>$tmpfile1
-echo "--- TOTAL" >> $tmpfile1
+echo >>"$tmpfile1"
+echo "--- TOTAL" >> "$tmpfile1"
 for index in ${!aNames[*]}
 do
 
     label="${aNames[$index]}"
     value=${aTotals[$index]}
     # echo "    $label: $value" >> $tmpfile1
-    printf "%30s %10d \n" "$label:" "$value" >> $tmpfile1
+    printf "%30s %10d \n" "$label:" "$value" >> "$tmpfile1"
     ph.perfadd "$label"   "$value"
 
 done
-echo >>$tmpfile1
+echo >>"$tmpfile1"
 
 # --- output
 ph.status "Disk data ... $info " # READ `toUnit $iTotalRead M` MB/s << [DISC] << `toUnit $iTotalWrite M` MB/s WRITE"
 
-cat $tmpfile1
+cat "$tmpfile1"
 
 # --- cleanup and bye
-rm -f $tmpfile1
+rm -f "$tmpfile1"
 ph.exit
diff --git a/docs/20_Checks/_index.md b/docs/20_Checks/_index.md
index 67f1e67e894c253207397cb4c10f56be470a73df..4cb4b731d8c1c0907aec7ff6d86d37e25ffd935a 100644
--- a/docs/20_Checks/_index.md
+++ b/docs/20_Checks/_index.md
@@ -17,7 +17,7 @@ There is one include script used by all checks:
 * check_couchdb-lb
 * [check_cpu](check_cpu.md)
 * [check_cronstatus](check_cronstatus.md)
-* check_disk-io
+* [check_disk-io](check_disk-io.md)
 * check_dns_responsetime
 * [check_eol](check_eol.md)
 * check_haproxy_health
diff --git a/docs/20_Checks/check_disk_io.md b/docs/20_Checks/check_disk_io.md
new file mode 100644
index 0000000000000000000000000000000000000000..bc3c90654e30039b89f1ae1c587a2b4016ee2885
--- /dev/null
+++ b/docs/20_Checks/check_disk_io.md
@@ -0,0 +1,85 @@
+# CHECK_DISK-IO
+
+## Introduction
+
+**check_disk-io** is a plugin to show io, ticks and wait time.
+It shows a multiline output and sends performance data.
+
+## Requirements
+
+* `lsblk` List information about block devices
+* `bc` calculator
+
+## Syntax
+
+```txt
+______________________________________________________________________
+
+CHECK_DISK-IO 
+v1.1
+
+Check dis io and latency
+
+(c) Institute for Medical Education - University of Bern
+Licence: GNU GPL 3
+______________________________________________________________________
+
+Disk infos based on /sys/block/[NAME]/stat
+See https://www.kernel.org/doc/Documentation/block/stat.txt
+and https://www.kernel.org/doc/Documentation/iostats.txt
+
+The system data are counters that are difficult to read.
+The output of this check for each value a delta value per second since 
+last check.
+
+SYNTAX:
+check_disk-io -m MODE
+
+OPTIONS:
+
+    -m MODE        set mode for type of output (required)
+    -h or --help   show this help.
+
+PARAMETERS:
+
+    MODE
+        io         read I/Os, write I/Os, discard I/0s
+        ticks      read ticks, write ticks, discard ticks
+        wait       total wait time for all requests
+
+EXAMPLE:
+check_disk-io -m io
+
+```
+
+### Parameters
+
+`-m <MODE>` where MODE is a string to define kind of output.
+
+## Examples
+
+`$ check_disk-io -m io` returns
+
+```txt
+OK: Disk data ... read I/Os, write I/Os, discard I/0s, number of I/Os currently in flight 
+
+--- sda
+              disk-sda-ReadIO:          0 
+             disk-sda-WriteIO:          0 
+           disk-sda-DiscardIO:          0 
+            disk-sda-FlightIO:          0 
+
+--- nvme0n1
+          disk-nvme0n1-ReadIO:          3 
+         disk-nvme0n1-WriteIO:         16 
+       disk-nvme0n1-DiscardIO:          4 
+        disk-nvme0n1-FlightIO:          0 
+
+--- TOTAL
+                       ReadIO:          3 
+                      WriteIO:         16 
+                    DiscardIO:          4 
+                     FlightIO:          0 
+
+ |readio=3;; writeio=16;; discardio=4;; flightio=0;;
+```