V
vyhJB
Ambitioniertes Mitglied
- 5
Hallo,
ich hatte es in diversen anderen Threads schonmal angesprochen, dass ich gerne einzelne SIM-Karten automatisiert und nicht über GUI ein- und ausschalten möchte. Ich denke, dass auch noch andere Leute dieses Bedürfnis haben, um beispielsweise am Wochenende die Firmen-SIM auszuschalten.
Ich habe rausgefunden, dass über ein echo AT+CFUN=0 > /dev/radio/pttycmd1 bei der ersten SIM der Empfang komplett weg ist und mit echo AT+CFUN=1 > /dev/radio/pttycmd1 wieder da ist.
Ich weiß allerdings nicht, ob die zweite SIM dann wirklich aus ist oder weiter Energie verbraucht (vielleicht sogar noch mehr).
Nun habe ich mir mal die radio-Logs angeschaut, wenn ich eine SIM ein-, bzw. ausschalte. Das Ganze sieht dann folgendermaßen aus (ist jetzt mal nur der Teil, den ich spontan für relevant halte):
und wieder an:
Habe es entsprechend auch mal mit dem AT+EFUN probiert, das Verhalten ist aber wie beim oben beschriebenen AT+CFUN.
Gibt es vielleicht irgendeine andere Möglichkeit, diese Sache (setRadioSIMMode) nicht durch Verschieben des SIM-Schalters, sondern automatisiert auszulösen? SL4A?
ich hatte es in diversen anderen Threads schonmal angesprochen, dass ich gerne einzelne SIM-Karten automatisiert und nicht über GUI ein- und ausschalten möchte. Ich denke, dass auch noch andere Leute dieses Bedürfnis haben, um beispielsweise am Wochenende die Firmen-SIM auszuschalten.
Ich habe rausgefunden, dass über ein echo AT+CFUN=0 > /dev/radio/pttycmd1 bei der ersten SIM der Empfang komplett weg ist und mit echo AT+CFUN=1 > /dev/radio/pttycmd1 wieder da ist.
Ich weiß allerdings nicht, ob die zweite SIM dann wirklich aus ist oder weiter Energie verbraucht (vielleicht sogar noch mehr).
Nun habe ich mir mal die radio-Logs angeschaut, wenn ich eine SIM ein-, bzw. ausschalte. Das Ganze sieht dann folgendermaßen aus (ist jetzt mal nur der Teil, den ich spontan für relevant halte):
Code:
D/PHONE ( 516): [GeminiRadioStatusUtil] Add radio off SIM: xxxxxxxx
D/PHONE ( 516): [GeminiRadioStatusUtil] Remove radio off SIM: xxxxxxxx
D/PHONE ( 516): [GeminiRadioStatusUtil] setRadioSIMMode: 2
D/PHONE ( 516): [GeminiNetworkSubUtil] setRadioMode:2, 3, 2, false, true
D/GSM ( 516): [GsmSST0] setPowerStateToDesired mDesiredPowerState:false current radio state:SIM_READY mFirstRadioChange:false
D/GSM ( 516): [GsmSST0] Data disconnected, turn off radio right away.
D/GSM ( 516): [GsmSST1] setPowerStateToDesired mDesiredPowerState:true current radio state:SIM_READY mFirstRadioChange:false
D/PHONE ( 516): [GeminiNetworkSubUtil] Refresh dual SIM mode setting: 2
D/RILJ ( 516): RIL(1) :[1284]> DUAL_SIM_MODE_SWITCH
I/RILC ( 244): RIL(1) SOCKET REQUEST: DUAL_SIM_MODE_SWITCH length:16
I/RILC ( 244): DC 07 00 00 04 05 00 00 01 00 00 00 02 00 00 00
D/RILC ( 244): New command received from RIL(1)
D/RILC ( 244): DUAL_SIM_MODE_SWITCH dispatched to RIL_CMD_PROXY_1
I/RILC ( 244): RIL_CMD_PROXY_2 wakeup
I/RILC ( 244): RIL_CMD_PROXY_2 sleep
I/RILC ( 244): RIL_URC2_PROXY wakeup
I/RILC ( 244): RIL_URC2_PROXY sleep
I/RILC ( 244): RIL_CMD2_PROXY_1 wakeup
I/RILC ( 244): RIL_CMD2_PROXY_1 sleep
I/RILC ( 244): RIL_CMD2_PROXY_2 wakeup
I/RILC ( 244): RIL_CMD2_PROXY_2 sleep
I/RILC ( 244): RIL_CMD2_PROXY_3 wakeup
I/RILC ( 244): RIL_CMD2_PROXY_3 sleep
I/RILC ( 244): RIL_CMD_PROXY_1 wakeup
D/RILC ( 244): DUAL_SIM_MODE_SWITCH execute on RIL_CMD_PROXY_1 using channel 3
D/RIL ( 244): onRequest: DUAL_SIM_MODE_SWITCH, datalen = 4
D/RIL ( 244): radioState:4
I/RIL ( 244): getRadioState(): radioState=4
I/RIL ( 244): getRadioState(): radioState=4
D/RIL ( 244): ENTER requestRadioMode: 2
D/AT ( 244): AT send on RIL_CMD_READER_3, tid:30884736
D/AT ( 244): AT> AT+EFUN=2
D/AT ( 244): AT+EFUN=2
I/RILC ( 244): RIL_CMD_PROXY_3 wakeup
I/RILC ( 244): RIL_CMD_PROXY_3 sleep
I/RILC ( 244): RIL_URC_PROXY wakeup
I/RILC ( 244): RIL_URC_PROXY sleep
I/MUXD ( 202): 912:pseudo_device_read(): Enter
I/MUXD ( 202): 558:write_frame(): Sending frame to channel 5
I/MUXD ( 202): 636:write_frame(): Write a frame on channel 5 with length 10
D/GSM ( 516): [GDCT][simId0]handleMessage msg={ what=270366 when=-9ms obj=radioTurnedOff }
D/GSM ( 516): [GDCT][simId0]cleanUpAllConnections: tearDown=true reason=radioTurnedOff
D/GSM ( 516): [ApnContext] set reason as radioTurnedOff, for type dm,current state IDLE
D/GSM ( 516): [GDCT][simId0]cleanUpConnection: tearDown=true reason=radioTurnedOff
D/GSM ( 516): [ApnContext] setState: IDLE for type dm, previous state:IDLE
D/GSM ( 516): [PhoneNotifier] doNotifyDataConnection apnType=dm,networkType=1, state=DISCONNECTED
D/GSM ( 516): [GDCT][simId0]get active apn string for type:dm
D/GSM ( 516): [GDCT][simId0]apnType = dm
D/GSM ( 516): [GDCT][simId0]isDataAllowed: not allowed due to - desiredPowerState= false
D/GSM ( 516): [GDCT][simId0]isDataPossible(dm): possible=false isDataAllowed=false apnTypePossible=true apnContextisEnabled=false apnContextState()=IDLE
D/PHONE ( 516): [GeminiDataSubUtil] [DataStateChanged]:state=DISCONNECTED,reason=radioTurnedOff,apnName=null,apnType=dm,from sim_id=0
D/PHONE ( 516): [GeminiDataSubUtil] RADIO_TURNED_OFF:sim1_gprs_state=ATTACHED,sim2_gprs_state=DETACHED
D/PHONE ( 516): [GeminiDataSubUtil] RADIO_TURNED_OFF:current_gprs_sim_id=0,req_gprs_sim_id=-1
D/PHONE ( 516): [GeminiDataSubUtil] RADIO_TURNED_OFF:mExecuteAttachAfterDetach=false,mDetachResetMode=false
D/PHONE ( 516): [GeminiDataSubUtil] RADIO_TURNED_OFF:mEnableApnTypeReq_1=NONE,mEnableApnTypeReq_2=NONE
I/MUXD ( 202): 1504:gsm0710_base_buffer_get_frame(): Get a complete frame. ch:2, ctrl:239, len:20
D/AT ( 244):
D/AT ( 244): +CGEV: ME DETACH
D/AT ( 244): AT< +CGEV: ME DETACH
D/AT ( 244): RIL_URC_READER:+CGEV: ME DETACH
D/AT ( 244): RIL_URC_READER Enter processLine
D/RIL ( 244): Nw URC:+CGEV: ME DETACH
I/RILC ( 244): RIL(1) UNSOLICITED: RIL_UNSOL_NEED_QUERY_DATA_LIST length:8
I/RILC ( 244): 01 00 00 00 CB 0B 00 00 01 00 00 00 02 00 00 00
D/RILJ ( 516): RIL(1) :RIL_UNSOL_NEED_QUERY_DATA_LIST, execute request data call list
D/RILJ ( 516): RIL(1) :[1285]> DATA_CALL_LIST
I/RILC ( 244): RIL(1) SOCKET REQUEST: DATA_CALL_LIST length:8
I/RILC ( 244): 39 00 00 00 05 05 00 00 01 00 00 00 02 00 00 00
D/RILC ( 244): New command received from RIL(1)
D/RILC ( 244): DATA_CALL_LIST dispatched to RIL_CMD_PROXY_3
und wieder an:
Code:
D/PHONE ( 516): [GeminiRadioStatusUtil] Remove radio off SIM: xxxx
D/PHONE ( 516): [GeminiRadioStatusUtil] Remove radio off SIM: xxxx
D/PHONE ( 516): [GeminiRadioStatusUtil] setRadioSIMMode: 3
D/PHONE ( 516): [GeminiNetworkSubUtil] setRadioMode:3, 3, 3, true, true
D/GSM ( 516): [GsmSST0] setPowerStateToDesired mDesiredPowerState:true current radio state:RADIO_OFF mFirstRadioChange:false
D/GSM ( 516): [GsmSST1] setPowerStateToDesired mDesiredPowerState:true current radio state:SIM_READY mFirstRadioChange:false
D/PHONE ( 516): [GeminiNetworkSubUtil] Refresh dual SIM mode setting: 3
D/RILJ ( 516): RIL(1) :[1542]> DUAL_SIM_MODE_SWITCH
I/RILC ( 244): RIL(1) SOCKET REQUEST: DUAL_SIM_MODE_SWITCH length:16
I/RILC ( 244): DC 07 00 00 06 06 00 00 01 00 00 00 03 00 00 00
D/RILC ( 244): New command received from RIL(1)
D/RILC ( 244): DUAL_SIM_MODE_SWITCH dispatched to RIL_CMD_PROXY_1
I/RILC ( 244): RIL_CMD2_PROXY_1 wakeup
I/RILC ( 244): RIL_CMD2_PROXY_1 sleep
I/RILC ( 244): RIL_CMD_PROXY_1 wakeup
D/RILC ( 244): DUAL_SIM_MODE_SWITCH execute on RIL_CMD_PROXY_1 using channel 3
D/RIL ( 244): onRequest: DUAL_SIM_MODE_SWITCH, datalen = 4
D/RIL ( 244): radioState:0
I/RIL ( 244): getRadioState(): radioState=0
I/RIL ( 244): getRadioState(): radioState=4
D/RIL ( 244): ENTER requestRadioMode: 3
D/AT ( 244): AT send on RIL_CMD_READER_3, tid:30884736
D/AT ( 244): AT> AT+EFUN=3
D/AT ( 244): AT+EFUN=3
I/RILC ( 244): RIL_URC2_PROXY wakeup
I/RILC ( 244): RIL_URC2_PROXY sleep
I/RILC ( 244): RIL_CMD2_PROXY_2 wakeup
I/RILC ( 244): RIL_CMD2_PROXY_2 sleep
I/RILC ( 244): RIL_CMD_PROXY_2 wakeup
I/RILC ( 244): RIL_CMD_PROXY_2 sleep
I/RILC ( 244): RIL_CMD_PROXY_3 wakeup
I/RILC ( 244): RIL_CMD_PROXY_3 sleep
I/RILC ( 244): RIL_CMD2_PROXY_3 wakeup
I/RILC ( 244): RIL_CMD2_PROXY_3 sleep
I/RILC ( 244): RIL_URC_PROXY wakeup
I/RILC ( 244): RIL_URC_PROXY sleep
I/MUXD ( 202): 912:pseudo_device_read(): Enter
I/MUXD ( 202): 558:write_frame(): Sending frame to channel 5
I/MUXD ( 202): 636:write_frame(): Write a frame on channel 5 with length 10
I/MUXD ( 202): 1504:gsm0710_base_buffer_get_frame(): Get a complete frame. ch:5, ctrl:239, len:6
D/AT ( 244):
D/AT ( 244): OK
D/AT ( 244): AT< OK
D/AT ( 244): RIL_CMD_READER_3:OK
D/AT ( 244): RIL_CMD_READER_3 Enter processLine
D/AT ( 244): response received on RIL_CMD_READER_3, tid:30884736
I/RIL ( 244): setRadioState(): newState=2, oldState=0, *pState=2
I/RIL ( 244): getRadioState(): radioState=2
I/RILC ( 244): RIL(1) UNSOLICITED: UNSOL_RESPONSE_RADIO_STATE_CHANGED length:12
I/RILC ( 244): 01 00 00 00 E8 03 00 00 02 00 00 00 11 00 00 00
I/RIL ( 244): getRadioState(): radioState=2
I/RIL ( 244): getRadioState(): radioState=2
D/RIL ( 244): getSIMStatus: entering
D/RIL ( 244): UICC Type: 1
D/AT ( 244): getChannelCtxbyProxy proxyId:3, tid:30884736
D/AT ( 244): AT send on RIL_CMD_READER_3, tid:30884736
D/AT ( 244): AT> AT+CPIN?
D/AT ( 244): AT+CPIN?
D/RILJ ( 516): RIL(1) :[UNSL RIL]< UNSOL_RESPONSE_RADIO_STATE_CHANGED SIM_NOT_READY
V/RILB ( 516): setRadioState old: RADIO_OFF new SIM_NOT_READY
D/RILB ( 516): Notifying: Radio On
D/RILB ( 516): getLteOnCdmaMode=0 curVal=-1 product_type='' lteOnCdmaProductType=''
D/RILB ( 516): getLteOnCdmaMode=0 curVal=-1 product_type='' lteOnCdmaProductType=''
D/RILB ( 516): getLteOnCdmaMode=0 curVal=-1 product_type='' lteOnCdmaProductType=''
D/RILB ( 516): getLteOnCdmaMode=0 curVal=-1 product_type='' lteOnCdmaProductType=''
D/GSM ( 516): [GsmSST0] setPowerStateToDesired mDesiredPowerState:true current radio state:SIM_NOT_READY mFirstRadioChange:false
D/GSM ( 516): [GsmSST0] cm.getRadioState() is SIM_NOT_READY
D/RILB ( 516): getLteOnCdmaMode=0 curVal=-1 product_type='' lteOnCdmaProductType=''
D/RILJ ( 516): RIL(1) :[1543]> OPERATOR
I/MUXD ( 202): 912:pseudo_device_read(): Enter
I/MUXD ( 202): 558:write_frame(): Sending frame to channel 5
I/MUXD ( 202): 636:write_frame(): Write a frame on channel 5 with length 9
Habe es entsprechend auch mal mit dem AT+EFUN probiert, das Verhalten ist aber wie beim oben beschriebenen AT+CFUN.
Gibt es vielleicht irgendeine andere Möglichkeit, diese Sache (setRadioSIMMode) nicht durch Verschieben des SIM-Schalters, sondern automatisiert auszulösen? SL4A?