Hello,
I would be very grateful to anyone who could help me work out why I can't seem to transmit data from my software defined radio (bladeRF running srsRAN) transmitting an mbms gw signal to my Pixel 7 which is running Android 11.
I don't currently have a usim installed, but I don't think I need it, because I would like to run in receive-only mode.
I am currently running: Multicast interface with an address of 172.16.0.1, and initiating a MBMS GW.
The bladeRF enodeB I'm using has:
DL=1970.0 Mhz, UL=1890.0 MHz for cc_idx=0 nof_prb=50
set TX frequency to 1969999998
set RX frequency to 1889999998
The epc reports:
S1 Setup Request - eNB Name: srsenb01, eNB id: 0x19b
S1 Setup Request - MCC:310, MNC:260
S1 Setup Request - TAC 7, B-PLMN 0x132006
S1 Setup Request - Paging DRX v128
I've tried running the following code in an app on my pixel 7, with the android built-in telephony mbms API. When I create the mbms callback, I am receiving the error:
W/MbmsUtils: No MBMS services found, cannot get service info
The code responsible for setting things up is as follows:
Executor mExecutor = Executors.newSingleThreadExecutor(); MbmsStreamingSession mSession; MbmsStreamingSessionCallback mCallback = null; mCallback = new MbmsStreamingSessionCallback() { @Override public void onStreamingServicesUpdated(List<StreamingServiceInfo> services) { // access the services list here for (StreamingServiceInfo service : services) { // do something with the StreamingServiceInfo object StreamingServiceInfo firstService = services.get(0); Log.d("MainActivity", "Success"); } } }; mSession = MbmsStreamingSession.create(this, mExecutor, mCallback);
I couldn't find any clear instructio on the required steps to set up the mbms connection on the API documentation, so there's probably something I'm missing with that code.
My manifest for the android app is as follows (some of these are probably unnecessary):
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACESS_MBMS" /> <uses-permission android:name="android.permission.SEND_EMBMS_INTENTS" android:protectionLevel="privileged|signature"/> <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" /> <uses-feature android:name="android.hardware.telephony" android:required="true"/> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.MyApplication" tools:targetApi="31"> <activity android:name=".MainActivity" android:exported="true" android:label="@string/title_activity_main" android:theme="@style/Theme.MyApplication.NoActionBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
I think one issue is the subscription ID is apparently equal to 1 when I try to access it (because I don't have a usim), and that subscription ID is being used by the MbmsStreamingSession.create() call.
In summary: How do I get the pixel 7 to use the mbms protocols in receive-only mode so I can access the mbms signal without a usim? Do I have to do something special on the srsRAN side to get it to talk to my pixel 7?
As I understand, based on the spec 3GPP TS 23.246 V17.0.0 (2022-03) (https://www.tech-invite.com/3m23/tinv-3gpp-23-246.html), I need to:
"camp on a network cell in an eMBMS Broadcast carrier, attempt to receive MBMS service based only on a standardised TMGI value range for Receive Only Mode. The UE shall not attempt to receive MBMS service for TMGIs outside the standardized TMGI range. The UE uses the acquired system information to receive MBMS broadcast"
Thanks so much,
Morgan
Hi ,
AFAIK , Pixel 7 has Tensor chip rather than Qualcomm chip . Can you re-confirm once if ur device has a Qualcomm chip inside?
Thanks
Hi vikrsing,
You're right, the pixel 7 has a tensor chip. I didn't realize that when asking the question (couldn't find another online forum dedicated to mbms anywhere anyway). Perhaps you could point me to a more appropriate place to ask the question?
As I understand, the Android telephony mbms software runs the same on the Tensor and the Qualcomm, so hopefully people here could still help me out. Does it seem like I've got everything set up correctly? Is there anything I need to do in particular to ensure I'm camped on a network cell and am only requesting using a standardized TMGI value?
Thanks,
Morgan