eSIM only discoverable on logical slot 0 #312

Closed
opened 2026-03-03 15:09:35 +01:00 by jstys · 4 comments

Version: Latest Master
Phone: Nothing Phone 3
Android Version: 15
OpenEUICC Mode: Privileged

OpenEUICC is only able to connect to my eSIM when the slot mapping is setup such that the eSIM physical slot aligns with logical slot 0. The logs indicate that the EuiccChannelManager was able to open a channel for logical slot 1, but the channel was invalid. Is this expected behavior? The eSIM is accessible via system UI and operable as well as set to default for calls/sms/data etc. Even disabling the SIM in logical slot 0 on the system UI does not resolve the issue after restarting OpenEUICC.

Version: Latest Master Phone: Nothing Phone 3 Android Version: 15 OpenEUICC Mode: Privileged OpenEUICC is only able to connect to my eSIM when the slot mapping is setup such that the eSIM physical slot aligns with logical slot 0. The logs indicate that the EuiccChannelManager was able to open a channel for logical slot 1, but the channel was invalid. Is this expected behavior? The eSIM is accessible via system UI and operable as well as set to default for calls/sms/data etc. Even disabling the SIM in logical slot 0 on the system UI does not resolve the issue after restarting OpenEUICC.
Collaborator

Please use "Developer Options", Click "Version" 7 times in Settings.

Enable "Use TelephonyManager everywhere" option in "Developer Options"

Please use "Developer Options", Click "Version" 7 times in Settings. Enable "Use TelephonyManager everywhere" option in "Developer Options"

Same issue on Pixel 7a (lynx) running iodéOS 7.3 (LineageOS 23.0 / Android 16 base) with OpenEUICC as privileged system LPA.

My eUICC (physical slot 0) supports MEP (mIsMultipleEnabledProfilesSupported=true). I have a physical SIM in the removable slot (physical slot 1). The eSIM profile was downloaded successfully and is visible in the profile list (profileClass=2, state=0). Dual SIM is enabled in OpenEUICC.

The slot mapping on my device looks like this:

physical slot 0 (eUICC), port 0 → logical slot 1  (active, iccId empty)
physical slot 0 (eUICC), port 1 → inactive
physical slot 1 (pSIM),  port 0 → logical slot 0  (active)

So the eUICC sits on logical slot 1, which matches the pattern described in this issue.

When I try to enable the downloaded eSIM profile (either from the OpenEUICC app or from Android Settings), I get this:

OpenEuiccService: onSwitchToSubscriptionWithPort slotId=0 portIndex=0 iccid=**** forceDeactivateSim=true
EuiccChannelManager: Trying TelephonyManager for slot 0 port 0
PhoneInterfaceManager: iccOpenLogicalChannel: Exception: com.android.internal.telephony.CommandException: NO_SUCH_ELEMENT
EuiccChannelManagerService: Foreground task encountered an error
EuiccChannelManagerService: java.lang.RuntimeException: Could not switch profile
    at im.angry.openeuicc.service.EuiccChannelManagerService$launchProfileSwitchTask$1.invokeSuspend(EuiccChannelManagerService.kt:495)
    at im.angry.openeuicc.service.EuiccChannelManagerService$launchForegroundTask$2$1.invokeSuspend(EuiccChannelManagerService.kt:293)

The full flow from Android Settings before the error:

SimOnboardingVM: In DSDS+MEP mode, no active esim. return the active esim slot's port. If no active esim slot, the port is 0
SimOnboardingVM: Set esim into the SubId6 Physical Slot0:Port0
SimOnboardingVM: Start to switch to euicc slot.
SimOnboardingVM: Successfully SimSlotMapping. Start to enable/disable esim
EuiccController: subId: 6 portIndex: 0 forceDeactivateSim: false usePortIndex: true callingPackage: com.android.settings
OpenEuiccService: onSwitchToSubscriptionWithPort slotId=0 portIndex=0 iccid=**** forceDeactivateSim=true
EuiccChannelManager: Trying TelephonyManager for slot 0 port 0
PhoneInterfaceManager: iccOpenLogicalChannel: Exception: com.android.internal.telephony.CommandException: NO_SUCH_ELEMENT

Here is the UiccCardInfo dump:

UiccCardInfo (mIsEuicc=true, mCardId=0, mPhysicalSlotIndex=0, mIsRemovable=false,
  mIsMultipleEnabledProfilesSupported=true,
  mPortList=[
    UiccPortInfo (isActive=true, iccId=, portIndex=0, mLogicalSlotIndex=1),
    UiccPortInfo (isActive=false, iccId=, portIndex=1, mLogicalSlotIndex=-1)
  ])
UiccCardInfo (mIsEuicc=false, mCardId=1, mPhysicalSlotIndex=1, mIsRemovable=true,
  mIsMultipleEnabledProfilesSupported=false,
  mPortList=[
    UiccPortInfo (isActive=true, iccId=****, portIndex=0, mLogicalSlotIndex=0)
  ])

I have already tried enabling "Use TelephonyManager everywhere" and "Send refresh command to modem" in developer options, removing the physical SIM and trying without it, toggling airplane mode, and rebooting multiple times. None of that helped.

My bootloader is locked so I cannot root the device to test with lpac or remap slots via cmd phone without a factory reset.

The dumpsys econtroller confirms OpenEUICC is properly connected as the system LPA (curState=ConnectedState, mSelectedComponent=OpenEuiccService). The EuiccOperationSidecar returns result code 2 (error) with detailed code 0.

Same issue on Pixel 7a (lynx) running iodéOS 7.3 (LineageOS 23.0 / Android 16 base) with OpenEUICC as privileged system LPA. My eUICC (physical slot 0) supports MEP (mIsMultipleEnabledProfilesSupported=true). I have a physical SIM in the removable slot (physical slot 1). The eSIM profile was downloaded successfully and is visible in the profile list (profileClass=2, state=0). Dual SIM is enabled in OpenEUICC. The slot mapping on my device looks like this: ``` physical slot 0 (eUICC), port 0 → logical slot 1 (active, iccId empty) physical slot 0 (eUICC), port 1 → inactive physical slot 1 (pSIM), port 0 → logical slot 0 (active) ``` So the eUICC sits on logical slot 1, which matches the pattern described in this issue. When I try to enable the downloaded eSIM profile (either from the OpenEUICC app or from Android Settings), I get this: ``` OpenEuiccService: onSwitchToSubscriptionWithPort slotId=0 portIndex=0 iccid=**** forceDeactivateSim=true EuiccChannelManager: Trying TelephonyManager for slot 0 port 0 PhoneInterfaceManager: iccOpenLogicalChannel: Exception: com.android.internal.telephony.CommandException: NO_SUCH_ELEMENT EuiccChannelManagerService: Foreground task encountered an error EuiccChannelManagerService: java.lang.RuntimeException: Could not switch profile at im.angry.openeuicc.service.EuiccChannelManagerService$launchProfileSwitchTask$1.invokeSuspend(EuiccChannelManagerService.kt:495) at im.angry.openeuicc.service.EuiccChannelManagerService$launchForegroundTask$2$1.invokeSuspend(EuiccChannelManagerService.kt:293) ``` The full flow from Android Settings before the error: ``` SimOnboardingVM: In DSDS+MEP mode, no active esim. return the active esim slot's port. If no active esim slot, the port is 0 SimOnboardingVM: Set esim into the SubId6 Physical Slot0:Port0 SimOnboardingVM: Start to switch to euicc slot. SimOnboardingVM: Successfully SimSlotMapping. Start to enable/disable esim EuiccController: subId: 6 portIndex: 0 forceDeactivateSim: false usePortIndex: true callingPackage: com.android.settings OpenEuiccService: onSwitchToSubscriptionWithPort slotId=0 portIndex=0 iccid=**** forceDeactivateSim=true EuiccChannelManager: Trying TelephonyManager for slot 0 port 0 PhoneInterfaceManager: iccOpenLogicalChannel: Exception: com.android.internal.telephony.CommandException: NO_SUCH_ELEMENT ``` Here is the UiccCardInfo dump: ``` UiccCardInfo (mIsEuicc=true, mCardId=0, mPhysicalSlotIndex=0, mIsRemovable=false, mIsMultipleEnabledProfilesSupported=true, mPortList=[ UiccPortInfo (isActive=true, iccId=, portIndex=0, mLogicalSlotIndex=1), UiccPortInfo (isActive=false, iccId=, portIndex=1, mLogicalSlotIndex=-1) ]) UiccCardInfo (mIsEuicc=false, mCardId=1, mPhysicalSlotIndex=1, mIsRemovable=true, mIsMultipleEnabledProfilesSupported=false, mPortList=[ UiccPortInfo (isActive=true, iccId=****, portIndex=0, mLogicalSlotIndex=0) ]) ``` I have already tried enabling "Use TelephonyManager everywhere" and "Send refresh command to modem" in developer options, removing the physical SIM and trying without it, toggling airplane mode, and rebooting multiple times. None of that helped. My bootloader is locked so I cannot root the device to test with lpac or remap slots via cmd phone without a factory reset. The dumpsys econtroller confirms OpenEUICC is properly connected as the system LPA (curState=ConnectedState, mSelectedComponent=OpenEuiccService). The EuiccOperationSidecar returns result code 2 (error) with detailed code 0.
Collaborator

i think this is a problem with baseband (the baseband does not provide this capability).

PhoneInterfaceManager: iccOpenLogicalChannel: Exception: com.android.internal.telephony.CommandException: NO_SUCH_ELEMENT

at least the RIL (radio interface layer) is not allowed to access slot 0 port 0

i think this is a problem with baseband (the baseband does not provide this capability). ``` PhoneInterfaceManager: iccOpenLogicalChannel: Exception: com.android.internal.telephony.CommandException: NO_SUCH_ELEMENT ``` at least the RIL (radio interface layer) is not allowed to access slot 0 port 0
Owner

Closing as wontfix, not a OpenEUICC issue.

Closing as wontfix, not a OpenEUICC issue.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
4 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
PeterCxy/OpenEUICC#312
No description provided.