diff --git a/connect.py b/connect.py index dba36ca..0d4b721 100644 --- a/connect.py +++ b/connect.py @@ -30,7 +30,7 @@ if gw.status < 1: die("Xiaomi Mi Wi-Fi device not found (IP: {})".format(gw.ip_addr)) dn = gw.device_name -from xqimage import get_modelid_by_name +from xqmodel import get_modelid_by_name model_id = get_modelid_by_name(dn) #if dn in 'R2100 R2350 RM1800 RM2100 RA67': diff --git a/xqimage.py b/xqimage.py index 8f8e3f9..4ddf2d4 100644 --- a/xqimage.py +++ b/xqimage.py @@ -29,98 +29,8 @@ class XQImgFile(ctypes.Structure): ("dummy", ctypes.c_short), ("name", ctypes.c_char * 32)] # Filename -xqModelList = [ - "", - "", - "", - "R1CM", # 3 - "R2D", # 4 - "R1CL", - "R2CM", - "R3", - "R3D", # 8 - "R3L", - "R3P", # 10 - "P01", - "R3A", - "R3G", # 13 - "R4", - "R4C", - "D01", - "R4A", - "R4CM", - "R4AC", - "R3GV2", # 20 - "R2600", - "R2100", # 22 - "RM2100", # 23 - "R3600", # 24 - "R1350", - "R2200", - "R2350", # 27 - "IR1200G", - "RM1800", - "R2100D", # 30 - "RA67", - "RA69", - "RA71", - "CR6006", # 34 - "CR6008", - "CR6009", - "RA70", # AX9000 - "RA75", - "RA72", - "", # 40 - "", - "", - "RA80", # AX3000 - "RA81", # Redmi AX3000 - "RA82", # AX3000 - "RA83", - "RA74", # AX5400 - "", - "YY01", - "RB01", # 50 # AX3200 (INT) - "RB03", # 51 # AX6S # CR8806 (ChinaMobile) - "CR8808", - "CR8809", - "RB04", # 54 # Redmi AX5400 - "CR5508", - "CR5506", - "CR5509", - "RB08", # 58 # HomeWiFi - "", - "", - "RB06", # 61 # Redmi AX6000 - "", - "", - "CB04", # 64 - "CB0401", # 65 # Xiaomi 5G CPE Pro, Magenta Internet 5G Box AX5400 - "RC01", # AX10000 - "" - "CB0401V2", # Xiaomi 5G CPE Pro - "", - "RC06", # Xiaomi Router 7000 - # routers with unknown device number - "RA50", # Certification: 2022-13063 - "RB05", # Certification: 2022-3478 - "RB02", # Xiaomi AC1200 (INT) - "R4AV2", # Xiaomi AC1200 (CN) - "RC04", # RA75 analog - "WR30U", # Xiaomi AX3000NE - "WR30T", # Certification: 2022-3536 - "WR30M", # Certification: 2022-3202 6.0.49 - "RD01", # ??? - "RD02", # Certification: 2023-11107 - "RD03", # Xiaomi AX3000T (CN) - "RD04", # Certification: 2023-12227 -] - -def get_modelid_by_name(name): - for i, m in enumerate(xqModelList): - if m.lower() == name.lower(): - return i - return -1 +from xqmodel import xqModelList +from xqmodel import get_modelid_by_name def DIE(msg): print('ERROR:', msg) diff --git a/xqmodel.py b/xqmodel.py new file mode 100644 index 0000000..127172b --- /dev/null +++ b/xqmodel.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +mi = [ "" ] * 2000 + +mi[ 3] = "R1CM" +mi[ 4] = "R2D" +mi[ 5] = "R1CL" +mi[ 6] = "R2CM" +mi[ 7] = "R3" +mi[ 8] = "R3D" +mi[ 9] = "R3L" +mi[10] = "R3P" +mi[11] = "P01" +mi[12] = "R3A" +mi[13] = "R3G" +mi[14] = "R4" +mi[15] = "R4C" +mi[16] = "D01" +mi[17] = "R4A" +mi[18] = "R4CM" +mi[19] = "R4AC" +mi[20] = "R3GV2" +mi[21] = "R2600" +mi[22] = "R2100" +mi[23] = "RM2100" +mi[24] = "R3600" +mi[25] = "R1350" +mi[26] = "R2200" +mi[27] = "R2350" +mi[28] = "IR1200G" +mi[29] = "RM1800" +mi[30] = "R2100D" +mi[31] = "RA67" +mi[32] = "RA69" +mi[33] = "RA71" +mi[34] = "CR6006" +mi[35] = "CR6008" +mi[36] = "CR6009" +mi[37] = "RA70" # AX9000 +mi[38] = "RA75" +mi[39] = "RA72" # Mi Router AX6000 Certification: 2021-05-20 + +mi[1005] = "RA50" # Certification: 2022-13063 +mi[1006] = "RB02" # Xiaomi AC1200 (INT) +mi[1007] = "R4AV2" # Xiaomi AC1200 (CN) + +mi[43] = "RA80" # AX3000 Certification: 2022-2908 +mi[44] = "RA81" # Redmi AX3000 +mi[45] = "RA82" # AX3000 +mi[46] = "RA83" +mi[47] = "RA74" # AX5400 + +mi[49] = "YY01" +mi[50] = "RB01" # AX3200 (INT) +mi[51] = "RB03" # AX6S # CR8806 (ChinaMobile) +mi[52] = "CR8808" +mi[53] = "CR8809" +mi[54] = "RB04" # Redmi AX5400 +mi[55] = "CR5508" +mi[56] = "CR5506" +mi[57] = "CR5509" +mi[58] = "RB08" # HomeWiFi + +mi[1060] = "RB05" # Certification: 2022-3478 +mi[61] = "RB06" # Redmi AX6000 + + +mi[64] = "CB04" +mi[65] = "CB0401" # Xiaomi 5G CPE Pro, Magenta Internet 5G Box AX5400 +mi[66] = "RC01" # AX10000 +mi[1067] = "RC04" # RA75 analog +mi[68] = "CB0401V2" # Xiaomi 5G CPE Pro + +mi[70] = "RC06" # Xiaomi Router 7000 + +# routers with unknown device number +mi[1901] = "WR30U" # Xiaomi AX3000NE +mi[1902] = "WR30T" # Certification: 2022-3536 +mi[1903] = "WR30M" # Certification: 2022-3202 6.0.49 +mi[1801] = "RD01" # ??? +mi[1802] = "RD02" # Certification: 2023-11107 +mi[1803] = "RD03" # Xiaomi AX3000T (CN) +mi[1804] = "RD04" # Certification: 2023-12227 + + +xqModelList = mi + +def get_modelid_by_name(name, unk = False): + for i, m in enumerate(xqModelList): + if not unk and i >= 1000: + break + if m.lower() == name.lower(): + return i + return -1 +