Qcom MBN 相关
MBN的选择
MBN的选择有两种,一种是通过AP侧进行决定。另外一种是由Modem侧进行决定即 MCFG
AT(Atlas)平台以前,通过AP qcril_qmi_mbn_ota_daemon.c, 把需要的 MBN load到modem EFS 。
AT(Atlas)平台以后,通过Modem MCFG模块,把需要的 MBN load到modem EFS。
如何修改为AP侧选择MBN:
1、设置 MCFG version 中 AABBCCDD CC 为 typedef enum {…
}pdc_selection_carrier_enum_v01 中未使用过的值,例如 0x98
2、参考 qcril_qmi_mbn_ota_daemon.c 关闭 modem MBN auto selection.
ret_val = pdc_enable_auto_selection(0, 0);
ret_val = pdc_enable_auto_selection(0, 1);
3、填充 pdc_set_feature(&qmi_request)参数.
pdc_set_feature_req_msg_v01 qmi_request;
int result;
memset(&qmi_request, 0, sizeof(qmi_request));
qmi_request.slot_id = slot;
qmi_request.carrier_valid = 1;
qmi_request.carrier = 0x98;
result = pdc_set_feature(&qmi_request);
最后恢复 modem 端自动选择MBN.
ret_val = pdc_enable_auto_selection(1, 0);
ret_val = pdc_enable_auto_selection(1, 1);
modem MBN auto selection.
/* disable MBN auto selection */
if (!is_all_in_local_matched) {
ret_val = pdc_enable_auto_selection(0, 0);
ret_val = pdc_enable_auto_selection(0, 1);
}
关闭AP端的MBN升级。 adb shell set persist.vendor.radio.start_ota_daemon 0
编译生成的MBN
在modem_proc\mcfg\configs\mcfg_sw\目录下,
复制mbn_sw.txt 并更名为oem_sw.txt. 删除不需要的MBN项,保留需要的MBN,e.g CMCC/CT/CU MBN。
复制mbn_hw.txt 并更名为oem_hw.txt. 删除所有MBN项,因为相应7+5 HW MBN 内容应该复制到default HW MBN。
逻辑上只会将oem_xx.txt 路径下的mbn文件导入到手机中(后面OTA升级的时候也是同样load oem下的配置)
MBN的更新
mbn_sw.dig/mbn_hw.dig 的用处
1) 在modem image编译过程中,如果发现任何MBN的任何NV发生变化, modem_proc\mcfg\configs\mcfg_sw\mbn_sw.dig
会自动生成新值。
2) modem image下载到手机后,如果mbn_sw.dig和EFS RFS_SW_DIGEST_VERSIO不同,删除所有旧的MBN, 重新load oem_sw.txt 中的所有MBN
注意:如果没有MBN发生变化,单单在 oem_sw.txt增加一个MBN,mbn_sw.dig不会自动生成新值。所以modem image下载到手机后,不会重新load增加的MBN。所以需要更改一个NV,比如所增加MBN的NV71(修改一下MBN的banner).可以在编译中产生新的mbn_sw.dig
mcfg_sel_db.xml可以通过HW MBN 或者default SW MBN等更新,取决于该文件的加载路径。
MCFG recovery 只保留这些MBN的 version ID等信息到EFS。
1). 开机后,插入CMCC卡,MCFG 从 RFS(远程文件) AP "/system/rfs/msm/mpss/readonly/firmware/image/XX" 把CMCC MBN
load 到 modem EFS fold。
2). 如果MCFG 发现,modem EFS 快满了,load MBN前会删除最旧的MBN。