diff --git a/voice-client/files/etc/config/voice_client b/voice-client/files/etc/config/voice_client
index dc5816eee9048d9c5afbf378ad0170a44df6e683..d60de1e081313ef86bf4707d038f8c7c053c559b 100644
--- a/voice-client/files/etc/config/voice_client
+++ b/voice-client/files/etc/config/voice_client
@@ -174,5 +174,4 @@ config sip_service_provider 'sip0'
 	option redial '*66'
 	option is_fax '0'
 	option transport 'udp'
-	option call_lines '0'
 
diff --git a/voice-client/files/etc/init.d/voice_client b/voice-client/files/etc/init.d/voice_client
index 6b3238a658404bc300514b74122e482c75df7893..edcc0773aea2def7bf3a392efa4ee0d67bbc2784 100755
--- a/voice-client/files/etc/init.d/voice_client
+++ b/voice-client/files/etc/init.d/voice_client
@@ -259,7 +259,7 @@ read_lines()
 	local loffset=$(ubus -t 1 call voice.asterisk platform | jsonfilter -e @.lineoffset)
 	loffset=${loffset:-0}
 
-	config_get call_lines $1 call_lines "0"
+	config_get call_lines $1 call_lines
 
 	for line in $call_lines ; do
 
@@ -1844,7 +1844,6 @@ configure_tel()
 #
 configure_tel_line()
 {
-	echo "Configuring $CHANNELNAME line $1"
 	local extension
 	local sip_provider
 	local codecs
@@ -2240,16 +2239,17 @@ stop_service() {
 
 reload_service() {
 	start
-	#stop
-	# turn off voice led; asterisk will turn it on
-	# if there is a registered account
+	# turn off voice led; asterisk will turn it on if there is a registered account
 	ubus call led.voice1 set '{"state":"off"}'
 
+	# FXS channel module must be reloaded before sip module. Otherwise some attributes like
+	# line's registration state which is updated by SIP module through callback might be
+	# reset.
+	asterisk -rx "$(getChipVendor) reload"
 	asterisk -rx "config reload $ASTERISKDIR/sip.conf"
 	sleep 1
 	asterisk -rx "core reload"
 	asterisk -rx "dialplan reload"
-	asterisk -rx "$(getChipVendor) reload"
 }
 
 service_triggers() {