[LEDE-DEV] [PATCH] comgt-ncm: Add support for specifying profile index

Matti Laakso malaakso at elisanet.fi
Sun Dec 11 07:35:02 PST 2016


On 12/11/2016 09:47 AM, John Crispin wrote:
> Hi Matti
>
> i noticed that you remove the ipv6 option/support and this is not
> mentioned in the commit message. could you elaborate on that one ?
>
> 	John

Hi John,

It is mentioned in the commit message, although maybe a bit unclear. I
just sent a v2 with among other changes a slightly reworded commit
message. The point is that it is better (and common to mobile broadband
connections) to specify pdptype as ip, ipv6 or ipv4v6 rather than enable
or disable ipv6.

Matti

>
> On 06/12/2016 17:52, Matti Laakso wrote:
>> Add support for specifying a call profile index instead of APN. A
>> specific index different from 1 must be used for some service
>> provider and modem combinations.
>>
>> In addition, change the manufacturer detection to use the standard
>> AT+CGMI command, which produces more predictable output than ATI,
>> and remove the redundant ipv6 option, since it is more customary
>> to specify the PDP context type with mobile connections.
>>
>> Signed-off-by: Matti Laakso <malaakso at elisanet.fi>
>> ---
>>  package/network/utils/comgt/Makefile               |  2 +-
>>  package/network/utils/comgt/files/getcardinfo.gcom |  2 +-
>>  package/network/utils/comgt/files/ncm.json         | 26 ++++-----
>>  package/network/utils/comgt/files/ncm.sh           | 65 ++++++++++------------
>>  4 files changed, 44 insertions(+), 51 deletions(-)
>>
>> diff --git a/package/network/utils/comgt/Makefile b/package/network/utils/comgt/Makefile
>> index 9d99d64..4b6e6ea 100644
>> --- a/package/network/utils/comgt/Makefile
>> +++ b/package/network/utils/comgt/Makefile
>> @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
>>  
>>  PKG_NAME:=comgt
>>  PKG_VERSION:=0.32
>> -PKG_RELEASE:=27
>> +PKG_RELEASE:=28
>>  
>>  PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
>>  PKG_SOURCE_URL:=@SF/comgt
>> diff --git a/package/network/utils/comgt/files/getcardinfo.gcom b/package/network/utils/comgt/files/getcardinfo.gcom
>> index 5c69a64..f91665f 100644
>> --- a/package/network/utils/comgt/files/getcardinfo.gcom
>> +++ b/package/network/utils/comgt/files/getcardinfo.gcom
>> @@ -6,7 +6,7 @@ opengt
>>   flash 0.1
>>  
>>  :start
>> - send "ATI^m"
>> + send "AT+CGMI^m"
>>   get 1 "" $s
>>   print $s
>>  
>> diff --git a/package/network/utils/comgt/files/ncm.json b/package/network/utils/comgt/files/ncm.json
>> index d1f8699..8f74e17 100644
>> --- a/package/network/utils/comgt/files/ncm.json
>> +++ b/package/network/utils/comgt/files/ncm.json
>> @@ -7,7 +7,7 @@
>>  			"ATV1",
>>  			"ATE1",
>>  			"ATS0=0",
>> -			"AT+CGDCONT=1,\\\"${pdptype}\\\",\\\"${apn}\\\""
>> +			"AT+CGDCONT=${profile},\\\"${pdptype}\\\"${apn:+,\\\"$apn\\\"}"
>>  		],
>>  		"modes": {
>>  			"preferlte": "AT^SYSCFGEX=\\\"030201\\\",3fffffff,2,4,7fffffffffffffff,,",
>> @@ -17,8 +17,8 @@
>>  			"gsm": "AT^SYSCFGEX=\\\"01\\\",3fffffff,2,4,7fffffffffffffff,,",
>>  			"auto": "AT^SYSCFGEX=\\\"00\\\",3fffffff,2,4,7fffffffffffffff,,"
>>  		},
>> -		"connect": "AT^NDISDUP=1,1,\\\"${apn}\\\"${username:+,\\\"$username\\\"}${password:+,\\\"$password\\\"}${auth:+,$auth}",
>> -		"disconnect": "AT^NDISDUP=1,0"
>> +		"connect": "AT^NDISDUP=${profile},1${apn:+,\\\"$apn\\\"}${username:+,\\\"$username\\\"}${password:+,\\\"$password\\\"}${auth:+,$auth}",
>> +		"disconnect": "AT^NDISDUP=${profile},0"
>>  	},
>>  	"samsung": {
>>  		"initialize": [
>> @@ -26,7 +26,7 @@
>>  			"AT+CGREG=2",
>>  			"AT+CFUN=5",
>>  			"AT+MODESELECT=3",
>> -			"AT+CGDCONT=1,\\\"${pdptype}\\\",\\\"${apn}\\\""
>> +			"AT+CGDCONT=${profile},\\\"${pdptype}\\\"${apn:+,\\\"$apn\\\"}"
>>  		],
>>  		"modes": {
>>  			"umts": "AT+CHANGEALLPATH=1"
>> @@ -34,11 +34,11 @@
>>  		"connect": "AT+CGATT=1",
>>  		"disconnect": "AT+CGATT=0"
>>  	},
>> -	"sierra wireless, incorporated": {
>> +	"sierra": {
>>  		"initialize": [
>>  			"AT+CFUN=1",
>> -			"AT+CGDCONT=1,\\\"${pdptype}\\\",\\\"${apn}\\\"",
>> -			"AT$QCPDPP=1${auth:+,$auth}${password:+,\\\"$password\\\"}${username:+,\\\"$username\\\"}"
>> +			"AT+CGDCONT=${profile},\\\"${pdptype}\\\"${apn:+,\\\"$apn\\\"}",
>> +			"AT$QCPDPP=${profile},${auth:-0}${password:+,\\\"$password\\\"}${username:+,\\\"$username\\\"}"
>>  		],
>>  		"modes": {
>>  			"preferlte": "AT!SELRAT=07",
>> @@ -48,20 +48,20 @@
>>  			"gsm": "AT!SELRAT=02",
>>  			"auto": "AT!SELRAT=00"
>>  		},
>> -		"connect": "AT!SCACT=1,1",
>> -		"disconnect": "AT!SCACT=0,1"
>> +		"connect": "AT!SCACT=1,${profile}",
>> +		"disconnect": "AT!SCACT=0,${profile}"
>>  	},
>> -	"sony ericsson": {
>> +	"sony": {
>>  		"initialize": [
>>  			"AT+CFUN=1",
>> -			"AT+CGDCONT=1,\\\"${pdptype}\\\",\\\"${apn}\\\"",
>> -			"AT*EIAAUW=1,1,\\\"${username}\\\",\\\"${password}\\\",${auth:-00111}"
>> +			"AT+CGDCONT=${profile},\\\"${pdptype}\\\"${apn:+,\\\"$apn\\\"}",
>> +			"AT*EIAAUW=${profile},1,\\\"${username}\\\",\\\"${password}\\\",${auth:-00111}"
>>  		],
>>  		"modes": {
>>  			"umts": "AT+CFUN=6",
>>  			"gsm": "AT+CFUN=5"
>>  		},
>> -		"connect": "AT*ENAP=1,1",
>> +		"connect": "AT*ENAP=1,${profile}",
>>  		"disconnect": "AT*ENAP=0"
>>  	}
>>  }
>> diff --git a/package/network/utils/comgt/files/ncm.sh b/package/network/utils/comgt/files/ncm.sh
>> index 14b6347..df60fe8 100644
>> --- a/package/network/utils/comgt/files/ncm.sh
>> +++ b/package/network/utils/comgt/files/ncm.sh
>> @@ -18,7 +18,7 @@ proto_ncm_init_config() {
>>  	proto_config_add_string delay
>>  	proto_config_add_string mode
>>  	proto_config_add_string pdptype
>> -	proto_config_add_boolean ipv6
>> +	proto_config_add_int profile
>>  	proto_config_add_defaults
>>  }
>>  
>> @@ -27,22 +27,15 @@ proto_ncm_setup() {
>>  
>>  	local manufacturer initialize setmode connect ifname devname devpath
>>  
>> -	local device apn auth username password pincode delay mode pdptype ipv6 $PROTO_DEFAULT_OPTIONS
>> -	json_get_vars device apn auth username password pincode delay mode pdptype ipv6 $PROTO_DEFAULT_OPTIONS
>> -	
>> -	if [ "$ipv6" = 0 ]; then
>> -		ipv6=""
>> -	else
>> -		ipv6=1
>> -	fi
>> -	
>> -	[ -z "$pdptype" ] && {
>> -		if [ -n "$ipv6" ]; then
>> -			pdptype="IPV4V6"
>> -		else
>> -			pdptype="IP"
>> -		fi
>> -	}
>> +	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
>> +
>> +	[ "$metric" = "" ] && metric="0"
>> +
>> +	[ -n "$profile" ] || profile=1
>> +
>> +	pdptype=`echo "$pdptype" | awk '{print toupper($0)}'`
>> +	[ "$pdptype" = "IP" -o "$pdptype" = "IPV6" -o "$pdptype" = "IPV4V6" ] || $pdptype="IP"
>>  
>>  	[ -n "$ctl_device" ] && device=$ctl_device
>>  
>> @@ -57,11 +50,6 @@ proto_ncm_setup() {
>>  		proto_set_available "$interface" 0
>>  		return 1
>>  	}
>> -	[ -n "$apn" ] || {
>> -		echo "No APN specified"
>> -		proto_notify_error "$interface" NO_APN
>> -		return 1
>> -	}
>>  
>>  	devname="$(basename "$device")"
>>  	case "$devname" in
>> @@ -83,7 +71,7 @@ proto_ncm_setup() {
>>  
>>  	[ -n "$delay" ] && sleep "$delay"
>>  
>> -	manufacturer=`gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | awk '/Manufacturer/ { print tolower($2) }'`
>> +	manufacturer=`gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | awk 'NF { print tolower($1); exit; }'`
>>  	[ $? -ne 0 ] && {
>>  		echo "Failed to get modem information"
>>  		proto_notify_error "$interface" GETINFO_FAILED
>> @@ -126,6 +114,7 @@ proto_ncm_setup() {
>>  		json_select ..
>>  	}
>>  
>> +	echo "Starting network $interface"
>>  	json_get_vars connect
>>  	eval COMMAND="$connect" gcom -d "$device" -s /etc/gcom/runcommand.gcom || {
>>  		echo "Failed to connect"
>> @@ -133,19 +122,21 @@ proto_ncm_setup() {
>>  		return 1
>>  	}
>>  
>> -	echo "Connected, starting DHCP on $ifname"
>> +	echo "Setting up $ifname"
>>  	
>>  	proto_init_update "$ifname" 1
>>  	proto_send_update "$interface"
>>  
>> -	json_init
>> -	json_add_string name "${interface}_4"
>> -	json_add_string ifname "@$interface"
>> -	json_add_string proto "dhcp"
>> -	proto_add_dynamic_defaults
>> -	ubus call network add_dynamic "$(json_dump)"
>> +	[ "$pdptype" = "IP" -o "$pdptype" = "IPV4V6" ] && {
>> +		json_init
>> +		json_add_string name "${interface}_4"
>> +		json_add_string ifname "@$interface"
>> +		json_add_string proto "dhcp"
>> +		proto_add_dynamic_defaults
>> +		ubus call network add_dynamic "$(json_dump)"
>> +	}
>>  
>> -	[ -n "$ipv6" ] && {
>> +	[ "$pdptype" = "IPV6" -o "$pdptype" = "IPV4V6" ] && {
>>  		json_init
>>  		json_add_string name "${interface}_6"
>>  		json_add_string ifname "@$interface"
>> @@ -161,12 +152,14 @@ proto_ncm_teardown() {
>>  
>>  	local manufacturer disconnect
>>  
>> -	local device
>> -	json_get_vars device
>> +	local device profile
>> +	json_get_vars device profile
>> +
>> +	[ -n "$profile" ] || profile=1
>>  
>> -	echo "Stopping network"
>> +	echo "Stopping network $interface"
>>  
>> -	manufacturer=`gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | awk '/Manufacturer/ { print tolower($2) }'`
>> +	manufacturer=`gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | awk 'NF { print tolower($1); exit; }'`
>>  	[ $? -ne 0 ] && {
>>  		echo "Failed to get modem information"
>>  		proto_notify_error "$interface" GETINFO_FAILED
>> @@ -181,7 +174,7 @@ proto_ncm_teardown() {
>>  	}
>>  
>>  	json_get_vars disconnect
>> -	COMMAND="$disconnect" gcom -d "$device" -s /etc/gcom/runcommand.gcom || {
>> +	eval COMMAND="$disconnect" gcom -d "$device" -s /etc/gcom/runcommand.gcom || {
>>  		echo "Failed to disconnect"
>>  		proto_notify_error "$interface" DISCONNECT_FAILED
>>  		return 1
>>




More information about the Lede-dev mailing list