From 51ec7e4a7864a770b358db8cb33fa92bb6c315ad Mon Sep 17 00:00:00 2001 From: Russel Yasol Date: Sun, 12 May 2024 12:46:59 +0800 Subject: [PATCH 01/12] added improved cell scanner parsing --- simpleadmin/www/scanner.html | 283 ++++++++++++++++++++++++++++++++++ simpleadmin/www/settings.html | 39 +++-- 2 files changed, 307 insertions(+), 15 deletions(-) create mode 100644 simpleadmin/www/scanner.html diff --git a/simpleadmin/www/scanner.html b/simpleadmin/www/scanner.html new file mode 100644 index 0000000..ee4b8c3 --- /dev/null +++ b/simpleadmin/www/scanner.html @@ -0,0 +1,283 @@ + + + + + + Simple Admin + + + + + + + + + + + + + +
+
+ +
+
+
+
Cell Scanner
+
+
+ + + + + + + + + + + + +
NetworkProviderBandFrequencyPCIRSRP
+
+
+
+ + +
+ Cell Scanner will scan all LTE and NR5G-SA cells in + your area. Scanning might take a some minutes to + complete. +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + + + diff --git a/simpleadmin/www/settings.html b/simpleadmin/www/settings.html index 09cf8df..3870a14 100644 --- a/simpleadmin/www/settings.html +++ b/simpleadmin/www/settings.html @@ -504,49 +504,59 @@ ethPassthroughEnable() { this.atcmd = 'AT+QMAP="MPDN_RULE",0,1,0,1,1,"FF:FF:FF:FF:FF:FF"'; - this.sendATCommand(); - this.fetchCurrentSettings(); + this.sendATCommand().then(() => { + this.fetchCurrentSettings(); + }); }, ethPassthroughDisable() { this.atcmd = 'AT+QMAP="MPDN_RULE",0'; - this.sendATCommand(); - this.fetchCurrentSettings(); + this.sendATCommand().then(() => { + this.fetchCurrentSettings(); + }); }, onBoardDNSProxyEnable() { this.atcmd = 'AT+QMAP="DHCPV4DNS","enable"'; - this.sendATCommand(); - this.fetchCurrentSettings(); + this.sendATCommand().then(() => { + this.fetchCurrentSettings(); + }); }, onBoardDNSProxyDisable() { this.atcmd = 'AT+QMAP="DHCPV4DNS","disable"'; - this.sendATCommand(); - this.fetchCurrentSettings(); + this.sendATCommand().then(() => { + this.fetchCurrentSettings(); + }); }, usbModeEnable() { this.atcmd = "AT+QMAPWAC=1"; - this.sendATCommand(); - this.fetchCurrentSettings(); + this.sendATCommand().then(() => { + this.fetchCurrentSettings(); + }); }, usbModeDisable() { this.atcmd = "AT+QMAPWAC=0"; - this.sendATCommand(); - this.fetchCurrentSettings(); + this.sendATCommand().then(() => { + this.fetchCurrentSettings(); + }); }, scanLTE() { this.atcmd = 'AT+QENG="neighbourcell"'; - this.sendATCommand(); + this.sendATCommand().then(() => { + this.fetchCurrentSettings(); + }); }, scanNSA() { this.atcmd = 'AT+QNWCFG="nr5g_meas_info",1;+QNWCFG="nr5g_meas_info"'; - this.sendATCommand(); + this.sendATCommand().then(() => { + this.fetchCurrentSettings(); + }); }, fullScanMode() { @@ -667,7 +677,6 @@ }, init() { this.fetchTTL(); - this.fetchCurrentSettings(); }, }; } From 38b6b7ab00c370d71d1e936700073c72e37b7b6c Mon Sep 17 00:00:00 2001 From: Russel Yasol Date: Mon, 13 May 2024 08:49:37 +0800 Subject: [PATCH 02/12] added scanner page --- simpleadmin/www/scanner.html | 2101 ++++++++++++++++++++++++++++++++-- 1 file changed, 2037 insertions(+), 64 deletions(-) diff --git a/simpleadmin/www/scanner.html b/simpleadmin/www/scanner.html index ee4b8c3..20acd97 100644 --- a/simpleadmin/www/scanner.html +++ b/simpleadmin/www/scanner.html @@ -48,17 +48,17 @@ - + @@ -76,7 +76,7 @@ -
+
Cell Scanner
@@ -93,7 +93,9 @@ RSRP - + + +
@@ -101,25 +103,40 @@ - + + + +
Cell Scanner will scan all LTE and NR5G-SA cells in - your area. Scanning might take a some minutes to - complete. + your area. Scanning might disconnect your network and + take some minutes to complete.
- -
@@ -129,6 +146,70 @@
+ +
+
+
+
LTE and NSA Neighbourcell Scan
+
+ + + + + + + + + + + + +
NetworkFrequencyPCIRSRP
+
+
+
+ + +
+ Neighbourcell scan will only scan LTE or NSA cells from + your network provider. +
+
+
+
+ + +
+
+
+
+
+
@@ -136,10 +217,1606 @@ function cellScanner() { return { networkNames: { - 51566: "DITO", - 51503: "Globe", - 51502: "Smart", - // Add more MCC and MNC combinations if needed + 28967: "Aquafon JSC", + 28988: "A-Mobile LLSC", + 27601: "One Telecommunications", + 27602: "Vodafone Albania", + 27603: "Albtelecom", + 21303: "Andorra Telecom", + 28301: "Veon Armenia CJSC", + 28304: "Karabakh Telecom", + 28305: "K Telecom CJSC", + 28310: "Ucom LLC", + 23201: "A1 Telekom Austria", + 23203: "T-Mobile Austria GmbH", + 23205: "Hutchison Drei Austria", + 23207: "T-Mobile Austria", + 23208: "Lycamobile Austria", + 23209: "A1 Telekom Austria", + 23210: "Hutchison Drei Austria", + 23211: "A1 Telekom Austria", + 23212: "A1 Telekom Austria", + 23213: "T-Mobile Austria GmbH", + 23215: "Mundio Mobile Austria", + 23217: "MASS Response Service GmbH", + 23220: "MTEL Austrija GmbH", + 23291: "ÖBB", + 23292: "ArgoNET GmbH", + 25701: "A1 Belarus", + 25702: "Mobile TeleSystems", + 25704: "Belarusian Telecommunications Network", + 25706: "Belorussian Cloud Technologies", + 20601: "Proximus SA", + 20602: "Infrabel", + 20603: "Citymesh NV", + 20605: "Telenet", + 20606: "Lycamobile sprl", + 20608: "Nethys", + 20610: "Orange S.A.", + 20620: "Telenet", + 20630: "Unleashed NV", + 21803: "Public Enterprise Croatian Telecom Ltd.", + 21805: "RS Telecommunications JSC Banja Luka", + 21890: "BH Telecom", + 28401: "A1 Bulgaria", + 28403: "BTC", + 28405: "Yettel Bulgaria", + 28407: "НАЦИОНАЛНА КОМПАНИЯ ЖЕЛЕЗОПЪТНА ИНФРАСТРУКТУРА", + 28411: "Bulsatcom", + 28413: "Ti.com JSC", + 21901: "T-Hrvatski Telekom", + 21902: "Telemach", + 21910: "A1 Hrvatska", + 28001: "Cyprus Telecommunications Authority", + 28010: "Monaco Telecom", + 28020: "PrimeTel PLC", + 28022: "Lemontel Ltd", + 23001: "T-Mobile Czech Republic", + 23002: "O2 Czech Republic", + 23003: "Vodafone Czech Republic", + 23004: "Nordic Telecom Regional s.r.o.", + 23005: "PODA a.s.", + 23006: "Nordic Telecom 5G a.s.", + 23007: "T-Mobile Czech Republic", + 23098: "Správa železniční dopravní cesty, s.o.", + 23801: "TDC A/S", + 23802: "Telenor Denmark", + 23805: "Dansk Beredskabskommunikation A/S", + 23806: "Hi3G Denmark ApS", + 23808: "Voxbone mobile", + 23809: "Dansk Beredskabskommunikation A/S", + 23810: "TDC A/S", + 23811: "Dansk Beredskabskommunikation A/S", + 23812: "Lycamobile Denmark Ltd", + 23815: "Cibicom", + 23820: "Telia", + 23823: "Banedanmark", + 23842: "Greenwave Mobile IoT ApS", + 23866: "TT-Netværket P/S", + 23873: "Onomondo ApS", + 24801: "Telia Eesti", + 24802: "Elisa Eesti", + 24803: "Tele2 Eesti", + 24804: "OY Top Connect", + 24805: "CSC Telecom Estonia OÜ", + 24816: "SmartTel Plus OÜ", + 24820: "DOTT Telecom OÜ", + 24826: "IT-Decision Telecom OÜ", + 28801: "Føroya Tele", + 28802: "Nema", + 24403: "DNA Oy", + 24405: "Elisa Oyj", + 24407: "Nokia Solutions and Networks Oy", + 24412: "DNA Oy", + 24414: "Ålands Telekommunikation Ab", + 24417: "Liikennevirasto", + 24419: "Nettia Oy", + 24421: "Elisa Oyj", + 24426: "Compatel Ltd", + 24432: "Voxbone SA", + 24433: "Suomen Turvallisuusverkko Oy", + 24435: "Edzcom Oy", + 24436: "Telia Finland Oyj / Suomen Yhteisverkko Oy", + 24437: "Tismi BV", + 24491: "Telia Finland Oyj", + 20801: "Orange S.A.", + 20802: "Orange S.A.", + 20803: "MobiquiThings", + 20805: "Globalstar Europe", + 20806: "Globalstar Europe", + 20807: "Globalstar Europe", + 20808: "Altice", + 20809: "Altice", + 20810: "Altice", + 20811: "Altice", + 20812: "Truphone France", + 20813: "Altice", + 20814: "SNCF Réseau", + 20815: "Free Mobile", + 20816: "Free Mobile", + 20819: "Haute-Garonne numérique", + 20820: "Bouygues Telecom", + 20823: "Syndicat mixte ouvert Charente Numérique", + 20824: "Sierra Wireless", + 20825: "LycaMobile", + 20826: "Bouygues Telecom - Distribution", + 20827: "Coriolis Telecom", + 20828: "Airmob Infra Full", + 20829: "Cubic télécom France", + 20830: "Syma Mobile", + 20831: "Mundio Mobile", + 20834: "Cellhire France", + 20835: "Free Mobile", + 20836: "Free Mobile", + 20838: "Lebara France Ltd", + 20888: "Bouygues Telecom", + 20896: "Région Bourgogne-Franche-Comté", + 28201: "Silknet", + 28202: "MagtiCom", + 28203: "MagtiCom", + 28204: "Mobitel", + 28205: "Silknet", + 28207: "GlobalCell", + 28208: "Silknet", + 28209: "Gmobile", + 26201: "Telekom Deutschland GmbH", + 26202: "Vodafone D2 GmbH", + 26203: "Telefónica Germany GmbH & Co. oHG", + 26209: "Vodafone D2 GmbH", + 26210: "DB Netz AG", + 26212: "sipgate GmbH", + 26214: "Lebara Limited", + 26215: "None", + 26218: "NetCologne", + 26219: "Alliander AG", + 26220: "Enreach Germany GmbH", + 26223: "Drillisch Online AG", + 26243: "Lycamobile", + 26260: "DB Telematik", + 26270: "BDBOS", + 26298: "private networks", + 26601: "Gibtelecom", + 20201: "COSMOTE - Mobile Telecommunications S.A.", + 20202: "COSMOTE - Mobile Telecommunications S.A.", + 20205: "Vodafone Greece", + 20209: "NOVA", + 20210: "NOVA", + 20212: "Yuboto", + 20214: "CYTA", + 20216: "Inter Telecom", + 29001: "Tusass A/S", + 29002: "inu:it a/s", + 23403: "Jersey Airtel Ltd", + 23450: "JT Group Limited", + 23455: "Sure (Guernsey) Limited", + 21601: "Telenor Magyarország Zrt.", + 21602: "MVM Net Ltd.", + 21603: "DIGI Telecommunication Ltd.", + 21630: "Magyar Telekom Plc", + 21670: "Vodafone Magyarország Zrt.", + 21671: "Vodafone Magyarország Zrt.", + 21699: "Magyar Államvasutak", + 27401: "Iceland Telecom", + 27402: "Sýn", + 27404: "IMC Island ehf", + 27408: "Iceland Telecom", + 27411: "Nova ehf", + 27412: "IP fjarskipti", + 27491: "Neyðarlínan", + 27201: "Vodafone Ireland", + 27202: "Hutchison 3G Ireland limited", + 27203: "Eir Group plc", + 27205: "Hutchison 3G Ireland limited", + 27207: "Eir Group plc", + 27211: "Liffey Telecom", + 27213: "Lycamobile", + 27215: "UPC", + 27216: "Carphone Warehouse", + 27218: "Cubic Telecom Limited", + 27221: "Net Feasa Limited", + 23436: "Sure Isle of Man Ltd.", + 23458: "Manx Telecom", + 23473: "Bluewave Communications Ltd", + 22201: "Telecom Italia S.p.A.", + 22206: "Vodafone Italia S.p.A.", + 22207: "Noverca", + 22208: "Fastweb S.p.A.", + 22210: "Vodafone Italia S.p.A.", + 22230: "Rete Ferroviaria Italiana", + 22233: "Poste Mobile S.p.A.", + 22234: "BT Italia", + 22235: "Lycamobile", + 22236: "Digi Italy S.r.l.", + 22238: "OpNet S.p.A.", + 22241: "GO internet S.p.A.", + 22243: "Telecom Italia S.p.A.", + 22247: "Fastweb S.p.A.", + 22250: "Iliad Italia", + 22253: "COOP Voce", + 22254: "None", + 22256: "Mass Response GmbH", + 22288: "Wind Tre", + 22299: "Wind Tre", + 22101: "Telecom of Kosovo J.S.C.", + 22102: "IPKO", + 22106: "Dardaphone.Net LLC", + 22107: "Dukagjini Telecommunications LLC", + 24701: "Latvian Mobile Telephone", + 24702: "Tele2", + 24703: "Telekom Baltija", + 24705: "Bite Latvija", + 24707: "SIA MEGATEL", + 24708: "SIA VENTAmobile", + 24709: "Camel Mobile", + 29501: "Swisscom Schweiz AG", + 29502: "Salt Liechtenstein AG", + 29505: "Telecom Liechtenstein AG", + 29506: "Cubic Telecom AG", + 24601: "Telia Lietuva", + 24602: "UAB Bitė Lietuva", + 24603: "UAB Tele2 (Tele2 AB, Sweden)", + 24605: "Lietuvos geležinkeliai (Lithuanian Railways)", + 24606: "UAB Mediafon", + 24608: "Lietuvos radijo ir televizijos centras", + 27001: "POST Luxembourg", + 27071: "Société Nationale des Chemins de Fer Luxembourgeois", + 27077: "Tango SA", + 27099: "Orange S.A.", + 27801: "Epic", + 27821: "Mobile Communications Limited", + 27877: "Melita", + 25500: "Interdnestrcom", + 25901: "Orange Moldova", + 25902: "Moldcell", + 25903: "Moldtelecom", + 25905: "Moldtelecom", + 25915: "Interdnestrcom", + 25999: "Moldtelecom", + 21210: "Monaco Telecom", + 29701: "Telenor Montenegro", + 29702: "Crnogorski Telekom", + 29703: "m:tel Crna Gora", + 20402: "T-Mobile Netherlands B.V", + 20403: "Enreach Netherlands B.V.", + 20404: "Vodafone Libertel B.V.", + 20407: "Tata Communications MOVE B.V.", + 20408: "KPN Mobile The Netherlands B.V.", + 20409: "Lycamobile Netherlands Limited", + 20410: "KPN B.V.", + 20411: "Greenet Netwerk B.V", + 20412: "KPN Mobile The Netherlands B.V.", + 20415: "Ziggo B.V.", + 20416: "T-Mobile Netherlands B.V", + 20417: "Lebara Ltd", + 20418: "Ziggo Services B.V.", + 20420: "T-Mobile Netherlands B.V", + 20421: "ProRail B.V.", + 20423: "KORE Wireless Nederland B.V.", + 20425: "CapX B.V.", + 20427: "L-Mobi Mobile B.V.", + 20433: "Truphone B.V.", + 20462: "RGTN Wholesale Netherlands B.V.", + 20466: "Utility Connect B.V.", + 29401: "Makedonski Telekom", + 29403: "A1 Macedonia DOOEL", + 29404: "Lycamobile LLC", + 24201: "Telenor Norge AS", + 24202: "Telia Norge AS", + 24206: "ICE Norge AS", + 24208: "Telia Norge AS", + 24209: "Com4 AS", + 24214: "ICE Communication Norge AS", + 24215: "eRate Norway AS", + 24220: "Jernbaneverket AS", + 24221: "Jernbaneverket AS", + 24223: "Lyca Mobile Ltd", + 24299: "TampNet AS", + 26001: "Polkomtel Sp. z o.o.", + 26002: "T-Mobile Polska S.A.", + 26003: "Orange Polska S.A.", + 26006: "P4 Sp. z o.o.", + 26007: "Netia S.A.", + 26009: "Lycamobile Sp. z o.o.", + 26011: "Polkomtel Sp. z o.o.", + 26012: "Cyfrowy Polsat S.A.", + 26013: "Move Telecom S.A.", + 26015: "Polkomtel Sp. z o.o.", + 26016: "Polkomtel Sp. z o.o.", + 26017: "Polkomtel Sp. z o.o.", + 26025: "Claude ICT Poland Sp. z o.o.", + 26033: "Truphone Poland Sp. z o.o.", + 26034: "T-Mobile Polska S.A.", + 26035: "PKP Polskie Linie Kolejowe S.A.", + 26039: "VOXBONE SA", + 26045: "P4 Sp. z o.o.", + 26801: "Vodafone Portugal", + 26803: "NOS Comunicações", + 26804: "LycaMobile", + 26806: "MEO - Serviços de Comunicações e Multimédia, S.A.", + 26812: "Infraestruturas de Portugal, S.A.", + 26880: "MEO - Serviços de Comunicações e Multimédia, S.A.", + 22601: "Vodafone România", + 22603: "Telekom Romania", + 22605: "RCS&RDS", + 22610: "Orange România", + 22616: "Lycamobile Romania", + 25001: "Mobile TeleSystems", + 25002: "MegaFon PJSC", + 25008: "CS VainahTelecom", + 25009: "Khabarovsky Cellular Phone", + 25011: "Scartel", + 25016: "Miatel", + 25020: "Tele2", + 25021: "JSC GlobalTel", + 25022: "Vainakh Telecom", + 25023: "GTNT", + 25026: "VTB Mobile", + 25027: "Tattelecom", + 25029: "Iridium Communications", + 25032: "K-Telecom", + 25033: "Sevtelekom", + 25034: "Krymtelekom", + 25035: "EKATERINBURG-2000", + 25040: "Voentelecom", + 25045: "PJSC New Mobile Communications", + 25050: "Sberbank-Telecom", + 25059: "NetbyNet", + 25060: "KTK Telecom", + 25062: "Tinkoff Mobile", + 25096: "K-Telecom", + 25097: + "State Unitary Enterprise of DPR Republican Telecommunications Operator", + 25598: "OOO MKS", + 25099: "OJSC Vimpel-Communications", + 29201: "San Marino Telecom", + 22001: "Telenor Serbia", + 22003: "Telekom Srbija", + 22005: "A1 Srbija d.o.o.", + 22011: "GLOBALTEL d.o.o.", + 23101: "Orange Slovensko", + 23102: "Slovak Telekom", + 23103: "SWAN Mobile, a.s.", + 23104: "Slovak Telekom", + 23105: "Orange Slovensko", + 23106: "O2 Slovakia", + 23199: "Železnice Slovenskej Republiky", + 29310: "SŽ - Infrastruktura, d.o.o.", + 29340: "A1 Slovenija", + 29341: "Telekom Slovenije", + 29364: "T-2 d.o.o.", + 29370: "Tušmobil d.o.o.", + 21401: "Vodafone Spain", + 21402: "Fibracat Telecom SLU", + 21403: "Orange Espagne S.A.U", + 21404: "Xfera Moviles SA", + 21405: "Telefónica Móviles España", + 21406: "Vodafone Spain", + 21407: "Telefónica Móviles España", + 21408: "None", + 21409: "Orange Espagne S.A.U", + 21414: "AVATEL MÓVIL, S.L.U.", + 21416: "R Cable y Telecomunicaciones Galicia S.A.", + 21417: "R Cable y Telecomunicaciones Galicia S.A.", + 21419: "Orange España Virtual Sl.", + 21422: "Best Spain Telecom", + 21424: "VODAFONE ESPAÑA, S.A.U.", + 21427: "SCN Truphone, S.L.", + 21428: "Consorcio de Telecomunicaciones Avanzadas, S.A.", + 21429: "Xfera Moviles S.A.U.", + 21434: "Aire Networks del Mediterráneo, S.L.U.", + 21451: "Administrador de Infraestructuras Ferroviarias", + 24001: "Telia Sverige AB", + 24002: "HI3G Access AB", + 24003: "Teracom AB", + 24004: "3G Infrastructure Services AB", + 24005: "Svenska UMTS-Nät AB", + 24006: "Telenor Sverige AB", + 24007: "Tele2 Sverige AB", + 24010: "Tele2 Sverige AB", + 24012: "Lycamobile Sweden Limited", + 24016: "42 Telecom AB", + 24017: "Götalandsnätet AB", + 24019: "Mundio Mobile (Sweden) Limited", + 24020: "Sierra Wireless Messaging AB", + 24021: "Trafikverket ICT", + 24024: "Net4Mobility HB", + 24027: "GlobeTouch AB", + 24038: "Voxbone mobile", + 24063: "Fink Telecom Services", + 22801: "Swisscom AG", + 22802: "Sunrise UPC", + 22803: "Salt Mobile SA", + 22806: "SBB AG", + 22808: "Sunrise Communications AG", + 22851: "relario AG", + 22853: "Sunrise UPC GmbH", + 22854: "Lycamobile AG", + 22858: "Beeone Communications SA", + 22862: "Telecom26 AG", + 22863: "Fink Telecom Services", + 22864: "Nth AG", + 28601: "Turkcell Iletisim Hizmetleri A.S.", + 28602: "Vodafone Turkey", + 28603: "Türk Telekom", + 25501: "PRJSC VF Ukraine", + 25502: "PRJSC Kyivstar", + 25503: "PRJSC Kyivstar", + 25504: "Intertelecom LLC", + 25506: "lifecell LLC", + 25507: "Trimob LLC", + 25521: "PRJSC Telesystems of Ukraine", + 23400: "BT Group", + 23401: "Mundio Mobile Limited", + 23402: "Telefónica Europe", + 23408: "BT OnePhone (UK) Ltd", + 23410: "Telefónica Europe", + 23411: "Telefónica Europe", + 23412: "Network Rail Infrastructure Ltd", + 23413: "Network Rail Infrastructure Ltd", + 23414: "Link Mobility UK Ltd", + 23415: "Vodafone", + 23416: "TalkTalk Communications Limited", + 23418: "Wireless Logic Limited", + 23419: "Teleware plc", + 23420: "Hutchison 3G UK Ltd", + 23424: "Stour Marine Limited", + 23425: "Truphone", + 23426: "Lycamobile UK Limited", + 23427: "Tata Communications Move UK Ltd", + 23428: "Marathon Telecom Limited", + 23430: "EE", + 23433: "EE", + 23434: "EE", + 23451: "UK Broadband Limited", + 23453: "Tango Networks UK Ltd", + 23454: "The Carphone Warehouse Limited", + 23472: "Hanhaa Limited", + 23476: "BT Group", + 23478: "Airwave Solutions Ltd", + 23488: "Telet Research (N.I.) Limited", + 23588: "Telet Research (N.I.) Limited", + 365010: "Digicel", + 365840: "Cable & Wireless", + 344030: "Antigua Public Utilities Authority", + 344050: "Antigua Wireless Ventures Limited", + 344920: "Cable & Wireless Caribbean Cellular (Antigua) Limited", + 36301: "Servicio di Telecomunicacion di Aruba", + 36302: "Digicel Aruba", + 36439: "The Bahamas Telecommunications Company Ltd (BaTelCo)", + 36449: "Cable Bahamas Ltd", + 342600: "LIME (formerly known as Cable & Wireless)", + 342750: "Digicel (Barbados) Limited", + 31059: "None", + 338050: "Digicel (Turks & Caicos) Limited", + 35000: "Bermuda Digital Communications Ltd.", + 348170: "Cable & Wireless", + 348570: "Caribbean Cellular Telephone", + 348770: "Digicel (BVI) Limited", + 302130: "Xplore Inc.", + 302131: "Xplore Inc.", + 302220: "Telus Mobility", + 302270: "Bragg Communications", + 302300: "Ecotel inc.", + 302310: "Ecotel inc.", + 302320: "Rogers Communications", + 302340: "Execulink", + 302370: "Fido Solutions (Rogers Wireless)", + 302380: "Keewaytinook Okimakanak Mobile", + 302420: "A.B.C. Allen Business Communications Ltd.", + 302480: "SSi Connexions", + 302490: "Shaw Communications", + 302500: "Videotron", + 302510: "Videotron", + 302520: "Videotron", + 302530: "Keewaytinook Okimakanak Mobile", + 302590: "Quadro Communications Co-op", + 302610: "Bell Mobility", + 302620: "ICE Wireless", + 302650: "Thunder Bay Telephone", + 302660: "Bell MTS", + 302680: "SaskTel Mobility", + 302690: "Bell Mobility", + 302710: "None", + 302720: "Rogers Communications", + 302760: "Telus Mobility", + 302770: "TNW Wireless Inc.", + 302780: "SaskTel Mobility", + 302790: "NetSet Communications", + 302880: "Shared Telus, Bell, and SaskTel", + 302940: "Wightman Telecom", + 33805: "Digicel", + 346001: "WestTel Ltd.", + 346140: "Cable & Wireless (Cayman Islands) Limited", + 36801: "Empresa de Telecomunicaciones de Cuba, SA", + 366020: "Digicel Group Limited", + 366110: "Cable & Wireless", + 37001: "Altice Group", + 37002: "Compañía Dominicana de Teléfonos", + 37003: "Altice Group", + 37004: "Trilogy Dominicana, S.A.", + 37005: "WIND Telecom, S.A", + 34001: "Orange Caraïbe Mobiles", + 34002: "Outremer Telecom", + 34003: "UTS Caraïbe", + 34008: "Dauphin Telecom", + 34020: "DIGICEL Antilles Française Guyane", + 352030: "Digicel Grenada Ltd.", + 352110: "Cable & Wireless Grenada Ltd.", + 310032: "IT&E Overseas, Inc", + 310140: "Teleguam Holdings, LLC", + 310370: "NTT DoCoMo Pacific", + 310400: "IT&E Overseas, Inc", + 310480: "IT&E Overseas, Inc", + 311120: "IT&E Overseas, Inc", + 311250: "IT&E Overseas, Inc", + 37202: "Unigestion Holding S.A.", + 37203: "NATCOM S.A.", + 338110: "Cable & Wireless Communications", + 338180: "Cable & Wireless Communications", + 334020: "América Móvil", + 334030: "Telefónica", + 334050: "AT&T Mexico", + 334090: "AT&T Mexico", + 334130: "ALESTRA SERVICIOS MÓVILES, S.A. DE C.V.", + 334140: "Altán Redes S.A.P.I. de C.V.", + 334150: "Ultravisión, S.A. de C.V.", + 334180: "FREEDOMPOP MÉXICO, S.A. DE C.V.", + 334190: "VIASAT TECNOLOGÍA, S.A. DE C.V.", + 354860: "Cable & Wireless", + 36251: "Telcell N.V.", + 36254: "East Caribbean Cellular", + 36260: "Liberty Latin America", + 36268: "Curaçao Telecom N.V.", + 36269: "Curaçao Telecom N.V.", + 36276: "Antiliano Por N.V.", + 36278: "Telefonia Bonairiano N.V.", + 36291: "Liberty Latin America", + 36294: "Bòbò Frus N.V.", + 310110: "PTI Pacifica Inc.", + 310260: "T-Mobile US", + 313790: "Liberty Cablevision of Puerto Rico LLC", + 330000: "PR Wireless", + 330110: "América Móvil", + 330120: "PR Wireless", + 356050: "Wireless Ventures (St Kitts-Nevis) Limited", + 356070: "UTS", + 356110: "Cable & Wireless St. Kitts & Nevis Ltd", + 358110: "Cable & Wireless", + 30801: "St. Pierre-et-Miquelon Télécom", + 30802: "GLOBALTEL", + 360050: "Digicel (St. Vincent and the Grenadines) Limited", + 360110: "Cable & Wireless (St. Vincent & the Grenadines) Ltd", + 37412: "TSTT", + 374130: "Digicel (Trinidad & Tobago) Limited", + 376350: "Cable & Wireless West Indies Ltd (Turks & Caicos)", + 310004: "Verizon Wireless", + 310006: "Verizon Wireless", + 310012: "Verizon Wireless", + 310020: "Union Telephone Company", + 310030: "AT&T Mobility", + 310034: "Airpeak", + 310050: "Alaska Communications", + 310053: "T-Mobile US", + 310054: "Alltel US", + 310066: "U.S. Cellular", + 310070: "AT&T Mobility", + 310080: "AT&T Mobility", + 310090: "AT&T Mobility", + 310100: "New Mexico RSA 4 East LP", + 310120: "T-Mobile US", + 310130: "Carolina West Wireless", + 310150: "AT&T Mobility", + 310160: "T-Mobile US", + 310170: "AT&T Mobility", + 310180: "West Central Wireless", + 310190: "Alaska Communications", + 310320: "Smith Bagley, Inc.", + 310340: "Limitless Mobile, LLC", + 310360: "Cellular Network Partnership", + 310390: "TX-11 Acquisition, LLC", + 310410: "Liberty", + 310430: "GCI Communications Corp.", + 310440: "Numerex", + 310450: "Viaero Wireless", + 310460: "NewCore Wireless LLC", + 310490: "T-Mobile", + 310500: "Public Service Cellular Inc.", + 310540: "Hilliary Communications", + 310570: "Broadpoint, LLC", + 310580: "Inland Cellular Telephone Company", + 310600: "NewCell Inc.", + 310640: "Numerex", + 310650: "Jasper Technologies", + 310680: "AT&T Mobility", + 310690: "Limitless Mobile, LLC", + 310710: "Arctic Slope Telephone Association Cooperative", + 310740: "Viaero Wireless", + 310840: "Telecom North America Mobile, Inc.", + 310850: "Aeris Communications, Inc.", + 310860: "TX RSA 15B2, LP", + 310880: "Advantage Cellular Systems, Inc.", + 310900: "Cable & Communications Corporation", + 310920: "James Valley Wireless, LLC", + 310930: "Copper Valley Wireless", + 310950: "AT&T Mobility", + 310960: "UBET Wireless", + 310970: "Globalstar", + 310990: "Evolve Cellular Inc.", + 311000: "Mid-Tex Cellular Ltd.", + 311020: "Missouri RSA 5 Partnership", + 311030: "Americell PA 3 Partnership", + 311040: "Commnet Wireless", + 311050: "Thumb Cellular LP", + 311060: "Space Data Corporation", + 311070: "AT&T Mobility", + 311080: "Pine Telephone Company", + 311090: "AT&T Mobility", + 311100: "Nex-Tech Wireless", + 311140: "Cross Telephone Company", + 311150: "Wilkes Cellular", + 311170: "Tampnet", + 311210: "Telnyx LLC", + 311220: "U.S. Cellular", + 311230: "Cellular South Inc.", + 311240: "Cordova Wireless", + 311320: "Commnet Wireless", + 311330: "Bug Tussel Wireless LLC", + 311340: "Illinois Valley Cellular", + 311350: "Sagebrush Cellular, Inc.", + 311370: "General Communication Inc.", + 311380: "New Dimension Wireless Ltd.", + 311410: "Iowa RSA No. 2 LP", + 311420: "Northwest Missouri Cellular LP", + 311450: "Panhandle Telecommunication Systems Inc.", + 311470: "Vitelcom Cellular Inc.", + 311480: "Verizon Wireless", + 311490: "T-Mobile US", + 311530: "NewCore Wireless LLC", + 311550: "Commnet Wireless LLC", + 311560: "OTZ Communications, Inc.", + 311580: "U.S. Cellular", + 311600: "Limitless Mobile, LLC", + 311640: "Standing Rock Telecommunications", + 311650: "United Wireless", + 311660: "Metro by T-Mobile", + 311670: "Pine Belt Cellular Inc.", + 311690: "TeleBEEPER of New Mexico", + 311740: "Telalaska Cellular", + 311780: "American Samoa Telecommunications", + 311800: "Verizon Wireless", + 311810: "Verizon Wireless", + 311830: "Thumb Cellular LP", + 311840: "Nsight", + 311850: "Nsight", + 311860: "Uintah Basin Electronic Telecommunications", + 311882: "T-Mobile US", + 311900: "GigSky", + 311950: "Enhanced Telecommmunications Corp.", + 311970: "Big River Broadband, LLC", + 311990: "VTel Wireless", + 312020: "Infrastructure Networks, LLC", + 312030: "Cross Wireless", + 312040: "Custer Telephone Co-op (CTCI)", + 312080: "South Georgia Regional Information Technology Authority", + 312120: "East Kentucky Network, LLC", + 312130: "East Kentucky Network, LLC", + 312150: "Northwest Missouri Cellular LP", + 312160: "RSA1 Limited Partnership", + 312170: "Iowa RSA No. 2 LP", + 312180: "Limitless Mobile LLC", + 312210: "Aspenta International, Inc.", + 312220: "Chariton Valley Communications Corporation, Inc.", + 312250: "T-Mobile US", + 312270: "Cellular Network Partnership", + 312280: "Cellular Network Partnership", + 312300: "Telecom North America Mobile, Inc.", + 312310: "Clear Stream Communications, LLC", + 312320: "RTC Communications LLC", + 312330: "Nemont Communications, Inc.", + 312350: "Triangle Communication System Inc.", + 312370: "Commnet Wireless", + 312380: "Copper Valley Wireless", + 312390: "FTC Communications LLC", + 312400: "Mid-Rivers Telephone Cooperative", + 312420: "Nex-Tech Wireless", + 312430: "Silver Star Communications", + 312460: "Ketchikan Public Utilities (KPU)", + 312470: "Carolina West Wireless", + 312530: "T-Mobile US", + 312590: "Northern Michigan University", + 312620: "GlobeTouch Inc.", + 312670: "AT&T Mobility", + 312690: "TGS, LLC", + 312700: "Wireless Partners, LLC", + 312710: "Great North Woods Wireless LLC", + 312720: "Southern Communications Services", + 312780: "Redzone Wireless", + 312810: "Bristol Bay Telephone Cooperative", + 312830: "Kings County Office of Education", + 312870: "GigSky Mobile, LLC", + 312900: "Flat West Wireless, LLC", + 312940: "Webformix", + 312950: "Custer Telephone Co-op (CTCI)", + 313000: "Tennessee Wireless", + 313020: "Cambridge Telephone Company Inc.", + 313040: "Nucla-Naturita Telephone Company", + 313060: "Country Wireless", + 313080: "Speedwavz LLP", + 313090: "Vivint Wireless, Inc.", + 313100: "AT&T FirstNet", + 313200: "Mercury Network Corporation", + 313260: "Expeto Wireless Inc.", + 313300: "Cambio WiFi of Delmarva, LLC", + 313340: "Dish Wireless", + 313460: "Mobi, Inc.", + 313510: "Puerto Rico Telephone Company", + 313520: "Florida Broadband, Inc.", + 313550: "Mile High Networks LLC", + 313560: "Transit Wireless LLC", + 313690: "Shenandoah Cable Television, LLC", + 313760: "Hologram, Inc.", + 313810: "Watch Communications", + 313850: "Softcom Internet Communications, Inc", + 313860: "AMG Technology Investment Group", + 313870: "ElektraFi LLC", + 313890: "Tulare County Office of Education", + 313930: "Standing Rock Telecom", + 41201: "Afghan Wireless Communication Company", + 41220: "Telecom Development Company Afghanistan Ltd.", + 41240: "MTN Group Afghanistan", + 41250: "Etisalat Afghanistan", + 41255: "WASEL Afghanistan", + 41280: "Afghan Telecom", + 41288: "Afghan Telecom", + 40001: "None", + 40002: "None", + 40003: "CATEL", + 40004: "Azerfon", + 40006: "Nakhtel LLC", + 42601: "Bahrain Telecommunications Company", + 42602: "Zain Bahrain", + 42604: "Stc Bahrain", + 42605: "Bahrain Telecommunications Company", + 47001: "Grameenphone Ltd.", + 47002: "Axiata Bangladesh Ltd.", + 47003: "Banglalink Digital Communications Ltd.", + 47004: "Teletalk Bangladesh Limited", + 47007: "Bharti Airtel Bangladesh Ltd.", + 47010: "Banglalion Communications Ltd.", + 40211: "Bhutan Telecom Limited", + 40277: "Tashi InfoComm Limited", + 45601: "CamGSM / The Royal Group", + 45602: "Smart Axiata Co. Ltd", + 45605: "Smart Axiata Co. Ltd", + 45606: "Smart Axiata Co. Ltd", + 45608: "Viettel", + 45609: "Viettel", + 45611: "SEATEL Cambodia", + 45618: "The Royal Group", + 46000: "China Mobile", + 46001: "China Unicom", + 46003: "China Telecom", + 46009: "China Unicom", + 46011: "China Telecom", + 46015: "China Broadnet", + 46020: "China Tietong", + 45400: "CSL Limited", + 45401: "CITIC Telecom 1616", + 45402: "CSL Limited", + 45403: "Hutchison Telecom", + 45406: "SmarTone Mobile Communications Limited", + 45407: "China Unicom (Hong Kong) Limited", + 45408: "Truphone Limited", + 45411: "China-Hong Kong Telecom", + 45412: "China Mobile Hong Kong Company Limited", + 45413: "China Mobile Hong Kong Company Limited", + 45416: "PCCW", + 45419: "PCCW-HKT", + 45420: "PCCW-HKT", + 45422: "263 Mobile Communications (HongKong) Limited", + 45424: "Multibyte Info Technology Ltd", + 45429: "PCCW-HKT", + 45431: "China Telecom Global Limited", + 45432: "Hong Kong Broadband Network Ltd", + 45435: "Webbing Hong Kong Ltd", + 40401: "Haryana", + 40402: "Punjab", + 40403: "Himachal Pradesh", + 40405: "Gujarat", + 40407: "Andhra Pradesh and Telangana", + 40409: "Assam", + 40410: "Delhi & NCR", + 40411: "Delhi & NCR", + 40414: "Punjab", + 40415: "Uttar Pradesh (East)", + 40416: "North East", + 40418: "Himachal Pradesh", + 40420: "Mumbai", + 40422: "Maharashtra & Goa", + 40430: "Kolkata", + 40431: "Kolkata", + 40434: "Haryana", + 40436: "Bihar & Jharkhand", + 40438: "Assam", + 40440: "Chennai", + 40443: "Tamil Nadu", + 40445: "Karnataka", + 40446: "Kerala", + 40449: "Andhra Pradesh and Telangana", + 40450: "North East", + 40451: "Himachal Pradesh", + 40452: "Odisha", + 40453: "Punjab", + 40454: "Uttar Pradesh (West)", + 40455: "Uttar Pradesh (East)", + 40456: "Uttar Pradesh (West)", + 40457: "Gujarat", + 40458: "Madhya Pradesh & Chhattisgarh", + 40459: "Rajasthan", + 40460: "Rajasthan", + 40462: "Jammu & Kashmir", + 40464: "Chennai", + 40466: "Maharashtra & Goa", + 40467: "Madhya Pradesh & Chhattisgarh", + 40468: "Delhi & NCR", + 40469: "Mumbai", + 40470: "Rajasthan", + 40471: "Karnataka (Bangalore)", + 40472: "Kerala", + 40473: "Andhra Pradesh and Telangana", + 40474: "West Bengal", + 40475: "Bihar", + 40476: "Odisha", + 40477: "North East", + 40478: "Madhya Pradesh & Chattishgarh", + 40479: "Andaman Nicobar", + 40480: "Tamil Nadu", + 40481: "Kolkata", + 40482: "Himachal Pradesh", + 40483: "Kolkata", + 40485: "West Bengal", + 40486: "Karnataka", + 40490: "Maharashtra", + 40492: "Mumbai", + 40493: "Madhya Pradesh", + 40494: "Tamil Nadu", + 40495: "Kerala", + 40496: "Haryana", + 40497: "Uttar Pradesh (West)", + 40498: "Gujarat", + 40503: "Bihar", + 40504: "Chennai", + 40505: "Delhi & NCR", + 40506: "Gujarat", + 40507: "Haryana", + 40508: "Himachal Pradesh", + 40509: "Jammu & Kashmir", + 40510: "Karnataka", + 40511: "Kerala", + 40512: "Kolkata", + 40513: "Maharashtra & Goa", + 40514: "Madhya Pradesh", + 40515: "Mumbai", + 40517: "Odisha", + 40518: "Punjab", + 40519: "Rajasthan", + 40520: "Tamil Nadu", + 40521: "Uttar Pradesh (East)", + 40522: "Uttar Pradesh (West)", + 40523: "West Bengal", + 40551: "West Bengal", + 40552: "Bihar & Jharkhand", + 40553: "Odisha", + 40554: "Uttar Pradesh (East)", + 40555: "Jammu & Kashmir", + 40556: "Assam", + 40567: "West Bengal", + 40570: "Bihar & Jharkhand", + 405750: "Jammu & Kashmir", + 405751: "Assam", + 405753: "Odisha", + 405755: "North East", + 405840: "West Bengal", + 405854: "Andhra Pradesh", + 405855: "Assam", + 405856: "Bihar", + 405857: "Gujarat", + 405858: "Haryana", + 405859: "Himachal Pradesh", + 405860: "Jammu & Kashmir", + 405861: "Karnataka", + 405862: "Kerala", + 405863: "Madhya Pradesh", + 405864: "Maharashtra", + 405865: "North East", + 405866: "Odisha", + 405867: "Punjab", + 405868: "Rajasthan", + 405869: "Tamil Nadu (incl. Chennai)", + 405870: "Uttar Pradesh (West)", + 405871: "Uttar Pradesh (East)", + 405872: "Delhi", + 405873: "Kolkata", + 405874: "Mumbai", + 405908: "Andhra Pradesh and Telangana", + 43201: "Kish Cell Pars", + 43202: "Negin Ertebatat Ava", + 43203: "Parsian Hamrah Lotus", + 43206: "Ertebatat-e Arian Tel Co.", + 43207: "Hooshmand Amin Mobile", + 43208: "Shatel Group", + 43210: "Samantel Mobile", + 43211: "Mobile Communications Company of Iran (MCI)", + 43212: "Dadeh Dostar asr Novin PJSC", + 43214: "Kish Free Zone Organization", + 43220: "Social Security Investment Co.", + 43221: "Social Security Investment Co.", + 43232: "Telecommunication Company of Iran (TCI)", + 43235: "MTN Irancell Telecommunications Services Company", + 43240: "Ertebatat Mobinnet", + 43244: "Ertebatat Mobinnet", + 43245: "Farabord Dadeh Haye Iranian Co.", + 43250: "Shatel Group", + 43270: "Telecommunication Company of Iran (TCI)", + 43271: "ERTEBATAT KOOHE NOOR", + 43290: "IRAPHONE GHESHM of Iran", + 43293: "Farzanegan Pars", + 43299: "TCI of Iran and Rightel", + 41800: "Asia Cell Telecommunications Company", + 41805: "Asia Cell Telecommunications Company", + 41808: "None", + 41820: "Zain Iraq", + 41830: "Zain Iraq", + 41840: "Telecom Ltd", + 41845: "Mobitel Co. Ltd.", + 41862: "Itisaluna Wireless CO.", + 41892: "Omnnea Wireless", + 42501: "Partner Communications Company Ltd.", + 42502: "Cellcom Israel Ltd.", + 42503: "Pelephone Communications Ltd.", + 42505: "Palestine Cellular Communications, Ltd.", + 42506: "Ooredoo Palestine", + 42507: "Hot Mobile Ltd.", + 42508: "Golan Telecom Ltd.", + 42509: "Marathon 018 Xphone Ltd.", + 42510: "Partner Communications Company Ltd.", + 42512: "Widely Mobile", + 42516: "Rami Levy Communications Ltd.", + 42518: "Cellact Communications Ltd.", + 42519: "019 Communication Services Ltd. / TELZAR", + 42524: "Partner Communications Company Ltd.", + 42525: "Israel Ministry of Defense", + 42526: "LB Annatel Ltd.", + 44000: "SoftBank Corp.", + 44001: "KDDI Corporation", + 44003: "Internet Initiative Japan Inc.", + 44005: "Wireless City Planning Inc.", + 44009: "Marubeni Network Solutions Inc.", + 44010: "NTT DoCoMo, Inc.", + 44011: "Rakuten Mobile Network, Inc.", + 44020: "SoftBank Corp.", + 44021: "SoftBank Corp.", + 44050: "KDDI Corporation", + 44051: "KDDI Corporation", + 44052: "KDDI Corporation", + 44053: "KDDI Corporation", + 44100: "Wireless City Planning Inc.", + 44101: "SoftBank Corp.", + 441200: "Soracom Inc.", + 441205: "Katch Network Inc.", + 41601: "Jordan Mobile Telephone Services", + 41603: "Umniah Mobile Company", + 41677: + "Petra Jordanian Mobile Telecommunications Company (MobileCom)", + 40101: "KaR-Tel LLP", + 40102: "Kcell JSC", + 40107: "Altel", + 40108: "None", + 40177: "MTS", + 46705: "Cheo Technology Jv Company", + 46706: "Korea Posts and Telecommunications Corporation", + 45001: "Globalstar Asia Pacific", + 45002: "KT", + 45004: "KT", + 45005: "SK Telecom", + 45006: "LG Telecom", + 45008: "KT", + 45011: "Korea Cable Telecom", + 45012: "SK Telecom", + 41902: "Zain Kuwait", + 41903: "National Mobile Telecommunications", + 41904: "Saudi Telecom Company", + 43701: "Sky Mobile LLC", + 43705: "Alfa Telecom CJSC", + 43709: "NurTelecom LLC", + 43710: "Saima Telecom", + 45701: "Lao Telecom", + 45702: "Enterprise of Telecommunications Lao", + 45703: "Star Telecom Co., Ltd", + 45707: "Best Telecom Co., Ltd", + 45708: "TPLUS Digital Sole Co., Ltd", + 41501: "MIC 1", + 41503: "MIC 2", + 45500: "Smartone – Comunicações Móveis, S.A.", + 45501: "Companhia de Telecomunicações de Macau, S.A.R.L.", + 45504: "Companhia de Telecomunicações de Macau, S.A.R.L.", + 45505: "Hutchison Telephone (Macau), Limitada", + 45506: "Smartone – Comunicações Móveis, S.A.", + 45507: "China Telecom (Macau) Limitada", + 47201: "Dhivehi Raajjeyge Gulhun", + 47202: "Ooredoo Maldives", + 42888: "Unitel LLC", + 42891: "Skytel LLC", + 42898: "G-Mobile LLC", + 42899: "Mobicom Corporation", + 41401: "Myanmar Posts and Telecommunications", + 41403: "Myanmar Economic Corporation", + 41405: "Ooredoo Myanmar", + 41406: "Telenor Myanmar", + 41409: "Myanmar National Tele & Communication Co., Ltd", + 41420: "Amara Communication Co., Ltd", + 41421: "Amara Communication Co., Ltd", + 42901: "Nepal Telecom (NDCL)", + 42902: "Ncell Pvt. Ltd.", + 42903: "United Telecom Limited", + 42904: "Smart Telecom Pvt. Ltd. (STPL)", + 42202: "Oman Telecommunications Company", + 42203: "Omani Qatari Telecommunications Company SAOC", + 42206: "Oman Future Telecommunications Company SAOC", + 41001: "Mobilink-PMCL", + 41002: "PTCL", + 41003: "Pakistan Telecommunication Mobile Ltd", + 41004: "China Mobile", + 41005: "SCO Mobile Ltd", + 41006: "Telenor Pakistan", + 41007: "WaridTel", + 41008: "SCO Mobile Ltd", + 42701: "Ooredoo", + 42702: "Vodafone Qatar", + 42705: "Ministry of Interior", + 42706: "Ministry of Interior", + 42001: "Saudi Telecom Company", + 42003: "Etihad Etisalat Company", + 42004: "Zain Saudi Arabia", + 42005: "Virgin Mobile Saudi Arabia", + 42006: "Lebara Mobile", + 42021: "Saudi Railways GSM", + 41301: "Mobitel (Pvt) Ltd", + 41302: "Dialog Axiata PLC", + 41304: "Lanka Bell Ltd", + 41305: "Bharti Airtel Lanka (Pvt) Ltd", + 41308: "Hutchison Telecommunications Lanka (Pvt) Ltd", + 41311: "Dialog Broadband Networks (Pvt) Ltd", + 41312: "Sri Lanka Telecom PLC", + 41701: "Syriatel Mobile Telecom", + 41702: "MTN Syria", + 46601: "Far EasTone Telecommunications Co Ltd", + 46605: "Asia Pacific Telecom", + 46609: "Vmax Telecom", + 46610: "Global Mobile Corp.", + 46612: "Ambit Microsystems", + 46689: "Taiwan Star Telecom", + 46692: "Chunghwa Telecom", + 46697: "Taiwan Mobile Co. Ltd", + 43601: "JV Somoncom", + 43602: "Indigo Tajikistan", + 43603: "TT Mobile", + 43604: "Babilon-Mobile", + 43605: "Tacom", + 43610: "Babilon-T", + 43802: "Altyn Asyr", + 43803: "AŞTU", + 42402: "Emirates Telecom Corp", + 42403: "Emirates Integrated Telecommunications Company", + 43403: "Uzbektelekom", + 43404: "Unitel LLC", + 43405: "Coscom", + 43406: "RUBICON WIRELESS COMMUNICATION", + 43407: "Universal Mobile Systems (UMS)", + 43408: "Uzbektelekom", + 43409: "OOO «Super iMAX»", + 45201: "Vietnam Mobile Telecom Services Company", + 45202: "Vietnam Telecom Services Company", + 45204: "Viettel Telecom", + 45205: "Hanoi Telecom", + 45207: "GTEL Mobile JSC", + 45208: "Indochina Telecom", + 45209: "MOBICAST JSC", + 42101: "SabaFon", + 42102: "Yemen Oman United Telecom", + 42103: "Yemen Mobile", + 42104: "HiTS-UNITEL", + 42110: "PTC/Yemen-Telecom", + 42111: "Yemen Mobile", + 54411: "Bluesky", + 50501: "Telstra Corporation Limited", + 50502: "Singtel Optus Pty Ltd", + 50503: "Vodafone Hutchison Australia Pty Ltd", + 50504: "Department of Defence", + 50510: "Norfolk Telecom", + 50513: "Railcorp, Transport for NSW", + 50514: "TPG Telecom", + 50516: "Victorian Rail Track", + 50517: "Optus", + 50519: "Lycamobile Pty Ltd", + 50523: "Challenge Networks Pty Ltd", + 50538: "Truphone Pty Ltd", + 50550: "Pivotel Group Pty Ltd", + 50552: "OptiTel Australia", + 50562: "National Broadband Network Co.", + 50568: "National Broadband Network Co.", + 50571: "Telstra Corporation Limited", + 50572: "Telstra Corporation Limited", + 50588: "Pivotel Group Pty Ltd", + 50590: "Singtel Optus Proprietary Ltd", + 52802: "Progresif Cellular Sdn Bhd", + 52811: "Data Stream Technology Sdn Bhd", + 54801: "Telecom Cook Islands", + 51401: "PT Telekomunikasi Indonesia International", + 51402: "Timor Telecom", + 51403: "Viettel Timor-Leste", + 54201: "Vodafone Fiji", + 54202: "Digicel Fiji", + 54203: "Telecom Fiji Ltd", + 54705: "VITI", + 54715: "Pacific Mobile Telecom", + 54720: "Onati S.A.S.", + 51000: "PT Pasifik Satelit Nusantara", + 51001: "PT Indosat Tbk", + 51009: "PT Smartfren Telecom", + 51010: "PT Telekomunikasi Selular", + 51011: "PT XL Axiata Tbk", + 51021: "PT Indosat Tbk", + 51028: "PT Mobile-8 Telecom", + 51089: "PT Hutchison 3 Indonesia", + 54501: "Amalgamated Telecom Holdings Kiribati Limited", + 54509: "Amalgamated Telecom Holdings Kiribati Limited", + 50210: "Celcom, DiGi, Maxis, Tune Talk, U Mobile, Unifi, XOX, Yes", + 50211: "Telekom Malaysia Bhd", + 50212: "Maxis Communications Berhad", + 50213: "Celcom Axiata Berhad", + 502150: "Tune Talk Sdn Bhd", + 502152: "YTL Communications Sdn Bhd", + 502153: "Webe Digital Sdn Bhd", + 502156: "Altel Communications Sdn Bhd", + 502157: "Telekomunikasi Indonesia International (M) Sdn Bhd", + 50216: "DiGi Telecommunications", + 50217: "Maxis Communications Berhad", + 50218: "U Mobile Sdn Bhd", + 50219: "Celcom Axiata Berhad", + 55101: + "Marshall Islands National Telecommunications Authority (MINTA)", + 55001: "FSMTC", + 53602: "Digicel (Nauru) Corporation", + 54601: "OPT New Caledonia", + 53001: "Vodafone New Zealand", + 53005: "Spark New Zealand", + 53024: "2degrees", + 55501: "Telecom Niue", + 55201: "Palau National Communications Corp.", + 55202: "Palau Equipment Company Inc.", + 55299: "Palau Mobile Communications Inc.", + 53701: "Bemobile Limited", + 53702: "Telikom PNG Ltd.", + 53703: "Digicel PNG", + 51502: "Globe Telecom", + 51503: "Smart Communications", + 51505: "Digital Telecommunications Philippines", + 51524: "ABS-CBN Convergence with Globe Telecom", + 51566: "Dito Telecommunity Corp.", + 51588: "Next Mobile Inc.", + 54901: "Digicel Pacific Ltd.", + 54927: "Vodafone Samoa Ltd.", + 52501: "Singapore Telecom", + 52503: "M1 Limited", + 52505: "StarHub Mobile", + 52509: "Liberty Wireless Pte Ltd", + 52510: "SIMBA Telecom Pte Ltd", + 52512: "GRID Communications Pte Ltd.", + 54001: "Our Telekom", + 54002: "BMobile (SI) Ltd", + 52000: "National Telecom Public Company Limited", + 52001: "Advanced Info Service", + 52002: "National Telecom Public Company Limited", + 52003: "Advanced Wireless Network Company Ltd.", + 52004: "True Move H Universal Communication Company Ltd.", + 52005: "DTAC TriNet Company Ltd.", + 52009: "Royal Thai Police", + 52015: "National Telecom Public Company Limited", + 52017: "National Telecom Public Company Limited", + 52018: "Total Access Communications Public Company Ltd.", + 52047: "National Telecom Public Company Limited", + 52099: "True Corporation", + 55401: "Teletok", + 53901: "Tonga Communications Corporation", + 53943: "Shoreline Communication", + 53988: "Digicel (Tonga) Limited", + 55301: "Tuvalu Telecom", + 54100: "ACeS International (AIL)", + 54101: "Telecom Vanuatu Ltd", + 54105: "Digicel Vanuatu Ltd", + 54107: "WanTok Vanuatu Ltd", + 54301: + "Service des Postes et Télécommunications des Îles Wallis et Futuna (SPT)", + 60301: "Algérie Télécom", + 60302: "Optimum Telecom Algérie Spa", + 60303: "Wataniya Telecom Algérie", + 60307: "Algérie Télécom", + 60309: "Algérie Télécom", + 63102: "UNITEL S.a.r.l.", + 63104: "MOVICEL Telecommunications S.A.", + 63105: "Africell", + 61601: "Benin Telecoms Mobile", + 61602: "Telecel Benin", + 61603: "Spacetel Benin", + 61604: "Bell Benin Communications", + 65201: "Mascom Wireless (Pty) Limited", + 65202: "Orange (Botswana) Pty Limited", + 65204: "Botswana Telecommunications Corporation", + 61301: "Onatel", + 61302: "Orange Burkina Faso", + 61303: "Telecel Faso SA", + 64201: "Econet Wireless Burundi PLC", + 64203: "Onatel", + 64208: "Viettel Burundi", + 64282: "Econet Wireless Burundi PLC", + 62401: "Mobile Telephone Network Cameroon Ltd", + 62402: "Orange Cameroun S.A.", + 62403: "Camtel", + 62404: "Viettel Cameroun", + 62501: "CVMóvel, S.A.", + 62502: "UNITEL T+ TELECOMUNICACÕES, S.A.", + 62301: "Atlantique Telecom Centrafrique SA", + 62302: "Telecel Centrafrique", + 62303: "Orange RCA", + 62304: "Azur RCA", + 62201: "Bharti Airtel SA", + 62202: "SotelTchad", + 62203: "Millicom", + 62207: "SotelTchad", + 65401: "Comores Telecom", + 65402: "Telecom Malagasy (Telma)", + 62901: "Celtel Congo", + 62907: "Warid Telecom", + 62910: "MTN CONGO S.A", + 63001: "Vodacom Congo RDC sprl", + 63002: "Airtel sprl", + 63005: "Supercell SPRL", + 63086: "Orange RDC sarl", + 63089: "Orange RDC sarl", + 63090: "Africell RDC sprl", + 63801: "Djibouti Telecom SA", + 60201: "Orange Egypt", + 60202: "Vodafone Egypt", + 60203: "Etisalat Egypt", + 60204: "Telecom Egypt", + 62701: "GETESA", + 62703: "Green Com S.A.", + 65701: "Eritrea Telecommunications Services Corporation", + 65302: "Eswatini Mobile Limited", + 65310: "MTN Eswatini Limited", + 63601: "Ethio Telecom", + 64700: "Orange La Réunion", + 64701: "BJT Partners", + 64702: "Telco OI", + 64703: "Telco OI", + 64710: "Société Réunionnaise du Radiotéléphone", + 62801: "Gabon Telecom S.A.", + 62802: "Gabon Telecom S.A.", + 62803: "Airtel Gabon S.A.", + 60701: "Gamcel", + 60702: "Africell", + 60703: "Comium", + 60704: "QCell Gambia", + 60706: "NETPAGE", + 62001: "MTN Group", + 62002: "Vodafone Group", + 62003: "Millicom Ghana", + 62004: "Kasapa / Hutchison Telecom", + 62006: "Airtel", + 62007: "Globacom Group", + 62010: "Blu Telecommunications", + 62014: "BusyInternet", + 62015: "Lebara", + 62016: "Telesol", + 61101: "Orange S.A.", + 61102: "Sotelgui Lagui", + 61104: "Areeba Guinea", + 61105: "Cellcom", + 63201: "Guinétel S.A.", + 63202: "Spacetel Guiné-Bissau S.A.", + 63203: "None", + 63207: "Guinétel S.A.", + 61202: "Atlantique Cellulaire", + 61203: "Orange", + 61204: "Comium Ivory Coast Inc", + 61205: "Loteny Telecom", + 61206: "Oricel", + 61207: "Aircomm", + 61218: "YooMee", + 63902: "Safaricom Limited", + 63903: "Bharti Airtel", + 63907: "Telkom Kenya", + 63910: "Jamii Telecommunications Limited", + 65101: "Vodacom Lesotho (Pty) Ltd", + 65102: "Econet Ezi-cel", + 61801: "Lonestar Communications Corporation", + 61804: "Novafone Inc.", + 61807: "Orange Liberia", + 61820: "Liberia Telecommunications Corporation", + 60600: "Libyana", + 60601: "Al-Madar Al-Jadeed", + 60602: "Al-Jeel Al-Jadeed", + 60603: "Libya Telecom & Technology (LTT)", + 60606: "Hatef Libya", + 64601: "Bharti Airtel", + 64602: "Orange Madagascar S.A.", + 64604: "Telma Mobile S.A.", + 64605: "Gulfsat Madagascar S.A.", + 65001: "Telecom Network Malawi", + 65002: "Access Communications Ltd", + 65003: "Malawi Telecommunications Limited", + 65010: "Airtel Malawi Limited", + 61001: "Malitel SA", + 61002: "Orange Mali SA", + 61003: "Alpha Telecommunication Mali S.A.", + 60901: "Mattel", + 60902: "Chinguitel", + 60910: "Mauritel Mobiles", + 61701: "Cellplus Mobile Communications Ltd.", + 61702: "Mahanagar Telephone Mauritius Limited (MTML)", + 61703: "Mahanagar Telephone Mauritius Limited (MTML)", + 61710: "Emtel Ltd.", + 60400: "Médi Télécom", + 60401: "Ittissalat Al-Maghrib (Maroc Telecom)", + 60402: "Wana Corporate", + 60405: "Wana Corporate", + 64301: "Mocambique Celular S.A.", + 64303: "Movitel, SA", + 64304: "Vodacom Mozambique, S.A.", + 64901: "MTC Namibia", + 64902: "Telecom Namibia", + 64903: "Telecom Namibia", + 64904: "Paratus Telecommunications (Pty)", + 64906: "MTN Namibia", + 61401: "La Société Sahélienne de Télécommunications (SahelCom)", + 61402: "Bharti Airtel Limited", + 61403: "Atlantique Telecom (subsidiary of Etisalat)", + 61404: "Orange Niger", + 62120: "Bharti Airtel Limited", + 62122: "InterC Network Ltd.", + 62124: "Spectranet", + 62126: "Swift", + 62127: "Smile Communications Nigeria", + 62130: "MTN Nigeria Communications Limited", + 62140: "Nigerian Mobile Telecommunications Limited", + 62150: "Globacom Ltd", + 62160: "Emerging Markets Telecommunication Services Ltd.", + 63510: "MTN Rwandacell SARL", + 63513: "Airtel RWANDA", + 63517: "Olleh Rwanda Networks", + 65801: "Sure South Atlantic Ltd.", + 62601: "Companhia Santomense de Telecomunicações", + 62602: "Unitel São Tomé and Príncipe", + 60801: "Sonatel", + 60802: "Saga Africa Holdings Limited", + 60803: "Expresso Telecom", + 63301: "Cable & Wireless Seychelles", + 63310: "Telecom Seychelles Ltd", + 61901: "Orange SL Limited", + 61903: "Lintel Sierra Leone Limited", + 61905: "Lintel Sierra Leone Limited", + 61906: "Sierra Leone Telephony", + 61909: "InterGroup Telecom SL", + 63701: "Telesom", + 63704: "Somafone FZLLC", + 63710: "NationLink Telecom", + 63720: "SOMNET", + 63750: "Hormuud Telecom Somalia Inc", + 63730: "Golis Telecom Somalia", + 63757: "UNITEL S.a.r.l.", + 63760: "Nationlink Telecom", + 63767: "HTG Group Somalia", + 63771: "Somtel", + 63782: "Telcom Somalia", + 65501: "Vodacom", + 65502: "Telkom SA SOC Ltd", + 65506: "Sentech (Pty) Ltd", + 65507: "Cell C (Pty) Ltd", + 65510: "MTN Group", + 65514: "Neotel Pty Ltd", + 65519: "Wireless Business Solutions (Pty) Ltd", + 65530: "Bokamoso Consortium", + 65531: "Karabo Telecoms (Pty) Ltd.", + 65532: "Ilizwi Telecommunications", + 65533: "Thinta Thinta Telecommunications Pty Ltd", + 65546: "SMS Cellular Services (Pty) Ltd", + 65576: "Comsol Networks (Pty) Ltd", + 65902: "MTN South Sudan", + 65903: "Gemtel", + 65906: "Zain South Sudan", + 65907: "Sudani", + 63401: "Zain Group - Sudan", + 63402: "MTN Sudan", + 63405: "Canar Telecom", + 63407: "Sudatel Group", + 63409: "NEC", + 64002: "MIC Tanzania Limited", + 64003: "Zanzibar Telecom Ltd", + 64004: "Vodacom Tanzania Limited", + 64005: "Bharti Airtel", + 64006: "WIA Company Limited", + 64007: "Tanzania Telecommunication Company LTD (TTCL)", + 64009: "Viettel Tanzania Limited", + 64011: "Smile Telecoms Holdings Ltd.", + 61501: "Togo Telecom", + 61503: "Moov Togo", + 60501: "Orange Tunisie", + 60502: "Tunisie Telecom", + 60503: "Ooredoo Tunisiana", + 64101: "Bharti Airtel", + 64104: "Tangerine Uganda Limited", + 64110: "MTN Uganda", + 64111: "Uganda Telecom Ltd.", + 64114: "Africell Uganda", + 64122: "Bharti Airtel", + 64133: "Smile Communications Uganda Limited", + 64144: "K2 Telecom Ltd", + 64501: "Bharti Airtel", + 64502: "MTN Group", + 64503: "Zambia Telecommunications Company Ltd", + 64801: "Net*One Cellular (Pvt) Ltd", + 64803: "Telecel Zimbabwe (PVT) Ltd", + 64804: "Econet Wireless", + 722010: "Telefónica Móviles Argentina S.A.", + 722034: "Telecom Personal S.A.", + 722040: "TE.SA.M Argentina S.A.", + 722070: "Telefónica Móviles Argentina S.A.", + 722310: "AMX Argentina S.A.", + 722320: "AMX Argentina S.A.", + 722330: "AMX Argentina S.A.", + 722341: "Telecom Personal S.A.", + 70267: "Belize Telemedia Limited (BTL)", + 70269: "Speednet Communications Limited", + 70299: "Speednet Communications Limited", + 73601: "Nuevatel PCS De Bolivia SA", + 73602: "Entel SA", + 73603: "Telefónica Celular De Bolivia S.A", + 72402: "Telecom Italia Mobile", + 72403: "Telecom Italia Mobile", + 72404: "Telecom Italia Mobile", + 72405: "Claro", + 72406: "Telefônica Brasil S.A.", + 72410: "Telefônica Brasil S.A.", + 72411: "Telefônica Brasil S.A.", + 72415: "Sercomtel Celular", + 72417: "Correios Celula", + 72418: "Datora (Vodafone)", + 72421: "Ligue Telecom", + 72423: "Telefônica Brasil S.A.", + 72428: "None", + 72429: "Unifique Telecomunicações S/A", + 72432: "Algar Telecom S.A.", + 72433: "Algar Telecom S.A.", + 72434: "Algar Telecom S.A.", + 72438: "Claro", + 72439: "NII Holdings, Inc.", + 72454: "PORTO SEGURO TELECOMUNICAÇÔES", + 72499: "None", + 73001: "Entel Telefonía Móvil S.A.", + 73002: "Telefónica Móvil de Chile", + 73003: "Claro Chile S.A.", + 73004: "Novator Partners", + 73006: "Blue Two Chile S.A.", + 73008: "VTR S.A.", + 73009: "Novator Partners", + 73010: "Entel Telefonía Móvil S.A.", + 73012: "Telestar Móvil S.A.", + 73013: "Tribe Mobile Chile SPA", + 73019: "Sociedad Falabella Móvil SPA", + 73099: "WILL Telefonía", + 732001: "Colombia Telecomunicaciones S.A. ESP", + 732020: "Une EPM Telecomunicaciones S.A. E.S.P.", + 732099: "Empresas Municipales de Cali", + 732101: "Comunicacion Celular S.A. (Comcel)", + 732103: "Colombia Móvil S.A. ESP", + 732111: "Colombia Móvil S.A. ESP", + 732123: "Colombia Telecomunicaciones S.A. ESP", + 732130: "Avantel S.A.S", + 732154: "Virgin Mobile Colombia S.A.S.", + 732176: "DirecTV Colombia Ltda", + 732187: "Empresa de Telecomunicaciones de Bogotá S.A. ESP", + 732240: "Logistica Flash Colombia SAS", + 732360: "Partners Telecom Colombia SAS", + 71201: "Instituto Costarricense de Electricidad", + 71202: "Instituto Costarricense de Electricidad", + 71203: "Claro CR Telecomunicaciones (Aló)", + 71204: "Liberty Latin America", + 74000: "Otecel S.A.", + 74001: "CONECEL S.A.", + 74002: "Corporación Nacional de Telecomunicaciones (CNT EP)", + 74003: "Otecel S.A.", + 70601: "CTE Telecom Personal, S.A. de C.V.", + 70602: "Digicel, S.A. de C.V.", + 70603: "Telemovil El Salvador S.A.", + 70604: "Telefónica Móviles El Salvador", + 70605: "INTELFON, S.A. de C.V.", + 750001: "Sure South Atlantic Ltd.", + 70401: "Telecomunicaciones de Guatemala, S.A.", + 70402: "Millicom / Local partners", + 70403: "Telecomunicaciones de Guatemala, S.A.", + 7040: "INTELFON Guatemala", + 73800: "E-Networks Inc.", + 73801: "U-Mobile (Cellular) Inc.", + 738002: "Guyana Telephone & Telegraph Co.", + 738003: "Quark Communications Inc.", + 708001: "Servicios de Comunicaciones de Honduras S.A. de C.V.", + 708002: "Celtel", + 708030: "Empresa Hondureña de Telecomunicaciones", + 71021: + "Empresa Nicaragüense de Telecomunicaciones, S.A. (ENITEL) (América Móvil)", + 710300: "Telefonía Celular de Nicaragua, S.A.", + 71073: "Servicios de Comunicaciones S.A.", + 71401: "Cable & Wireless Panama S.A.", + 71402: "Grupo de Comunicaciones Digitales, S.A.", + 714020: "Grupo de Comunicaciones Digitales, S.A.", + 71403: "América Móvil", + 71404: "Digicel Group", + 74401: "Hola Paraguay S.A.", + 74402: "AMX Paraguay S.A.", + 74404: "Telefónica Celular Del Paraguay S.A. (Telecel)", + 74405: "Núcleo S.A. (TIM)", + 74406: "Copaco S.A.", + 71606: "Telefónica del Perú S.A.A.", + 71607: "Entel Perú S.A.", + 71610: "América Móvil Perú", + 71615: "Viettel Peru S.A.C.", + 71617: "Entel Perú S.A.", + 74602: "Telecommunications Company Suriname (Telesur)", + 74603: "Digicel Group Limited", + 74801: "Administración Nacional de Telecomunicaciones", + 74807: "Telefónica Móviles Uruguay", + 74810: "AM Wireless Uruguay S.A.", + 73402: "Corporacion Digitel C.A.", + 73404: "Telefónica Móviles Venezuela", + 73406: "Telecomunicaciones Movilnet", + 101: "Test network", + 1001: "Test network", + 99999: "Internal use", + 999999: "Internal use", + 90103: "None", + 90105: "Thuraya RMSS Network", + 90106: "Thuraya Satellite Telecommunications Company", + 90111: "None", + 90112: "Telenor Maritime AS", + 90114: "AeroMobile AS", + 90115: "OnAir Switzerland Sarl", + 90116: "Cisco Systems, Inc.", + 90118: "AT&T Mobility", + 90119: "Monaco Telecom", + 90121: "Wins Limited", + 90126: "Telecom Italia Mobile", + 90127: "Monaco Telecom", + 90128: "GDSP (Vodafone's Global Data Service Platform)", + 90131: "Orange S.A.", + 90135: "Globecomm Network Services", + 90136: "Azerfon", + 90137: "Transatel", + 90138: "Multiregional TransitTelecom (MTT)", + 90139: "MTX Connect Ltd", + 90140: "Deutsche Telekom AG", + 90141: "One Network B.V.", + 90143: "EMnify GmbH", + 90146: "Telecom26 AG", + 90153: "Inmarsat Ltd.", + 90162: "Twilio Inc.", + 90166: "Limitless Mobile LLC", + 90167: "1NCE GmbH", + 90175: "Podsystem Ltd.", + 90189: "DIDWW Ireland Limited", + 90190: "Truphone Limited", + 90201: "MulteFire Alliance", + 99501: "Sure (Diego Garcia) Ltd", }, nr5g_cells: [], @@ -148,49 +1825,85 @@ lte_cells_parsed: [], atcmd: "", tableRows: [], + nr5g_neighbourCells: [], + lte_neighbourCells: [], + nr5g_neighbourCellsParsed: [], + lte_neighbourCellsParsed: [], + neighbourCellsTableRows: [], + cellScanMode: "", + neighbourCellsScanMode: "", + isLoading: false, + isCellScanning: false, init() { - this.startCellScan(); + this.generateNeighbourCellsTableRow(); + this.clearTableRowsBodyCellScan(); }, startCellScan() { - const rawdata = `+QSCAN: "NR5G",515,66,620640,887,-67,-12,61,1,70005C001,702000,273,78,28,6,- -+QSCAN: "LTE",515,03,39965,49,-64,-8,64,121,22319CA,BF8C,75,41 -+QSCAN: "LTE",515,03,1775,49,-71,-10,57,119,22319D0,BF8C,75,3 -+QSCAN: "LTE",515,03,1350,49,-70,-12,59,116,223196C,BF8C,75,3 -+QSCAN: "LTE",515,66,450,428,-69,-7,52,121,702BC31,7020,100,1 -+QSCAN: "LTE",515,03,150,49,-67,-12,61,116,2231966,BF8C,100,1 -+QSCAN: "LTE",515,66,40140,76,-116,-20,5,108,700DA61,7020,100,41 -+QSCAN: "LTE",515,02,3749,3,-74,-14,54,4,1D5597B,FAC,50,8 -+QSCAN: "LTE",515,02,1650,47,-77,-9,43,9,1D55903,FAC,50,3 -+QSCAN: "LTE",515,66,575,76,-115,-20,6,108,700DA34,7020,25,1 -+QSCAN: "LTE",515,02,301,47,-74,-8,46,11,1D5595D,FAC,50,1 -+QSCAN: "LTE",515,02,40562,92,-88,-20,32,109,3AC6BCB,FAC,100,41 -+QSCAN: "LTE",515,02,40760,187,-82,-14,38,111,3AF15D4,FAC,100,41 -+QSCAN: "LTE",515,02,39790,160,-109,-14,11,112,3AB5A20,FD7,100,41 -+QSCAN: "LTE",515,66,6220,94,-65,-10,-1,0,700E001,7020,50,28 + // Make all arrays empty before starting a new scan + this.nr5g_cells = []; + this.lte_cells = []; + this.nr5g_cells_parsed = []; + this.lte_cells_parsed = []; + this.tableRows = []; + this.atcmd = "AT+QSCAN=3,1"; -OK`; + // Send the AT command to the device + this.isLoading = true; + this.isCellScanning = true; - const lines = rawdata.split("\n"); + fetch( + "/cgi-bin/get_atcommand?" + + new URLSearchParams({ + atcmd: this.atcmd, + }) + ) + .then((res) => { + return res.text(); + }) + .then((data) => { + const rawdata = data; + console.log("Rawdata: ", rawdata); + const lines = rawdata.split("\n"); + console.log("Lines: ", lines); - // Get the length of the lines array and remove the last 2 elements from the array. - const linesLength = lines.length; - lines.splice(linesLength - 2, 2); + // Get the length of the lines array and remove the first element. + const linesLength = lines.length; + lines.splice(0, 1); - // Loop through all of the lines. If the line starts with NR5G then add it to the nr5g_cells array. If it starts with LTE then add it to the lte_cells array. + // Get the new length of the lines array and remove the last 3 elements. + const newLinesLength = lines.length; + lines.splice(newLinesLength - 3, 3); - for (let i = 0; i < lines.length; i++) { - if (lines[i] !== "OK" && lines[i] !== "" && lines[i] !== "\r") { - if (lines[i].match(/NR5G/g)) { - this.nr5g_cells.push(lines[i]); - } else if (lines[i].match(/LTE/g)) { - this.lte_cells.push(lines[i]); + console.log("New Lines: ", lines); + + // Loop through all of the lines. If the line starts with NR5G then add it to the nr5g_cells array. If it starts with LTE then add it to the lte_cells array. + + for (let i = 0; i < lines.length; i++) { + if ( + lines[i] !== "OK" && + lines[i] !== "" && + lines[i] !== "\r" + ) { + if (lines[i].match(/NR5G/g)) { + this.nr5g_cells.push(lines[i]); + } else if (lines[i].match(/LTE/g)) { + this.lte_cells.push(lines[i]); + } + } } - } - } - this.parseNr5gCells(); - this.parseLTECells(); - this.generateTableRow(); + }) + .then(() => { + this.parseNr5gCells(); + }) + .then(() => { + this.parseLTECells(); + }) + .then(() => { + this.generateTableRow(); + this.isLoading = false; + this.isCellScanning = false; + }); }, parseNr5gCells() { // Parse the NR5G cells @@ -205,7 +1918,6 @@ OK`; band = this.nr5g_cells[i].split(":")[1].split(",")[12]; provider = this.convertMCCMNCtoNetworkName(mcc, mnc); - console.log("Provider", provider); /// Append the value to lte_cells_parsed with this layout: // mcc mnc, band, freq, pci, rsrp @@ -227,7 +1939,6 @@ OK`; band = this.lte_cells[i].split(":")[1].split(",")[12]; provider = this.convertMCCMNCtoNetworkName(mcc, mnc); - console.log("Provider", provider); // Append the value to lte_cells_parsed with this layout: // mcc mnc, band, freq, pci, rsrp @@ -239,12 +1950,15 @@ OK`; generateTableRow() { this.convertMCCMNCtoNetworkName(); + const tableBody = document.getElementById("cellScanTableBody"); + tableBody.innerHTML = ""; // Clear the table body before generating new rows this.tableRows = []; // Reset the array before generating new rows - // Generate rows for NR5G cells - for (let i = 0; i < this.nr5g_cells_parsed.length; i++) { - const nr5Glines = this.nr5g_cells_parsed[i].split(","); - this.tableRows.push(` + if (this.cellScanMode === "Full Scan") { + // Generate rows for NR5G cells + for (let i = 0; i < this.nr5g_cells_parsed.length; i++) { + const nr5Glines = this.nr5g_cells_parsed[i].split(","); + this.tableRows.push(` NR5G ${nr5Glines[0]} @@ -254,12 +1968,12 @@ OK`; ${nr5Glines[4]} `); - } + } - // Generate rows for LTE cells - for (let i = 0; i < this.lte_cells_parsed.length; i++) { - const LTElines = this.lte_cells_parsed[i].split(","); - this.tableRows.push(` + // Generate rows for LTE cells + for (let i = 0; i < this.lte_cells_parsed.length; i++) { + const LTElines = this.lte_cells_parsed[i].split(","); + this.tableRows.push(` LTE ${LTElines[0]} @@ -269,6 +1983,42 @@ OK`; ${LTElines[4]} `); + } + } else if (this.cellScanMode === "NR5G Only") { + // Generate rows for NR5G cells + for (let i = 0; i < this.nr5g_cells_parsed.length; i++) { + const nr5Glines = this.nr5g_cells_parsed[i].split(","); + this.tableRows.push(` + + NR5G + ${nr5Glines[0]} + ${nr5Glines[1]} + ${nr5Glines[2]} + ${nr5Glines[3]} + ${nr5Glines[4]} + + `); + } + } else if (this.cellScanMode === "LTE Only") { + // Generate rows for LTE cells + for (let i = 0; i < this.lte_cells_parsed.length; i++) { + const LTElines = this.lte_cells_parsed[i].split(","); + this.tableRows.push(` + + LTE + ${LTElines[0]} + ${LTElines[1]} + ${LTElines[2]} + ${LTElines[3]} + ${LTElines[4]} + + `); + } + } + + // Append the rows to the table body + for (let i = 0; i < this.tableRows.length; i++) { + tableBody.innerHTML += this.tableRows[i]; } }, @@ -276,6 +2026,229 @@ OK`; const mccmnc = mcc + mnc; return this.networkNames[mccmnc] || `${mcc} ${mnc}`; }, + + getNeighbourcellLTEandNSA() { + // this.clearTableRowsBodyNeighbourCells(); + // Reset the array before generating new rows + this.lte_neighbourCells = []; + this.nr5g_neighbourCells = []; + this.lte_neighbourCellsParsed = []; + this.nr5g_neighbourCellsParsed = []; + this.neighbourCellsTableRows = []; + this.atcmd = + 'AT+QENG="neighbourcell";+QNWCFG="nr5g_meas_info",1;+QNWCFG="nr5g_meas_info"'; + this.isLoading = true; + + fetch( + "/cgi-bin/get_atcommand?" + + new URLSearchParams({ + atcmd: this.atcmd, + }) + ) + .then((res) => { + return res.text(); + }) + .then((data) => { + const rawdata = data; + console.log(rawdata); + + let lines = rawdata.split("\n"); + console.log("Lines: ", lines); + + // Get the length of the lines array and remove the first element. + const linesLength = lines.length; + lines.splice(0, 1); + + // Get the new length of the lines array and remove the last 3 elements. + const newLinesLength = lines.length; + lines.splice(newLinesLength - 3, 3); + + // Remove an index with "" from the array. + for (let i = 0; i < lines.length; i++) { + if (lines[i] === "" || lines[i] === "\r") { + lines.splice(i, 1); + } + } + + console.log("Modified: ", lines); + + // Loop through all of the lines. If the line match with LTE then add it to the lte_neighbourCells array. Otherwise, add it to the nr5g_neighbourCells array. + for (let i = 0; i < lines.length; i++) { + if (lines[i].match(/LTE/g)) { + this.lte_neighbourCells.push(lines[i]); + } else { + this.nr5g_neighbourCells.push(lines[i]); + } + } + }) + .then(() => { + this.lteNeighbourCellsParse(); + }) + .then(() => { + this.nr5gNeighbourCellsParse(); + }) + .then(() => { + this.generateNeighbourCellsTableRow(); + this.isLoading = false; + }); + }, + + lteNeighbourCellsParse() { + for (let i = 0; i < this.lte_neighbourCells.length; i++) { + let freq, pci, rsrp; + const lines = this.lte_neighbourCells[i].split(","); + freq = this.lte_neighbourCells[i].split(":")[1].split(",")[2]; + pci = this.lte_neighbourCells[i].split(":")[1].split(",")[3]; + rsrp = this.lte_neighbourCells[i].split(":")[1].split(",")[5]; + + // // Append the value to lte_neighbourCellsParsed with this layout: + // //freq, pci, rsrp + this.lte_neighbourCellsParsed.push(`${freq}, ${pci}, ${rsrp}`); + } + }, + + nr5gNeighbourCellsParse() { + for (let i = 0; i < this.nr5g_neighbourCells.length; i++) { + let freq, pci, rsrp; + const lines = this.nr5g_neighbourCells[i].split(","); + freq = this.nr5g_neighbourCells[i].split(":")[1].split(",")[2]; + pci = this.nr5g_neighbourCells[i].split(":")[1].split(",")[3]; + rsrp = this.nr5g_neighbourCells[i].split(":")[1].split(",")[4]; + + // // Append the value to lte_neighbourCellsParsed with this layout: + // //freq, pci, rsrp + this.nr5g_neighbourCellsParsed.push(`${freq}, ${pci}, ${rsrp}`); + } + }, + + generateNeighbourCellsTableRow() { + console.log(this.neighbourCellsScanMode); + this.neighbourCellsTableRows = []; // Reset the array before generating new rows + const tableBody = document.getElementById("neighbourCellTableBody"); + tableBody.innerHTML = ""; + + if (this.neighbourCellsScanMode === "LTE and NSA") { + // Generate rows for LTE neighbour cells + for (let i = 0; i < this.lte_neighbourCellsParsed.length; i++) { + const LTElines = this.lte_neighbourCellsParsed[i].split(","); + this.neighbourCellsTableRows.push(` + + LTE + ${LTElines[0]} + ${LTElines[1]} + ${LTElines[2]} + + `); + } + + // Generate rows for NR5G neighbour cells + for (let i = 0; i < this.nr5g_neighbourCellsParsed.length; i++) { + const nr5Glines = this.nr5g_neighbourCellsParsed[i].split(","); + this.neighbourCellsTableRows.push(` + + NR5G + ${nr5Glines[0]} + ${nr5Glines[1]} + ${nr5Glines[2]} + + `); + } + } else if (this.neighbourCellsScanMode === "LTE") { + // Generate rows for LTE neighbour cells + for (let i = 0; i < this.lte_neighbourCellsParsed.length; i++) { + const LTElines = this.lte_neighbourCellsParsed[i].split(","); + this.neighbourCellsTableRows.push(` + + LTE + ${LTElines[0]} + ${LTElines[1]} + ${LTElines[2]} + + `); + } + } else if (this.neighbourCellsScanMode === "NSA") { + // Generate rows for NR5G neighbour cells + + for (let i = 0; i < this.nr5g_neighbourCellsParsed.length; i++) { + const nr5Glines = this.nr5g_neighbourCellsParsed[i].split(","); + this.neighbourCellsTableRows.push(` + + NR5G + ${nr5Glines[0]} + ${nr5Glines[1]} + ${nr5Glines[2]} + + `); + } + } + + if (this.neighbourCellsTableRows.length === 0) { + this.neighbourCellsTableRows.push(` + + Empty + Empty + Empty + Empty + + `); + } + + // Append the rows to the table body + for (let i = 0; i < this.neighbourCellsTableRows.length; i++) { + tableBody.innerHTML += this.neighbourCellsTableRows[i]; + } + }, + + clearTableRowsBodyCellScan() { + // Make all arrays empty + this.lte_cells = []; + this.nr5g_cells = []; + this.lte_cells_parsed = []; + this.nr5g_cells_parsed = []; + this.tableRows = []; + + const tableBody = document.getElementById("cellScanTableBody"); + tableBody.innerHTML = ""; + this.tableRows.push(` + + Empty + Empty + Empty + Empty + Empty + Empty + + `); + + // Append the rows to the table body + for (let i = 0; i < this.tableRows.length; i++) { + tableBody.innerHTML += this.tableRows[i]; + } + }, + + clearTableRowsBodyNeighbourCells() { + // Make all arrays empty + this.lte_neighbourCells = []; + this.nr5g_neighbourCells = []; + this.lte_neighbourCellsParsed = []; + this.nr5g_neighbourCellsParsed = []; + this.neighbourCellsTableRows = []; + + const tableBody = document.getElementById("neighbourCellTableBody"); + tableBody.innerHTML = ""; + this.neighbourCellsTableRows.push(` + + Empty + Empty + Empty + Empty + + `); + // Append the rows to the table body + for (let i = 0; i < this.neighbourCellsTableRows.length; i++) { + tableBody.innerHTML += this.neighbourCellsTableRows[i]; + } + }, }; } From 49af87089bef946c25ee8cbfe45dc62ee1097a79 Mon Sep 17 00:00:00 2001 From: Russel Yasol Date: Mon, 13 May 2024 18:09:58 +0800 Subject: [PATCH 03/12] added nav link for scanner page --- simpleadmin/www/scanner.html | 18 +++--- simpleadmin/www/settings.html | 116 +++++----------------------------- 2 files changed, 24 insertions(+), 110 deletions(-) diff --git a/simpleadmin/www/scanner.html b/simpleadmin/www/scanner.html index 20acd97..c012627 100644 --- a/simpleadmin/www/scanner.html +++ b/simpleadmin/www/scanner.html @@ -150,7 +150,7 @@
-
LTE and NSA Neighbourcell Scan
+
LTE and NR5G Neighbourcell Scan
@@ -177,12 +177,12 @@ x-model="neighbourCellsScanMode" > - + - +
- Neighbourcell scan will only scan LTE or NSA cells from + Neighbourcell scan will only scan LTE or NR5G cells from your network provider.
@@ -191,7 +191,7 @@ - - - - - - - -
Scan Neighbour LTE - -
Scan Neighbour NSA - -
@@ -313,7 +287,7 @@ Set TTL Value to 0 to disable.
-
+
- -
- - -
-
- + +
@@ -425,8 +387,6 @@ ethPassStatus: false, DNSProxyStatus: true, USBModeStatus: true, - fullScanModeType: "", - scanStart: false, closeModal() { this.confirmModal = false; @@ -544,52 +504,6 @@ }); }, - scanLTE() { - this.atcmd = 'AT+QENG="neighbourcell"'; - this.sendATCommand().then(() => { - this.fetchCurrentSettings(); - }); - }, - - scanNSA() { - this.atcmd = - 'AT+QNWCFG="nr5g_meas_info",1;+QNWCFG="nr5g_meas_info"'; - this.sendATCommand().then(() => { - this.fetchCurrentSettings(); - }); - }, - - fullScanMode() { - switch (this.fullScanModeType) { - case "LTE": - this.atcmd = "AT+QSCAN=1,1"; - this.scanStart = true; - this.atCommandResponse = - "Scanning all available LTE networks... This might take a while."; - this.sendATCommand(); - this.scanStart = false; - break; - case "NR5G": - this.atcmd = "AT+QSCAN=2,1"; - this.scanStart = true; - this.atCommandResponse = - "Scanning all available NR5G-SA networks... This might take a while."; - this.sendATCommand(); - this.scanStart = false; - break; - case "ALL": - this.atcmd = "AT+QSCAN=3,1"; - this.scanStart = true; - this.atCommandResponse = - "Scanning all available networks... This might take a while."; - this.sendATCommand(); - this.scanStart = false; - break; - default: - alert("Select a Scan Mode First"); - } - }, - fetchCurrentSettings() { this.fetchATCommand = 'AT+QMAP="MPDN_RULE";+QMAP="DHCPV4DNS";+QMAPWAC?'; From 9bd4049ace72f176eb4484bdc42cb9742e7a205f Mon Sep 17 00:00:00 2001 From: Russel Yasol Date: Mon, 13 May 2024 18:25:44 +0800 Subject: [PATCH 04/12] added phone number to deviceinfo --- simpleadmin/www/deviceinfo.html | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/simpleadmin/www/deviceinfo.html b/simpleadmin/www/deviceinfo.html index 487c49e..aa68c5f 100644 --- a/simpleadmin/www/deviceinfo.html +++ b/simpleadmin/www/deviceinfo.html @@ -92,6 +92,10 @@ Firmware version + + Phone Number + + IMSI @@ -225,6 +229,7 @@ lanIp: "-", wwanIpv4: "-", wwanIpv6: "-", + phoneNumber: "Unknown", simpleAdminVersion: "-", atcmd: null, atCommandResponse: "", @@ -262,7 +267,7 @@ fetchATCommand() { this.atcmd = - 'AT+CGMI;+CGMM;+QGMR;+CIMI;+ICCID;+CGSN;+QMAP="LANIP";+QMAP="WWAN"'; + 'AT+CGMI;+CGMM;+QGMR;+CIMI;+ICCID;+CGSN;+QMAP="LANIP";+QMAP="WWAN";+CNUM'; this.isLoading = true; fetch( "/cgi-bin/get_atcommand?" + @@ -297,7 +302,13 @@ this.lanIp = lines[13].trim().split(",")[3]; this.wwanIpv4 = lines[15].trim().split(",")[4].replace(/"/g, ""); this.wwanIpv6 = lines[16].trim().split(",")[4].replace(/"/g, ""); - this.simpleAdminVersion = "SimpleAdminRev-Alpha-0.5"; + this.phoneNumber = lines[18].trim().split(",")[1].replace(/"/g, ""); + + if (this.phoneNumber === "") { + this.phoneNumber = "Unknown"; + } + + this.simpleAdminVersion = "SimpleAdminRev-Alpha-0.6"; this.isLoading = false; }, From acc37fd937f6c413df6192839f8ccd03918d8697 Mon Sep 17 00:00:00 2001 From: Russel Yasol Date: Mon, 13 May 2024 19:57:09 +0800 Subject: [PATCH 05/12] added device uptime --- simpleadmin/www/cgi-bin/get_uptime | 26 ++++++++++++++++++++++++++ simpleadmin/www/index.html | 27 +++++++++++++++++++++++++-- 2 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 simpleadmin/www/cgi-bin/get_uptime diff --git a/simpleadmin/www/cgi-bin/get_uptime b/simpleadmin/www/cgi-bin/get_uptime new file mode 100644 index 0000000..8e27fec --- /dev/null +++ b/simpleadmin/www/cgi-bin/get_uptime @@ -0,0 +1,26 @@ +#!/bin/bash + +# Execute the uptime command and extract the uptime duration +uptime_output=$(uptime) + +# Extract hours and minutes from the uptime string +hours=$(echo "$uptime_output" | awk -F '[ :]+' '{print $6}') +minutes=$(echo "$uptime_output" | awk -F '[ :]+' '{print $7}') + +# Remove comma to minutes +minutes=$(echo $minutes | tr -d ,) + +# Create a text response with the uptime duration +uptime_text="$hours hours and $minutes minutes" + +# if hours and minutes are 1 or 0, then remove the 's' from the end of the string +if [ $hours -eq 1 ] || [ $hours -eq 0 ]; then + uptime_text=$(echo $uptime_text | sed 's/hours/hour/g') +fi + +# Set header for plain text content +echo "Content-Type: text/plain" +echo "" + +# Output the text response +echo "$uptime_text" \ No newline at end of file diff --git a/simpleadmin/www/index.html b/simpleadmin/www/index.html index bdfce77..7834dcf 100644 --- a/simpleadmin/www/index.html +++ b/simpleadmin/www/index.html @@ -56,7 +56,7 @@ -
@@ -611,6 +615,7 @@ newRefreshRate: null, refreshRate: 3, intervalId: null, + uptime: "Unknown", fetchNetworkInfo() { this.atcmd = 'AT+QTEMP;+QUIMSLOT?;+QSPN;+CGCONTRDP=1;+QMAP="WWANIP";+QENG="servingcell";+QCAINFO'; @@ -1004,7 +1009,9 @@ // Calculate the NR bandwidth this.bandwidth += - " / NR " + this.calculate_nr_bw(nr_bw).toString() + " MHz"; + " / NR " + + this.calculate_nr_bw(nr_bw).toString() + + " MHz"; // Parse the PCIs this.pcc_pci = lines[28].split(",")[5].replace(/"/g, ""); @@ -1197,6 +1204,18 @@ }); }, + + fetchUpTime() { + // Content-Type: text/plain + // + // 1 hour 44, minute + fetch("/cgi-bin/get_uptime") + .then((response) => response.text()) + .then((data) => { + this.uptime = data; + }); + }, + updateRefreshRate() { // Check if the refresh rate is less than 3 if (this.newRefreshRate < 3) { @@ -1247,6 +1266,8 @@ this.internetConnection = "Disconnected"; }); + this.fetchUpTime(); + this.lastUpdate = new Date().toLocaleString(); console.log("Initialized"); @@ -1273,6 +1294,8 @@ this.internetConnection = "Disconnected"; }); + this.fetchUpTime(); + this.lastUpdate = new Date().toLocaleString(); console.log("Refreshed"); }, this.refreshRate * 1000); From 06b84b48a4a7165e46adb3211afaa3535411784b Mon Sep 17 00:00:00 2001 From: Russel Yasol Date: Mon, 13 May 2024 20:52:13 +0800 Subject: [PATCH 06/12] added support for parsing days in uptime --- simpleadmin/www/cgi-bin/get_uptime | 36 +++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/simpleadmin/www/cgi-bin/get_uptime b/simpleadmin/www/cgi-bin/get_uptime index 8e27fec..e149e40 100644 --- a/simpleadmin/www/cgi-bin/get_uptime +++ b/simpleadmin/www/cgi-bin/get_uptime @@ -3,19 +3,43 @@ # Execute the uptime command and extract the uptime duration uptime_output=$(uptime) -# Extract hours and minutes from the uptime string +# Example output of the uptime command +# 2 days, 14:08, + +# Extract days, hours and minutes from the uptime string + +# For days, match if day or days is present in the string +if [[ "$uptime_output" =~ day ]]; then + days=$(echo "$uptime_output" | awk -F '[ ,]+' '{print $2}') +else + days=0 +fi + hours=$(echo "$uptime_output" | awk -F '[ :]+' '{print $6}') minutes=$(echo "$uptime_output" | awk -F '[ :]+' '{print $7}') +# Check if days is empty, then set it to 0 +if [ -z "$days" ]; then + days=0 +fi + +# Remove comma to days +days=$(echo $days | tr -d ,) + # Remove comma to minutes minutes=$(echo $minutes | tr -d ,) -# Create a text response with the uptime duration -uptime_text="$hours hours and $minutes minutes" +# Create a text response with the uptime duration. If days is empty, then set it to 0 +uptime_text="$days days, $hours hours, $minutes minutes" -# if hours and minutes are 1 or 0, then remove the 's' from the end of the string -if [ $hours -eq 1 ] || [ $hours -eq 0 ]; then - uptime_text=$(echo $uptime_text | sed 's/hours/hour/g') +# If days is 0, then remove it from the text response +if [ "$days" -eq 0 ]; then + uptime_text="$hours hours, $minutes minutes" +fi + +# if days and hours are 0 or 1, remove s from the end of the string +if [ "$days" -eq 0 ] && [ "$hours" -eq 0 ] || [ "$days" -eq 1 ] && [ "$hours" -eq 1 ]; then + uptime_text=$(echo $uptime_text | sed 's/s//g') fi # Set header for plain text content From 6f96491273f99ac69fc81f15246a054dc8dd6342 Mon Sep 17 00:00:00 2001 From: Russel Yasol Date: Mon, 13 May 2024 21:22:25 +0800 Subject: [PATCH 07/12] fixed parsing for uptime --- simpleadmin/www/cgi-bin/get_uptime | 45 ++---------------------------- simpleadmin/www/index.html | 10 ++++++- 2 files changed, 12 insertions(+), 43 deletions(-) diff --git a/simpleadmin/www/cgi-bin/get_uptime b/simpleadmin/www/cgi-bin/get_uptime index e149e40..e672e59 100644 --- a/simpleadmin/www/cgi-bin/get_uptime +++ b/simpleadmin/www/cgi-bin/get_uptime @@ -1,50 +1,11 @@ #!/bin/bash -# Execute the uptime command and extract the uptime duration +# Execute the uptime command and store the result uptime_output=$(uptime) -# Example output of the uptime command -# 2 days, 14:08, - -# Extract days, hours and minutes from the uptime string - -# For days, match if day or days is present in the string -if [[ "$uptime_output" =~ day ]]; then - days=$(echo "$uptime_output" | awk -F '[ ,]+' '{print $2}') -else - days=0 -fi - -hours=$(echo "$uptime_output" | awk -F '[ :]+' '{print $6}') -minutes=$(echo "$uptime_output" | awk -F '[ :]+' '{print $7}') - -# Check if days is empty, then set it to 0 -if [ -z "$days" ]; then - days=0 -fi - -# Remove comma to days -days=$(echo $days | tr -d ,) - -# Remove comma to minutes -minutes=$(echo $minutes | tr -d ,) - -# Create a text response with the uptime duration. If days is empty, then set it to 0 -uptime_text="$days days, $hours hours, $minutes minutes" - -# If days is 0, then remove it from the text response -if [ "$days" -eq 0 ]; then - uptime_text="$hours hours, $minutes minutes" -fi - -# if days and hours are 0 or 1, remove s from the end of the string -if [ "$days" -eq 0 ] && [ "$hours" -eq 0 ] || [ "$days" -eq 1 ] && [ "$hours" -eq 1 ]; then - uptime_text=$(echo $uptime_text | sed 's/s//g') -fi - # Set header for plain text content echo "Content-Type: text/plain" echo "" -# Output the text response -echo "$uptime_text" \ No newline at end of file +# Output the uptime result +echo "$uptime_output" diff --git a/simpleadmin/www/index.html b/simpleadmin/www/index.html index 7834dcf..5fa36c6 100644 --- a/simpleadmin/www/index.html +++ b/simpleadmin/www/index.html @@ -1212,7 +1212,15 @@ fetch("/cgi-bin/get_uptime") .then((response) => response.text()) .then((data) => { - this.uptime = data; + // Split the data by space + const uptimeArray = data.split(" "); + console.log(uptimeArray); + // If uptimeArray[3] is not empty, then set the uptime for days + if (uptimeArray[3] !== "") { + this.uptime = uptimeArray[3] + " days, " + uptimeArray[5].split(":")[0] + " hours, and " + uptimeArray[5].split(":")[1].replace(",", "") + " minutes"; + } else { + this.uptime = uptimeArray[4].split(":")[0] + " hours and " + uptimeArray[4].split(":")[1].replace(",", "") + " minutes"; + } }); }, From 43ed2669f6e6a94982228b3afb7d724e3533ac0a Mon Sep 17 00:00:00 2001 From: Russel Yasol Date: Tue, 14 May 2024 06:48:45 +0800 Subject: [PATCH 08/12] added logic check for uptime parse --- simpleadmin/www/index.html | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/simpleadmin/www/index.html b/simpleadmin/www/index.html index 5fa36c6..07e01fa 100644 --- a/simpleadmin/www/index.html +++ b/simpleadmin/www/index.html @@ -1204,7 +1204,6 @@ }); }, - fetchUpTime() { // Content-Type: text/plain // @@ -1215,11 +1214,30 @@ // Split the data by space const uptimeArray = data.split(" "); console.log(uptimeArray); - // If uptimeArray[3] is not empty, then set the uptime for days - if (uptimeArray[3] !== "") { - this.uptime = uptimeArray[3] + " days, " + uptimeArray[5].split(":")[0] + " hours, and " + uptimeArray[5].split(":")[1].replace(",", "") + " minutes"; + // If uptimeArray[3] is not empty, and the value doesnt have : in it + if ( + uptimeArray[3] !== "" && + uptimeArray[3].match(/:/) == null + ) { + this.uptime = + uptimeArray[3] + + " days, " + + uptimeArray[5].split(":")[0] + + " hours, and " + + uptimeArray[5].split(":")[1].replace(",", "") + + " minutes"; + } else if (uptimeArray[3].match(/:/) != null) { + this.uptime = + uptimeArray[3].split(":")[0] + + " hours and " + + uptimeArray[3].split(":")[1].replace(",", "") + + " minutes"; } else { - this.uptime = uptimeArray[4].split(":")[0] + " hours and " + uptimeArray[4].split(":")[1].replace(",", "") + " minutes"; + this.uptime = + uptimeArray[4].split(":")[0] + + " hours and " + + uptimeArray[4].split(":")[1].replace(",", "") + + " minutes"; } }); }, @@ -1302,7 +1320,7 @@ this.internetConnection = "Disconnected"; }); - this.fetchUpTime(); + this.fetchUpTime(); this.lastUpdate = new Date().toLocaleString(); console.log("Refreshed"); @@ -1312,4 +1330,4 @@ } - + \ No newline at end of file From b260cf369e8aa984e8a1428f7c8836463361553b Mon Sep 17 00:00:00 2001 From: Russel Yasol Date: Tue, 14 May 2024 06:58:58 +0800 Subject: [PATCH 09/12] added logic check for missing hour on uptime --- simpleadmin/www/index.html | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/simpleadmin/www/index.html b/simpleadmin/www/index.html index 07e01fa..5899833 100644 --- a/simpleadmin/www/index.html +++ b/simpleadmin/www/index.html @@ -1217,7 +1217,7 @@ // If uptimeArray[3] is not empty, and the value doesnt have : in it if ( uptimeArray[3] !== "" && - uptimeArray[3].match(/:/) == null + uptimeArray[3].match(/:/) == null && uptimeArray[4].match(/days/) == null ) { this.uptime = uptimeArray[3] + @@ -1232,7 +1232,11 @@ " hours and " + uptimeArray[3].split(":")[1].replace(",", "") + " minutes"; - } else { + } else if (uptimeArray[5].match(/:/) == null && uptimeArray[4].match(/days/) != null) { + this.uptime = uptimeArray[3].replace(",", "") + " days and " + uptimeArray[5] + " minutes"; + } + + else { this.uptime = uptimeArray[4].split(":")[0] + " hours and " + From b30daf8ce7f8d3dbbfe2a859966d7aef7f0f1460 Mon Sep 17 00:00:00 2001 From: iamromulan <50184035+iamromulan@users.noreply.github.com> Date: Mon, 13 May 2024 21:06:37 -0400 Subject: [PATCH 10/12] Add new files to installation script --- simpleupdates/scripts/update_simpleadmin.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/simpleupdates/scripts/update_simpleadmin.sh b/simpleupdates/scripts/update_simpleadmin.sh index af07f3d..4aadfd7 100644 --- a/simpleupdates/scripts/update_simpleadmin.sh +++ b/simpleupdates/scripts/update_simpleadmin.sh @@ -149,6 +149,7 @@ echo -e "\e[1;31m2) Installing simpleadmin from the $GITTREE branch\e[0m" wget https://raw.githubusercontent.com/$GITUSER/quectel-rgmii-toolkit/$GITTREE/simpleadmin/www/settings.html wget https://raw.githubusercontent.com/$GITUSER/quectel-rgmii-toolkit/$GITTREE/simpleadmin/www/sms.html wget https://raw.githubusercontent.com/$GITUSER/quectel-rgmii-toolkit/$GITTREE/simpleadmin/www/logout.html + wget https://raw.githubusercontent.com/$GITUSER/quectel-rgmii-toolkit/$GITTREE/simpleadmin/www/scanner.html sleep 1 cd $SIMPLE_ADMIN_DIR/www/js wget https://raw.githubusercontent.com/$GITUSER/quectel-rgmii-toolkit/$GITTREE/simpleadmin/www/js/alpinejs.min.js @@ -169,6 +170,7 @@ echo -e "\e[1;31m2) Installing simpleadmin from the $GITTREE branch\e[0m" wget https://raw.githubusercontent.com/$GITUSER/quectel-rgmii-toolkit/$GITTREE/simpleadmin/www/cgi-bin/get_ttl_status wget https://raw.githubusercontent.com/$GITUSER/quectel-rgmii-toolkit/$GITTREE/simpleadmin/www/cgi-bin/set_ttl wget https://raw.githubusercontent.com/$GITUSER/quectel-rgmii-toolkit/$GITTREE/simpleadmin/www/cgi-bin/send_sms + wget https://raw.githubusercontent.com/$GITUSER/quectel-rgmii-toolkit/$GITTREE/simpleadmin/www/cgi-bin/get_uptime sleep 1 cd / chmod +x $SIMPLE_ADMIN_DIR/www/cgi-bin/* From 12cebf6900f50dd35272b3a4781153bcbe809cef Mon Sep 17 00:00:00 2001 From: Russel Yasol Date: Tue, 14 May 2024 12:36:11 +0800 Subject: [PATCH 11/12] added various changes --- simpleadmin/www/index.html | 161 +++++++++++++++++++++++------ simpleadmin/www/scanner.html | 22 ++-- simpleadmin/www/settings.html | 187 ++++++++++++++++++++++------------ 3 files changed, 265 insertions(+), 105 deletions(-) diff --git a/simpleadmin/www/index.html b/simpleadmin/www/index.html index 5899833..5ee7d20 100644 --- a/simpleadmin/www/index.html +++ b/simpleadmin/www/index.html @@ -1211,37 +1211,134 @@ fetch("/cgi-bin/get_uptime") .then((response) => response.text()) .then((data) => { - // Split the data by space - const uptimeArray = data.split(" "); - console.log(uptimeArray); - // If uptimeArray[3] is not empty, and the value doesnt have : in it - if ( - uptimeArray[3] !== "" && - uptimeArray[3].match(/:/) == null && uptimeArray[4].match(/days/) == null - ) { - this.uptime = - uptimeArray[3] + - " days, " + - uptimeArray[5].split(":")[0] + - " hours, and " + - uptimeArray[5].split(":")[1].replace(",", "") + - " minutes"; - } else if (uptimeArray[3].match(/:/) != null) { - this.uptime = - uptimeArray[3].split(":")[0] + - " hours and " + - uptimeArray[3].split(":")[1].replace(",", "") + - " minutes"; - } else if (uptimeArray[5].match(/:/) == null && uptimeArray[4].match(/days/) != null) { - this.uptime = uptimeArray[3].replace(",", "") + " days and " + uptimeArray[5] + " minutes"; - } - - else { - this.uptime = - uptimeArray[4].split(":")[0] + - " hours and " + - uptimeArray[4].split(":")[1].replace(",", "") + - " minutes"; + // Example result + // 01:17:02 up 3 days, 2:41, load average: 0.65, 0.66, 0.60 + + // Look for xx days in the result + const days = data.match(/(\d+) day/); + // Do the same for hours + const hours = data.match(/(\d+) hour/); + // Do the same for minutes + const minutes = data.match(/(\d+) minute/); + // 2:41 + const hoursAndMinutes = data.match(/(\d+):(\d+),/); + + if (hoursAndMinutes != null) { + if (days != null) { + if (days[1] === "1") { + if (hoursAndMinutes[1] === "1") { + this.uptime = + days[1] + + " day, " + + hoursAndMinutes[1] + + " hour " + + hoursAndMinutes[2] + + " minutes"; + } else if (hoursAndMinutes[2] === 1) { + this.uptime = + days[1] + + " day, " + + hoursAndMinutes[1] + + " hours " + + hoursAndMinutes[2] + + " minute"; + } else { + this.uptime = + days[1] + + " day, " + + hoursAndMinutes[1] + + " hours " + + hoursAndMinutes[2] + + " minutes"; + } + } else { + if (hoursAndMinutes[1] === "1") { + this.uptime = + days[1] + + " days, " + + hoursAndMinutes[1] + + " hour " + + hoursAndMinutes[2] + + " minutes"; + } else if (hoursAndMinutes[2] === 1) { + this.uptime = + days[1] + + " days, " + + hoursAndMinutes[1] + + " hours " + + hoursAndMinutes[2] + + " minute"; + } else { + this.uptime = + days[1] + + " days, " + + hoursAndMinutes[1] + + " hours " + + hoursAndMinutes[2] + + " minutes"; + } + } + } else { + if (hoursAndMinutes[1] === "1") { + this.uptime = + hoursAndMinutes[1] + + " hour " + + hoursAndMinutes[2] + + " minutes"; + } else if (hoursAndMinutes[2] === 1) { + this.uptime = + hoursAndMinutes[1] + + " hours " + + hoursAndMinutes[2] + + " minute"; + } else { + this.uptime = + hoursAndMinutes[1] + + " hours " + + hoursAndMinutes[2] + + " minutes"; + } + } + } else if (days != null) { + if (hours != null) { + if (days[1] === "1") { + if (hours[1] === "1") { + this.uptime = days[1] + " day, " + hours[1] + " hour"; + } else { + this.uptime = days[1] + " day, " + hours[1] + " hours"; + } + } else { + if (hours[1] === "1") { + this.uptime = days[1] + " days, " + hours[1] + " hour"; + } else { + this.uptime = days[1] + " days, " + hours[1] + " hours"; + } + } + } else if (minutes != null) { + if (days[1] === "1") { + if (minutes[1] === "1") { + this.uptime = + days[1] + " day, " + minutes[1] + " minute"; + } else { + this.uptime = + days[1] + " day, " + minutes[1] + " minutes"; + } + } else { + if (minutes[1] === "1") { + this.uptime = + days[1] + " days, " + minutes[1] + " minute"; + } else { + this.uptime = + days[1] + " days, " + minutes[1] + " minutes"; + } + } + } else { + if (days[1] === "1") { + this.uptime = days[1] + " day"; + } else { + this.uptime = days[1] + " days"; + } + } } }); }, @@ -1334,4 +1431,4 @@ } - \ No newline at end of file + diff --git a/simpleadmin/www/scanner.html b/simpleadmin/www/scanner.html index c012627..cd57b70 100644 --- a/simpleadmin/www/scanner.html +++ b/simpleadmin/www/scanner.html @@ -127,7 +127,7 @@ class="btn btn-primary me-md-2" type="button" x-on:click="startCellScan()" - :disabled="isLoading" + :disabled='isLoading === true || cellScanMode === "Unspecified" || cellScanMode === "Select Scan Mode"' x-text="isCellScanning ? 'Scanning... Please wait.' : 'Start Cell Scan'" > @@ -135,7 +135,7 @@ class="btn btn-danger" type="button" x-on:click="clearTableRowsBodyCellScan()" - :disabled="isLoading" + :disabled="isLoading === true || resultDoneCell === false" > Clear @@ -192,7 +192,7 @@ class="btn btn-primary me-md-2" type="button" x-on:click="getNeighbourcellLTEandNR5G()" - :disabled="isLoading" + :disabled="isLoading === true || neighbourCellsScanMode === 'Unspecified' || neighbourCellsScanMode === 'Select Scan Mode'" > Start Neighbour Cell Scan @@ -200,7 +200,7 @@ class="btn btn-danger" type="button" x-on:click="clearTableRowsBodyNeighbourCells()" - :disabled="isLoading" + :disabled="isLoading === true || resultDoneNeighbourCell === false" > Clear @@ -1830,10 +1830,12 @@ nr5g_neighbourCellsParsed: [], lte_neighbourCellsParsed: [], neighbourCellsTableRows: [], - cellScanMode: "", - neighbourCellsScanMode: "", + cellScanMode: "Unspecified", + neighbourCellsScanMode: "Unspecified", isLoading: false, isCellScanning: false, + resultDoneCell: false, + resultDoneNeighbourCell: false, init() { this.generateNeighbourCellsTableRow(); @@ -1903,6 +1905,7 @@ this.generateTableRow(); this.isLoading = false; this.isCellScanning = false; + this.resultDoneCell = true; }); }, parseNr5gCells() { @@ -2090,6 +2093,7 @@ .then(() => { this.generateNeighbourCellsTableRow(); this.isLoading = false; + this.resultDoneNeighbourCell = true; }); }, @@ -2207,6 +2211,8 @@ this.nr5g_cells_parsed = []; this.tableRows = []; + this.resultDoneCell = false; + const tableBody = document.getElementById("cellScanTableBody"); tableBody.innerHTML = ""; this.tableRows.push(` @@ -2234,6 +2240,8 @@ this.nr5g_neighbourCellsParsed = []; this.neighbourCellsTableRows = []; + this.resultDoneNeighbourCell = false; + const tableBody = document.getElementById("neighbourCellTableBody"); tableBody.innerHTML = ""; this.neighbourCellsTableRows.push(` @@ -2253,4 +2261,4 @@ } - + \ No newline at end of file diff --git a/simpleadmin/www/settings.html b/simpleadmin/www/settings.html index 1795a1d..8b0b9ef 100644 --- a/simpleadmin/www/settings.html +++ b/simpleadmin/www/settings.html @@ -169,13 +169,24 @@ - ETH IP Passthrough + IP Passthrough + + + + + Data Call Method + + + + + + + Onboard DNS Proxy @@ -214,29 +254,6 @@ - - USB Mode - - - - -
@@ -301,14 +318,14 @@ @@ -384,9 +401,11 @@ ttlvalue: 0, ttlStatus: false, newTTL: null, - ethPassStatus: false, + ipPassMode: "Unspecified", + ipPassStatus: false, + usbNetMode: "Unspecified", + currentUsbNetMode: "Unknown", DNSProxyStatus: true, - USBModeStatus: true, closeModal() { this.confirmModal = false; @@ -421,6 +440,7 @@ this.atCommandResponse = data; this.isLoading = false; this.isClean = false; + this.fetchCurrentSettings(); }) .catch((error) => { console.error("Error: ", error); @@ -462,18 +482,27 @@ this.showRebootModal(); }, - ethPassthroughEnable() { - this.atcmd = 'AT+QMAP="MPDN_RULE",0,1,0,1,1,"FF:FF:FF:FF:FF:FF"'; - this.sendATCommand().then(() => { - this.fetchCurrentSettings(); - }); + ipPassThroughEnable() { + if (this.ipPassMode != "Unspecified") { + if (this.ipPassMode == "ETH") { + this.atcmd = + 'AT+QMAP="MPDN_RULE",0,1,0,1,1,"FF:FF:FF:FF:FF:FF"'; + this.sendATCommand(); + } else if (this.ipPassMode == "USB") { + this.atcmd = + 'AT+QMAP="MPDN_RULE",0,1,0,3,1,"FF:FF:FF:FF:FF:FF"'; + this.sendATCommand(); + } else { + console.error("Invalid IP Passthrough Mode"); + } + } else { + console.error("IP Passthrough Mode not specified"); + } }, - ethPassthroughDisable() { + ipPassThroughDisable() { this.atcmd = 'AT+QMAP="MPDN_RULE",0'; - this.sendATCommand().then(() => { - this.fetchCurrentSettings(); - }); + this.sendATCommand(); }, onBoardDNSProxyEnable() { @@ -490,23 +519,39 @@ }); }, - usbModeEnable() { - this.atcmd = "AT+QMAPWAC=1"; - this.sendATCommand().then(() => { - this.fetchCurrentSettings(); - }); - }, - - usbModeDisable() { - this.atcmd = "AT+QMAPWAC=0"; - this.sendATCommand().then(() => { - this.fetchCurrentSettings(); - }); + usbNetModeChanger() { + if (this.usbNetMode != "Unspecified") { + if (this.usbNetMode == "RMNET") { + this.atcmd = 'AT+QCFG="usbnet",0;'; + this.sendATCommand().then(() => { + this.rebootDevice(); + }); + } else if (this.usbNetMode == "ECM") { + this.atcmd = 'AT+QCFG="usbnet",1;'; + this.sendATCommand().then(() => { + this.rebootDevice(); + }); + } else if (this.usbNetMode == "MBIM") { + this.atcmd = 'AT+QCFG="usbnet",2;'; + this.sendATCommand().then(() => { + this.rebootDevice(); + }); + } else if (this.usbNetMode == "RNDIS") { + this.atcmd = 'AT+QCFG="usbnet",3;'; + this.sendATCommand().then(() => { + this.rebootDevice(); + }); + } else { + console.log("USB Net Mode Invalid"); + } + } else { + console.error("USB Net Mode not specified"); + } }, fetchCurrentSettings() { this.fetchATCommand = - 'AT+QMAP="MPDN_RULE";+QMAP="DHCPV4DNS";+QMAPWAC?'; + 'AT+QMAP="MPDN_RULE";+QMAP="DHCPV4DNS";+QCFG="usbnet"'; fetch( "/cgi-bin/get_atcommand?" + new URLSearchParams({ @@ -520,15 +565,16 @@ // Set the value of currentSettingsResponse this.currentSettingsResponse = data; const currentData = data.split("\n"); + console.log("Lines: ", currentData); const testEthpass = currentData[1].match( /\+QMAP: "MPDN_rule",0,0,0,0,0/ ); if (testEthpass) { - this.ethPassStatus = false; + this.ipPassStatus = false; } else { - this.ethPassStatus = true; + this.ipPassStatus = true; } const testDNSProxy = currentData[6].match( @@ -541,12 +587,20 @@ this.DNSProxyStatus = false; } - const testUSBMode = currentData[8].match(/\+QMAPWAC: 1/); + const testUSBNet = currentData[8].match( + /\+QCFG: "usbnet",(\d)/ + ); - if (testUSBMode) { - this.USBModeStatus = true; + if (testUSBNet[1] == "0") { + this.currentUsbNetMode = "RMNET"; + } else if (testUSBNet[1] == "1") { + this.currentUsbNetMode = "ECM"; + } else if (testUSBNet[1] == "2") { + this.currentUsbNetMode = "MBIM"; + } else if (testUSBNet[1] == "3") { + this.currentUsbNetMode = "RNDIS"; } else { - this.USBModeStatus = false; + this.currentUsbNetMode = "Unknown"; } // clear atcmd @@ -590,6 +644,7 @@ }); }, init() { + this.fetchCurrentSettings(); this.fetchTTL(); }, }; From bf6637996c94b97675619fddf1bf36cb5ab4dc53 Mon Sep 17 00:00:00 2001 From: Russel Yasol Date: Tue, 14 May 2024 12:39:08 +0800 Subject: [PATCH 12/12] changed version to 0.7 --- simpleadmin/www/deviceinfo.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simpleadmin/www/deviceinfo.html b/simpleadmin/www/deviceinfo.html index aa68c5f..35696b4 100644 --- a/simpleadmin/www/deviceinfo.html +++ b/simpleadmin/www/deviceinfo.html @@ -139,7 +139,7 @@ Simple Admin Version - SimpleAdminRev-Alpha-0.5 + SimpleAdminRev-Alpha-0.7