MultiSIM CSP

The MultiSIM configuration service provider (CSP) is used by the enterprise to manage devices with dual SIM single active configuration. An enterprise can set policies on whether that user can switch between SIM slots, specify which slot is the default, and whether the slot is embedded. This CSP was added in Windows 10, version 1803.

The following diagram shows the MultiSIM configuration service provider in tree format.

MultiSIM CSP diagram

./Device/Vendor/MSFT/MultiSIM
Root node.

ModemID
Node representing a Mobile Broadband Modem. The node name is the modem ID. Modem ID is a GUID without curly braces, with exception of "Embedded" which represents the embedded modem.

ModemID/Identifier
Modem ID.

Supported operation is Get. Value type is string.

ModemID/IsEmbedded
Indicates whether this modem is embedded or external.

Supported operation is Get. Value type is bool.

ModemID/Slots
Represents all SIM slots in the Modem.

ModemID/Slots/SlotID
Node representing a SIM Slot. The node name is the Slot ID. SIM Slot ID format is "0", "1", etc., with exception of "Embedded" which represents the embedded Slot.

ModemID/Slots/SlotID/Identifier
Slot ID.

Supported operation is Get. Value type is integer.

ModemID/Slots/SlotID/IsEmbedded
Indicates whether this Slot is embedded or a physical SIM slot.

Supported operation is Get. Value type is bool.

ModemID/Slots/SlotID/IsSelected
Indicates whether this Slot is selected or not.

Supported operation is Get and Replace. Value type is bool.

ModemID/Slots/SlotID/State
Slot state (Unknown = 0, OffEmpty = 1, Off = 2, Empty = 3, NotReady = 4, Active = 5, Error = 6, ActiveEsim = 7, ActiveEsimNoProfile = 8)

Supported operation is Get. Value type is integer.

ModemID/Policies
Policies associated with the Modem.

ModemID/Policies/SlotSelectionEnabled
Determines whether the user is allowed to change slots in the Cellular settings UI. Default is true.

Supported operation is Get and Replace. Value type is bool.

Examples

Get modem

<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Get>
      <CmdID>1</CmdID>
      <Item>
        <Target>
          <LocURI>
            ./Vendor/MSFT/MultiSIM
          </LocURI>
        </Target>
      </Item>
    </Get>
    <Final/> 
  </SyncBody>
</SyncML>

Get slots

<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Get>
      <CmdID>1</CmdID>
      <Item>
        <Target>
          <LocURI>
            ./Vendor/MSFT/MultiSIM/Embedded/Slots
          </LocURI>
        </Target>
      </Item>
    </Get>
    <Final/> 
  </SyncBody>
</SyncML>

Get slot state

<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Get>
      <CmdID>1</CmdID>
      <Item>
        <Target>
          <LocURI>
            ./Vendor/MSFT/MultiSIM/Embedded/Slots/Embedded/State
          </LocURI>
        </Target>
      </Item>
    </Get>
    <Final/> 
  </SyncBody>
</SyncML>

Select slot

<SyncML xmlns="SYNCML:SYNCML1.2">
  <SyncBody>
    <Replace>
      <CmdID>1</CmdID>
      <Item>
        <Target>
          <LocURI>
            ./Vendor/MSFT/MultiSIM/Embedded/Slots/0/IsSelected
          </LocURI>
        </Target>
        <Meta>
          <Format xmlns="syncml:metinf">bool</Format>
          <Type>text/plain</Type>
        </Meta>
        <Data>true</Data>
      </Item>
    </Replace>
    <Final/> 
  </SyncBody>
</SyncML>