其实,用命令更改nv还是十多年前刚工具的时候的技能了。
这次是想在自动化工具里面添加命令来修改LTE band的NV设定,才又重新捡起来。
其实NV的意思就是non-valitile(非挥发,非易失性),是高通在文件系统中加入的该手机特有的参数设置的存储单元。例如,产线上会对手机进行校准,每个手机的校准参数都不同,这些参数会存入NV。NV里面也有很多关于网络的设定,例如我们今天要改的ID为06828的NV,就是LTE BC config,是针对LTE band的设定,它存储的是一个64bits的变量。从低位到高位,每一个bit表示了一个band是否打开(例如 二进制的110,对应了band2和band3)。
使用的工具是高通的QXDM的command功能,然后使用的命令是SendRawRequest。都是little-endian的小个子在前的。
- 读取(对应命令0x26)
读取NV 06828(0x1aac)对应的命令为
SendRawRequest 0x26 0xac 0x1a
- 写入(对应命令0x27)
把NV 06828设置为band1,对应的命令为以下命令。0xac 0x1a是NV ID,后面的0x1 0x0 0x0 0x0是写入的值(应该是写8个byte吧,64bits的话,这里偷懒了)
SendRawRequest 0x27 0xac 0x1a 0x1 0x0 0x0 0x0