[source] DWR-512: adding wwan support for the dwr-512 3G modem

LEDE Commits lede-commits at lists.infradead.org
Thu May 25 10:02:05 PDT 2017


nbd pushed a commit to source.git, branch master:
https://git.lede-project.org/4ba2f4dc6357e85a8dbc98266a14197fb058159c

commit 4ba2f4dc6357e85a8dbc98266a14197fb058159c
Author: Giuseppe Lippolis <giu.lippolis at gmail.com>
AuthorDate: Thu Dec 22 22:12:44 2016 +0100

    DWR-512: adding wwan support for the dwr-512 3G modem
    
    This PR allow the 3G modem embedded in the DWR-512 to be managed
    by the wwan-ncm scripts. The modem will use the usb-option and
    usb-cdc-ether drivers.
    The DWR-512 DT is updated accordingly.
    
    Signed-off-by: Giuseppe Lippolis <giu.lippolis at gmail.com>
---
 package/network/utils/comgt/files/ncm.json | 11 +++++++++++
 package/network/utils/comgt/files/ncm.sh   | 27 +++++++++++++++++++++++++--
 package/network/utils/wwan/files/wwan.sh   | 26 +++++++++++++-------------
 target/linux/ramips/image/rt305x.mk        |  4 ++--
 4 files changed, 51 insertions(+), 17 deletions(-)

diff --git a/package/network/utils/comgt/files/ncm.json b/package/network/utils/comgt/files/ncm.json
index 8f74e17..bbdb30c 100644
--- a/package/network/utils/comgt/files/ncm.json
+++ b/package/network/utils/comgt/files/ncm.json
@@ -63,5 +63,16 @@
 		},
 		"connect": "AT*ENAP=1,${profile}",
 		"disconnect": "AT*ENAP=0"
+	},
+	"mtk1": {
+		"initialize": [
+			"AT+CFUN=1"
+		],
+		"configure": [
+			"AT+CGDCONT=${profile},\\\"${pdptype}\\\",\\\"${apn}\\\",0,0"
+		],
+		"connect": "AT+CGACT=1,${profile}",
+		"finalize": "AT+CGDATA=\\\"M-MBIM\\\",${profile},1",
+		"disconnect": "AT+CGACT=0,${profile}"
 	}
 }
diff --git a/package/network/utils/comgt/files/ncm.sh b/package/network/utils/comgt/files/ncm.sh
index 73d1e05..60b3965 100644
--- a/package/network/utils/comgt/files/ncm.sh
+++ b/package/network/utils/comgt/files/ncm.sh
@@ -25,7 +25,7 @@ proto_ncm_init_config() {
 proto_ncm_setup() {
 	local interface="$1"
 
-	local manufacturer initialize setmode connect ifname devname devpath
+	local manufacturer initialize setmode connect finalize ifname devname devpath
 
 	local device apn auth username password pincode delay mode pdptype profile $PROTO_DEFAULT_OPTIONS
 	json_get_vars device apn auth username password pincode delay mode pdptype profile $PROTO_DEFAULT_OPTIONS
@@ -105,9 +105,21 @@ proto_ncm_setup() {
 			return 1
 		}
 	}
+
+	json_get_values configure configure
+	echo "Configuring modem"
+	for i in $configure; do
+		eval COMMAND="$i" gcom -d "$device" -s /etc/gcom/runcommand.gcom || {
+			echo "Failed to configure modem"
+			proto_notify_error "$interface" CONFIGURE_FAILED
+			return 1
+		}
+	done
+
 	[ -n "$mode" ] && {
 		json_select modes
 		json_get_var setmode "$mode"
+		echo "Setting mode"
 		eval COMMAND="$setmode" gcom -d "$device" -s /etc/gcom/runcommand.gcom || {
 			echo "Failed to set operating mode"
 			proto_notify_error "$interface" SETMODE_FAILED
@@ -118,14 +130,16 @@ proto_ncm_setup() {
 
 	echo "Starting network $interface"
 	json_get_vars connect
+	echo "Connecting modem"
 	eval COMMAND="$connect" gcom -d "$device" -s /etc/gcom/runcommand.gcom || {
 		echo "Failed to connect"
 		proto_notify_error "$interface" CONNECT_FAILED
 		return 1
 	}
 
+	json_get_vars finalize
+
 	echo "Setting up $ifname"
-	
 	proto_init_update "$ifname" 1
 	proto_add_data
 	json_add_string "manufacturer" "$manufacturer"
@@ -150,6 +164,15 @@ proto_ncm_setup() {
 		proto_add_dynamic_defaults
 		ubus call network add_dynamic "$(json_dump)"
 	}
+
+	[ -n "$finalize" ] && {
+		eval COMMAND="$finalize" gcom -d "$device" -s /etc/gcom/runcommand.gcom || {
+			echo "Failed to configure modem"
+			proto_notify_error "$interface" FINALIZE_FAILED
+			return 1
+		}
+	}
+
 }
 
 proto_ncm_teardown() {
diff --git a/package/network/utils/wwan/files/wwan.sh b/package/network/utils/wwan/files/wwan.sh
index 6b33600..2e9d73f 100755
--- a/package/network/utils/wwan/files/wwan.sh
+++ b/package/network/utils/wwan/files/wwan.sh
@@ -66,15 +66,15 @@ proto_wwan_setup() {
 		}
 	}
 
-	[ -z "$ctl_device" ] && for net in $(ls /sys/class/net/ | grep wwan); do
+	[ -z "$ctl_device" ] && for net in $(ls /sys/class/net/ | grep -e wwan -e usb); do
 		[ -z "$ctl_device" ] || continue
 		driver=$(grep DRIVER /sys/class/net/$net/device/uevent | cut -d= -f2)
 		case "$driver" in
 		qmi_wwan|cdc_mbim)
 			ctl_device=/dev/$(ls /sys/class/net/$net/device/usbmisc)
 			;;
-		sierra_net|*cdc_ncm)
-			ctl_device=/dev/$(cd /sys/class/net/$net/; find ../../../ -name ttyUSB* |xargs basename | head -n1)
+		sierra_net|cdc_ether|*cdc_ncm)
+			ctl_device=/dev/$(cd /sys/class/net/$net/; find ../../../ -name ttyUSB* |xargs -n1 basename | head -n1)
 			;;
 		*) continue;;
 		esac
@@ -93,11 +93,11 @@ proto_wwan_setup() {
 	uci_set_state network $interface dat_device "$dat_device"
 
 	case $driver in
-	qmi_wwan)	proto_qmi_setup $@ ;;
-	cdc_mbim)	proto_mbim_setup $@ ;;
-	sierra_net)	proto_directip_setup $@ ;;
-	comgt)		proto_3g_setup $@ ;;
-	*cdc_ncm)	proto_ncm_setup $@ ;;
+	qmi_wwan)		proto_qmi_setup $@ ;;
+	cdc_mbim)		proto_mbim_setup $@ ;;
+	sierra_net)		proto_directip_setup $@ ;;
+	comgt)			proto_3g_setup $@ ;;
+	cdc_ether|*cdc_ncm)	proto_ncm_setup $@ ;;
 	esac
 }
 
@@ -108,11 +108,11 @@ proto_wwan_teardown() {
 	dat_device=$(uci_get_state network $interface dat_device)
 
 	case $driver in
-	qmi_wwan)	proto_qmi_teardown $@ ;;
-	cdc_mbim)	proto_mbim_teardown $@ ;;
-	sierra_net)	proto_mbim_teardown $@ ;;
-	comgt)		proto_3g_teardown $@ ;;
-	*cdc_ncm)	proto_ncm_teardown $@ ;;
+	qmi_wwan)		proto_qmi_teardown $@ ;;
+	cdc_mbim)		proto_mbim_teardown $@ ;;
+	sierra_net)		proto_mbim_teardown $@ ;;
+	comgt)			proto_3g_teardown $@ ;;
+	cdc_ether|*cdc_ncm)	proto_ncm_teardown $@ ;;
 	esac
 }
 
diff --git a/target/linux/ramips/image/rt305x.mk b/target/linux/ramips/image/rt305x.mk
index 5876dcb..dc09765 100644
--- a/target/linux/ramips/image/rt305x.mk
+++ b/target/linux/ramips/image/rt305x.mk
@@ -300,8 +300,8 @@ define Device/dwr-512-b
   DTS := DWR-512-B
   IMAGE_SIZE := 7700k
   DEVICE_TITLE := D-Link DWR-512 B
-  DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-i2c-core kmod-i2c-ralink kmod-spi-dev \
-			kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan comgt
+  DEVICE_PACKAGES := kmod-usb2 kmod-spi-dev kmod-usb-serial kmod-usb-serial-option \
+			kmod-usb-net kmod-usb-net-cdc-ether comgt-ncm
 endef
 TARGET_DEVICES += dwr-512-b
 



More information about the lede-commits mailing list