Add Xperia 1 VI firmware upgrade skill
No-wipe newflasher upgrade flow for the XQ-EC72, keeping Magisk root. Includes the Linux procedure for re-enabling US 5G over the Qualcomm diag port: the pyserial EFS2 client, the policyman band files that get written, and a backup of the device's original band config. Claude-Session: https://claude.ai/code/session_01Ctisr9uXe4H8XsscZ2exGE
This commit is contained in:
parent
b155475c8c
commit
8318606f34
9 changed files with 3955 additions and 0 deletions
51
xperia-firmware-upgrade/5g-policyman/diag_probe.py
Normal file
51
xperia-firmware-upgrade/5g-policyman/diag_probe.py
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
import serial, time
|
||||||
|
|
||||||
|
def fcs16(data):
|
||||||
|
fcs = 0xFFFF
|
||||||
|
for b in data:
|
||||||
|
fcs = (fcs >> 8) ^ TAB[(fcs ^ b) & 0xFF]
|
||||||
|
return (~fcs) & 0xFFFF
|
||||||
|
|
||||||
|
# build CRC-CCITT (reflected, 0x8408) table
|
||||||
|
TAB = []
|
||||||
|
for i in range(256):
|
||||||
|
c = i
|
||||||
|
for _ in range(8):
|
||||||
|
c = (c >> 1) ^ 0x8408 if (c & 1) else (c >> 1)
|
||||||
|
TAB.append(c)
|
||||||
|
|
||||||
|
def hdlc(payload):
|
||||||
|
crc = fcs16(payload)
|
||||||
|
frame = bytes(payload) + bytes([crc & 0xFF, (crc >> 8) & 0xFF])
|
||||||
|
out = bytearray()
|
||||||
|
for b in frame:
|
||||||
|
if b == 0x7E: out += b'\x7d\x5e'
|
||||||
|
elif b == 0x7D: out += b'\x7d\x5d'
|
||||||
|
else: out.append(b)
|
||||||
|
out.append(0x7E)
|
||||||
|
return bytes(out)
|
||||||
|
|
||||||
|
def unhdlc(data):
|
||||||
|
if not data: return data
|
||||||
|
data = data.rstrip(b'\x7e')
|
||||||
|
out = bytearray(); esc = False
|
||||||
|
for b in data:
|
||||||
|
if esc: out.append(b ^ 0x20); esc = False
|
||||||
|
elif b == 0x7D: esc = True
|
||||||
|
else: out.append(b)
|
||||||
|
return bytes(out)
|
||||||
|
|
||||||
|
for dev in ['/dev/ttyUSB0','/dev/ttyUSB1']:
|
||||||
|
try:
|
||||||
|
s = serial.Serial(dev, 115200, timeout=1.5)
|
||||||
|
s.reset_input_buffer()
|
||||||
|
# DIAG_VERNO_F = 0x00
|
||||||
|
s.write(hdlc([0x00]))
|
||||||
|
time.sleep(0.4)
|
||||||
|
r = s.read(256)
|
||||||
|
print(dev, 'raw', r[:40].hex())
|
||||||
|
dec = unhdlc(r)
|
||||||
|
print(' decoded first byte:', hex(dec[0]) if dec else 'none', 'len', len(dec))
|
||||||
|
s.close()
|
||||||
|
except Exception as e:
|
||||||
|
print(dev, 'ERR', e)
|
||||||
249
xperia-firmware-upgrade/5g-policyman/efs2.py
Normal file
249
xperia-firmware-upgrade/5g-policyman/efs2.py
Normal file
|
|
@ -0,0 +1,249 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Minimal Qualcomm DIAG EFS2 client over a serial diag port.
|
||||||
|
|
||||||
|
Packet layouts and opcodes replicate JohnBel/EfsTools exactly. Used to
|
||||||
|
back up and replace policyman RF-band config on a rooted Sony Xperia 1 VI.
|
||||||
|
"""
|
||||||
|
import sys, os, time, struct, serial
|
||||||
|
|
||||||
|
PORT = os.environ.get("DIAGPORT", "/dev/ttyUSB0")
|
||||||
|
|
||||||
|
DIAG_SUBSYS = 0x4B
|
||||||
|
SUBSYS_EFS = 19
|
||||||
|
# EFS opcodes (EfsTools QcdmEfsCommand)
|
||||||
|
HELLO, QUERY, OPEN, CLOSE, READ, WRITE = 0, 1, 2, 3, 4, 5
|
||||||
|
UNLINK, MKDIR, OPENDIR, READDIR, CLOSEDIR, STAT = 8, 9, 11, 12, 13, 15
|
||||||
|
# open flags
|
||||||
|
O_WRONLY, O_RDONLY, O_CREAT = 0o1, 0o0, 0o100
|
||||||
|
|
||||||
|
# CRC-16 CCITT reflected (HDLC FCS-16)
|
||||||
|
_TAB = []
|
||||||
|
for _i in range(256):
|
||||||
|
_c = _i
|
||||||
|
for _ in range(8):
|
||||||
|
_c = (_c >> 1) ^ 0x8408 if (_c & 1) else (_c >> 1)
|
||||||
|
_TAB.append(_c)
|
||||||
|
|
||||||
|
def fcs16(data):
|
||||||
|
fcs = 0xFFFF
|
||||||
|
for b in data:
|
||||||
|
fcs = (fcs >> 8) ^ _TAB[(fcs ^ b) & 0xFF]
|
||||||
|
return (~fcs) & 0xFFFF
|
||||||
|
|
||||||
|
def hdlc_encode(payload):
|
||||||
|
crc = fcs16(payload)
|
||||||
|
frame = bytes(payload) + struct.pack("<H", crc)
|
||||||
|
out = bytearray()
|
||||||
|
for b in frame:
|
||||||
|
if b == 0x7E: out += b"\x7d\x5e"
|
||||||
|
elif b == 0x7D: out += b"\x7d\x5d"
|
||||||
|
else: out.append(b)
|
||||||
|
out.append(0x7E)
|
||||||
|
return bytes(out)
|
||||||
|
|
||||||
|
def hdlc_decode(frame):
|
||||||
|
frame = frame.rstrip(b"\x7e")
|
||||||
|
out = bytearray(); esc = False
|
||||||
|
for b in frame:
|
||||||
|
if esc: out.append(b ^ 0x20); esc = False
|
||||||
|
elif b == 0x7D: esc = True
|
||||||
|
else: out.append(b)
|
||||||
|
return bytes(out)
|
||||||
|
|
||||||
|
class Diag:
|
||||||
|
def __init__(self, port=PORT):
|
||||||
|
self.s = serial.Serial(port, 115200, timeout=0.4)
|
||||||
|
self.s.reset_input_buffer()
|
||||||
|
|
||||||
|
def _read_frame(self, timeout=4.0):
|
||||||
|
buf = bytearray(); deadline = time.time() + timeout
|
||||||
|
while time.time() < deadline:
|
||||||
|
b = self.s.read(1)
|
||||||
|
if not b:
|
||||||
|
continue
|
||||||
|
if b[0] == 0x7E:
|
||||||
|
if not buf:
|
||||||
|
continue # leading terminator
|
||||||
|
dec = hdlc_decode(bytes(buf))
|
||||||
|
buf = bytearray()
|
||||||
|
if len(dec) < 3:
|
||||||
|
continue
|
||||||
|
payload, crc = dec[:-2], struct.unpack("<H", dec[-2:])[0]
|
||||||
|
if fcs16(payload) != crc:
|
||||||
|
continue # corrupt / partial, keep reading
|
||||||
|
return payload
|
||||||
|
else:
|
||||||
|
buf.append(b[0])
|
||||||
|
raise TimeoutError("no diag frame")
|
||||||
|
|
||||||
|
def subsys(self, efs_cmd, body=b"", timeout=4.0):
|
||||||
|
"""Send an EFS2 subsystem command, return matching response payload."""
|
||||||
|
req = struct.pack("<BBH", DIAG_SUBSYS, SUBSYS_EFS, efs_cmd) + body
|
||||||
|
self.s.write(hdlc_encode(req))
|
||||||
|
deadline = time.time() + timeout
|
||||||
|
while time.time() < deadline:
|
||||||
|
p = self._read_frame(timeout=timeout)
|
||||||
|
if len(p) >= 4 and p[0] == DIAG_SUBSYS and p[1] == SUBSYS_EFS \
|
||||||
|
and struct.unpack("<H", p[2:4])[0] == efs_cmd:
|
||||||
|
return p
|
||||||
|
# otherwise async log/event frame -> ignore
|
||||||
|
raise TimeoutError("no matching response for efs cmd %d" % efs_cmd)
|
||||||
|
|
||||||
|
# ---- EFS operations ----
|
||||||
|
def hello(self):
|
||||||
|
win, wbyte, ver = 0x100000, 0x100000, 1
|
||||||
|
body = struct.pack("<IIIIIIiii", win, wbyte, win, wbyte, win, wbyte, ver, ver, ver)
|
||||||
|
body += b"\xff\xff\xff\xff"
|
||||||
|
p = self.subsys(HELLO, body)
|
||||||
|
return struct.unpack("<i", p[28:32])[0] # version
|
||||||
|
|
||||||
|
def stat(self, name):
|
||||||
|
p = self.subsys(STAT, name.encode() + b"\x00")
|
||||||
|
err = struct.unpack("<i", p[4:8])[0]
|
||||||
|
mode = struct.unpack("<i", p[8:12])[0]
|
||||||
|
size = struct.unpack("<i", p[12:16])[0]
|
||||||
|
return err, mode, size
|
||||||
|
|
||||||
|
def opendir(self, name):
|
||||||
|
p = self.subsys(OPENDIR, name.encode() + b"\x00")
|
||||||
|
d = struct.unpack("<i", p[4:8])[0]
|
||||||
|
err = struct.unpack("<i", p[8:12])[0]
|
||||||
|
return d, err
|
||||||
|
|
||||||
|
def readdir(self, d, seq):
|
||||||
|
p = self.subsys(READDIR, struct.pack("<ii", d, seq))
|
||||||
|
err = struct.unpack("<i", p[12:16])[0]
|
||||||
|
etype = struct.unpack("<i", p[16:20])[0]
|
||||||
|
size = struct.unpack("<i", p[24:28])[0]
|
||||||
|
name = p[40:].split(b"\x00", 1)[0].decode("ascii", "replace")
|
||||||
|
return err, etype, size, name
|
||||||
|
|
||||||
|
def closedir(self, d):
|
||||||
|
self.subsys(CLOSEDIR, struct.pack("<i", d))
|
||||||
|
|
||||||
|
def listdir(self, path):
|
||||||
|
d, err = self.opendir(path)
|
||||||
|
if err != 0 or d < 0:
|
||||||
|
raise IOError("opendir %s err=%d" % (path, err))
|
||||||
|
entries = []; seq = 1
|
||||||
|
while True:
|
||||||
|
err, etype, size, name = self.readdir(d, seq)
|
||||||
|
if err != 0 or not name:
|
||||||
|
break
|
||||||
|
entries.append((name, etype, size)); seq += 1
|
||||||
|
self.closedir(d)
|
||||||
|
return entries
|
||||||
|
|
||||||
|
def open(self, name, flags, perm):
|
||||||
|
body = struct.pack("<ii", flags, perm) + name.encode() + b"\x00"
|
||||||
|
p = self.subsys(OPEN, body)
|
||||||
|
fd = struct.unpack("<i", p[4:8])[0]
|
||||||
|
err = struct.unpack("<i", p[8:12])[0]
|
||||||
|
return fd, err
|
||||||
|
|
||||||
|
def close(self, fd):
|
||||||
|
self.subsys(CLOSE, struct.pack("<i", fd))
|
||||||
|
|
||||||
|
def read(self, fd, size, offset):
|
||||||
|
p = self.subsys(READ, struct.pack("<iII", fd, size, offset))
|
||||||
|
nread = struct.unpack("<i", p[12:16])[0]
|
||||||
|
err = struct.unpack("<i", p[16:20])[0]
|
||||||
|
return err, p[20:20 + nread]
|
||||||
|
|
||||||
|
def write(self, fd, offset, chunk):
|
||||||
|
body = struct.pack("<iI", fd, offset) + chunk
|
||||||
|
p = self.subsys(WRITE, body)
|
||||||
|
nwr = struct.unpack("<i", p[12:16])[0]
|
||||||
|
err = struct.unpack("<i", p[16:20])[0]
|
||||||
|
return err, nwr
|
||||||
|
|
||||||
|
def unlink(self, name):
|
||||||
|
p = self.subsys(UNLINK, name.encode() + b"\x00")
|
||||||
|
return struct.unpack("<i", p[4:8])[0]
|
||||||
|
|
||||||
|
def read_file(self, name):
|
||||||
|
err, mode, size = self.stat(name)
|
||||||
|
if err != 0:
|
||||||
|
raise IOError("stat %s err=%d" % (name, err))
|
||||||
|
fd, err = self.open(name, O_RDONLY, 0)
|
||||||
|
if err != 0 or fd < 0:
|
||||||
|
raise IOError("open(r) %s err=%d" % (name, err))
|
||||||
|
data = bytearray(); off = 0
|
||||||
|
while off < size:
|
||||||
|
err, chunk = self.read(fd, min(1024, size - off), off)
|
||||||
|
if err != 0:
|
||||||
|
self.close(fd); raise IOError("read %s err=%d" % (name, err))
|
||||||
|
if not chunk:
|
||||||
|
break
|
||||||
|
data += chunk; off += len(chunk)
|
||||||
|
self.close(fd)
|
||||||
|
return bytes(data)
|
||||||
|
|
||||||
|
def write_file(self, name, data):
|
||||||
|
# replicate EfsTools: delete existing, then create+write
|
||||||
|
err, mode, size = self.stat(name)
|
||||||
|
if err == 0:
|
||||||
|
self.unlink(name)
|
||||||
|
fd, err = self.open(name, O_WRONLY | O_CREAT, 0o777)
|
||||||
|
if err != 0 or fd < 0:
|
||||||
|
raise IOError("open(w) %s err=%d" % (name, err))
|
||||||
|
off = 0
|
||||||
|
while off < len(data):
|
||||||
|
chunk = data[off:off + 1024]
|
||||||
|
err, nwr = self.write(fd, off, chunk)
|
||||||
|
if err != 0 or nwr <= 0:
|
||||||
|
self.close(fd); raise IOError("write %s err=%d nwr=%d" % (name, err, nwr))
|
||||||
|
off += nwr
|
||||||
|
self.close(fd)
|
||||||
|
return off
|
||||||
|
|
||||||
|
|
||||||
|
TARGET_DIR = "/policyman"
|
||||||
|
TARGETS = ["band_set_01.xml", "plmn_mcc_supported_01.xml", "policies.xml"]
|
||||||
|
SRC = "/tmp/claude-1000/-home-grmrgecko-Downloads-XperiFirm-5-8-1--by-Igor-Eisberg-/aa2c5f73-89ed-4884-8a6f-7f146ae4f002/scratchpad/xda_xml"
|
||||||
|
BACKUP = "/tmp/claude-1000/-home-grmrgecko-Downloads-XperiFirm-5-8-1--by-Igor-Eisberg-/aa2c5f73-89ed-4884-8a6f-7f146ae4f002/scratchpad/policyman_backup"
|
||||||
|
|
||||||
|
def main():
|
||||||
|
cmd = sys.argv[1] if len(sys.argv) > 1 else "probe"
|
||||||
|
d = Diag()
|
||||||
|
ver = d.hello()
|
||||||
|
print("EFS hello ok, version=%d" % ver)
|
||||||
|
|
||||||
|
if cmd == "probe":
|
||||||
|
entries = d.listdir(TARGET_DIR)
|
||||||
|
print("%s: %d entries" % (TARGET_DIR, len(entries)))
|
||||||
|
for name, etype, size in entries:
|
||||||
|
mark = " <== TARGET" if name in TARGETS else ""
|
||||||
|
print(" %-40s type=%d size=%d%s" % (name, etype, size, mark))
|
||||||
|
for t in TARGETS:
|
||||||
|
err, mode, size = d.stat("%s/%s" % (TARGET_DIR, t))
|
||||||
|
print("stat %s -> err=%d mode=%o size=%d" % (t, err, mode & 0xffff, size))
|
||||||
|
|
||||||
|
elif cmd == "backup":
|
||||||
|
os.makedirs(BACKUP, exist_ok=True)
|
||||||
|
for t in TARGETS:
|
||||||
|
data = d.read_file("%s/%s" % (TARGET_DIR, t))
|
||||||
|
open("%s/%s" % (BACKUP, t), "wb").write(data)
|
||||||
|
print("backed up %s (%d bytes)" % (t, len(data)))
|
||||||
|
|
||||||
|
elif cmd == "write":
|
||||||
|
for t in TARGETS:
|
||||||
|
data = open("%s/%s" % (SRC, t), "rb").read()
|
||||||
|
n = d.write_file("%s/%s" % (TARGET_DIR, t), data)
|
||||||
|
print("wrote %s (%d bytes)" % (t, n))
|
||||||
|
|
||||||
|
elif cmd == "verify":
|
||||||
|
ok = True
|
||||||
|
for t in TARGETS:
|
||||||
|
want = open("%s/%s" % (SRC, t), "rb").read()
|
||||||
|
got = d.read_file("%s/%s" % (TARGET_DIR, t))
|
||||||
|
same = want == got
|
||||||
|
ok = ok and same
|
||||||
|
print("verify %s: %s (device %d bytes, source %d bytes)" %
|
||||||
|
(t, "MATCH" if same else "DIFFER", len(got), len(want)))
|
||||||
|
print("ALL VERIFIED" if ok else "MISMATCH!")
|
||||||
|
|
||||||
|
d.s.close()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,445 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
plmn_mcc_supported_01.xml 최종 배포본 (Aligned with carrier_policy*_FINAL_2025)
|
||||||
|
plmn_mcc_supported_01.xml Final Release (Aligned with carrier_policy*_FINAL_2025)
|
||||||
|
|
||||||
|
[소니코리아 사용자모임 / Sony Korea User Group]
|
||||||
|
2025-08-27 10:20:44
|
||||||
|
|
||||||
|
설정 목적: 전세계 통신사 MCC/PLMN 코드 지원 최신화
|
||||||
|
Purpose: Global Carrier MCC/PLMN Code Support Update
|
||||||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
plmn_mcc_supported_01.xml 최종 배포본 (Aligned with carrier_policy*_FINAL_2025)
|
||||||
|
- 생성일: 2025-08-27 10:17:20
|
||||||
|
- 버전 정렬:
|
||||||
|
• plmn_mcc_supported_01 policy_ver: 45.0.6
|
||||||
|
• carrier_policy policy_ver: 125.2.2
|
||||||
|
- 표기 규칙:
|
||||||
|
• 세로형식(라인 브레이크)과 국가/사업자 주석 포함
|
||||||
|
-->
|
||||||
|
|
||||||
|
<policy name="generic" enabled="true" schema_ver="1" policy_ver="45.0.6">
|
||||||
|
<initial>
|
||||||
|
|
||||||
|
<mcc_list ns="global" name="default_m">
|
||||||
|
202 204 206 208 212 213 214 218 219 220 221 222 225 226 228 230 231 232 234 238 240 242 244 246 247 248 260 262 266 268 270 272 274 276 278 280 284 286 288 289 292 293 294 295 297 310 311 312 313 314 315 316 450 440 441 460 525 502 520 452 510 515 456 457 414 528
|
||||||
|
466
|
||||||
|
454
|
||||||
|
455
|
||||||
|
428
|
||||||
|
401
|
||||||
|
434
|
||||||
|
437
|
||||||
|
436
|
||||||
|
438
|
||||||
|
424
|
||||||
|
235 419 420 422 426 427 602 604 655</mcc_list>
|
||||||
|
|
||||||
|
<country name="korea">
|
||||||
|
<mcc>450</mcc>
|
||||||
|
<plmn_list name="korea_plmns">
|
||||||
|
<plmn supported="true">450-05</plmn>
|
||||||
|
<plmn supported="true">450-11</plmn>
|
||||||
|
<plmn supported="true">450-08</plmn>
|
||||||
|
<plmn supported="true">450-06</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
|
||||||
|
<country name="japan">
|
||||||
|
<mcc>440 441</mcc>
|
||||||
|
<plmn_list name="japan_plmns">
|
||||||
|
<plmn supported="true">440-10</plmn>
|
||||||
|
<plmn supported="true">440-11</plmn>
|
||||||
|
<plmn supported="true">440-12</plmn>
|
||||||
|
<plmn supported="true">440-13</plmn>
|
||||||
|
<plmn supported="true">440-20</plmn>
|
||||||
|
<plmn supported="true">440-50</plmn>
|
||||||
|
<plmn supported="true">440-51</plmn>
|
||||||
|
<plmn supported="true">440-52</plmn>
|
||||||
|
<plmn supported="true">440-53</plmn>
|
||||||
|
<plmn supported="true">440-54</plmn>
|
||||||
|
<plmn supported="true">440-70</plmn>
|
||||||
|
<plmn supported="true">440-71</plmn>
|
||||||
|
<plmn supported="true">440-72</plmn>
|
||||||
|
<plmn supported="true">440-73</plmn>
|
||||||
|
<plmn supported="true">440-74</plmn>
|
||||||
|
<plmn supported="true">440-30</plmn>
|
||||||
|
<plmn supported="true">440-31</plmn>
|
||||||
|
<plmn supported="true">440-32</plmn>
|
||||||
|
<plmn supported="true">440-40</plmn>
|
||||||
|
<plmn supported="true">440-41</plmn>
|
||||||
|
<plmn supported="true">440-42</plmn>
|
||||||
|
<plmn supported="true">440-88</plmn>
|
||||||
|
<plmn supported="true">440-89</plmn>
|
||||||
|
<plmn supported="true">441-10</plmn>
|
||||||
|
<plmn supported="true">441-11</plmn>
|
||||||
|
<plmn supported="true">441-12</plmn>
|
||||||
|
<plmn supported="true">441-13</plmn>
|
||||||
|
<plmn supported="true">441-14</plmn>
|
||||||
|
<plmn supported="true">441-15</plmn>
|
||||||
|
<plmn supported="true">441-16</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="china">
|
||||||
|
<mcc>460</mcc>
|
||||||
|
<plmn_list name="china_plmns">
|
||||||
|
<plmn supported="true">460-00</plmn>
|
||||||
|
<plmn supported="true">460-02</plmn>
|
||||||
|
<plmn supported="true">460-07</plmn>
|
||||||
|
<plmn supported="true">460-01</plmn>
|
||||||
|
<plmn supported="true">460-09</plmn>
|
||||||
|
<plmn supported="true">460-03</plmn>
|
||||||
|
<plmn supported="true">460-11</plmn>
|
||||||
|
<plmn supported="true">460-15</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="singapore">
|
||||||
|
<mcc>525</mcc>
|
||||||
|
<plmn_list name="singapore_plmns">
|
||||||
|
<plmn supported="true">525-01</plmn>
|
||||||
|
<plmn supported="true">525-05</plmn>
|
||||||
|
<plmn supported="true">525-03</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="malaysia">
|
||||||
|
<mcc>502</mcc>
|
||||||
|
<plmn_list name="malaysia_plmns">
|
||||||
|
<plmn supported="true">502-12</plmn>
|
||||||
|
<plmn supported="true">502-16</plmn>
|
||||||
|
<plmn supported="true">502-19</plmn>
|
||||||
|
<plmn supported="true">502-18</plmn>
|
||||||
|
<plmn supported="true">502-11</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="thailand">
|
||||||
|
<mcc>520</mcc>
|
||||||
|
<plmn_list name="thailand_plmns">
|
||||||
|
<plmn supported="true">520-01</plmn>
|
||||||
|
<plmn supported="true">520-05</plmn>
|
||||||
|
<plmn supported="true">520-18</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="vietnam">
|
||||||
|
<mcc>452</mcc>
|
||||||
|
<plmn_list name="vietnam_plmns">
|
||||||
|
<plmn supported="true">452-04</plmn>
|
||||||
|
<plmn supported="true">452-02</plmn>
|
||||||
|
<plmn supported="true">452-01</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="indonesia">
|
||||||
|
<mcc>510</mcc>
|
||||||
|
<plmn_list name="indonesia_plmns">
|
||||||
|
<plmn supported="true">510-10</plmn>
|
||||||
|
<plmn supported="true">510-11</plmn>
|
||||||
|
<plmn supported="true">510-01</plmn>
|
||||||
|
<plmn supported="true">510-09</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="philippines">
|
||||||
|
<mcc>515</mcc>
|
||||||
|
<plmn_list name="philippines_plmns">
|
||||||
|
<plmn supported="true">515-02</plmn>
|
||||||
|
<plmn supported="true">515-03</plmn>
|
||||||
|
<plmn supported="true">515-66</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="cambodia">
|
||||||
|
<mcc>456</mcc>
|
||||||
|
<plmn_list name="cambodia_plmns">
|
||||||
|
<plmn supported="true">456-01</plmn>
|
||||||
|
<plmn supported="true">456-02</plmn>
|
||||||
|
<plmn supported="true">456-08</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="laos">
|
||||||
|
<mcc>457</mcc>
|
||||||
|
<plmn_list name="laos_plmns">
|
||||||
|
<plmn supported="true">457-08</plmn>
|
||||||
|
<plmn supported="true">457-01</plmn>
|
||||||
|
<plmn supported="true">457-02</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="myanmar">
|
||||||
|
<mcc>414</mcc>
|
||||||
|
<plmn_list name="myanmar_plmns">
|
||||||
|
<plmn supported="true">414-01</plmn>
|
||||||
|
<plmn supported="true">414-05</plmn>
|
||||||
|
<plmn supported="true">414-09</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="brunei">
|
||||||
|
<mcc>528</mcc>
|
||||||
|
<plmn_list name="brunei_plmns">
|
||||||
|
<plmn supported="true">528-11</plmn>
|
||||||
|
<plmn supported="true">528-02</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
|
||||||
|
|
||||||
|
<country name="taiwan">
|
||||||
|
<mcc>466</mcc>
|
||||||
|
<plmn_list name="taiwan_plmns">
|
||||||
|
<!-- Add exact PLMN codes if you want per-operator mapping:
|
||||||
|
Example (uncomment and edit):
|
||||||
|
<plmn supported="true">XXX-YY</plmn>
|
||||||
|
-->
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="hongkong">
|
||||||
|
<mcc>454</mcc>
|
||||||
|
<plmn_list name="hongkong_plmns">
|
||||||
|
<!-- Add exact PLMN codes if you want per-operator mapping:
|
||||||
|
Example (uncomment and edit):
|
||||||
|
<plmn supported="true">XXX-YY</plmn>
|
||||||
|
-->
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="macau">
|
||||||
|
<mcc>455</mcc>
|
||||||
|
<plmn_list name="macau_plmns">
|
||||||
|
<!-- Add exact PLMN codes if you want per-operator mapping:
|
||||||
|
Example (uncomment and edit):
|
||||||
|
<plmn supported="true">XXX-YY</plmn>
|
||||||
|
-->
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
|
||||||
|
<country name="mongolia">
|
||||||
|
<mcc>428</mcc>
|
||||||
|
<plmn_list name="mongolia_plmns">
|
||||||
|
<plmn supported="true">428-88</plmn>
|
||||||
|
<plmn supported="true">428-99</plmn>
|
||||||
|
<plmn supported="true">428-00</plmn>
|
||||||
|
<plmn supported="true">428-91</plmn>
|
||||||
|
<plmn supported="true">428-98</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="kazakhstan">
|
||||||
|
<mcc>401</mcc>
|
||||||
|
<plmn_list name="kazakhstan_plmns">
|
||||||
|
<plmn supported="true">401-02</plmn>
|
||||||
|
<plmn supported="true">401-01</plmn>
|
||||||
|
<plmn supported="true">401-77</plmn>
|
||||||
|
<plmn supported="true">401-07</plmn>
|
||||||
|
<plmn supported="true">401-08</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="uzbekistan">
|
||||||
|
<mcc>434</mcc>
|
||||||
|
<plmn_list name="uzbekistan_plmns">
|
||||||
|
<plmn supported="true">434-04</plmn>
|
||||||
|
<plmn supported="true">434-05</plmn>
|
||||||
|
<plmn supported="true">434-07</plmn>
|
||||||
|
<plmn supported="true">434-08</plmn>
|
||||||
|
<plmn supported="true">434-03</plmn>
|
||||||
|
<plmn supported="true">434-06</plmn>
|
||||||
|
<plmn supported="true">434-09</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="kyrgyzstan">
|
||||||
|
<mcc>437</mcc>
|
||||||
|
<plmn_list name="kyrgyzstan_plmns">
|
||||||
|
<plmn supported="true">437-01</plmn>
|
||||||
|
<plmn supported="true">437-05</plmn>
|
||||||
|
<plmn supported="true">437-09</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="tajikistan">
|
||||||
|
<mcc>436</mcc>
|
||||||
|
<plmn_list name="tajikistan_plmns">
|
||||||
|
<plmn supported="true">436-01</plmn>
|
||||||
|
<plmn supported="true">436-02</plmn>
|
||||||
|
<plmn supported="true">436-12</plmn>
|
||||||
|
<plmn supported="true">436-03</plmn>
|
||||||
|
<plmn supported="true">436-04</plmn>
|
||||||
|
<plmn supported="true">436-10</plmn>
|
||||||
|
<plmn supported="true">436-05</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="turkmenistan">
|
||||||
|
<mcc>438</mcc>
|
||||||
|
<plmn_list name="turkmenistan_plmns">
|
||||||
|
<plmn supported="true">438-02</plmn>
|
||||||
|
<plmn supported="true">438-01</plmn>
|
||||||
|
<plmn supported="true">438-03</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<country name="uae">
|
||||||
|
<mcc>424</mcc>
|
||||||
|
<plmn_list name="uae_plmns">
|
||||||
|
<plmn supported="true">424-02</plmn>
|
||||||
|
<plmn supported="true">424-03</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
|
||||||
|
<!-- 유럽/미국/중동/아프리카 PLMN 매핑 -->
|
||||||
|
<!-- 국가: GB -->
|
||||||
|
<country name="GB">
|
||||||
|
<mcc>234 235</mcc>
|
||||||
|
<plmn_list name="gb_plmns">
|
||||||
|
<plmn supported="true">234-30</plmn>
|
||||||
|
<plmn supported="true">234-31</plmn>
|
||||||
|
<plmn supported="true">234-32</plmn>
|
||||||
|
<plmn supported="true">234-33</plmn>
|
||||||
|
<plmn supported="true">234-34</plmn>
|
||||||
|
<plmn supported="true">234-10</plmn>
|
||||||
|
<plmn supported="true">234-11</plmn>
|
||||||
|
<plmn supported="true">234-02</plmn>
|
||||||
|
<plmn supported="true">234-15</plmn>
|
||||||
|
<plmn supported="true">234-07</plmn>
|
||||||
|
<plmn supported="true">234-09</plmn>
|
||||||
|
<plmn supported="true">234-20</plmn>
|
||||||
|
<plmn supported="true">235-94</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<!-- 국가: DE -->
|
||||||
|
<country name="DE">
|
||||||
|
<mcc>262</mcc>
|
||||||
|
<plmn_list name="de_plmns">
|
||||||
|
<plmn supported="true">262-01</plmn>
|
||||||
|
<plmn supported="true">262-06</plmn>
|
||||||
|
<plmn supported="true">262-78</plmn>
|
||||||
|
<plmn supported="true">262-02</plmn>
|
||||||
|
<plmn supported="true">262-09</plmn>
|
||||||
|
<plmn supported="true">262-04</plmn>
|
||||||
|
<plmn supported="true">262-07</plmn>
|
||||||
|
<plmn supported="true">262-03</plmn>
|
||||||
|
<plmn supported="true">262-05</plmn>
|
||||||
|
<plmn supported="true">262-08</plmn>
|
||||||
|
<plmn supported="true">262-11</plmn>
|
||||||
|
<plmn supported="true">262-17</plmn>
|
||||||
|
<plmn supported="true">262-77</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<!-- 국가: FR -->
|
||||||
|
<country name="FR">
|
||||||
|
<mcc>208</mcc>
|
||||||
|
<plmn_list name="fr_plmns">
|
||||||
|
<plmn supported="true">208-01</plmn>
|
||||||
|
<plmn supported="true">208-02</plmn>
|
||||||
|
<plmn supported="true">208-91</plmn>
|
||||||
|
<plmn supported="true">208-10</plmn>
|
||||||
|
<plmn supported="true">208-09</plmn>
|
||||||
|
<plmn supported="true">208-13</plmn>
|
||||||
|
<plmn supported="true">208-20</plmn>
|
||||||
|
<plmn supported="true">208-88</plmn>
|
||||||
|
<plmn supported="true">208-21</plmn>
|
||||||
|
<plmn supported="true">208-15</plmn>
|
||||||
|
<plmn supported="true">208-16</plmn>
|
||||||
|
<plmn supported="true">208-35</plmn>
|
||||||
|
<plmn supported="true">208-36</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<!-- 국가: SA -->
|
||||||
|
<country name="SA">
|
||||||
|
<mcc>420</mcc>
|
||||||
|
<plmn_list name="sa_plmns">
|
||||||
|
<plmn supported="true">420-01</plmn>
|
||||||
|
<plmn supported="true">420-03</plmn>
|
||||||
|
<plmn supported="true">420-04</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<!-- 국가: KW -->
|
||||||
|
<country name="KW">
|
||||||
|
<mcc>419</mcc>
|
||||||
|
<plmn_list name="kw_plmns">
|
||||||
|
<plmn supported="true">419-02</plmn>
|
||||||
|
<plmn supported="true">419-03</plmn>
|
||||||
|
<plmn supported="true">419-04</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<!-- 국가: QA -->
|
||||||
|
<country name="QA">
|
||||||
|
<mcc>427</mcc>
|
||||||
|
<plmn_list name="qa_plmns">
|
||||||
|
<plmn supported="true">427-01</plmn>
|
||||||
|
<plmn supported="true">427-02</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<!-- 국가: BH -->
|
||||||
|
<country name="BH">
|
||||||
|
<mcc>426</mcc>
|
||||||
|
<plmn_list name="bh_plmns">
|
||||||
|
<plmn supported="true">426-01</plmn>
|
||||||
|
<plmn supported="true">426-05</plmn>
|
||||||
|
<plmn supported="true">426-02</plmn>
|
||||||
|
<plmn supported="true">426-04</plmn>
|
||||||
|
<plmn supported="true">426-06</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<!-- 국가: OM -->
|
||||||
|
<country name="OM">
|
||||||
|
<mcc>422</mcc>
|
||||||
|
<plmn_list name="om_plmns">
|
||||||
|
<plmn supported="true">422-02</plmn>
|
||||||
|
<plmn supported="true">422-04</plmn>
|
||||||
|
<plmn supported="true">422-03</plmn>
|
||||||
|
<plmn supported="true">422-06</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<!-- 국가: EG -->
|
||||||
|
<country name="EG">
|
||||||
|
<mcc>602</mcc>
|
||||||
|
<plmn_list name="eg_plmns">
|
||||||
|
<plmn supported="true">602-01</plmn>
|
||||||
|
<plmn supported="true">602-02</plmn>
|
||||||
|
<plmn supported="true">602-03</plmn>
|
||||||
|
<plmn supported="true">602-04</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<!-- 국가: ZA -->
|
||||||
|
<country name="ZA">
|
||||||
|
<mcc>655</mcc>
|
||||||
|
<plmn_list name="za_plmns">
|
||||||
|
<plmn supported="true">655-01</plmn>
|
||||||
|
<plmn supported="true">655-10</plmn>
|
||||||
|
<plmn supported="true">655-12</plmn>
|
||||||
|
<plmn supported="true">655-07</plmn>
|
||||||
|
<plmn supported="true">655-02</plmn>
|
||||||
|
<plmn supported="true">655-05</plmn>
|
||||||
|
<plmn supported="true">655-19</plmn>
|
||||||
|
<plmn supported="true">655-38</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<!-- 국가: MA -->
|
||||||
|
<country name="MA">
|
||||||
|
<mcc>604</mcc>
|
||||||
|
<plmn_list name="ma_plmns">
|
||||||
|
<plmn supported="true">604-01</plmn>
|
||||||
|
<plmn supported="true">604-06</plmn>
|
||||||
|
<plmn supported="true">604-00</plmn>
|
||||||
|
<plmn supported="true">604-02</plmn>
|
||||||
|
<plmn supported="true">604-05</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
<!-- 국가: US -->
|
||||||
|
<country name="US">
|
||||||
|
<mcc>310 311 312 313 314 315 316</mcc>
|
||||||
|
<plmn_list name="us_plmns">
|
||||||
|
<plmn supported="true">310-410</plmn>
|
||||||
|
<plmn supported="true">310-070</plmn>
|
||||||
|
<plmn supported="true">310-080</plmn>
|
||||||
|
<plmn supported="true">310-380</plmn>
|
||||||
|
<plmn supported="true">310-560</plmn>
|
||||||
|
<plmn supported="true">310-260</plmn>
|
||||||
|
<plmn supported="true">310-160</plmn>
|
||||||
|
<plmn supported="true">310-200</plmn>
|
||||||
|
<plmn supported="true">310-210</plmn>
|
||||||
|
<plmn supported="true">310-220</plmn>
|
||||||
|
<plmn supported="true">310-230</plmn>
|
||||||
|
<plmn supported="true">310-240</plmn>
|
||||||
|
<plmn supported="true">310-250</plmn>
|
||||||
|
<plmn supported="true">310-270</plmn>
|
||||||
|
<plmn supported="true">311-480</plmn>
|
||||||
|
<plmn supported="true">311-481</plmn>
|
||||||
|
<plmn supported="true">310-012</plmn>
|
||||||
|
<plmn supported="true">310-010</plmn>
|
||||||
|
</plmn_list>
|
||||||
|
</country>
|
||||||
|
</initial>
|
||||||
|
</policy>
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!-- Execution Ordering Configuration file
|
||||||
|
$Header: //commercial/MPSS.DE.7.0.c3/Main/modem_proc/mmcp/policyman/configurations/Master/Default/policies.xml#1 $
|
||||||
|
-->
|
||||||
|
<policy_list name = "XML Ordering"
|
||||||
|
changelist = "$Change: 57693037 $"
|
||||||
|
policy_ver = "8000.0.26"
|
||||||
|
>
|
||||||
|
<policy file="/policyman/global_defines.xml" execute_for="device" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/device_config.xml" execute_for="device" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/pre.xml" execute_for="subs" load_for="subs" refresh_on_sim_change="true" />
|
||||||
|
<!-- SONY BEGIN -->
|
||||||
|
<policy file="/policyman/plmn_mcc_supported_01.xml" execute_for="subs" load_for="device" refresh_on_sim_change="true" />
|
||||||
|
<policy file="/policyman/band_set_01.xml" execute_for="subs" load_for="device" refresh_on_sim_change="true" />
|
||||||
|
<!-- SONY END -->
|
||||||
|
<policy file="/policyman/carrier_policy.xml" execute_for="subs" load_for="subs" refresh_on_sim_change="true" />
|
||||||
|
<policy file="/policyman/post.xml" execute_for="subs" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/generic_band_restrictions.xml" execute_for="subs" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/global_1x_restrictions.xml" execute_for="subs" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/nrdc_msim_concurrency.xml" execute_for="subs" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/restrictions.xml" execute_for="subs" load_for="subs" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/segment_loading.xml" execute_for="subs" load_for="subs" refresh_on_sim_change="false" />
|
||||||
|
</policy_list>
|
||||||
|
|
@ -0,0 +1,660 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<policy name = "generic"
|
||||||
|
enabled = "true"
|
||||||
|
schema_ver = "1"
|
||||||
|
policy_ver = "44.1.2"
|
||||||
|
>
|
||||||
|
<initial>
|
||||||
|
<!-- moved the plmns and mcc section to plmn_mcc_supported_01.xml file -->
|
||||||
|
|
||||||
|
<!-- RF Band List: Full supported bands -->
|
||||||
|
<rf_band_list ns="global" name="rf_bands_all">
|
||||||
|
<gw_bands base="hardware" />
|
||||||
|
<lte_bands base="hardware" />
|
||||||
|
<tds_bands base="none" />
|
||||||
|
<nr5g_sa_bands base="none" />
|
||||||
|
<nr5g_nsa_bands base="none" />
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
|
||||||
|
<!-- Define intial RF bands as GWL bands -->
|
||||||
|
<rf_bands_if list="rf_bands_all" />
|
||||||
|
<define_fullrat_config>
|
||||||
|
<actions>
|
||||||
|
<rf_bands list="rf_bands_all" />
|
||||||
|
</actions>
|
||||||
|
</define_fullrat_config>
|
||||||
|
|
||||||
|
<!-- RF Band List Set -->
|
||||||
|
<rf_band_list ns="global" name="default_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 1 2 3 4 6 7 11 12 16 18 19 24 25 27 28 33 37 38 39 40 45 65</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none" >
|
||||||
|
<include>0 2 4 6 7 27 39 40 76 77 78</include>
|
||||||
|
</nr5g_sa_bands>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 4 6 7 27 37 39 40 76 77 78</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="the_others_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 1 2 3 4 6 7 11 12 16 18 19 24 25 27 28 33 37 38 39 40 45 65</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none" />
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 4 6 7 27 29 37 39 40 76 77 78</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="euro_sa_plus_nsa_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 6 7 19 27 37 39 45</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 6 7 27 37 39 40 76 77</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="euro_nsa_only_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 6 7 19 27 37 39 45</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 6 7 27 37 39 40 76 77</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="trade_ru_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 6 7 19 37 39</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none"/>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="trade_vietnam_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 4 7</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none"/>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="trade_malaysia_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 4 6 27 37 39</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>27 77</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="trade_singapore_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 6 7 37 39</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none">
|
||||||
|
<include>0 2 7 77</include>
|
||||||
|
</nr5g_sa_bands>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 7 39 77</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="trade_thailand_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 4 7 27 39 40 45</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none">
|
||||||
|
<include>0 2 7 27 40</include>
|
||||||
|
</nr5g_sa_bands>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 4 7 27 39 40</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="mlc_trade_cn_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 4 7 33 38 39 40</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none">
|
||||||
|
<include>0 7 27 40 77 78</include>
|
||||||
|
</nr5g_sa_bands>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>40 77 78</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="hutchison_hk_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 4 6 7 27 39</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 6 7 27 39 76 77 78</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="cmhk_hk_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 4 6 7 27 39</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none">
|
||||||
|
<include>0 2 6 7 27 39 76 77 78</include>
|
||||||
|
</nr5g_sa_bands>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 6 7 27 39 76 77 78</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="csl_mobile_(network_1)_hk_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 4 6 7 27 39</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none">
|
||||||
|
<include>0 2 6 7 27 77 78</include>
|
||||||
|
</nr5g_sa_bands>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 6 7 27 77 78</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="smartone_hk_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 4 6 7 27</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none">
|
||||||
|
<include>0 2 4 6 7 27 77 78</include>
|
||||||
|
</nr5g_sa_bands>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 4 6 7 27 76 77 78</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="hk_trade_hk_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 6 7 39</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 6 7 76 77 78</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="ctm_mo_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 6 7</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none">
|
||||||
|
<include>0 77 78</include>
|
||||||
|
</nr5g_sa_bands>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 76 77 78</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="macau_trade_mo_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 6 7</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>76 77 78</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="taiwan_mobile_telecom_tw_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 6 7 27 40 45</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 6 7 27 77</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="chunghwa_telecom_tw_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 6 7 45</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 6 7 77</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="fareastone_telecom_tw_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 6 27 37 40 45</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 6 27 37 40 77</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="tw_trade_tw_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 6 7 27 37 40 45</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 6 7 27 37 40 77</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="at_t_(us_retail_open_market)_us_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>1 3 4 11 28 65</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none"/>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="t-mobile_(network_cert)_us_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>1 3 4 11 24 40 45 65</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none"/>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="verizon_(network_cert)_us_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>1 3 4 11 12 28 45 65</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none"/>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="usa_trade_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>1 3 4 11 16 40 45 65</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none"/>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="JP_roam-in_b">
|
||||||
|
<gw_bands base="none">
|
||||||
|
<include>22 27 49 60</include>
|
||||||
|
</gw_bands>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 2 7 18 25 27 40</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none">
|
||||||
|
<include>0 2 27 40 76 77 78</include>
|
||||||
|
</nr5g_nsa_bands>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
<rf_band_list ns="global" name="local_service_b">
|
||||||
|
<gw_bands base="hardware"/>
|
||||||
|
<lte_bands base="none">
|
||||||
|
<include>0 27</include>
|
||||||
|
</lte_bands>
|
||||||
|
<tds_bands base="none"/>
|
||||||
|
<nr5g_sa_bands base="none"/>
|
||||||
|
<nr5g_nsa_bands base ="none"/>
|
||||||
|
<nr5g_nrdc_bands base="none" />
|
||||||
|
</rf_band_list>
|
||||||
|
|
||||||
|
</initial>
|
||||||
|
|
||||||
|
<!-- Rule I Remove band limitation when toggling flight mode -->
|
||||||
|
<rule>
|
||||||
|
<conditions>
|
||||||
|
<not> <phone_operating_mode> ONLINE </phone_operating_mode> </not>
|
||||||
|
</conditions>
|
||||||
|
<actions>
|
||||||
|
<rf_bands list="rf_bands_all" />
|
||||||
|
</actions>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Rule II Set svc_mode FULL -->
|
||||||
|
<rule>
|
||||||
|
<conditions>
|
||||||
|
<have_location />
|
||||||
|
</conditions>
|
||||||
|
<actions>
|
||||||
|
<svc_mode> FULL </svc_mode>
|
||||||
|
</actions>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Default band set -->
|
||||||
|
<rule>
|
||||||
|
<conditions>
|
||||||
|
<true/>
|
||||||
|
</conditions>
|
||||||
|
<actions>
|
||||||
|
<rf_bands list="default_b"/>
|
||||||
|
</actions>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Stop of not have_location -->
|
||||||
|
<rule>
|
||||||
|
<conditions>
|
||||||
|
<not> <have_location/> </not>
|
||||||
|
</conditions>
|
||||||
|
<actions>
|
||||||
|
<stop />
|
||||||
|
</actions>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Other Band set -->
|
||||||
|
<rule>
|
||||||
|
<conditions>
|
||||||
|
<have_location/>
|
||||||
|
</conditions>
|
||||||
|
<actions>
|
||||||
|
<rf_bands list="the_others_b"/>
|
||||||
|
</actions>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Default mcc Band set -->
|
||||||
|
<rule>
|
||||||
|
<conditions>
|
||||||
|
<have_location/>
|
||||||
|
</conditions>
|
||||||
|
<actions>
|
||||||
|
<if>
|
||||||
|
<any_of>
|
||||||
|
<location_mcc_in list="default_m"/>
|
||||||
|
<serving_plmn_in list="gte_p"/>
|
||||||
|
<imsi_plmn_in list="gte_p"/>
|
||||||
|
</any_of>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="default_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
</actions>
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Band set -->
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<location_mcc_in list="mlc_trade_cn_m"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="mlc_trade_cn_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<location_mcc_in list="hk_trade_hk_m"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<serving_plmn_in list="hutchison_hk_p"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="hutchison_hk_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<serving_plmn_in list="cmhk_hk_p"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="cmhk_hk_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<serving_plmn_in list="csl_mobile_(network_1)_hk_p"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="csl_mobile_(network_1)_hk_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<serving_plmn_in list="smartone_hk_p"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="smartone_hk_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<rf_bands list="hk_trade_hk_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<location_mcc_in list="macau_trade_mo_m"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<serving_plmn_in list="ctm_mo_p"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="ctm_mo_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<rf_bands list="macau_trade_mo_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<location_mcc_in list="tw_trade_tw_m"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<serving_plmn_in list="taiwan_mobile_telecom_tw_p"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="taiwan_mobile_telecom_tw_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<serving_plmn_in list="chunghwa_telecom_tw_p"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="chunghwa_telecom_tw_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<serving_plmn_in list="fareastone_telecom_tw_p"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="fareastone_telecom_tw_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<rf_bands list="tw_trade_tw_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<location_mcc_in list="trade_singapore_m"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="trade_singapore_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<location_mcc_in list="trade_thailand_m"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="trade_thailand_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<location_mcc_in list="trade_vietnam_m"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="trade_vietnam_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<location_mcc_in list="trade_malaysia_m"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="trade_malaysia_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<location_mcc_in list="JP_roam-in_m"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="JP_roam-in_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<location_mcc_in list="euro_nsa_only_m"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<serving_plmn_in list="euro_sa_plus_nsa_p"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="euro_sa_plus_nsa_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<rf_bands list="euro_nsa_only_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<location_mcc_in list="local_service_m"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="local_service_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<any_of>
|
||||||
|
<location_mcc_in list="trade_ru_m"/>
|
||||||
|
<location_mcc_in list="trade_by_m"/>
|
||||||
|
<location_mcc_in list="trade_kz_m"/>
|
||||||
|
<location_mcc_in list="trade_ua_m"/>
|
||||||
|
<location_mcc_in list="trade_uz_m"/>
|
||||||
|
</any_of>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="trade_ru_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<location_mcc_in list="usa_trade_m"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<serving_plmn_in list="at_t_(us_retail_open_market)_us_p"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="at_t_(us_retail_open_market)_us_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<serving_plmn_in list="t-mobile_(network_cert)_us_p"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="t-mobile_(network_cert)_us_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<if>
|
||||||
|
<cond>
|
||||||
|
<serving_plmn_in list="verizon_(network_cert)_us_p"/>
|
||||||
|
</cond>
|
||||||
|
<then>
|
||||||
|
<rf_bands list="verizon_(network_cert)_us_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
<rf_bands list="usa_trade_b"/>
|
||||||
|
<stop />
|
||||||
|
</then>
|
||||||
|
</if>
|
||||||
|
</policy>
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<policy name = "generic"
|
||||||
|
enabled = "true"
|
||||||
|
schema_ver = "1"
|
||||||
|
policy_ver = "44.2.1"
|
||||||
|
>
|
||||||
|
<initial>
|
||||||
|
<mcc_list ns="global" name="default_m">001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099</mcc_list>
|
||||||
|
<mcc_list ns="global" name="euro_nsa_only_m">202 204 206 208 212 213 214 216 218 219 220 221 222 225 226 228 230 231 232 234 235 238 240 242 244 246 247 248 259 260 262 266 268 270 272 274 276 278 280 284 286 288 290 292 293 294 295 297 308 340 647</mcc_list>
|
||||||
|
<mcc_list ns="global" name="trade_ru_m">250</mcc_list>
|
||||||
|
<mcc_list ns="global" name="trade_by_m">257</mcc_list>
|
||||||
|
<mcc_list ns="global" name="trade_kz_m">401</mcc_list>
|
||||||
|
<mcc_list ns="global" name="trade_ua_m">255</mcc_list>
|
||||||
|
<mcc_list ns="global" name="trade_uz_m">434</mcc_list>
|
||||||
|
<mcc_list ns="global" name="trade_vietnam_m">452</mcc_list>
|
||||||
|
<mcc_list ns="global" name="trade_malaysia_m">502</mcc_list>
|
||||||
|
<mcc_list ns="global" name="trade_singapore_m">525</mcc_list>
|
||||||
|
<mcc_list ns="global" name="trade_thailand_m">520</mcc_list>
|
||||||
|
<mcc_list ns="global" name="mlc_trade_cn_m">460</mcc_list>
|
||||||
|
<mcc_list ns="global" name="hk_trade_hk_m">454</mcc_list>
|
||||||
|
<mcc_list ns="global" name="macau_trade_mo_m">455</mcc_list>
|
||||||
|
<mcc_list ns="global" name="tw_trade_tw_m">466</mcc_list>
|
||||||
|
<mcc_list ns="global" name="usa_trade_m">310 311 312 313 314 315 316 330 332 544</mcc_list>
|
||||||
|
<mcc_list ns="global" name="JP_roam-in_m">440 441</mcc_list>
|
||||||
|
<mcc_list ns="global" name="local_service_m">991 999</mcc_list>
|
||||||
|
<plmn_list ns="global" name="gte_p">234-53 234-54 240-99</plmn_list>
|
||||||
|
<plmn_list ns="global" name="euro_sa_plus_nsa_p">234-10 234-30 244-05 244-21 262-02 262-03 262-07 262-09 262-11 262-77</plmn_list>
|
||||||
|
<plmn_list ns="global" name="hutchison_hk_p">454-03 454-04 454-05 454-14</plmn_list>
|
||||||
|
<plmn_list ns="global" name="cmhk_hk_p">454-12 454-13 454-30</plmn_list>
|
||||||
|
<plmn_list ns="global" name="csl_mobile_(network_1)_hk_p">454-00 454-02 454-10 454-16 454-18 454-19 454-20 454-29</plmn_list>
|
||||||
|
<plmn_list ns="global" name="smartone_hk_p">454-06 454-15 454-17</plmn_list>
|
||||||
|
<plmn_list ns="global" name="ctm_mo_p">455-01 455-04</plmn_list>
|
||||||
|
<plmn_list ns="global" name="taiwan_mobile_telecom_tw_p">466-89 466-97 466-99</plmn_list>
|
||||||
|
<plmn_list ns="global" name="chunghwa_telecom_tw_p">466-92</plmn_list>
|
||||||
|
<plmn_list ns="global" name="fareastone_telecom_tw_p">466-01 466-02 466-05</plmn_list>
|
||||||
|
<plmn_list ns="global" name="at_t_(us_retail_open_market)_us_p">310-030 310-070 310-090 310-150 310-170 310-280 310-380 310-410 310-560 310-680 310-950 311-180</plmn_list>
|
||||||
|
<plmn_list ns="global" name="t-mobile_(network_cert)_us_p">310-160 310-200 310-210 310-220 310-230 310-240 310-250 310-260 310-270 310-300 310-310 310-490 310-530 310-640 310-660 310-800</plmn_list>
|
||||||
|
<plmn_list ns="global" name="verizon_(network_cert)_us_p">310-590 310-599 310-890 311-270 311-280 311-480</plmn_list>
|
||||||
|
</initial>
|
||||||
|
</policy>
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!-- Execution Ordering Configuration file
|
||||||
|
$Header: //components/rel/mmcp.mpss/11.4/policyman/configurations/Master/Default/policies.xml#3 $
|
||||||
|
-->
|
||||||
|
<policy_list name = "XML Ordering"
|
||||||
|
changelist = "$Change: 46628375 $"
|
||||||
|
policy_ver = "8000.0.24"
|
||||||
|
>
|
||||||
|
<policy file="/policyman/global_defines.xml" execute_for="device" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/device_config.xml" execute_for="device" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/pre.xml" execute_for="subs" load_for="subs" refresh_on_sim_change="true" />
|
||||||
|
<!-- SONY BEGIN -->
|
||||||
|
<policy file="/policyman/plmn_mcc_supported_01.xml" execute_for="subs" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/band_set_01.xml" execute_for="subs" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<!-- SONY END -->
|
||||||
|
<policy file="/policyman/carrier_policy.xml" execute_for="subs" load_for="subs" refresh_on_sim_change="true" />
|
||||||
|
<policy file="/policyman/post.xml" execute_for="subs" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/generic_band_restrictions.xml" execute_for="subs" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/global_1x_restrictions.xml" execute_for="subs" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/nrdc_msim_concurrency.xml" execute_for="subs" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/disable_sa_ndds.xml" execute_for="subs" load_for="device" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/restrictions.xml" execute_for="subs" load_for="subs" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/segment_loading.xml" execute_for="subs" load_for="subs" refresh_on_sim_change="false" />
|
||||||
|
<policy file="/policyman/dsda_allowance.xml" execute_for="subs" load_for="subs" refresh_on_sim_change="true" />
|
||||||
|
</policy_list>
|
||||||
143
xperia-firmware-upgrade/SKILL.md
Normal file
143
xperia-firmware-upgrade/SKILL.md
Normal file
|
|
@ -0,0 +1,143 @@
|
||||||
|
---
|
||||||
|
name: xperia-firmware-upgrade
|
||||||
|
description: Upgrade Sony Xperia 1 VI (XQ-EC72) firmware with newflasher without wiping data, keeping Magisk root. Use when asked to flash, upgrade, or update Xperia firmware downloaded with XperiFirm.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Xperia firmware upgrade (keep data + Magisk root)
|
||||||
|
|
||||||
|
Device: Sony Xperia 1 VI, model XQ-EC72, region `Customized SEA`.
|
||||||
|
Firmware lives in `/home/grmrgecko/Downloads/XperiFirm 5.8.1 (by Igor Eisberg)/` in folders named `XQ-EC72_Customized_SEA_<version>`.
|
||||||
|
Tools: `~/bin/newflasher` (v57), `~/bin/unsin`, `fastboot`.
|
||||||
|
|
||||||
|
## 1. Download firmware
|
||||||
|
|
||||||
|
XperiFirm (Windows .exe in the folder above, runs under Wine/mono) downloads the
|
||||||
|
firmware into a new `XQ-EC72_Customized_SEA_<version>` folder. Never downgrade —
|
||||||
|
the bootloader enforces anti-rollback (see `securitypatchlevel.dat`).
|
||||||
|
|
||||||
|
## 2. Patch init_boot with Magisk
|
||||||
|
|
||||||
|
Inside the new firmware folder:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
mkdir init_boot_X-FLASH-ALL-88DF
|
||||||
|
cd init_boot_X-FLASH-ALL-88DF
|
||||||
|
unsin ../init_boot_X-FLASH-ALL-88DF.sin # produces init_boot.img
|
||||||
|
```
|
||||||
|
|
||||||
|
Copy `init_boot.img` to the phone, patch it in the Magisk app
|
||||||
|
("Install" → "Select and Patch a File"), and copy the resulting
|
||||||
|
`magisk_patched-<ver>_<rand>.img` back into this same directory.
|
||||||
|
|
||||||
|
## 3. Prepare the flash copy
|
||||||
|
|
||||||
|
newflasher flashes every `.sin`/`.ta` in its working directory, so work on a
|
||||||
|
copy with the dangerous bits removed. From the XperiFirm folder:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cp -r --reflink=auto "XQ-EC72_Customized_SEA_<version>" "XQ-EC72_Customized_SEA_<version> copy"
|
||||||
|
cd "XQ-EC72_Customized_SEA_<version> copy"
|
||||||
|
rm persist_X-FLASH-ALL-88DF.sin
|
||||||
|
cp -r "../XQ-EC72_Customized_SEA_<previous-version> copy/tadump" .
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Remove `persist_X-FLASH-ALL-88DF.sin`** — persist holds per-device
|
||||||
|
calibration/DRM data; flashing it overwrites yours. This is the only file
|
||||||
|
removed.
|
||||||
|
- **`userdata_X-FLASH-ALL-88DF.sin` stays.** Data is preserved by answering
|
||||||
|
the "keep userdata?" prompt, not by deleting the file.
|
||||||
|
- **Carry the `tadump/` folder forward** from the previous version's copy. It
|
||||||
|
accumulates trim-area dumps (`tadump_N.ta`, numbered upward) — hard-brick
|
||||||
|
insurance. newflasher appends a new dump to it each flash.
|
||||||
|
|
||||||
|
Verify the prep by diffing against the previous prepared copy: the only
|
||||||
|
differences from a fresh download should be `persist*.sin` gone, the
|
||||||
|
`init_boot_X-FLASH-ALL-88DF/` workspace dir, and `tadump/`.
|
||||||
|
|
||||||
|
## 4. Flash with newflasher
|
||||||
|
|
||||||
|
Power the phone off, then hold **Volume-Down** while plugging in USB —
|
||||||
|
**green LED** = flashmode (`lsusb` shows a `0fce:` Sony device).
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd "XQ-EC72_Customized_SEA_<version> copy"
|
||||||
|
~/bin/newflasher
|
||||||
|
```
|
||||||
|
|
||||||
|
Prompt answers, in order:
|
||||||
|
|
||||||
|
| Prompt | Answer |
|
||||||
|
|---|---|
|
||||||
|
| "…if you understand the risk" | `y` |
|
||||||
|
| "dump trim area" (optional) | `y` — saves into `tadump/` |
|
||||||
|
| "Do you want to keep userdata?" | **`y`** — this is the no-wipe step |
|
||||||
|
| "Reboot mode at the end of flashing" | `f` — go straight to fastboot for re-rooting |
|
||||||
|
|
||||||
|
Non-interactive equivalent: `printf 'y\ny\ny\nf\n' | ~/bin/newflasher`
|
||||||
|
|
||||||
|
## 5. Re-flash Magisk root
|
||||||
|
|
||||||
|
The flash wrote the stock init_boot, so root must be restored. With the phone
|
||||||
|
in fastboot (blue LED — it's already there if you answered `f`; otherwise hold
|
||||||
|
**Volume-Up** while plugging in USB from power-off):
|
||||||
|
|
||||||
|
```sh
|
||||||
|
fastboot flash init_boot init_boot_X-FLASH-ALL-88DF/magisk_patched-*.img
|
||||||
|
fastboot reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
First boot after an upgrade takes a while. Open Magisk afterward to confirm
|
||||||
|
root survived.
|
||||||
|
|
||||||
|
## 6. Re-enable US 5G (SEA firmware in the US)
|
||||||
|
|
||||||
|
Flashing includes `modemst1`/`modemst2` `.sin` files, which reset the modem
|
||||||
|
EFS — any modem-side band/5G configuration is lost on every upgrade and must
|
||||||
|
be redone.
|
||||||
|
|
||||||
|
- Old quick trick (worked through 69.2.A.4.16): dial `*#*#4636#*#*` → Phone
|
||||||
|
Information → toggle "Enable DSDS" off, re-enable, reboot (some users must
|
||||||
|
leave DSDS off). May only force the 5G icon rather than real NR.
|
||||||
|
- Current method: replace three RF-band policy files in the modem EFS
|
||||||
|
`/policyman` folder with the versions from XDA thread 4753150 ("Enable 5G &
|
||||||
|
Global RF Bands on Xperia", by htcmage) — `band_set_01.xml`,
|
||||||
|
`plmn_mcc_supported_01.xml`, `policies.xml` (adds T-Mobile / Verizon / AT&T /
|
||||||
|
Dish LTE+NR bands). The guide uses Windows QPST EFS Explorer; the Linux path
|
||||||
|
below is what actually worked here and needs no Windows.
|
||||||
|
|
||||||
|
**Working Linux / adb procedure (done 2026-08-27, verified):**
|
||||||
|
1. Download the 3 attachments from the thread (Chrome navigates directly to
|
||||||
|
each `xdaforums.com/attachments/...` URL — script-triggered downloads are
|
||||||
|
blocked; a real navigation downloads fine). Validate each is well-formed
|
||||||
|
XML with root `<policy>` / `<policy_list>` and `schema_ver="1"` matching
|
||||||
|
the device's existing files.
|
||||||
|
2. Open the Qualcomm diag port: `adb shell su -c
|
||||||
|
'setprop sys.usb.config diag,serial_cdev,rmnet,adb'`. Phone re-enumerates
|
||||||
|
as USB `05c6:9091` (adb survives). Bind the serial driver (needs root on
|
||||||
|
the PC): `sudo modprobe option && echo 05c6 9091 | sudo tee
|
||||||
|
/sys/bus/usb-serial/drivers/option1/new_id`. Diag port = `/dev/ttyUSB0`
|
||||||
|
(the one that answers a DIAG version request; ttyUSB1 is silent).
|
||||||
|
3. Talk EFS2 over DIAG. EfsTools (JohnBel) is the usual tool but its
|
||||||
|
libnserial hits EIO on the option-driver port; the reliable path was a
|
||||||
|
small pyserial EFS2 client (HDLC + FCS-16, subsys 0x4B/EFS 19). Scripts
|
||||||
|
kept at `~/.../scratchpad/efs2.py` (+ `diag_probe.py`). It does:
|
||||||
|
hello → list `/policyman` → **back up** the 3 files → write new ones
|
||||||
|
(unlink then open `O_WRONLY|O_CREAT` perm 0777, 1 KB write chunks) →
|
||||||
|
read back and byte-compare to verify.
|
||||||
|
4. `adb reboot`. Reboot clears diag mode back to normal adb.
|
||||||
|
5. Verify: `dumpsys telephony.registry | grep isNrAvailable` → `true`
|
||||||
|
(stock SEA firmware shows false); `settings get global
|
||||||
|
preferred_network_mode` should be an NR mode (26 = NR_LTE_GSM_WCDMA).
|
||||||
|
|
||||||
|
Backups of the device's original `/policyman` files:
|
||||||
|
`~/.../scratchpad/policyman_backup/`. Invalid XML can stop the modem from
|
||||||
|
booting — restore by writing the backups back, or reflash the modem `.sin`
|
||||||
|
files with newflasher.
|
||||||
|
- Hardware limit: band n71 does not work on the 1 VI; T-Mobile users see
|
||||||
|
LTE 2/12/66 and NR n41; n66 confirmed on Verizon.
|
||||||
|
|
||||||
|
## 7. Cleanup
|
||||||
|
|
||||||
|
Keep both the original and the " copy" folder for at least one more upgrade —
|
||||||
|
the copy is the reference for preparing the next version, and `tadump/` is
|
||||||
|
carried forward from it. Older versions than the previous one can be deleted.
|
||||||
Loading…
Add table
Reference in a new issue