クマは森で用を足しますか?

アウトプットは重要です。

GlocalMe eSIM Trio を使ってみた

GlocalMe のサイトに eSIM Trio の販売ページが出来ていることに気付き、早速入手して使ってみることにしました。初期のデータ通信契約込みでの購入になるため、Japan & Korea の最も安い 10GB/7DAYS を選択すると 16.50 ドル。別途必要になる送料はさておき、リーズナブルな価格でのご提供です。

GlocalMe eSIM Trio カード (マルチカット)

Removable eUICC カードです

GlocalMe アプリを端末にインストールし、カード裏面に書かれているデフォルトの ICCID を入力すれば、すぐに利用可能な状態になります。この OTA-eSIM- ナントカという名前の初期データパッケージですが、ES10c: GetProfilesInfo (BF2D) で得られるリストには載りません。GlocalMe 上で追加購入したデータパッケージも同様で、LPA には「eSIM プロファイル」としては扱われないものでした。

上のスクリーンショットにある "Download eSIM" メニューを使うことで、eSIM Trio を eUICC カードとして利用することができます。eSIM プロファイルのダウンロード手続きには、QR コードのスキャンまたはアクティベーションコードのマニュアル入力を選択することができます。
お試しで野良のテストプロファイルをダウンロードしてみると、Remaining Download Attempts が 3 Times から 2 Times に減りました。4 回目以降のダウンロードを行いたい場合には、追加のお支払 1 ドルで 1 回分、5 ドルで 10 回分を購入することができる仕様です。

Class C (1.8V) 非サポート?

届いた eSIM Trio カードを Google Pixel 9 に装着してみたのですが、なんとカードが認識されません。一方、既に普段使い用ではなくなっている Pixel 5 では認識されます。ということで ATR (Answer To Reset) を確認することにしたのですが、もしかすると今回入手したカードの仕様がそうだっただけで、皆さまが手に取るカードとは様子が異なるかもしれないことを予めご承知おきください。

D/AnswerToReset( 4501): Successfully parsed the ATR string
    3b9f94803f03a08031a073be211367509a406e7ec104c1 into AnswerToReset:{
        mConventionByte=3B,mFormatByte=9F,mInterfaceBytes={
            {TA=94,TB=null,TC=null,TD=80}
            {TA=null,TB=null,TC=null,TD=3F}
            {TA=03,TB=A0,TC=null,TD=null}},
        mHistoricalBytes={
            80,31,A0,73,BE,21,13,67,50,9A,40,6E,7E,C1,04,
        },
        mCheckByte=C1
    }
D/UiccSlot( 4501):  checkIsEuiccSupported : false

TD2 の b1-b4 が 'F' (Protocol T=15) なので、その次のセットが Global Interface Bytes でしたね。TA3 の b1:b6 が Supply Voltage Classes なので下表と照合してみると、どうやらこのカードがサポートしているのは Class A (5V) と Class B (3V) だけで、Class C (1.8V) については非サポートのようです。

Supply voltage classes from ETSI TS 102 221

Google Pixel 8 あたりから Class C だけをサポートするようになったという記事が散見される(例えば)ので、それかもしれません。

過去記事 from www.reddit.com

eSIM Trio の販売ページに貼られているスライドでは "Fully compatible with Apple and Android" と表現されているので、今後この表現もしくはカードの仕様が変わるのかどうか気になります。

"Fully Compatible" ?

認証済み eUICC ではない?

ATR を見ていてもう一点目に留まったのは、Global Interface Bytes の TB3 です。TB3 の b2 がセットされていないということは、一般的なセルラー通信用モデムには GSMA SGP.22 対応の eUICC としては認識されないことが予想されます。GlocalMe アプリからアクセスできればいいので、その点については特に困ることはないのだと思います(大前提として UICC としては認識される必要はありますが)。

TB in Global Interface Bytes from ETSI 102 221

GSMA SUS-UP (Security Accreditation Scheme for UICC Production) の認定番号はどうなっているんだろうと EUICCInfo2 (BF22) を読んでみたら、そこには "SASAccreditationNumber" と書かれていました。これは認定を受けていないと読んで良いでしょうか。

profileVersion [1] 020100
svn [2] 020200
euiccFirmwareVer [3] 190400
extCardResource [4] 81010082040004C48083023EA5
uiccCapability [5] 017F32
ts102241Version [6] 090200
globalplatformVersion [7] 020300
rspCapability [8] 0490
euiccCiPKIdListForVerification [9] 041481370F5125D0B1D408D4C3B232E6D25E795BEBFB
euiccCiPKIdListForSigning [10] 041481370F5125D0B1D408D4C3B232E6D25E795BEBFB
ppVersion 010000
sasAcreditationNumber "SASAccreditationNumber"

製品の仕様上、端末に eUICC だと認識されてプリインされている LPA に動かれたりしても面倒なので、標準仕様から少し外れたカード仕様にして意図的に認定を受けてはいないということかもしれません。ただ、素性が定かではないカードへの eSIM プロファイルのダウンロードを快く思わない通信事業者もいるかもしれません。ドコモ等の eSIM プロファイルをダウンロードできるかどうか、どこかで人柱が立ってくれることに期待します。

eUICC アクセスはいつもの OMAPI

GlocalMe アプリが OTA SIM ではなく eSIM プロファイルを取り扱う場合には、Android OMAPI を通して eSIM Trio カードにアクセスします。アクセスルールは ARA-M ではなく PKCS#15 (ARF) の方に書かれていて、ISD-R に対するアクセスを GlocalMe アプリに許可するという設定でした。UICC Carrier Privileges の利用は無いようです。

I/SecureElement-AccessRuleCache(): findAccessRule() Case A
    REF_DO:
        AID_REF_DO: 4f10a0000005591010ffffffff8900000100
        Hash_REF_DO: c114661966df2c706b99692a37fc9204408cf8d88f77, ..
I/SecureElement-AccessRuleCache():  [
    mPackageName=com.wws.glocalme,
    mAccess=ALLOWED, mApduAccess=ALLOWED, ..
]

iPhone を持っていないので未確認なのですが、iOS 上での動作はどうなっているんでしょうか。