DIR Return Create A Forum - Home
---------------------------------------------------------
DiGiSeYTaN kafemize hosgeldiniz
HTML https://digiseytann.createaforum.com
---------------------------------------------------------
*****************************************************
DIR Return to: TEST
*****************************************************
#Post#: 523--------------------------------------------------
The ingenious product that brings eSIM to any Android phone Rout
er tablet Laptop
By: Admin Date: November 1, 2024, 12:03 pm
---------------------------------------------------------
Conventional wisdom says that an eSIM is permanently mounted
onto a device’s motherboard. After all, that’s what makes it an
embedded SIM, and that’s how it’s deployed on all smartphones
supporting the technology. As a result, most people think that
in order to take advantage of eSIM’s benefits, you need to buy a
phone that has an eSIM.
That makes sense, right? That’s what I thought too until I
learned about a product that brings eSIM to any existing Android
phone. Given that there aren’t many Android phones on the market
with eSIM support built-in, this opens up the technology to
thousands of existing models and millions of new users.
While not a fully accurate count, filtering the Google Play
Console’s Device Catalog by devices declaring the feature
“android.hardware.telephony.euicc” gives us a decent estimate of
the number of SKUs that support eSIM. Image credits: Esper.
How is it possible for a product to enable a feature that’s
supposed to be built-in? Looking into this question led me down
a rabbit hole of GSMA specifications and Android APIs to find
out how it works, and in this week’s Android Dessert Bites, I’ll
try to make sense of it all.
Meet the eSIM that's not embedded in your phone
A couple of weeks ago, I learned about a product called 9eSIM
HTML https://www.9esim.com/?coupon=hayat2024
that offers to “make
your smartphone eSIM compatible.” The company behind the
product, Telco Village, advertises that it works with any
Android device, in any country, and with any network (that
supports eSIM provisioning, obviously). All you have to do is
buy an eSIM.me card, insert it into your device’s SIM card slot,
download the app, and then scan the QR code from your carrier to
download an eSIM profile. It’s that easy.
I was initially skeptical that it would work since I thought
eSIMs had to, you know, be embedded into the device. Plus, the
product is fairly new, having only launched a few months ago,
and the only reviews I could find were from random users on
Reddit. Thankfully, a few developers I follow purchased the
product and confirmed it works as advertised.
Something you may notice after setting up your own eSIM
HTML https://www.9esim.com/?coupon=hayat2024
is that Android doesn’t
recognize your provisioned SIM profiles as eSIM profiles.
They’re not shown under the “downloaded SIM” section in Settings
> Network & Internet > SIMs like they would be if you provision
an eSIM using Google’s SIM Manager app. Instead, Android treats
the eSIM profiles you download as if they’re any other physical
SIMs inserted into the device. This doesn’t really change
anything, but it’s an interesting quirk of this setup. To
understand how this all works, we need to take a look at what’s
inside the actual eSIM.me card, how it interacts with Android,
and how eSIMs are normally supposed to be set up.
The card itself is obviously the most important piece of the
puzzle, but despite its looks, it’s not a traditional SIM card.
A traditional SIM card has a piece of silicon containing a very
low-power CPU and a tiny amount of storage to store the software
that communicates with the reader, the SIM profile, some
messages, and some contacts. This silicon is called a UICC, or
universal integrated circuit card, which is a smart card that
conforms to the ETSI specification.
Traditional SIM cards come in a few form factors, from 1FF
(full-size) to 2FF (mini) to micro (3FF) to nano (4FF). The
eSIM.me card is triple-cut, ie. universal, so it can fit in SIM
card trays ranging from 1FF to 4FF size. Traditional eSIMs come
in the much smaller MFF2 (machine-to-machine) form factor, which
is small enough to embed in the device’s motherboard. However,
there’s nothing preventing an eSIM from being implemented in one
of the form factors for the traditional removable SIM card,
which is what the eSIM.me card does. (In fact, the GSMA’s
consumer eSIM specification even references removable eUICCs, as
does Android’s documentation on implementing eSIM.)
Like a traditional SIM card, the eSIM.me card has a piece of
silicon with its own CPU and storage. But what differentiates
the eSIM.me card from a traditional SIM card is that the smart
card follows the newer eSIM specification from top to bottom.
Instead of a traditional UICC, the eSIM.me card has an eUICC, or
embedded universal integrated circuit card, which supports the
GSMA’s consumer eSIM specification for managing multiple eSIM
profiles and facilitates remote SIM provisioning.
The software within the eUICC, a JavaCard STK SIM applet that
runs in an eSIM OS, communicates with the Android OS via
application protocol data unit (APDU) commands, which are
defined by the ISO-7816-4 standard. The eSIM.me app opens a
logical channel to the eUICC so it can send those APDU commands.
It does this through the Open Mobile API (OMAPI), which was
added to Android with Android 9.
OMAPI standardizes the way apps communicate with secure
elements/smart cards, such as a UICC or eUICC. The API existed
prior to Android 9, but before its inclusion in AOSP, OEMs would
have to include the OMAPI library in their builds so developers
could use the API. Some OEMs did include the library in their
pre-Android 9 builds, which is why the eSIM.me website mentions
that “devices from Samsung, Huawei and Xiaomi even support eSIM
HTML https://www.9esim.com/?coupon=hayat2024from
Android version 7.”
OMAPI’s introduction to AOSP also standardized the way that
Android devices communicated with UICC/eUICC (and secure
elements in general), making it possible to build an app like
eSIM.me that can communicate with an eUICC across devices from
different OEMs.
It would be problematic if just any app on your phone could
communicate with the eUICC using the APIs I just mentioned.
After all, the eUICC stores data about your SIM profile, which
the carrier uses to decide whether your device can connect to
their network as well as what services you’re entitled to. The
eSIM.me app is just another app you can install from Google
Play, so how does Android know to let it, but not any other app,
communicate with the eUICC? The solution is through UICC carrier
privilege rules, a mechanism that grants the owner of a UICC
access to privileged telephony APIs. The eUICC within the
eSIM.me card has a file in it (called the access rule file
[ARF]) that stores a certificate. Android loads the certificate
from the ARF and grants UICC carrier privileges to apps that are
signed by that certificate. This way, the eSIM.me app can manage
the eUICC despite being a user-installed app.
As a consequence of being a user-installed app, though, the
eSIM.me app can’t access Android’s system APIs for eSIM
management. This is why the app can’t integrate into settings
and why none of the profiles it downloads are shown as
downloaded SIMs. Google actually has an eSIM management app that
integrates into settings, the previously mentioned “SIM
Manager”, but it’s proprietary and has some GMS dependencies, so
it’s not a viable option for many AOSP-based projects. A free
and open source eSIM management app has been in demand for
years, and there’s finally a project that addresses this need.
HTML https://www.9esim.com/?coupon=hayat2024
*****************************************************