Merge "[Bugfix][R306BJ][bug-view-2160]When WiFi is hidden in the Quick Settings, the first time an auxiliary device attempts to connect to the R306 WiFi, it prompts a password error."
diff --git a/lynq/CPE_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/CPE_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/CPE_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/CPE_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/CPE_TELKOMSEL/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/CPE_TELKOMSEL/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/CPE_TELKOMSEL/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/CPE_TELKOMSEL/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/MD310/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/MD310EU/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/MD310EU/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/MD310EU/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/MD310EU/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/R305/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/R305/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 7e870db..1656a7f 100755
--- a/lynq/R305/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/R305/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/R306/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/R306/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/R306/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/R306/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/R306BR/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/R306BR/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/R306BR/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/R306BR/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/R306_MTN/BJMTN/ap/app/zte_webui/subpg/ota_update.html b/lynq/R306_MTN/BJMTN/ap/app/zte_webui/subpg/ota_update.html
new file mode 100755
index 0000000..f26fce5
--- /dev/null
+++ b/lynq/R306_MTN/BJMTN/ap/app/zte_webui/subpg/ota_update.html
@@ -0,0 +1,244 @@
+<div id="innerContainer">

+    <div class="row header-row">

+        <div class="col-xs-1">

+            <a href="#main">

+                <img alt="" src="pic/direct-back.png">

+            </a>

+        </div>

+        <div class="col-xs-11">

+            <div class="form-title">

+                <h1 data-trans='advanced_settings'></h1>

+            </div>

+        </div>

+    </div>

+    <div class="row">

+        <div class="col-xs-2">

+			<div class="nav_right">

+				<ul>

+					<li data-bind="visible: isDataCard"><a href="#demilitarized_zone" data-trans="dmz_setting"></a></li>

+					<li data-bind="visible: isDataCard"><a href="#pin_mode" data-trans="pin_management"></a></li>

+					<li data-bind="visible: !isDataCard"><a href="#wlan_sleep" data-trans="sleep_mode"></a></li>

+					<li data-bind="visible: !isDataCard"><a href="#route_set" data-trans="router_setting"></a></li>

+					<li data-bind="visible: !isDataCard"><a href="#filter_main" data-trans="firewall"></a></li>

+					<li data-bind="visible:hasUpdateCheck" class="active"><a href="#fota" data-trans="update_settings"></a></li>

+					<!-- <li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li> -->

+					<li data-bind="visible:hasDdns"><a href="#dynamic_dns" data-trans="DDNS"></a></li>

+					<li data-bind="visible: !isDataCard"><a href="#more" data-trans="others"></a></li>

+                    <li><a data-trans="tr069" href="#tr069"></a></li>

+				</ul>

+			</div>

+		</div>

+

+<div class="col-xs-10">

+<form id="frmOTAUpdate" role="form" data-bind="visible: updateType() == 'mifi_fota'">

+     <!-- <h3 data-trans="ota_update_manual" class="form-title"></h3 --> 

+    <div class="form-body margin-top-20">

+        <!--div class="content">

+            <div class="row">

+                <div class="col-xs-6">

+                    <span data-trans="ota_last_update_check"></span>

+                    <span data-bind="text: lastCheckTime"></span>

+                </div>

+                <div class="col-xs-6 align-right">

+                    <input id="btnCheckNewVersion" data-bind="click:checkNewVersion" data-trans="ota_check_new_version" type="button" class="btn btn-primary margin-right-20"/>

+                </div>

+            </div>

+			<div class="form-note">

+                <div class="notes-title">&nbsp;</div>

+                <ul class="notes-content">

+                    <li data-trans="ota_check_new_version_desc"></li>

+                </ul>

+		    </div>

+        </div-->

+

+        <!--div class="form-title" data-trans='ota_update_manual'></div>

+        <div class="content">

+            <span class="paddingleft25" data-trans="ota_check_new_version_desc"></span>

+        </div>

+        <div class="form-buttons">

+            <input id="btnCheckNewVersion" type="button" class="btn btn-primary" data-trans="ota_check_new_version"

+                   data-bind="click:checkNewVersion"/>

+        </div>

+        <div class="form-title" data-trans='ota_update_setting'></div-->

+        <div class="content">

+			<!--

+            <h3 data-trans="ota_update_setting" class="form-title"></h3>

+            <div class="row">

+                <label data-trans="ota_auto_update_switch" class="col-xs-4 side-right"></label>

+                <div class="col-xs-8">

+                    <div class="row form-group">

+                        <div class="col-xs-3">

+                            <input id="auto_update_enable" name="updateMode" data-bind="checked: updateMode" type="radio" value="1"/>

+                            <label data-trans="enable" for="auto_update_enable"></label>

+                        </div>

+                        <div class="col-xs-3">

+                            <input id="auto_update_disable" name="updateMode" data-bind="checked: updateMode" type="radio" value="0"/>

+                            <label data-trans="disable" for="auto_update_disable"></label>

+                        </div>

+                    </div>

+                </div>

+            </div>

+            <div class="row form-group" data-bind="visible: false">

+                <label data-trans="ota_update_interval_day" for="selInterValDay" class="col-xs-4 side-right"></label>

+

+                <div class="col-xs-3">

+                    <select id="selInterValDay" name="selInterValDay" data-bind="value: updateIntervalDay" class="form-control">

+                        <option data-trans="ota_update_every_day" value="1"></option>

+                        <option data-trans="ota_update_15_day" value="15"></option>

+                        <option data-trans="ota_update_30_day" value="30"></option>

+                    </select>

+                </div>

+            </div>

+            <div class="row form-group" data-bind="visible: updateMode()=='1'">

+                <div class="col-xs-12 padding-top-10">

+                    <p class="checkbox" data-bind="css:{'checkbox_selected': allowRoamingUpdate()=='1'}, click: clickAllowRoamingUpdate"

+                       manualControl="true">

+                        <input id="chkUpdateRoamPermission" name="chkUpdateRoamPermission" data-bind="checked:allowRoamingUpdate()=='1'" type="checkbox" value="1"/>

+                    </p>

+                    <label data-trans="ota_update_roaming_remind" class="update_inline floatleft"></label>

+                </div>

+            </div>

+

+            <div class="form-buttons">

+                <input id="btnApply" data-trans="apply" type="submit" formmethod="post" class="btn btn-primary"/>

+            </div-->

+

+            <!--

+            <div class="row form-group">

+                <label data-trans="ota_manual_upgrade_url" class="col-xs-4 side-right"></label>

+                    <div class="col-xs-3">

+                        <input id="upgrade_url" type="text" size="128" data-bind="value:updateURL" class="required form-control">

+                    </div>

+            </div>

+            <div class="form-buttons">

+                <input id="btnOtaUpgApply" data-bind="click:ota_upgrade_apply" data-trans="download" type="submit" formmethod="post" class="btn btn-primary"/>

+            </div-->

+

+            <!--div class="form-note">

+                <div class="notes-title">&nbsp;</div>

+                <ul class="notes-content">

+                    <li data-trans="fota_note1"></li>

+                </ul>

+		    </div-->

+		</div>

+

+	</div>

+</form>

+<!--form id="frmNativeUpdate" data-bind="visible: updateType() == 'mifi_local'" method="post" name="UploadFile" id="UploadFile" action="../../cgi-bin/upload.cgi" enctype="multipart/form-data" target="ifr"> 

+	<div class="form-body">

+		<h3 class="form-title" data-trans="software_upload"></h3>

+		<table style="width:100%">  

+			<input type="text" id="upfile" size="20" style="height:35px; width:200px; display:inline-block;" readonly />

+			<input type="button" class="btn btn-primary" data-trans='browse_btn' style="height:34px; width:81px;" />

+			<input id="fileName" class="form-control" type="file" name="fileName" style="margin-left: 15px;background-color:#E3E3E3;opacity:0;filter:alpha(opacity=0);position:absolute;left:0px; width:280px; display:inline-block;" /> 

+			<input class="btn btn-primary" id="fileuploadsubmit" type="submit" formmethod="post" data-trans="ota_title" style="float:right; margin-top:8px; margin-right: 20px;" /> 

+		</table>  

+		<iframe name="ifr" id="ifr" style="display:none;"></iframe>

+	</div>

+</form-->

+

+

+<!-- <br><br> -->

+<form id="uploadForm" action="../../cgi-bin/upload/upload.cgi" method="post" enctype="multipart/form-data">

+	<h3 class="form-title" data-trans="local_upload"></h3>

+    <div class="row form-group col-xs-4 side-right">

+        <label for="fileInput" data-trans="software_upload" style="display: none;"></label>

+        <input class="required form-control btn btn-primary" type="file" id="fileInput" name="file" style="display: none;">

+        <label for="fileInput" class="required btn btn-primary" data-trans="browse_btn" style="width: 80px;"></label>

+        <span id="fileNameDisplay" style="margin-left: 10px; font-weight: normal;"></span>

+    </div>

+    <br><br>

+    <div style="text-align: right; padding-right: 20px;">

+        <button class="btn btn-primary" type="submit" data-trans="ota_title" id="submitButton" disabled></button>

+    </div>

+</form>

+

+

+    <div id="uploadSection" data-bind="visible: updateType() == 'mifi_local'">

+        <h3 class="form-title" data-trans="software_upload"></h3>

+        <iframe id="fileUploadIframe" name="fileUploadIframe" frameborder="0" height="0" scrolling="no" style="height:0px;width:0px;" width="0"></iframe>

+        <form id="fileUploadForm" name="fileUploadForm" action="../../cgi-bin/upload/upload.cgi" enctype="multipart/form-data" method="post" target="fileUploadIframe">

+            <input id="fileField" name="filename" dir="ltr" maxlength="200" type="file"/>

+            <div class="fileUploadDiv">

+                <input id="fileUploadApplyBtn" name="fileUploadApplyBtn" data-trans="ota_title" type="button" onclick="fileUploadSubmitClickHandler();" class="btn btn-primary margin-left-5 margin-top-2"/>

+            </div>

+            <div class="clear"></div>

+        </form>

+    </div>

+	<form data-bind="visible: updateType() == 'mifi_local'">

+	    <div class="form-body">

+	    <div class="form-note">

+            <div class="notes-title">&nbsp;</div>

+            <ul class="notes-content">

+                <li data-trans="local_note"></li>

+            </ul>

+		</div>

+		</div>

+	</form>

+</div>

+</div>

+</div>

+

+<script>

+    const fileInput = document.getElementById('fileInput');

+    const fileNameDisplay = document.getElementById('fileNameDisplay');

+    const submitButton = document.getElementById('submitButton');

+    const uploadForm = document.getElementById('uploadForm');

+    const browseButton = document.querySelector('label[for="fileInput"].btn.btn-primary');

+

+    fileInput.addEventListener('change', function () {

+        fileNameDisplay.textContent = '';

+        submitButton.disabled = true;

+        

+        const file = fileInput.files[0];

+        if (file) {

+            if (file.size > 2097152) {

+                errorOverlay("file_verify_error");

+                return;

+            }

+            fileNameDisplay.textContent = file.name;

+            submitButton.disabled = false;

+        }

+    });

+    

+    browseButton.addEventListener('click', function () {

+        fileInput.value = '';

+    });

+

+	uploadForm.addEventListener('submit', function (event) {

+		event.preventDefault();

+		showLoading("upload_file");

+

+		const formData = new FormData(uploadForm);

+		console.log("Form data submitted:", formData);

+

+		fetch(uploadForm.action, {

+			method: 'POST',

+			body: formData

+		})

+		.then(response => {

+			if (!response.ok) {

+				throw new Error(`HTTP error! Status: ${response.status}`);

+			}

+			return response.text();

+		})

+		.then(text => {

+			console.log("Server response:", text);

+			try {

+				const data = JSON.parse(text);

+				if (data.success) {

+					showAlert("start_update");

+				} else {

+					errorOverlay("verify_error");

+				}

+			} catch (error) {

+				console.error("Upload error:", error);

+				errorOverlay("File upload successful: Server returned non-JSON response.");

+			}

+		})

+		.catch(error => {

+			console.error("Upload error:", error);

+			errorOverlay("upload_error");

+		});

+	});

+</script>
\ No newline at end of file
diff --git a/lynq/R306_MTN/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/R306_MTN/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/R306_MTN/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/R306_MTN/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/R307/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/R307/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/R307/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/R307/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/R307L/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/R307L/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/R307L/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/R307L/ap/project/zx297520v3/prj_cpe_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/S300/BJMTN/ap/app/zte_webui/css/bt_strp.css b/lynq/S300/BJMTN/ap/app/zte_webui/css/bt_strp.css
index d0bb563..dc1c1bf 100755
--- a/lynq/S300/BJMTN/ap/app/zte_webui/css/bt_strp.css
+++ b/lynq/S300/BJMTN/ap/app/zte_webui/css/bt_strp.css
@@ -114,12 +114,12 @@
   line-height: inherit;
 }
 a {
-  color: #ffc72c;
+  color: #333;
   text-decoration: none;
 }
 a:hover,
 a:focus {
-  color: #f0c954;
+  color: #000;
   text-decoration: underline;
 }
 a:focus {
diff --git a/lynq/S300/BJMTN/ap/app/zte_webui/favicon.ico b/lynq/S300/BJMTN/ap/app/zte_webui/favicon.ico
new file mode 100755
index 0000000..0b6384b
--- /dev/null
+++ b/lynq/S300/BJMTN/ap/app/zte_webui/favicon.ico
Binary files differ
diff --git a/lynq/S300/BJMTN/ap/app/zte_webui/js/ext/set_realtek.js b/lynq/S300/BJMTN/ap/app/zte_webui/js/ext/set_realtek.js
index ff95585..b25249a 100755
--- a/lynq/S300/BJMTN/ap/app/zte_webui/js/ext/set_realtek.js
+++ b/lynq/S300/BJMTN/ap/app/zte_webui/js/ext/set_realtek.js
@@ -27,6 +27,7 @@
         HAS_BUY_BUNDLE: true, //是否支持购买服务

         WIFI_WAP3_SUPPORT: false, //是否支持wifi WAP3加密

         WIFI_WPA2_WAP3_SUPPORT: false, //是否支持wifi WPA2/WAP3兼容模式

+        HAS_URL: true, // 是否支持URL过滤,

         //station����ģʽ

         //wifi加密模式

         AUTH_MODES: [{

diff --git a/lynq/S300/BJMTN/ap/app/zte_webui/subpg/firewall.html b/lynq/S300/BJMTN/ap/app/zte_webui/subpg/firewall.html
new file mode 100755
index 0000000..fa65d81
--- /dev/null
+++ b/lynq/S300/BJMTN/ap/app/zte_webui/subpg/firewall.html
@@ -0,0 +1,70 @@
+<div id="innerContainer">

+    <div class="row header-row">

+        <div class="col-xs-1">

+            <a href="#main">

+                <img alt="" src="pic/direct-back.png">

+            </a>

+        </div>

+        <div class="col-xs-11">

+            <div class="form-title">

+                <h1 data-trans='advanced_settings'></h1>

+            </div>

+        </div>

+    </div>

+    <div class="row">

+        <div class="col-xs-2">

+			<div class="nav_right">

+				<ul>

+					<li><a data-trans="sleep_mode" href="#wlan_sleep"></a></li>

+					<li><a data-trans="router_setting" href="#route_set"></a></li>

+					<li class="active"><a data-trans="firewall" href="#filter_main"></a></li>

+					<li data-bind="visible:hasUpdateCheck"><a data-trans="update_settings" href="#fota"></a></li>

+					<!-- <li data-bind="visible:hasUssd"><a data-trans="USSD" href="#usat"></a></li> -->

+					<li data-bind="visible:hasDdns"><a data-trans="DDNS" href="#dynamic_dns"></a></li>

+					<li><a data-trans="others" href="#more"></a></li>

+                    <li><a data-trans="tr069" href="#tr069"></a></li>

+				</ul>

+			</div>

+		</div>

+

+    <div class="col-xs-10">

+        <div class="form-body">

+            <div class="content margin-top-20">

+                <div class="col-xs-4">

+                    <div class="row">

+                        <a href="#filter_port">

+                            <div data-trans="port_filter" class="line-height-40 arrow-right cursorhand"></div>

+                        </a>

+                    </div>

+                    <div class="row" style="display:none">

+                        <a href="#map_port">

+                            <div data-trans="port_map" class="line-height-40 arrow-right cursorhand"></div>

+                        </a>

+                    </div>

+                    <div class="row" style="display:none">

+                        <a href="#foward_port">

+                            <div data-trans="port_forward" class="line-height-40 arrow-right cursorhand"></div>

+                        </a>

+                    </div>

+                    <div data-bind="visible: hasUrlFilter" class="row">

+                        <a href="#filter_url">

+                            <div data-trans="url_filter" class="line-height-40 arrow-right cursorhand"></div>

+                        </a>

+                    </div>

+                    <div class="row">

+                        <a href="#universal_plug_and_play">

+                            <div data-trans="upnp" class="line-height-40 arrow-right cursorhand"></div>

+                        </a>

+                    </div>

+                    <div class="row">

+                        <a href="#demilitarized_zone">

+                            <div data-trans="dmz" class="line-height-40 arrow-right cursorhand"></div>

+                        </a>

+                    </div>

+                </div>

+            </div>

+        </div>

+    </div>

+    </div>

+</div>

+

diff --git a/lynq/S300/BJMTN/ap/app/zte_webui/subpg/main.html b/lynq/S300/BJMTN/ap/app/zte_webui/subpg/main.html
new file mode 100755
index 0000000..38cbb41
--- /dev/null
+++ b/lynq/S300/BJMTN/ap/app/zte_webui/subpg/main.html
@@ -0,0 +1,222 @@
+

+<div class="row margin-top-20">

+<div class="type_items">

+	<ul>

+		<li><a href="#child_ctl" data-bind="visible: hasParentalControl" data-trans="parental_control" class="c0EC6DC"></a></li>

+		<li><a href="#msg_main"  data-bind="visible: hasSms" data-trans="sms" class="cF53A58"></a></li>

+		<li><a href="#usat" data-bind="visible:hasUssd" data-trans="USSD"></a></li>

+		<li><a href="#pb_main" data-bind="visible: hasPhonebook" data-trans="phonebook" class="c00AEFF"></a></li>

+		<li><a href="#sdcard" data-bind="visible: isSupportSD" data-trans="sd" class="c2175FF"></a></li>

+		<li><a data-bind="attr: {href: notDataCard? '#route_set' : '#demilitarized_zone'}" data-trans="advanced_settings" class="cFFCE2B"></a></li>

+		<li><a href="#fast_set" data-bind="visible: isSupportQuicksetting()" data-trans="quick_setting" class="cFFCE2B"></a></li>

+		<li><a href="https://my.mtn.bj/mon-routeur" target="_blank" data-bind="visible:hasBuyBundle" data-trans="buy_bundle"></a></li>

+	</ul>

+</div>

+</div>

+

+<div class="row margin-top-20" id="home_image">

+

+<div class="row">

+    <div style="position: relative">	

+        <div class="internet_status_container">

+		    <div data-bind=" css: {'item_icon_connect': cStatus()== 1, 'item_icon_disconnect': cStatus() != 1}"></div>

+			<h3 data-trans="net_surfing" class="home_h3"></h3>

+			<div class="net_surfing_list">

+				<ul>

+					<li><a id="h_connect_btn" href="javascript: void(0)" data-bind="visible: canConnect() && isShowHomeConnect(), click: connectHandler , css: {'h_connect_on': cStatus()== 1, 'h_connect_off': cStatus() != 1}" style="display: none;"></a></li>

+					<li><i class="up"></i><span data-bind="text: up_Speed"></span></li>

+					<li><i class="down"></i><span data-bind="text: down_Speed"></span></li>

+					<li><span data-bind="text: connected_Time"></span></li>

+				</ul>

+			</div>

+        </div>

+

+		<div class="network_control_container">

+		    <div class="item_icon"></div>

+			<h3 data-trans="my_router" class="home_h3"></h3>			

+			<!--div id="h_network_type" data-bind="text: networkType, css: {'no-btn': !(canConnect() && isShowHomeConnect())}"></div-->

+			<div class="my_router_list">

+				<ul>

+					<li data-bind="visible: hasRj45"><a id="opmode" data-bind="click: showOpModeWindow, css: {'not-allowed': enableFlag}" href="javascript:void(0)"></a></li>

+					<li><a data-bind="click: showNetworkSettingsWindow" data-trans="settings_internet" href="javascript:void(0)"></a></li>

+					<!--li><div id="h_ssid"></div></li-->

+					<li data-bind="visible: notDataCard"><a data-trans="settings_wireless" href="#wlan_main"></a></li>

+				</ul>

+			</div>

+		</div>

+

+        <!--div id="h_connect_status" data-bind="visible:notDataCard, css: {'h_status_connected': cStatus()== 1, 'h_status_disconnected': cStatus()== 2, 'h_status_connecting': cStatus()== 3, 'h_status_disconnecting': cStatus()== 4, }">

+        </div-->

+

+		<div data-bind="visible: notDataCard" onclick="window.location.hash='#conn_device'" class="connected_devices_container">

+		    <div class="item_icon"></div>

+			<h3 data-trans="station_info" class="home_h3" ></h3>

+            <div style="text-align:center;display:inline" class="margin-top-20">

+				<div id="h_wire_device" data-bind="visible: hasRj45 && isCPE">

+					<span data-bind="text: wireDeviceNum" style="font-size:70px;"><em></em></span><sub data-trans="device_unit" style="font-size: 16px;"></sub>

+					<span data-trans="cable" style="font-size:15px;text-align:center;display:block"></span>

+				</div>

+				<div id="h_wireless_device" style="display-block">

+					<span data-bind="text: wirelessDeviceNum" style="font-size:70px"></span><sub data-trans="device_unit" style="font-size: 16px;"></sub>

+					<span data-trans="wireless" style="font-size:15px;text-align:center;display:block"></span>

+				</div>

+			</div>	

+            <!--a href="#conn_device" id="h_attached_device_link">

+            </a-->

+        </div>

+    </div>

+</div>

+</div>

+

+

+<div class="row margin-top-20 label-font-normal margin-bottom-20">

+    <div class="text-center traffic_control_container" data-bind="visible: showTraffic()">

+        <h4 data-trans="traffic_data_plan" style="font-size:14px;text-align:right;padding-right:15px"></h4>

+        <div style="display:inline-block">

+            <div id="traffic_graphic" style="width: 200px; height: 165px; visibility: visible;"></div>

+        </div>		

+        <div style="text-align: left;padding-left:20px;font-size:18px">

+			<span style="background-color: #8CC916;" class="color_block"></span>

+			<span data-trans="traffic_used" class="color_block_desc"></span>

+			<span class="color_block_desc">:</span>

+			<span data-bind="text: trafficUsed" class="color_block_desc"></span>

+	    </div>

+		<div class="statistics_list">

+			<ul>

+				<li><a href="#flow_ctl">

+				    <div data-bind="visible: trafficAlertEnable">

+                        <span data-bind="text: trafficLimited" class="line-height-20"></span>

+                        <span data-trans="traffic_limit_data" class="line-height-20"></span>

+                    </div>

+                    <div data-bind="visible: trafficAlertEnable() == false">

+                        <div data-trans="traffic_not_set_limited" class="line-height-20"></div>

+                    </div>

+				</a></li>

+			</ul>

+		</div>

+    </div>

+

+

+	<div data-bind="css:{'device_info_container_hastraffic':showTraffic(),'device_info_container_notraffic':!showTraffic()}" class="device_info_container">

+        <h4 data-trans="device_info" style="font-size:14px;text-align:left;padding-left:15px;color:#fff"></h4>

+        <div style="color:#fff;position: relative;height: 210px;font-size: 18px;line-height: 1.5em;padding:20px 0px 0px 15px;">

+			<div class="row">

+				<label data-trans="sim_serial_number" class="col-xs-5"></label>

+				<label data-bind="text: simSerialNumber" class="col-xs-7"></label>

+			</div>

+			<div class="row">

+				<label data-trans="imei" class="col-xs-5"></label>

+				<label data-bind="text: imei" class="col-xs-7"></label>

+			</div>

+			<div class="row">

+				<label data-trans="imsi" class="col-xs-5"></label>

+				<label data-bind="text: imsi" class="col-xs-7"></label>

+			</div>

+			<!--div class="row" data-bind="visible: notDataCard">

+				<label class="col-xs-5" data-trans="wifi_range"></label>

+				<label class="col-xs-7" data-bind="attr: {'data-trans': wifiLongMode}"></label>

+			</div-->

+			<div class="row">

+				<label data-trans="signal_strength_label" class="col-xs-5"></label>

+				<label id="fresh_signal_strength" class="col-xs-7"></label>

+			</div>

+			<div class="row" data-bind="visible: hasWifi && showMultiSsid()">

+				<label data-trans="network_name_ssid1" class="col-xs-5"></label>

+				<label data-bind="text: ssid" style="word-wrap: break-word;" class="col-xs-7"></label>

+			</div>

+			<div class="row" data-bind="visible: hasWifi && !showMultiSsid()">

+				<label data-trans="network_name" class="col-xs-5"></label>

+				<label data-bind="text: ssid" style="word-wrap: break-word;" class="col-xs-7"></label>

+			</div>

+		</div>

+        <div style="text-align:right;">

+		    <a href="javascript: void(0)" data-trans="detail_info" id="showDetailInfo" tabindex="0"></a>

+        </div>

+    </div>

+</div>

+

+

+<div id="h_qrcode" data-bind="visible: showQRCode" style="float:right" class="text-center">

+    <img id="qrcode_img" data-bind="attr: {src: qrcodeSrc}" src="./pic/res_blacktrans.png" width="111"/>

+</div>

+

+<script type="text/x-jquery-tmpl" id="detailInfoTmpl">

+<div class="row">

+    <label class="col-xs-6" data-trans="sim_serial_number" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= simSerialNumber %></label>

+</div>

+<div class="row">

+    <label data-trans="imei" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= imei %></label>

+</div>

+<div class="row">

+    <label data-trans="imsi" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= imsi %></label>

+</div>

+<div class="row">

+    <label data-trans="signal_strength_label" class="col-xs-6"></label>

+    <label class="col-xs-6" id="popoverSignalTxt"><%= signal %></label>

+</div>

+<% if(hasWifi){ %>

+<div class="row">

+    <label data-trans="<%= showMultiSsid ? 'network_name_ssid1': 'network_name' %>" class="col-xs-6"></label>

+    <label style="word-wrap: break-word; word-break: break-all;" class="col-xs-6"><%= ssid %></label>

+</div>

+<div class="row">

+    <label data-trans="<%= showMultiSsid ? 'max_access_num_ssid1': 'max_access_num' %>" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= max_access_num %></label>

+</div>

+    <% if(showMultiSsid){ %>

+        <div class="row">

+            <label data-trans="network_name_ssid2" class="col-xs-6"></label>

+            <label style="word-wrap: break-word; word-break: break-all;" class="col-xs-6"><%= m_ssid %></label>

+        </div>

+        <div class="row">

+            <label data-trans="max_access_num_ssid2" class="col-xs-6"></label>

+            <label class="col-xs-6"><%= m_max_access_num %></label>

+        </div>

+    <% } %>

+<div class="row" style="display: none">

+    <label data-trans="wifi_range" class="col-xs-6"></label>

+    <label data-trans="<%= wifi_long_mode %>" class="col-xs-6"></label>

+</div>

+<% } %>

+<div class="row">

+    <label data-trans="cell_id" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= cellid %></label>

+</div>

+<div class="row" style="display: none">

+    <label data-trans="lan_domain" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= lanDomain %></label>

+</div>

+<div class="row">

+    <label data-trans="ip_address" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= ipAddress %></label>

+</div>

+<% if(showMacAddress){ %>

+<div class="row">

+    <label data-trans="mac_address" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= macAddress %></label>

+</div>

+<% } %>

+<% if(showIpv4WanIpAddr){ %>

+<div class="row">

+    <label data-trans="wan_ip_address" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= wanIpAddress %></label>

+</div>

+<% } %>

+<% if(showIpv6WanIpAddr){ %>

+<div class="row">

+    <label data-trans="ipv6_wan_ip_address" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= ipv6WanIpAddress %></label>

+</div>

+<% } %>

+<div class="row">

+    <label data-trans="software_version" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= sw_version %></label>

+</div>

+<div class="row">

+    <label data-trans="hardware_version" class="col-xs-6"></label>

+    <label class="col-xs-6"><%= hw_version %></label>

+</div>

+</script>

diff --git a/lynq/S300/BJMTN/ap/app/zte_webui/subpg/ota_update.html b/lynq/S300/BJMTN/ap/app/zte_webui/subpg/ota_update.html
new file mode 100755
index 0000000..b4489ff
--- /dev/null
+++ b/lynq/S300/BJMTN/ap/app/zte_webui/subpg/ota_update.html
@@ -0,0 +1,243 @@
+<div id="innerContainer">

+    <div class="row header-row">

+        <div class="col-xs-1">

+            <a href="#main">

+                <img alt="" src="pic/direct-back.png">

+            </a>

+        </div>

+        <div class="col-xs-11">

+            <div class="form-title">

+                <h1 data-trans='advanced_settings'></h1>

+            </div>

+        </div>

+    </div>

+    <div class="row">

+        <div class="col-xs-2">

+			<div class="nav_right">

+				<ul>

+					<li data-bind="visible: isDataCard"><a href="#demilitarized_zone" data-trans="dmz_setting"></a></li>

+					<li data-bind="visible: isDataCard"><a href="#pin_mode" data-trans="pin_management"></a></li>

+					<li data-bind="visible: !isDataCard"><a href="#wlan_sleep" data-trans="sleep_mode"></a></li>

+					<li data-bind="visible: !isDataCard"><a href="#route_set" data-trans="router_setting"></a></li>

+					<li data-bind="visible: !isDataCard"><a href="#filter_main" data-trans="firewall"></a></li>

+					<li data-bind="visible:hasUpdateCheck" class="active"><a href="#fota" data-trans="update_settings"></a></li>

+					<!-- <li data-bind="visible:hasUssd"><a href="#usat" data-trans="USSD"></a></li> -->

+					<li data-bind="visible:hasDdns"><a href="#dynamic_dns" data-trans="DDNS"></a></li>

+					<li data-bind="visible: !isDataCard"><a href="#more" data-trans="others"></a></li>

+                    <li><a data-trans="tr069" href="#tr069"></a></li>

+				</ul>

+			</div>

+		</div>

+

+<div class="col-xs-10">

+<form id="frmOTAUpdate" role="form" data-bind="visible: updateType() == 'mifi_fota'">

+     <!-- <h3 data-trans="ota_update_manual" class="form-title"></h3 --> 

+    <div class="form-body margin-top-20">

+        <!--div class="content">

+            <div class="row">

+                <div class="col-xs-6">

+                    <span data-trans="ota_last_update_check"></span>

+                    <span data-bind="text: lastCheckTime"></span>

+                </div>

+                <div class="col-xs-6 align-right">

+                    <input id="btnCheckNewVersion" data-bind="click:checkNewVersion" data-trans="ota_check_new_version" type="button" class="btn btn-primary margin-right-20"/>

+                </div>

+            </div>

+			<div class="form-note">

+                <div class="notes-title">&nbsp;</div>

+                <ul class="notes-content">

+                    <li data-trans="ota_check_new_version_desc"></li>

+                </ul>

+		    </div>

+        </div-->

+

+        <!--div class="form-title" data-trans='ota_update_manual'></div>

+        <div class="content">

+            <span class="paddingleft25" data-trans="ota_check_new_version_desc"></span>

+        </div>

+        <div class="form-buttons">

+            <input id="btnCheckNewVersion" type="button" class="btn btn-primary" data-trans="ota_check_new_version"

+                   data-bind="click:checkNewVersion"/>

+        </div>

+        <div class="form-title" data-trans='ota_update_setting'></div-->

+        <div class="content">

+			<!--

+            <h3 data-trans="ota_update_setting" class="form-title"></h3>

+            <div class="row">

+                <label data-trans="ota_auto_update_switch" class="col-xs-4 side-right"></label>

+                <div class="col-xs-8">

+                    <div class="row form-group">

+                        <div class="col-xs-3">

+                            <input id="auto_update_enable" name="updateMode" data-bind="checked: updateMode" type="radio" value="1"/>

+                            <label data-trans="enable" for="auto_update_enable"></label>

+                        </div>

+                        <div class="col-xs-3">

+                            <input id="auto_update_disable" name="updateMode" data-bind="checked: updateMode" type="radio" value="0"/>

+                            <label data-trans="disable" for="auto_update_disable"></label>

+                        </div>

+                    </div>

+                </div>

+            </div>

+            <div class="row form-group" data-bind="visible: false">

+                <label data-trans="ota_update_interval_day" for="selInterValDay" class="col-xs-4 side-right"></label>

+

+                <div class="col-xs-3">

+                    <select id="selInterValDay" name="selInterValDay" data-bind="value: updateIntervalDay" class="form-control">

+                        <option data-trans="ota_update_every_day" value="1"></option>

+                        <option data-trans="ota_update_15_day" value="15"></option>

+                        <option data-trans="ota_update_30_day" value="30"></option>

+                    </select>

+                </div>

+            </div>

+            <div class="row form-group" data-bind="visible: updateMode()=='1'">

+                <div class="col-xs-12 padding-top-10">

+                    <p class="checkbox" data-bind="css:{'checkbox_selected': allowRoamingUpdate()=='1'}, click: clickAllowRoamingUpdate"

+                       manualControl="true">

+                        <input id="chkUpdateRoamPermission" name="chkUpdateRoamPermission" data-bind="checked:allowRoamingUpdate()=='1'" type="checkbox" value="1"/>

+                    </p>

+                    <label data-trans="ota_update_roaming_remind" class="update_inline floatleft"></label>

+                </div>

+            </div>

+

+            <div class="form-buttons">

+                <input id="btnApply" data-trans="apply" type="submit" formmethod="post" class="btn btn-primary"/>

+            </div-->

+

+            <div class="row form-group">

+                <label data-trans="ota_manual_upgrade_url" class="col-xs-4 side-right"></label>

+                    <div class="col-xs-3">

+                        <input id="upgrade_url" type="text" size="128" data-bind="value:updateURL" class="required form-control">

+                    </div>

+            </div>

+            <div class="form-buttons">

+                <input id="btnOtaUpgApply" data-bind="click:ota_upgrade_apply" data-trans="download" type="submit" formmethod="post" class="btn btn-primary"/>

+            </div>

+

+            <!--div class="form-note">

+                <div class="notes-title">&nbsp;</div>

+                <ul class="notes-content">

+                    <li data-trans="fota_note1"></li>

+                </ul>

+		    </div-->

+		</div>

+

+	</div>

+</form>

+<!--form id="frmNativeUpdate" data-bind="visible: updateType() == 'mifi_local'" method="post" name="UploadFile" id="UploadFile" action="../../cgi-bin/upload.cgi" enctype="multipart/form-data" target="ifr"> 

+	<div class="form-body">

+		<h3 class="form-title" data-trans="software_upload"></h3>

+		<table style="width:100%">  

+			<input type="text" id="upfile" size="20" style="height:35px; width:200px; display:inline-block;" readonly />

+			<input type="button" class="btn btn-primary" data-trans='browse_btn' style="height:34px; width:81px;" />

+			<input id="fileName" class="form-control" type="file" name="fileName" style="margin-left: 15px;background-color:#E3E3E3;opacity:0;filter:alpha(opacity=0);position:absolute;left:0px; width:280px; display:inline-block;" /> 

+			<input class="btn btn-primary" id="fileuploadsubmit" type="submit" formmethod="post" data-trans="ota_title" style="float:right; margin-top:8px; margin-right: 20px;" /> 

+		</table>  

+		<iframe name="ifr" id="ifr" style="display:none;"></iframe>

+	</div>

+</form-->

+

+

+<!-- <br><br> -->

+<form id="uploadForm" action="../../cgi-bin/upload/upload.cgi" method="post" enctype="multipart/form-data">

+	<h3 class="form-title" data-trans="local_upload"></h3>

+    <div class="row form-group col-xs-4 side-right">

+        <label for="fileInput" data-trans="software_upload" style="display: none;"></label>

+        <input class="required form-control btn btn-primary" type="file" id="fileInput" name="file" style="display: none;">

+        <label for="fileInput" class="required btn btn-primary" data-trans="browse_btn" style="width: 80px;"></label>

+        <span id="fileNameDisplay" style="margin-left: 10px; font-weight: normal;"></span>

+    </div>

+    <br><br>

+    <div style="text-align: right; padding-right: 20px;">

+        <button class="btn btn-primary" type="submit" data-trans="ota_title" id="submitButton" disabled></button>

+    </div>

+</form>

+

+

+    <div id="uploadSection" data-bind="visible: updateType() == 'mifi_local'">

+        <h3 class="form-title" data-trans="software_upload"></h3>

+        <iframe id="fileUploadIframe" name="fileUploadIframe" frameborder="0" height="0" scrolling="no" style="height:0px;width:0px;" width="0"></iframe>

+        <form id="fileUploadForm" name="fileUploadForm" action="../../cgi-bin/upload/upload.cgi" enctype="multipart/form-data" method="post" target="fileUploadIframe">

+            <input id="fileField" name="filename" dir="ltr" maxlength="200" type="file"/>

+            <div class="fileUploadDiv">

+                <input id="fileUploadApplyBtn" name="fileUploadApplyBtn" data-trans="ota_title" type="button" onclick="fileUploadSubmitClickHandler();" class="btn btn-primary margin-left-5 margin-top-2"/>

+            </div>

+            <div class="clear"></div>

+        </form>

+    </div>

+	<form data-bind="visible: updateType() == 'mifi_local'">

+	    <div class="form-body">

+	    <div class="form-note">

+            <div class="notes-title">&nbsp;</div>

+            <ul class="notes-content">

+                <li data-trans="local_note"></li>

+            </ul>

+		</div>

+		</div>

+	</form>

+</div>

+</div>

+</div>

+

+<script>

+    const fileInput = document.getElementById('fileInput');

+    const fileNameDisplay = document.getElementById('fileNameDisplay');

+    const submitButton = document.getElementById('submitButton');

+    const uploadForm = document.getElementById('uploadForm');

+    const browseButton = document.querySelector('label[for="fileInput"].btn.btn-primary');

+

+    fileInput.addEventListener('change', function () {

+        fileNameDisplay.textContent = '';

+        submitButton.disabled = true;

+        

+        const file = fileInput.files[0];

+        if (file) {

+            if (file.size > 2097152) {

+                errorOverlay("file_verify_error");

+                return;

+            }

+            fileNameDisplay.textContent = file.name;

+            submitButton.disabled = false;

+        }

+    });

+    

+    browseButton.addEventListener('click', function () {

+        fileInput.value = '';

+    });

+

+	uploadForm.addEventListener('submit', function (event) {

+		event.preventDefault();

+		showLoading("upload_file");

+

+		const formData = new FormData(uploadForm);

+		console.log("Form data submitted:", formData);

+

+		fetch(uploadForm.action, {

+			method: 'POST',

+			body: formData

+		})

+		.then(response => {

+			if (!response.ok) {

+				throw new Error(`HTTP error! Status: ${response.status}`);

+			}

+			return response.text();

+		})

+		.then(text => {

+			console.log("Server response:", text);

+			try {

+				const data = JSON.parse(text);

+				if (data.success) {

+					showAlert("start_update");

+				} else {

+					errorOverlay("verify_error");

+				}

+			} catch (error) {

+				console.error("Upload error:", error);

+				errorOverlay("File upload successful: Server returned non-JSON response.");

+			}

+		})

+		.catch(error => {

+			console.error("Upload error:", error);

+			errorOverlay("upload_error");

+		});

+	});

+</script>
\ No newline at end of file
diff --git a/lynq/S300/BJMTN/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/default/default_parameter_user b/lynq/S300/BJMTN/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/default/default_parameter_user
index abd95b1..565e684 100755
--- a/lynq/S300/BJMTN/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/default/default_parameter_user
+++ b/lynq/S300/BJMTN/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/default/default_parameter_user
@@ -191,7 +191,7 @@
 rootdev_manufacturer=LYNQ
 rootdev_modeldes=MBB
 rootdev_modelname=MBB
-os_url=http://mtnbroadband.ng
+os_url=
 serialnumber=See-IMEI
 static_dhcp_enable=1
 static_ethwan_gw=
@@ -237,7 +237,7 @@
 regver=4.0
 meid=
 uetype=1
-LocalDomain=mtnbroadband.ng
+LocalDomain=
 data_volume_alert_percent=
 data_volume_limit_size=
 data_volume_limit_switch=0
diff --git a/lynq/S300/ap/app/zte_webui/i18n/Messages_en.properties b/lynq/S300/ap/app/zte_webui/i18n/Messages_en.properties
index 57a4ba7..60e227c 100755
--- a/lynq/S300/ap/app/zte_webui/i18n/Messages_en.properties
+++ b/lynq/S300/ap/app/zte_webui/i18n/Messages_en.properties
@@ -1742,4 +1742,5 @@
 check_airtime = Check Airtime Balance

 check_data = Check Data Balance

 check_number = Check My Number

-buy_bundle = Buy Bundle
\ No newline at end of file
+buy_bundle = Buy Bundle

+block_operate_note = To enable the block function, please modify the rule to blacklist in the WLAN MAC Filter settings.
\ No newline at end of file
diff --git a/lynq/S300/ap/app/zte_webui/i18n/Messages_fr.properties b/lynq/S300/ap/app/zte_webui/i18n/Messages_fr.properties
index 8fbe46b..c65f672 100755
--- a/lynq/S300/ap/app/zte_webui/i18n/Messages_fr.properties
+++ b/lynq/S300/ap/app/zte_webui/i18n/Messages_fr.properties
@@ -1743,3 +1743,4 @@
 check_data = Balance Des Données

 check_number = Vérifiez Mon Numéro

 buy_bundle = Acheter Bundle

+block_operate_note = Pour activer la fonction Block, vous devez modifier la règle en liste noire dans les paramètres de Filtre MAC WLAN.
\ No newline at end of file
diff --git a/lynq/S300/ap/app/zte_webui/i18n/Messages_zh-cn.properties b/lynq/S300/ap/app/zte_webui/i18n/Messages_zh-cn.properties
index e50a810..620c709 100755
--- a/lynq/S300/ap/app/zte_webui/i18n/Messages_zh-cn.properties
+++ b/lynq/S300/ap/app/zte_webui/i18n/Messages_zh-cn.properties
@@ -1746,4 +1746,5 @@
 check_airtime = 通话余额

 check_data = 数据余额

 check_number = 检查号码

-buy_bundle = 购买套餐
\ No newline at end of file
+buy_bundle = 购买套餐

+block_operate_note = 要打开block功能,需要在WLAN MAC Filter中修改规则为黑名单。
\ No newline at end of file
diff --git a/lynq/S300/ap/app/zte_webui/subpg/wifi_station_info.html b/lynq/S300/ap/app/zte_webui/subpg/wifi_station_info.html
new file mode 100755
index 0000000..30cf4ab
--- /dev/null
+++ b/lynq/S300/ap/app/zte_webui/subpg/wifi_station_info.html
@@ -0,0 +1,129 @@
+<div id="innerContainer">

+    <div class="row header-row">

+        <div class="col-xs-1">

+            <a href="#main">

+                <img alt="" src="pic/direct-back.png">

+            </a>

+        </div>

+        <div class="col-xs-11">

+            <div class="form-title form-title-multi">

+                <h1 data-trans='station_info'></h1>

+                <p data-trans="station_info_sub_title"></p>

+            </div>

+        </div>

+    </div>

+    <div class="row">

+        <div class="col-xs-1 margin-top-15">

+        </div>

+        <div class="col-xs-11">

+

+<div id="station_info_div" class="form-body">

+	<div class="content ko-grid-container">

+        <div id="wireless_div">

+            <h2 data-trans="wireless_access_device"></h2>

+            <table class="table table-striped table-hover">

+                <thead>

+                    <tr>

+                        <th data-trans="station_number" width="60"></th>

+                        <th data-trans="host_name"></th>

+                        <th width="100"></th>

+                        <th data-trans="mac_address" width="200"></th>

+                        <th data-trans="pc_action" data-bind="visible: supportBlock" width="150"></th>

+                    </tr>

+                </thead>

+                <tbody data-bind="foreach:deviceInfo">

+                    <tr data-bind="css: {odd: $index() % 2 == 0, even: $index() % 2 != 0}">

+                        <td data-bind="text: $index()+1"></td>

+                        <td>

+                            <span data-bind="text: hostName, attr: {id: 'hostname_txt_'+idx}"></span>

+                            <input data-bind="attr: {id: 'hostname_input_'+idx}" maxlength="20" style="display: none;" type="text" class="form-control">

+                        </td>

+                        <td>

+                            <a data-bind="click: $root.editHostNameHandler, attr: {id: 'edit_btn_'+idx}" class="cursorhand"><img height="25" src="./pic/res_edit.png"></a>

+                            <a data-bind="click: $root.saveHostNameHandler, attr: {id: 'save_btn_'+idx}" style="display: none;" class="cursorhand"><img height="25" src="./pic/res_save.png"></a>

+                            <a data-bind="click: $root.cancelEditHostNameHandler, attr: {id: 'cancel_btn_'+idx}" style="display: none;" class="cursorhand"><img height="25" src="./pic/res_cancel.png"></a>

+                        </td>

+                        <td data-bind="text: macAddress"></td>

+                        <td data-bind="visible: $root.supportBlock"><a data-trans="block" data-bind="visible: !inBlackGroup, css: {'not-allowed': disableFlag}, click: $root.wirelessBlockHandler" class="btn btn-primary btn-sm"></a></td>

+                    </tr>

+                </tbody>

+            </table>

+            <p data-bind="visible: deviceInfo().length == 0" data-trans="no_data"></p>

+        </div>

+

+        <div class="form-note">

+            <div class="notes-title">&nbsp;</div>

+            <ul class="notes-content">

+                <li data-trans="block_operate_note"></li>

+            </ul>

+        </div>

+

+        <div id="cable_div" data-bind="visible: showCableDiv">

+            <h2 data-trans="cable_access_device"></h2>

+            <table class="table table-striped table-hover">

+                <thead>

+                <tr>

+                    <th data-trans="station_number" width="60"></th>

+                    <th data-trans="host_name"></th>

+                    <th width="100"></th>

+                    <th data-trans="mac_address" width="350"></th>

+                </tr>

+                </thead>

+                <tbody data-bind="foreach:cableDeviceInfo">

+                    <tr data-bind="css: {odd: $index() % 2 == 0, even: $index() % 2 != 0}">

+                        <td data-bind="text: $index()+1"></td>

+                        <td>

+                            <span data-bind="text: hostName, attr: {id: 'hostname_txt_'+idx}"></span>

+                            <input data-bind="attr: {id: 'hostname_input_'+idx}" maxlength="20" type="text" style="display: none;" class="form-control">

+                        </td>

+                        <td>

+                            <a data-bind="click: $root.editHostNameHandler, attr: {id: 'edit_btn_'+idx}" class="cursorhand" ><img height="25" src="./pic/res_edit.png"></a>

+                            <a data-bind="click: $root.saveHostNameHandler, attr: {id: 'save_btn_'+idx}" style="display: none;" class="cursorhand"><img height="25" src="./pic/res_save.png"></a>

+                            <a data-bind="click: $root.cancelEditHostNameHandler, attr: {id: 'cancel_btn_'+idx}" style="display: none;" class="cursorhand"><img height="25" src="./pic/res_cancel.png"></a>

+                        </td>

+                        <td data-bind="text: macAddress"></td>

+                    </tr>

+                </tbody>

+            </table>

+            <p data-bind="visible: cableDeviceInfo().length == 0" data-trans="no_data"></p>

+        </div>

+

+        <div id="black_div" data-bind="visible: showBlackDiv">

+            <h2 data-trans="black_list"></h2>

+            <table class="table table-striped table-hover">

+                <thead>

+                    <tr>

+                        <th data-trans="station_number" width="60"></th>

+                        <th data-trans="host_name" style="display:none"></th>

+                        <th style="display:none" width="100"></th>

+                        <th data-trans="mac_address"></th>

+                        <th data-trans="pc_action" width="150"></th>

+                    </tr>

+                </thead>

+                <tbody data-bind="foreach:blackDevices">

+                    <tr data-bind="css: {odd: $index() % 2 == 0, even: $index() % 2 != 0}">

+                        <td data-bind="text: $index()+1"></td>

+                        <td style="display:none">

+                            <span data-bind="text: hostName, attr: {id: 'hostname_txt_'+idx}"></span>

+                            <input data-bind="attr: {id: 'hostname_input_'+idx}" maxlength="20" style="display: none;" type="text" class="form-control">

+                        </td>

+                        <td style="display:none">

+                            <a data-bind="click: $root.editHostNameHandler, attr: {id: 'edit_btn_'+idx}" class="cursorhand"><img height="25" src="./pic/res_edit.png"></a>

+                            <a data-bind="click: $root.saveHostNameHandler, attr: {id: 'save_btn_'+idx}" style="display: none;" class="cursorhand"><img height="25" src="./pic/res_save.png"></a>

+                            <a data-bind="click: $root.cancelEditHostNameHandler, attr: {id: 'cancel_btn_'+idx}" style="display: none;" class="cursorhand"><img height="25" src="./pic/res_cancel.png"></a>

+                        </td>

+                        <td data-bind="text: macAddress"></td>

+                        <td><a data-trans="pc_remove" data-bind="click: $root.blacklistRemoveHandler" class="btn btn-primary btn-sm"></a></td>

+                    </tr>

+                </tbody>

+            </table>

+        </div>

+

+        <div data-bind="visible: showPCLink">

+            <span data-trans="station_info_desc"></span> <a data-trans="parental_control" href="#child_ctl"></a>

+        </div>

+    </div>

+</div>

+    </div>

+</div>

+</div>

diff --git a/lynq/S300/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/S300/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/S300/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/S300/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/S300AI/ap/project/zx297520v3/prj_cpe/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/S300_AIC/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/S300_AIC/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/S300_AIC/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/S300_AIC/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ
diff --git a/lynq/S300_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db b/lynq/S300_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
index 8bdbdbf..5a28752 100755
--- a/lynq/S300_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
+++ b/lynq/S300_COMMON/ap/project/zx297520v3/prj_mifi_min/fs/normal/rootfs/etc_ro/config/auto_apn/auto_apn.db
Binary files differ