diff --git a/package/network/utils/comgt/files/3g.sh b/package/network/utils/comgt/files/3g.sh
index b0cdae234db8ed99d1de1842d956f096c1e54ab0..d438cb7a6d2390294919b6e80e5a21b1d7c69f71 100644
--- a/package/network/utils/comgt/files/3g.sh
+++ b/package/network/utils/comgt/files/3g.sh
@@ -31,6 +31,8 @@ proto_3g_setup() {
 	json_get_var dialnumber dialnumber
 
 	[ -n "$dat_device" ] && device=$dat_device
+
+	device="$(readlink -f $device)"
 	[ -e "$device" ] || {
 		proto_set_available "$interface" 0
 		return 1
diff --git a/package/network/utils/comgt/files/directip.sh b/package/network/utils/comgt/files/directip.sh
index 79b8c32c83c699d621507ddf632c8003758f754e..381bfb000075d4fdfe1d2024d3af6a1e80ee9b47 100644
--- a/package/network/utils/comgt/files/directip.sh
+++ b/package/network/utils/comgt/files/directip.sh
@@ -27,6 +27,7 @@ proto_directip_setup() {
 
 	[ -n "$ctl_device" ] && device=$ctl_device
 
+	device="$(readlink -f $device)"
 	[ -e "$device" ] || {
 		proto_notify_error "$interface" NO_DEVICE
 		proto_set_available "$interface" 0
diff --git a/package/network/utils/comgt/files/ncm.sh b/package/network/utils/comgt/files/ncm.sh
index 09c2c18b401c1b779386999e59550be813a4eefe..cf3cef615455035f7c7f6d8fc9e3e9d480e1dce6 100644
--- a/package/network/utils/comgt/files/ncm.sh
+++ b/package/network/utils/comgt/files/ncm.sh
@@ -45,6 +45,8 @@ proto_ncm_setup() {
 		proto_set_available "$interface" 0
 		return 1
 	}
+
+	device="$(readlink -f $device)"
 	[ -e "$device" ] || {
 		echo "Control device not valid"
 		proto_set_available "$interface" 0