EM9291 won't get IP for WWAN0 on Google Fi

Hi,

I’m trying to get EM9291 and EM9191 working on Android 14 (AOSP) and modem seems to be connected to carrier, but not getting IP address assigned to WWAN0.
I think I’m missing something obvious. Please help.

I’m on latest Generic FW and using SIM card from Google Fi.

ati3
Manufacturer: Sierra Wireless, Incorporated
Model: EM9291
Revision: SWIX65C_02.17.08.00 944ad5 jenkins 2024/08/01 20:22:05
IMEI: 358186652331070
IMEI SV:  5
FSN: 834352733002B1
+GCAP: +CGSM

AT!GSTATUS?
!GSTATUS: 
Current Time:  1289		Temperature: 30

Reset Counter: 1		Mode:        ONLINE         
System mode:   LTE        	PS state:    Attached     
LTE band:      B71    		LTE bw:      5 MHz   
LTE Rx chan:   68811		LTE Tx chan: 133347
EMM state:     Registered     	Normal Service 
RRC state:     RRC Idle        
IMS reg state: NOT REGISTERED  	IMS mode:    Normal       
IMS Srv State: UNKNOWN SMS,UNKNOWN VoIP

PCC Rx0 RSSI:  -82.1		PCC Rx0 RSRP:  -113.3
PCC Rx1 RSSI:  -94.3		PCC Rx1 RSRP:  -128.6
PCC Tx Power:  ---		TAC:         55ef (21999)
RSRQ (dB):     -17.2		Cell ID:     023D833D (37585725)
SINR (dB):     -8.2

NR5G band:       ---		NR5G bw:         ---		
NR5G Tx Power:   ---		NR5G Tx chan:    ---		
NR5G Rx chan:    ---		NR5G RSRP (dBm): ---		
NR5G RSRQ (dB):  ---		NR5G SINR (dB):  ---		

at+cgdcont?
+CGDCONT: 1,"IP","h2g2","0.0.0.0",0,0,0,0,,,,,,,,,"",,,,0
+CGDCONT: 2,"IPV4V6","h2g2","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0,,,,,,,,,"",,,,0

OK
at+cgpaddr=1
+CGPADDR: 1,"26.41.62.91"

OK
at+cgcontrdp
+CGCONTRDP: 1,5,"h2g2","26.41.62.91",,"10.177.0.34","10.177.0.210"

OK
AT+COPS?
+COPS: 1,0,"Google Fi",7

AT!USBCOMP
ERROR
AT!USBCOMP?
Config Index: 1
Config Type:  4 (MBIM V2)
Interface bitmask: 00001009 (diag,modem,mbim) 

AT+CEER
+CEER: EMM detached

ATD*99***1#
NO CARRIER

Did you use the mbim command to establish data connection?

No, I’m under Android and qmicli and mbim tools not available and Sierra RIL package is used instead

Then did you call the ril api to establish data connection?

Readme in Sierra RIL package only covers how to compile and install it and everything went according to instructions - I was able to compile kernel modules, RIL libraries and etc.
On Android boot I can see RIL daemon starts, find drivers, find SIM card and in general seems to running happily.

I guess I’m missing detailed HowTo or guide on how to establish data connection.

I’m attaching RIL log
aosp_ril_em9291_log.txt (980.9 KB)

Then are you able to test this with linux system?
This can at least prove if module and network have problem

Yeah, this is an option. Will take some time for me to do it thou.
Again, I’m surprised I can’t find a guide how to establish connection in Android, similar to https://techship.com/support/faq/how-to-step-by-step-set-up-a-data-connection-over-qmi-interface-using-qmicli-and-in-kernel-driver-qmi-wwan-in-linux/

i don’t quite see your log to call API RIL_REQUEST_SETUP_DATA_CALL for establishing data channel

I can only see RequestSetDataProfiles() is called for the RIL API RIL_REQUEST_SET_DATA_PROFILE

Maybe this is because I’m getting RADIO_NOT_AVAILABLE ? Not sure what is cause and what is effect.

Properties:

dart_mx8mp:/ # getprop | grep -i telep                                                                                                                                                                    
[cache_key.telephony.phone_account_to_subid]: [2784160531825058964]
[cache_key.telephony.subscription_manager_service]: [2784160531825058961]
[ro.telephony.default_network]: [33]
dart_mx8mp:/ # getprop | grep -i gsm                                                                                                                                                                      
[gsm.current.phone-type]: [1]
[gsm.network.type]: [LTE]
[gsm.operator.alpha]: [T-Mobile]
[gsm.operator.iso-country]: [us]
[gsm.operator.isroaming]: [false]
[gsm.operator.numeric]: [310260]
[gsm.sim.operator.alpha]: []
[gsm.sim.operator.iso-country]: [us]
[gsm.sim.operator.numeric]: [310260]
[gsm.sim.state]: [LOADED]
[gsm.version.baseband]: [2.17.08.00 944ad5 jenkins 2024/08/01 20:22:05]
[gsm.version.ril-impl]: [Sierra Ril MBPA_SDK_R22_ENG1]
dart_mx8mp:/ # getprop | grep -i radio                                                                                                                                                                    
[persist.radio.is_vonr_enabled_0]: [false]
[ro.radio.noril]: [no]
dart_mx8mp:/ # getprop | grep -i ril                                                                                                                                                                      
[gsm.version.ril-impl]: [Sierra Ril MBPA_SDK_R22_ENG1]
[init.svc.vendor.ril-daemon]: [running]
[init.svc_debug_pid.vendor.ril-daemon]: [510]
[persist.vendor.rild.libargs]: [-d/dev/cdc-wdm0]
[persist.vendor.sierra.logginglevel.ril]: [7]
[ro.boottime.vendor.ril-daemon]: [18710405500]
[ro.radio.noril]: [no]
[vendor.rild.libpath]: [/vendor/lib64/libqmi2-ril-swi-1.6.so]

10-04 18:45:58.873   970   970 D RILJ    : [0007]> SIGNAL_STRENGTH [PHONE0]
10-04 18:45:58.874   519   519 D RILC    : getSignalStrength_1_6: serial 7
10-04 18:45:58.874   519   544 D RIL     : OnRilRequest[0007](0): SIGNAL_STRENGTH:19 (data:0x0, datalen:0)
10-04 18:45:58.874   519   544 D RIL     : Response[0007]: E_RADIO_NOT_AVAILABLE (response:0x0, responselen:0)
10-04 18:45:58.874   519   544 D RILC    : RequestComplete, RIL_SOCKET_1
10-04 18:45:58.874   519   544 D RILC    : Calling responseFunction() for token 7
10-04 18:45:58.874   519   544 D RILC    : getSignalStrengthResponse(): 7
10-04 18:45:58.874   519   544 E RILC    : getSignalStrengthResponse: Invalid response. Length 0, expected 88
10-04 18:45:58.877   970  1091 D RILJ    : [0007]< SIGNAL_STRENGTH error 1 [PHONE0]
10-04 18:45:58.879   970  1091 D RilRequest: [0007]< SIGNAL_STRENGTH error: com.android.internal.telephony.CommandException: RADIO_NOT_AVAILABLE ret=SignalStrength:{mCdma=CellSignalStrengthCdma: cdmaDbm=0 cdmaEcio=0 evdoDbm=0 evdoEcio=0 evdoSnr=0 level=4,mGsm=CellSignalStrengthGsm: rssi=-113 ber=0 mTa=0 mLevel=0,mWcdma=CellSignalStrengthWcdma: ss=-113 ber=0 rscp=-120 ecno=-24 level=0,mTdscdma=CellSignalStrengthTdscdma: rssi=-113 ber=0 rscp=-120 level=0,mLte=CellSignalStrengthLte: rssi=-113 rsrp=2147483647 rsrq=0 rssnr=0 cqiTableIndex=2147483647 cqi=0 ta=0 level=1 parametersUseForLevel=1,mNr=CellSignalStrengthNr:{ csiRsrp = 2147483647 csiRsrq = 2147483647 csiCqiTableIndex = 2147483647 csiCqiReport = [] ssRsrp = 2147483647 ssRsrq = 0 ssSinr = 0 level = 0 parametersUseForLevel = 1 timingAdvance = 2147483647 },primary=CellSignalStrengthLte} result={ when=-37s697ms what=6 target=com.android.internal.telephony.SignalStrengthController }

Did you contact distributor to get support?

Yep. They requested module log collected thru dmlogger - sent a few days ago and waiting for reply.
So, should RIL daemon establish data connection on its own, without issuing anything manually ?

you android system should call the RIL API RIL_REQUEST_SETUP_DATA_CALL automatically to establish data connection