We indeed need an INT firmware to have a look at it. I adapted script by @itay Xiaomi AX3600 INT firmware - #100 by itay to work with AX9000 (the commented out fields seem to make no difference):
import requests
#import datetime
import base64
import hashlib
DEFAULT_TOKEN = "8007236f-a2d6-4847-ac83-c49395ad6d65"
LINK = 'http://eu.api.miwifi.com/rs/grayupgrade'
def md5_base64(data):
b64_data = base64.b64encode(data.encode())
return hashlib.md5(b64_data).hexdigest()
def calculate_s(params_to_hash):
params_sorted = {k: v for k, v in sorted(params_to_hash.items(), key=lambda item: item[0])}
params_str = ''
for k, v in params_sorted.items():
params_str += f'{k}={v}&'
params_str += DEFAULT_TOKEN
result = md5_base64(params_str)
print(result)
return result
def main():
#now = datetime.datetime.now()
params_to_hash = {
"countryCode": 'EU',
"rom": '3.0.31',
#"serialNumber": 'your_sn',
"rootfs": '0.0.1',
"cfe": '1.0.2',
#"deviceID": 'your_id', # `uci get messaging.deviceInfo.DEVICE_ID`
#"ispCode": '',
"linux": '4.4.16',
"sqafs": '0.0.1',
"hardware": 'RA70',
#"locale": 'en_US',
"ramfs": '0.0.1',
"channel": 'release',
#'time': now.strftime('%Y-%m-%d---%H:%M:%S')
}
params_to_hash['s'] = calculate_s(params_to_hash)
params_to_hash['token'] = DEFAULT_TOKEN
response = requests.get(LINK, params=params_to_hash)
if response.ok:
print(response.text)
else:
print("invalid token")
if __name__ == '__main__':
main()
It gives no matches: {"code":"0","data":{"needUpgrade":false,"changelogUrl":"","description":""}}
I verified it works with CN firmwares, by changing LINK
to http://api.miwifi.com/rs/grayupgrade
,
countryCode
to CN
and rom
to 1.0.101
I get {"code":"0","data":{"needUpgrade":true,"size":39715780,"changelogUrl":"https://cdn.cnbj1.fds.api.mi-img.com/miwifi/6787ba0e-fd22-4bb1-81ec-1b60c4727b83.html","toVersionName":"1.0.108","link":"http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/ra70/miwifi_ra70_firmware_d96a4_1.0.108.bin","description":"","weight":"1","upgradeId":"46392","hash":"77f560ae1d170be928b25639d7ed96a4","toVersion":"1.0.108"}
It appears as if we will have to wait for an INT firmware update to be rolled out, to be able to fetch respective .bin, since 3.0.33 is the initial INT fw, not available as OTA.