modem上报SIM卡状态为unknown问题分析
问题描述:
QCM6125平台上客户反馈了一个问题:
140486 多次切换云卡和物理卡模式出现无法识别物理卡
问题分析:
APP和radio日志分析:
刚开始只有AP日志,看样子SIM卡是识别到了,只是没有激活:
uaflog:
08-07 11:36:29:588 2997 3660 D QCPlatFormTransferV26:sendRemoteEvent: ret: UIM_REMOTE_SUCCESS(0), event: RemoteUimEvent(slot=0, event=3, atr=, errorCode=0, usage=1, transport=2, apduTimeout=14000, disableAllPolling=0, pollTimer=2700000, hasUsage=true),polltimer=true.
08-07 11:36:29:589 2997 3660 D QCPlatFormTransferV26:sendRemoteEvent: ret: UIM_REMOTE_SUCCESS(0), event: RemoteUimEvent(slot=0, event=0, atr=, errorCode=0, usage=1, transport=2, apduTimeout=14000, disableAllPolling=0, pollTimer=2700000, hasUsage=true),polltimer=true.radio log:
08-07 11:36:29.056 2551 2760 D RadioConfigIndicationHidl: [UNSL]< UNSOL_SIM_SLOT_STATUS_CHANGED [IccSlotStatus {CARDSTATE_ABSENT,atr=,eid=,num_ports=1, IccSimPortInfo-0{iccid=,logicalSlotIndex=0,portActive=true}}, IccSlotStatus {CARDSTATE_ABSENT,atr=,eid=,num_ports=1, IccSimPortInfo-0{iccid=,logicalSlotIndex=1,portActive=true}}]
08-07 11:36:29.234 2551 2551 D SubscriptionInfoUpdater: Broadcasting intent ACTION_SIM_STATE_CHANGED ABSENT reason null for phone: 0
08-07 11:36:29.235 2551 2551 D SubscriptionInfoUpdater: Broadcasting intent ACTION_SIM_CARD_STATE_CHANGED ABSENT for phone: 0 slot: 0 port: 0
08-07 11:36:29.257 2551 2551 D SubscriptionInfoUpdater: Broadcasting intent ACTION_SIM_APPLICATION_STATE_CHANGED UNKNOWN for phone: 0 slot: 0port: 0
08-07 11:36:29.485 2551 2551 D QtiSimPhoneBookAdnRecordCache[0]: ACTION_SIM_STATE_CHANGED intent received simStatus: ABSENTphoneId: 0
08-07 11:36:29.583 2551 2760 D RadioConfigIndicationHidl: [UNSL]< UNSOL_SIM_SLOT_STATUS_CHANGED [IccSlotStatus {CARDSTATE_ABSENT,atr=,eid=,num_ports=1, IccSimPortInfo-0{iccid=,logicalSlotIndex=0,portActive=true}}, IccSlotStatus {CARDSTATE_ABSENT,atr=,eid=,num_ports=1, IccSimPortInfo-0{iccid=,logicalSlotIndex=1,portActive=true}}]
08-07 11:36:29.694 2551 2760 D RadioConfigIndicationHidl: [UNSL]< UNSOL_SIM_SLOT_STATUS_CHANGED [IccSlotStatus {CARDSTATE_PRESENT,atr=3b9f96801fc78031e073fe21136756485553494d18dc,eid=,num_ports=1, IccSimPortInfo-0{iccid=898601248[Gl7xdG2ZzOTPHunbz_o-39YImK0],logicalSlotIndex=0,portActive=true}}, IccSlotStatus {CARDSTATE_ABSENT,atr=,eid=,num_ports=1, IccSimPortInfo-0{iccid=,logicalSlotIndex=1,portActive=true}}]
08-07 11:36:31.275 2551 2760 D RadioConfigIndicationHidl: [UNSL]< UNSOL_SIM_SLOT_STATUS_CHANGED [IccSlotStatus {CARDSTATE_PRESENT,atr=3b9f96801fc78031e073fe21136756485553494d18dc,eid=,num_ports=1, IccSimPortInfo-0{iccid=898601248[Gl7xdG2ZzOTPHunbz_o-39YImK0],logicalSlotIndex=0,portActive=true}}, IccSlotStatus {CARDSTATE_ABSENT,atr=,eid=,num_ports=1, IccSimPortInfo-0{iccid=,logicalSlotIndex=1,portActive=true}}]
08-07 11:36:31.310 2551 2760 D RILJ : [UNSL]< UNSOL_RESPONSE_SIM_STATUS_CHANGED [PHONE0]
08-07 11:36:31.314 2551 2551 D RILJ : [3542]> GET_SIM_STATUS [PHONE0]
08-07 11:36:31.324 2551 2760 D RILJ : [3542]< GET_SIM_STATUS IccCardState {CARDSTATE_PRESENT,PINSTATE_UNKNOWN,num_apps=1,gsm_id=-1,cdma_id=-1,ims_id=-1,atr=3b9f96801fc78031e073fe21136756485553494d18dc,iccid=898601248[Gl7xdG2ZzOTPHunbz_o-39YImK0],eid=,SlotPortMapping={physicalSlotIndex=0, portIndex=0}} [PHONE0]
08-07 11:36:31.363 2551 2551 D SubscriptionInfoUpdater: Broadcasting intent ACTION_SIM_STATE_CHANGED NOT_READY reason null for phone: 0
08-07 11:36:31.365 2551 2551 D SubscriptionInfoUpdater: Broadcasting intent ACTION_SIM_CARD_STATE_CHANGED PRESENT for phone: 0 slot: 0 port: 0
怀疑类似问题:
http://redmine.ukelink.com/issues/139240 手动杀掉进程,出现云卡Ready timeout
问题在于这台设备的卡槽一有一张实体sim卡,当云卡被remove掉后这张实体sim卡起来了并且走到了ready的状态,当modem正在读卡并且将卡状态发送到ap侧时,uservice下发了event 1,关闭了实体卡通道,同时也关闭了实体sim卡。但对于ap侧来说卡一这张卡的session_state已经是activated的,但是还没有更新index_gw_pri_prov的状态,所以当实体sim卡变为absent的时候并没有更新session_state。随后在卡一起云卡的时候由于卡一已经是activated状态,故ap侧未下发激活卡的命令,因此云卡出现了ready timeout。
07-01 18:49:46:349 4777 4854 D QCPlatFormTransferV26:sendRmtEvent: UIM_REMOTE_CARD_REMOVED(3)
07-01 18:49:46:350 4777 4854 D QCPlatFormTransferV26:sendRmtEvent: UIM_REMOTE_CONNECTION_UNAVAILABLE(0)10:50:25.695000 Android QCRIL/Low [ DiagLogger.cpp 86] [QCRIL_UIM_CARD] RIL[0][qcril_uim_card.cpp: 4056] [UimModule-Loope(1376,1898)] qcril_uim_process_change_subscription: qcril_uim_process_change_subscription: subs_mode_pref: 0x1, slot: 0x0, sub_type: 0x0, act_status: 0x1
10:50:25.695000 Android QCRIL/Low [ DiagLogger.cpp 86] [QCRIL_UIM_CARD] RIL[0][qcril_uim_card.cpp: 576] [UimModule-Loope(1376,1898)] qcril_uim_ignore_change_subscription: Couldnt match session info: GW_PRI:2, GW_SEC:0, GW_TER:0, 1X_PRI:0, 1X_SEC:0, 1X_TER:0
10:50:25.695000 Android QCRIL/Low [ DiagLogger.cpp 86] [QCRIL_UIM_CARD] RIL[0][qcril_uim_card.cpp: 327] [UimModule-Loope(1376,1898)] qcril_uim_find_prov_session_type: Cannot Activate RIL_sub_type: 0
只是139240问题是物理卡影响了物理卡,而140486问题是云卡影响到了物理卡。因此做类似39240问题的处理:云卡切物理卡时event 3和0也间隔1秒。
modem日志分析:
后面我们复现出modem日志后发现和139240问题不同,仅从qcril卡状态打印来看卡这段时间一直是present:
[ 63/ 0] MSG 03:36:29.055000 Android QCRIL/Low [ DiagLogger.cpp 82] [QCRIL_UIM_CARD] RIL[0][qcril_uim_card.cpp: 3195] [UimModule-Loope(1289,1566)] qcril_uim_print_card_status: card[0].card_state: 1 0
[ 63/ 0] MSG 03:36:29.580000 Android QCRIL/Low [ DiagLogger.cpp 82] [QCRIL_UIM_CARD] RIL[0][qcril_uim_card.cpp: 3195] [UimModule-Loope(1289,1566)] qcril_uim_print_card_status: card[0].card_state: 1 0
[ 63/ 0] MSG 03:36:31.286250 Android QCRIL/Low [ DiagLogger.cpp 82] [QCRIL_UIM_CARD] RIL[0][qcril_uim_card.cpp: 3195] [UimModule-Loope(1289,1566)] qcril_uim_print_card_status: card[0].card_state: 1 0
难道是modem没上报卡状态?查看以前的问题总结:
SDX55平台卡问题总结--2020.11
结合log:
[ 21/ 2] MSG 03:36:26.758359 User Identity Module/High [ qmi_uim_remote.c 1224] qmi_uim_remote_event_req_handler:event 0x3, slot 0x2
[ 21/ 2] MSG 03:36:26.758359 User Identity Module/High [ uim_btsap.c 645] UIM_2: Received BTSAP event -- 0x4, state 0x0, mode 0x0
[0x1544] LOG 03:36:26.760004 QMI_MCS_QCSI_PKT Length: 208
03:36:26.760004 [0x1544] QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {MsgType = IndicationCounter = 1203ServiceId = UIMMajorRev = 1MinorRev = 92ConHandle = 0x00000020MsgId = 0x00000032QmiLength = 164Service_UIM {ServiceUIMV1 {uim_status_change {uim_status_change_indTlvs[0] {Type = 0x14Length = 39extended_card_info {extended_card_info_len = 2extended_card_info[0] {iccid_len = 10iccid = { 152, 104, 64, 45, 145, 34, 29, 130, 137, 54}atr_len = 22atr = { 59, 159, 149, 128, 31, 199, 128, 49, 224, 115, 254, 33, 19, 87, 134, 133, 9, 134, 152, 68, 24, 163}eid_len = 0}extended_card_info[1] {iccid_len = 0atr_len = 0eid_len = 0}}}uim_status_change_indTlvs[1] {Type = 0x13Length = 9card_mode {card_mode_len = 2card_mode = { UIM_CARD_MODE_TELECOM_CARD, UIM_CARD_MODE_TELECOM_CARD }}}uim_status_change_indTlvs[2] {Type = 0x12Length = 53extended_card_status {index_gw_len = 2index_gw = { 0, 65535 }index_1x_len = 2index_1x = { 65535, 65535 }num_slot = 2card_info[0] {card_state = UIM_EXTENDED_CARD_STATE_PRESENTupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 1app_info[0] {app_type = UIM_APP_TYPE_USIMapp_state = UIM_APP_STATE_READYperso_state = UIM_PERSO_STATE_READYperso_feature = UIM_PERSO_FEATURE_STATUS_UNKNOWNperso_retries = 0perso_unblock_retries = 0aid_len = 16aid_value = { 160, 0, 0, 0, 135, 16, 2, 255, 134, 255, 255, 137, 255, 255, 255, 255}univ_pin = UIM_UNIV_PIN_PIN1_USEDpin1 {pin_state = UIM_PIN_STATE_DISABLEDpin_retries = 3puk_retries = 10}pin2 {pin_state = UIM_PIN_STATE_ENABLED_NOT_VERIFIEDpin_retries = 3puk_retries = 10}}}card_info[1] {card_state = UIM_EXTENDED_CARD_STATE_ABSENTupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 0}}}uim_status_change_indTlvs[3] {Type = 0x10Length = 51card_status {index_gw_pri = 0index_1x_pri = 65535index_gw_sec = 65535index_1x_sec = 65535num_slot = 2card_info[0] {card_state = UIM_CARD_STATE_PRESENTupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 1app_info[0] {app_type = UIM_APP_TYPE_USIMapp_state = UIM_APP_STATE_READYperso_state = UIM_PERSO_STATE_READYperso_feature = UIM_PERSO_FEATURE_STATUS_UNKNOWNperso_retries = 0perso_unblock_retries = 0aid_len = 16aid_value = { 160, 0, 0, 0, 135, 16, 2, 255, 134, 255, 255, 137, 255, 255, 255, 255}univ_pin = UIM_UNIV_PIN_PIN1_USEDpin1 {pin_state = UIM_PIN_STATE_DISABLEDpin_retries = 3puk_retries = 10}pin2 {pin_state = UIM_PIN_STATE_ENABLED_NOT_VERIFIEDpin_retries = 3puk_retries = 10}}}card_info[1] {card_state = UIM_CARD_STATE_ABSENTupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 0}}}}}}
}
[ 21/ 2] MSG 03:36:27.013281 User Identity Module/High [ qmi_uim_remote.c 1224] qmi_uim_remote_event_req_handler:event 0x0, slot 0x2
[ 21/ 2] MSG 03:36:27.013281 User Identity Module/High [ uim_btsap.c 645] UIM_2: Received BTSAP event -- 0x1, state 0x0, mode 0x0
[0x1544] LOG 03:36:27.015006 QMI_MCS_QCSI_PKT Length: 208
[ 21/ 2] MSG 03:36:27.025052 User Identity Module/High [ uimdrv_hal_iso.c 349] UIM_2: uim power up @ 1.8 v
[ 21/ 2] MSG 03:36:27.027240 User Identity Module/High [ mmgsdi.c 8243] Received event: 0x24 in mmgsdi_evt_cb
[ 21/ 2] MSG 03:36:27.027240 User Identity Module/High [ qmi_uim.c 16945] qmi_uim_process_card_detection_started_evt, slot 0x2
[ 21/ 3] MSG 03:36:27.795547 User Identity Module/Error [ uim_sigs.c 1201] UIM_2: Timed out on the command response
[ 21/ 2] MSG 03:36:27.809349 User Identity Module/High [ uimdrv_hal_iso.c 349] UIM_2: uim power up @ 1.8 v
[ 21/ 3] MSG 03:36:28.580365 User Identity Module/Error [ uim_sigs.c 1201] UIM_2: Timed out on the command response
[ 21/ 2] MSG 03:36:28.622396 User Identity Module/High [ uimdrv_hal_iso.c 356] UIM_2: uim power up @ 3 v
[ 21/ 2] MSG 03:36:29.158359 User Identity Module/High [ qmi_uim_remote.c 1224] qmi_uim_remote_event_req_handler:event 0x3, slot 0x1
[ 21/ 2] MSG 03:36:29.158359 User Identity Module/High [ uim_btsap.c 645] UIM_1: Received BTSAP event -- 0x4, state 0x0, mode 0x0
[0x1544] LOG 03:36:29.160029 QMI_MCS_QCSI_PKT Length: 116
03:36:29.160029 [0x1544] QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {MsgType = IndicationCounter = 1207ServiceId = UIMMajorRev = 1MinorRev = 92ConHandle = 0x00000020MsgId = 0x00000032QmiLength = 72Service_UIM {ServiceUIMV1 {uim_status_change {uim_status_change_indTlvs[0] {Type = 0x14Length = 7extended_card_info {extended_card_info_len = 2extended_card_info[0] {iccid_len = 0atr_len = 0eid_len = 0}extended_card_info[1] {iccid_len = 0atr_len = 0eid_len = 0}}}uim_status_change_indTlvs[1] {Type = 0x13Length = 9card_mode {card_mode_len = 2card_mode = { UIM_CARD_MODE_TELECOM_CARD, UIM_CARD_MODE_TELECOM_CARD }}}uim_status_change_indTlvs[2] {Type = 0x12Length = 23extended_card_status {index_gw_len = 2index_gw = { 65535, 65535 }index_1x_len = 2index_1x = { 65535, 65535 }num_slot = 2card_info[0] {card_state = UIM_EXTENDED_CARD_STATE_UNKNOWNupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 0}card_info[1] {card_state = UIM_EXTENDED_CARD_STATE_UNKNOWNupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 0}}}uim_status_change_indTlvs[3] {Type = 0x10Length = 21card_status {index_gw_pri = 65535index_1x_pri = 65535index_gw_sec = 65535index_1x_sec = 65535num_slot = 2card_info[0] {card_state = UIM_CARD_STATE_ABSENTupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 0}card_info[1] {card_state = UIM_CARD_STATE_ABSENTupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 0}}}}}}
}
[ 21/ 3] MSG 03:36:29.393255 User Identity Module/Error [ uim_sigs.c 1201] UIM_2: Timed out on the command response
[ 21/ 2] MSG 03:36:29.409401 User Identity Module/High [ uimdrv_hal_iso.c 349] UIM_2: uim power up @ 1.8 v
[ 21/ 2] MSG 03:36:29.685182 User Identity Module/High [ qmi_uim_remote.c 1224] qmi_uim_remote_event_req_handler:event 0x0, slot 0x1
[ 21/ 2] MSG 03:36:29.685182 User Identity Module/High [ uim_btsap.c 645] UIM_1: Received BTSAP event -- 0x1, state 0x0, mode 0x0
[0x1544] LOG 03:36:29.687076 QMI_MCS_QCSI_PKT Length: 116
03:36:29.687076 [0x1544] QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {MsgType = IndicationCounter = 1209ServiceId = UIMMajorRev = 1MinorRev = 92ConHandle = 0x00000020MsgId = 0x00000032QmiLength = 72Service_UIM {ServiceUIMV1 {uim_status_change {uim_status_change_indTlvs[0] {Type = 0x14Length = 7extended_card_info {extended_card_info_len = 2extended_card_info[0] {iccid_len = 0atr_len = 0eid_len = 0}extended_card_info[1] {iccid_len = 0atr_len = 0eid_len = 0}}}uim_status_change_indTlvs[1] {Type = 0x13Length = 9card_mode {card_mode_len = 2card_mode = { UIM_CARD_MODE_TELECOM_CARD, UIM_CARD_MODE_TELECOM_CARD }}}uim_status_change_indTlvs[2] {Type = 0x12Length = 23extended_card_status {index_gw_len = 2index_gw = { 65535, 65535 }index_1x_len = 2index_1x = { 65535, 65535 }num_slot = 2card_info[0] {card_state = UIM_EXTENDED_CARD_STATE_UNKNOWNupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 0}card_info[1] {card_state = UIM_EXTENDED_CARD_STATE_UNKNOWNupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 0}}}uim_status_change_indTlvs[3] {Type = 0x10Length = 21card_status {index_gw_pri = 65535index_1x_pri = 65535index_gw_sec = 65535index_1x_sec = 65535num_slot = 2card_info[0] {card_state = UIM_CARD_STATE_ABSENTupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 0}card_info[1] {card_state = UIM_CARD_STATE_ABSENTupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 0}}}}}}
}
[ 21/ 3] MSG 03:36:30.365313 User Identity Module/Error [ uim_sigs.c 1201] UIM_2: Timed out on the command response
[ 21/ 2] MSG 03:36:30.407995 User Identity Module/High [ uimdrv_hal_iso.c 356] UIM_2: uim power up @ 3 v
[ 21/ 3] MSG 03:36:31.364297 User Identity Module/Error [ uim_sigs.c 1201] UIM_2: Timed out on the command response
[ 21/ 2] MSG 03:36:31.364297 User Identity Module/High [ uim_sigs.c 1638] UIM_2: Entering UIM_MAX_NUM_ATTEMPTS
[0x1544] LOG 03:36:31.367003 QMI_MCS_QCSI_PKT Length: 208
03:36:31.367003 [0x1544] QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {MsgType = IndicationCounter = 1212ServiceId = UIMMajorRev = 1MinorRev = 92ConHandle = 0x00000020MsgId = 0x00000032QmiLength = 164Service_UIM {ServiceUIMV1 {uim_status_change {uim_status_change_indTlvs[0] {Type = 0x14Length = 39extended_card_info {extended_card_info_len = 2extended_card_info[0] {iccid_len = 10iccid = { 152, 104, 16, 66, 8, 65, 136, 85, 116, 84}atr_len = 22atr = { 59, 159, 150, 128, 31, 199, 128, 49, 224, 115, 254, 33, 19, 103, 86, 72, 85, 83, 73, 77, 24, 220}eid_len = 0}extended_card_info[1] {iccid_len = 0atr_len = 0eid_len = 0}}}uim_status_change_indTlvs[1] {Type = 0x13Length = 9card_mode {card_mode_len = 2card_mode = { UIM_CARD_MODE_TELECOM_CARD, UIM_CARD_MODE_TELECOM_CARD }}}uim_status_change_indTlvs[2] {Type = 0x12Length = 53extended_card_status {index_gw_len = 2index_gw = { 65535, 65535 }index_1x_len = 2index_1x = { 65535, 65535 }num_slot = 2card_info[0] {card_state = UIM_EXTENDED_CARD_STATE_PRESENTupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 1app_info[0] {app_type = UIM_APP_TYPE_USIMapp_state = UIM_APP_STATE_DETECTEDperso_state = UIM_PERSO_STATE_UNKNOWNperso_feature = UIM_PERSO_FEATURE_STATUS_UNKNOWNperso_retries = 0perso_unblock_retries = 0aid_len = 16aid_value = { 160, 0, 0, 0, 135, 16, 2, 255, 134, 255, 255, 137, 255, 255, 255, 255}univ_pin = UIM_UNIV_PIN_PIN1_USEDpin1 {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}pin2 {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}}}card_info[1] {card_state = UIM_EXTENDED_CARD_STATE_ERRORupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_NO_ATR_RECEIVEDnum_app = 0}}}uim_status_change_indTlvs[3] {Type = 0x10Length = 51card_status {index_gw_pri = 65535index_1x_pri = 65535index_gw_sec = 65535index_1x_sec = 65535num_slot = 2card_info[0] {card_state = UIM_CARD_STATE_PRESENTupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_UNKNOWNnum_app = 1app_info[0] {app_type = UIM_APP_TYPE_USIMapp_state = UIM_APP_STATE_DETECTEDperso_state = UIM_PERSO_STATE_UNKNOWNperso_feature = UIM_PERSO_FEATURE_STATUS_UNKNOWNperso_retries = 0perso_unblock_retries = 0aid_len = 16aid_value = { 160, 0, 0, 0, 135, 16, 2, 255, 134, 255, 255, 137, 255, 255, 255, 255}univ_pin = UIM_UNIV_PIN_PIN1_USEDpin1 {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}pin2 {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}}}card_info[1] {card_state = UIM_CARD_STATE_ERRORupin {pin_state = UIM_PIN_STATE_UNKNOWNpin_retries = 0puk_retries = 0}error_code = UIM_CARD_ERROR_CODE_NO_ATR_RECEIVEDnum_app = 0}}}}}}
}
发现在卡2 从power up开始的整个card_detection期间,卡1有卡状态变化要报给AP时,双卡的extended_card_status的card_state 都是 UIM_EXTENDED_CARD_STATE_UNKNOWN,就是这个原因导致云卡退出时qcril没收到absent的卡状态,再启动物理卡时就没有再进行激活卡的操作。这和SDX55平台的卡问题是一样的,高通的bug。
modem上报SIM卡状态为UNKNOWN的代码位置
uim\uimqmi\src\qmi_uim_parsing.c
static boolean qmi_uim_populate_card_and_app_state()
{
……if(app_count_per_slot_len < max_card_count){return FALSE;}/* As per the design, status change indication would be sent only if carddetection is finished for all the applicable slots, if get_card_statusrequest is received when any of the slots detection is in progress sendresponse with card_state as UNKNOWN, this is done to avoid the followingpossible scenario:1) SIM detection started for both the slots2) Card inserted is received for SLOT_13) qmi_uim_get_card_status is received and responded with SLOT_1 card aspresent and SLOT_2 card as absent4) AP sent activation request on SLOT_1 as it knows card statusas present5) MMGSDI performs session activation and sends session changed event 6) QMI_UIM doesnt send status change indication(once session changed eventis received) to it's clients as SLOT_2 detection is still in progressbut sends activation response as success7) Cards in both the slots are removed and MMGSDI receives card_errorfor both the slots8) QMI_UIM sends status change indication with card status as absent,gw_index as 0XFFFF and with invalid gw_index AP cannot clean upthe activation status 9) AP doesn't send activation status after card is inserted as forit session is already activated(as it is not cleaned up earlier) */if(qmi_uim_check_card_error_on_any_slot()){UIM_MSG_HIGH_0("Status change indication populated with card state error");}else{if(qmi_uim_is_slot_detection_in_progress()){/* Send response with card state as ABSENT and error code as unknown */qmi_uim_set_card_state_absent(tlv_len,tlv_data_ptr,extended_card_status,curr_ptr,max_card_count,tlv_data_card_state);return TRUE;}}simlock_display = qmi_uim_util_is_simlock_display_for_valid_card_enabled();
……
}
解决方案:
modem侧方案,申请这些:CR2685486,CR2802161 、CR2751360可解决该问题。
APP规避:event3和0之间间隔4秒。
APP规避后的modem日志:
记录一份APP规避后的modem日志,供后续进一步优先使用:
[ 21/ 2] MSG 01:01:42.762995 User Identity Module/High [ qmi_uim_remote.c 1224] qmi_uim_remote_event_req_handler:event 0x3, slot 0x2
[ 21/ 2] MSG 01:01:42.762995 User Identity Module/High [ uim_btsap.c 645] UIM_2: Received BTSAP event -- 0x4, state 0x0, mode 0x0
[ 21/ 2] MSG 01:01:46.774323 User Identity Module/High [ qmi_uim_remote.c 1224] qmi_uim_remote_event_req_handler:event 0x0, slot 0x2
[ 21/ 2] MSG 01:01:46.774323 User Identity Module/High [ uim_btsap.c 645] UIM_2: Received BTSAP event -- 0x1, state 0x0, mode 0x0
[0x1544] LOG 01:01:46.776003 QMI_MCS_QCSI_PKT Length: 116
[ 21/ 2] MSG 01:01:46.786016 User Identity Module/High [ uimdrv_hal_iso.c 349] UIM_2: uim power up @ 1.8 v
[ 21/ 2] MSG 01:01:46.788021 User Identity Module/High [ mmgsdi.c 8243] Received event: 0x24 in mmgsdi_evt_cb
[ 21/ 2] MSG 01:01:46.788021 User Identity Module/High [ qmi_uim.c 16945] qmi_uim_process_card_detection_started_evt, slot 0x2
[ 21/ 2] MSG 01:01:46.815000 User Identity Module/High [ qmi_uim_remote.c 1224] qmi_uim_remote_event_req_handler:event 0x3, slot 0x2
[ 21/ 0] MSG 01:01:46.815000 User Identity Module/Low [ qmi_uim_remote.c 1474] qmi_uim_remote_event_req_handler: Cannot find client for slot
[ 21/ 3] MSG 01:01:47.555990 User Identity Module/Error [ uim_sigs.c 1201] UIM_2: Timed out on the command response
[ 21/ 2] MSG 01:01:47.570130 User Identity Module/High [ uimdrv_hal_iso.c 349] UIM_2: uim power up @ 1.8 v
[ 21/ 3] MSG 01:01:48.341276 User Identity Module/Error [ uim_sigs.c 1201] UIM_2: Timed out on the command response
[ 21/ 2] MSG 01:01:48.343385 User Identity Module/High [ uim_sigs.c 1605] UIM_2: Attempting power up at 3V
[ 21/ 2] MSG 01:01:48.383516 User Identity Module/High [ uimdrv_hal_iso.c 356] UIM_2: uim power up @ 3 v
[ 21/ 3] MSG 01:01:49.153984 User Identity Module/Error [ uim_sigs.c 1201] UIM_2: Timed out on the command response
[ 21/ 2] MSG 01:01:49.170078 User Identity Module/High [ uimdrv_hal_iso.c 349] UIM_2: uim power up @ 1.8 v
[ 21/ 3] MSG 01:01:50.126589 User Identity Module/Error [ uim_sigs.c 1201] UIM_2: Timed out on the command response
[ 21/ 2] MSG 01:01:50.127995 User Identity Module/High [ uim_sigs.c 1605] UIM_2: Attempting power up at 3V
[ 21/ 2] MSG 01:01:50.168281 User Identity Module/High [ uimdrv_hal_iso.c 356] UIM_2: uim power up @ 3 v
[ 21/ 2] MSG 01:01:50.774323 User Identity Module/High [ qmi_uim_remote.c 1224] qmi_uim_remote_event_req_handler:event 0x0, slot 0x2
[ 21/ 0] MSG 01:01:50.774323 User Identity Module/Low [ qmi_uim_remote.c 1474] qmi_uim_remote_event_req_handler: Cannot find client for slot
[ 21/ 2] MSG 01:01:50.782839 User Identity Module/High [ qmi_uim_remote.c 1224] qmi_uim_remote_event_req_handler:event 0x3, slot 0x1
[ 21/ 2] MSG 01:01:50.782839 User Identity Module/High [ uim_btsap.c 645] UIM_1: Received BTSAP event -- 0x4, state 0x0, mode 0x0
[ 21/ 3] MSG 01:01:51.125313 User Identity Module/Error [ uim_sigs.c 1201] UIM_2: Timed out on the command response
[ 21/ 2] MSG 01:01:51.125313 User Identity Module/High [ uim_sigs.c 1638] UIM_2: Entering UIM_MAX_NUM_ATTEMPTS
[0x1544] LOG 01:01:51.128009 QMI_MCS_QCSI_PKT Length: 116
[ 21/ 2] MSG 01:01:54.790052 User Identity Module/High [ qmi_uim_remote.c 1224] qmi_uim_remote_event_req_handler:event 0x0, slot 0x1
[ 21/ 2] MSG 01:01:54.790052 User Identity Module/High [ uim_btsap.c 645] UIM_1: Received BTSAP event -- 0x1, state 0x0, mode 0x0
[0x1544] LOG 01:01:54.791001 QMI_MCS_QCSI_PKT Length: 116
[ 21/ 2] MSG 01:01:54.800677 User Identity Module/High [ uimdrv_hal_iso.c 349] UIM_1: uim power up @ 1.8 v
[ 21/ 2] MSG 01:01:55.115000 User Identity Module/High [ mmgsdi.c 8278] MMGSDI_SESSION_CHANGED_EVT, app: 0x3, slot: 0x1, activated: 0x1, session_type: 0x0
[ 21/ 2] MSG 01:01:55.352995 User Identity Module/High [ mmgsdi.c 8460] MMGSDI_SUBSCRIPTION_READY_EVT, app: 0x3, slot: 0x1