eSim and Phone Number
- Aug 28
- 5 min read
Deployment and Provisioning Guide: De-Googled Voice & Cellular Data via Cheogram (JMP.chat) and Silent.link on GrapheneOS
Target Audience: System Administrators, Privacy Engineers, and Technical End Users
System Scope: Hardened Google Pixel Mobile Devices running GrapheneOS
1. Pre-Flight Configuration & System Hardening
1.1 Firmware & Hardware Verification
Access the host device settings via Settings > About phone.
Scroll to SIM status and verify the device is factory unlocked. If tied to a carrier, eSIM profile provisioning will fail during baseband registration.
Power on or reboot the device. Observe the bootloader splash screen to verify Verified Boot State: Green or Yellow with your custom key hash. Do not proceed on an unlocked bootloader running non-validated firmware.
1.2 Baseband eSIM Initialization
Navigate to Settings > Network & internet > SIMs.
Ensure the GrapheneOS privileged SIM Manager feature is active.
Note: Modern builds of GrapheneOS include isolated eSIM management functionality that does not require sandboxed Google Play Services.
2. Cellular Data Provisioning via Silent.link (eSIM)
2.1 Purchasing the Silent.link eSIM (Non-KYC)
Launch the Vanadium browser and navigate to the official Silent.link portal.
Select your targeted plan (Data-Only or Identity).
Select a cryptocurrency payment method (Bitcoin, Lightning Network, or Monero).
Complete the transaction. Once settled, do not close the window.
Save or display the confirmation page containing:
Activation QR Code
LPA String (LPA:1$...)
APN String
2.2 Profile Installation
Choose one of the following methods to install the eSIM profile onto your device:
Method A: Camera Scan
Open Settings > Network & internet > SIMs.
Select Download a SIM instead (or tap +).
Frame the confirmation QR code on your secondary screen within the device view-finder.
Confirm the profile download when prompted.
Method B: Manual LPA String Entry
Open Settings > Network & internet > SIMs > Download a SIM instead.
Tap Need help? > Enter it manually.
Paste the complete LPA:1$... string into the input field and submit.
+-------------------------------------------------------------+
| Settings > Network & internet > SIMs |
| └─> Download a SIM instead (+ icon) |
| └─> Scan QR Code OR select "Enter it manually" |
| └─> Input LPA:1$... string |
+-------------------------------------------------------------+
2.3 Mobile Network & APN Configuration
Enable Roaming: Go to Settings > Network & internet > SIMs > [Silent.link Profile]. Toggle Data roaming to ON.
[!] CAUTION: Silent.link profiles rely on global roaming partners. If Data Roaming is toggled OFF, mobile registration will fail.
Set Data Default: Tap Mobile data and set the Silent.link line as your primary data engine.
Configure Access Point Name (APN):
Scroll down the profile page and select Access Point Names.
Tap the + (Add) button.
Set Name to Silent Data.
Set APN to the precise identifier provided on your invoice page (e.g., global.data or provider specific string).
Leave Username, Password, Proxy, and MMS fields empty unless explicitly defined on your order summary.
Tap the three-dot menu (⋮) in the top right corner and tap Save. Select your new APN profile radio button.
Validation: Disable Wi-Fi. Confirm an active IP tunnel by checking cellular data indicators (LTE/5G) in the notification bar.
3. Application Infrastructure Setup
3.1 Provisioning F-Droid / Obtainium
Download the direct installation APK for F-Droid or Obtainium from their verified domain inside Vanadium.
Tap the downloaded .apk file.
When prompted by the system, grant Allow from this source to execute the installation package.
3.2 Fetching and Installing Cheogram
Open F-Droid (or Obtainium).
Add the Cheogram repository if required, or search directly for Cheogram.
Download and install Cheogram (Package: com.cheogram.android).
4. Telephony Provisioning via JMP.chat
4.1 Jabber ID (JID) & Number Registration
Launch Cheogram.
Select I need to sign up to generate a new XMPP identity, or sign into an existing account.
Follow the initial account creation prompts (Username/Password selection) to instantiate your client session.
+-------------------------------------------------------------+
| Launch Cheogram App |
| └─> Select "I need to sign up" |
| └─> Choose XMPP Username & Password |
| └─> Launch JMP.chat Bot Interface |
+-------------------------------------------------------------+
Upon logging in, select JMP.chat from the sign-up options to initialize the registration wizard with the Cheogram bot.
Select your target telephone number using the interactive search commands:
By Area Code: Input desired 3-digit area code (e.g., 512).
By Vanity Match: Prefix input with a tilde (e.g., ~7777).
Confirm your desired number selection from the rendered list.
4.2 Subscription Settlement
Select your preferred cryptocurrency option (Bitcoin, Lightning, or Monero) within the bot workflow.
The bot will render a payment address and exact crypto value. Transfer the precise amount.
Wait for network validation. The bot will automatically publish a success response to your chat once confirmed, attaching your active phone number to your JID.
5. Android Operating System Integration
5.1 Runtime Permission Configuration
Open Settings > Apps > See all apps > Cheogram.
Select Permissions and explicitly grant:
Microphone: Set to Allow only while using the app (enables voice calling).
Contacts: Set to Allow (enables local resolution of system phone numbers to XMPP JIDs).
Notifications: Set to Allowed (enables inbound call ringing and instant message pushes).
5.2 System Phone App Integration & Power Settings
Launch Cheogram and accept the prompt to initialize Dialer Integration.
Open Android System Settings > Apps > Default apps > Phone app.
Change the active handler from standard System Dialer to Cheogram.
[!] CRITICAL: OS Power Management Configuration GrapheneOS background restrictions will terminate persistent socket connections.
Go to Settings > Apps > See all apps > Cheogram > App battery usage.
Switch the setting from Optimized to Unrestricted.
6. Verification & Troubleshooting Matrix
6.1 Diagnostic Protocol
Perform the following checks to verify full operational capability:
Cellular Data Link: Turn off Wi-Fi. Verify IP reachability by loading a standard webpage over the Silent.link eSIM connection.
Outbound PSTN Voice Call: Open the Android dialer keypad, dial a standard PSTN number, and press Call. Confirm the call routes over the Cheogram service engine.
Inbound PSTN SMS: Send a text message from an external line to your newly provisioned JMP.chat number. Confirm delivery inside Cheogram's chat thread.
6.2 Troubleshooting Matrix
Issue / Error Symptom | Potential Cause | Operational Resolution Step |
No cellular data connectivity | Missing or misconfigured APN entry | Verify Data Roaming is ON. Navigate to APN settings and confirm key/value configuration matches Silent.link invoice. |
eSIM installation failure | Baseband rejected string or missing connection | Ensure active Wi-Fi connection during download. Re-enter string manually via Settings > SIMs > Download a SIM instead > Enter it manually. |
Inbound calls fail to ring when app is closed | Android battery management terminated background process | Navigate to Settings > Apps > Cheogram > App battery usage and set restriction to Unrestricted. |
Outbound call fails immediately from native dialer | Telecom connection service unlinked | Launch Cheogram, re-verify dialer integration settings, or re-select Cheogram under Settings > Apps > Default apps > Phone app. |
XMPP connection failure / bot unresponsive | Transport layer blocked or invalid credentials | Check network status. Force restart Cheogram app via Settings > Apps > Cheogram > Force Stop, then relaunch. |

Comments