Hey guys!
I´m new here and I hope you can help me with some questions... I didn´t know if I´m right here, so please correct me if I do something wrong
My "setup":
- Samsung S3 international with CM13
I like to create a global "Content Filter", which filters files (pictures, videos, documents, etc.) on my smartphone. So what I mean is something like what the UserManager (sorry I can´t poste the Link to Android API) from Android framework does:
User A (owner) creates pictures with the camera, download files, etc. and if User B (guest) logs in, User B can´t access the files from User A and vice versa.
The diffrent part is that I like to "hide" or better make them not accessable by custom criteria - for example "only pictures from the last two hours will be shown to User B". And the main point ist that every application gets the same content.
I thought I have to edit and extend the internal/external storage functions (or ContentProvider?) by my custom filter. Later there will be a system app for controlling the behavior of this filter.
Now there are some question, which I ask myself:
- Is it possible to implement this functionality in Android specific code and not in device specific code? So is it possible to make it portable for other devices and Android versions (Custom ROM, manufacture ROM or the pure Stock Android from Google´s Nexus phones) without "much" effort?
- Does it make more sense to use the original Stock Android instead of Cyanogenmod to reach the portability?
- Where do I have to start? I downloaded the source Code of CM13 for the Samsung S3. But how I ask before - is there a generic way for all devices and android versions? I started to look into the framework specific code of android (system/frameworks/base/... ). I thougth I can build the filter between the api calls (java -> jni bridge -> c/c++), but that would be not the right place, yes?
I hope someone understand my plan and can help me with some informations and tipps or where I have to look to get them!
Thanks!!
Fabian
I think you might mean the profile system that android used to have on ICS?.
Unfortunately I can't answer why they removed that feature. Does the phone not have an option or something if you have 2 or more google accounts registered to the device?..
Beamed in by telepathy.
I'm writing this post to track my efforts to enable VoLTE and WiFi Calling on my X Compact. To begin with, I don't have a solution yet. I think I understand a lot of how it's supposed to work, but there are still some things I don't know. Hopefully others will be able to chime in and provide some answers.
I use my phone on MetroPCS in the USA. They are an MVNO for T-Mobile (and also owned by T-Mobile). I know that they support both features as my wife's Moto X4 is able to use them.
The X Compact does support VoLTE:
https://support.sonymobile.com/us/x...do-i/801930746ffcf563015c0bfaac370057e6/#gref
The problem is, it's only supported on specific carriers. The first requirement is that the carrier supports VoLTE (MetroPCS). The second requirement is that the feature has to be approved by Sony to be used on that carrier. This is where people have problems. I don't know how Sony makes the approval list, but my carrier isn't on it.
Before digging into this, I had planned on upgrading to the XZ1 Compact because it is specifically advertised as having VoLTE working on T-Mobile. I bought one and expected it to work out of the box on MetroPCS, but it didn't. I went back and forth with both MetroPCS and Sony and it still didn't work. This goes back to the list I mentioned above. If your carrier isn't on it, the phone won't work.
So I'm stuck with a phone that would work perfectly well with these features, but due to carrier/manufacturer approval issues, won't. Moving forward, I'll discuss the things that I've tried to get it to work.
Try making the XC work like the XZ1C
As I mentioned above, the XZ1C supports both features natively on T-Mobile. Why it works on T-Mobile came up in the following thread trying to get VoLTE and fingerprint support at the same time on T-Mobile:
https://forum.xda-developers.com/xperia-xz1-compact/help/volte-tmo-fingerprint-sensor-t3666387
So why does the XZ1C work on T-Mobile? @pbarrette did a good job of explaining the process in this post:
https://forum.xda-developers.com/showpost.php?p=74159245&postcount=105
The XZ1 and the XZ Premium both use the same chipset as the XZ1C, but those features don't work on T-Mobile. In trying to figure out why, @pbarrette determined the mechanism Sony uses to enable this feature. That work is covered in the following thread:
https://forum.xda-developers.com/xz-premium/help/volte-t-mobile-enabled-t3627567/
Simply, the XZ1C has additional files which are triggered to be used when a T-Mobile SIM is placed in the phone. To get the features to work on the XZ1 and XZP, you need to copy the appropriate files on to the phone. @pbarrette created a flashable zip file which does this and it works for those phones. The most important file to get the features working is the proper modem binary file (/etc/customization/modem/), tmobile_us_ims on the XZ1C. Unfortunately, there's no corresponding file on the XC.
I thought that I could just copy the binary file from the XZ1C, but the phones use different hardware so it's likely that a file from one phone won't work on another. I did a file comparison of the default (XC: amss_fsg_kugo_tar.mbn, XZ1C: amss_fsg_lilac_tar.mbn) and T-Mobile (XC: amss_fsg_kugo_tmobile_us_tar.mbn, XZ1C: amss_fsg_lilac_tmobile_us_tar.mbn) modem binary files from each phone, and they're quite different. So it seems like that option won't work.
Even if the XZ1C files did work on the XC, the problem still remains that the XZ1C doesn't work on MetroPCS. So I'd get a franken-ROM that doesn't do what I want it to.
Afaik your operator need to enable volte for your specific device. Here, my operator doesn't support xc and even if I force enable volte it still doesn't work. I contacted them and they said that they have to do some tests and then enable it to use volte.
maluus said:
Afaik your operator need to enable volte for your specific device. Here, my operator doesn't support xc and even if I force enable volte it still doesn't work. I contacted them and they said that they have to do some tests and then enable it to use volte.
Click to expand...
Click to collapse
You might be right, but some of the success stories that I've read lead me to believe that it's not device specific. I'll dig into that in a later post. I've contacted my carrier and according to them, everything is set on their end, so that just leaves the device being the issue.
Try making the XC work like the XZ1C, Part 2
Per @pbarrette, the proper files are loaded only when a SIM with the correct ID is inserted into the phone. For the XZ1C, this info is located in /overlay/com.sonymobile.customizationselector-res-305.apk in a file called configuration_selectors.xml. A file of the same name is also present in the same location on the XC. The sim_config_id can be found by entering the following command with USB debugging enabled:
Code:
adb shell getprop persist.sys.sim_config_ids
When I enter this, I get S8957.1. That value isn't in the configuration_selectors.xml list so the proper files aren't loaded and the default modem binary is used. If it were in the configuration_selectors.xml list, a config_id value of 400 would be associated with the sim_config_id (408 for XZ1C). Your config_id value can be found using the following command:
Code:
adb shell getprop ro.semc.version.cust.active
When I enter this command, I end up with a blank. I believe that this is because the default modem binary is being used, but this is just a guess. Ultimately, it means that the SIM isn't recognized and therefore the features won't work.
There's another file that's part of /overlay/com.sonymobile.customizationselector-res-305.apk, and that is service_providers.xml. I believe that this is where the proper sim_config_id is selected, based upon the MCC and MNC for the carrier. In my case, those values are 310 and 260, respectively. There are two entries which match these values:
Code:
<service_provider_sim_config sim_config_id="S8957.1">
<mcc>310</mcc>
<mnc>260</mnc>
<sim directory="7FFF" file="6F3E">6D</sim>
</service_provider_sim_config>
<service_provider_sim_config sim_config_id="S264.8">
<mcc>310</mcc>
<mnc>260</mnc>
</service_provider_sim_config>
There have been times in the past that my phone has been assigned the sim_config_id or S264.8, but most of the time it's S8957.1. I'm not sure what the sim directory tag refers to. If anyone knows what this means, please let me know as it might be helpful.
So my first strategy of trying to mimic the way the XZ1C works doesn't appear to be an option. A question for others: would it be possible to decompile the relevant files, change the xml files to reference the id's that I'm seeing, recompile and replace the APK's, all without sending my phone into a bootloop? Yes, see below.
But even if that were to work, there's no corresponding modem binary file on the XC, so probably no VoLTE. But there are other modem binary files. Could I just rename one of those? Would using the file from the XZ1C crash the modem on the XC? Yes, see below.
Try making the XC work like the XZ1C, Part 3
Alright, I've had partial success. Using some of the overlay files from the flashable zip that @pbarrette created, I was able to get the VoLTE and WiFi Calling menus to show up in settings. Here's a summary:
Flash old firmware. I used this one available on XperiFirm: F5321_34.1.A.1.198_Commercial and Journalists (1305-9054). It's not strictly necessary to flash the old firmware, but you need root, and root requires an unlocked bootloader, and unlocking the BL will delete your TA partition. I wanted to backup the TA partition for my DRM keys. In order to use the backup tool, you have to use an older version of Android so that the exploit used by the backup tool is still available.
Backup TA partition
Flash current firmware (34.4.A.2.118)
Unlock bootloader (use the Sony Mobile website for this)
Root phone (I used the method described here with the DRM fix option. The use-your-own-TA option didn't work for me.
https://forum.xda-developers.com/x-compact/how-to/stock-8-0-root-recovery-t3747479
Install the following files from the @pbarrette flashable zip:
/oem/modem-config/408/modem.conf
/oem/overlay/android-res-305.apk
/oem/overlay-408/android-res-310-408.apk
/oem/overlay-408/com.android.carrierconfig-res-310-408.apk
/oem/overlay-408/com.android.phone-res-310-408.apk
/oem/overlay-408/com.android.settings-res-310-408.apk
/oem/overlay-408/com.android.systemui-res-310-408.apk
/oem/system-properties/408/config.prop
You also need to install /oem/overlay/com.sonymobile.customizationselector-res-305.apk, but I had to modify the file from the XZ1C to get things to work. Within the APK, there's one XML file that needs to be updated to include the sim_config_id I'm seeing on MetroPCS. That is /res/xml/configuration_selectors.xml. I modified it to look like the following (with my addition in red):
Code:
<?xml version="1.0" encoding="utf-8"?>
<configurations>
<configuration config_id="408">
<sim_config_id>S264.1</sim_config_id>
<sim_config_id>S264.2</sim_config_id>
<sim_config_id>S264.3</sim_config_id>
<sim_config_id>S264.4</sim_config_id>
<sim_config_id>S264.5</sim_config_id>
<sim_config_id>S264.6</sim_config_id>
<sim_config_id>S264.7</sim_config_id>
<sim_config_id>S264.8</sim_config_id>
<sim_config_id>S264.9</sim_config_id>
<sim_config_id>S264.10</sim_config_id>
<sim_config_id>S264.11</sim_config_id>
<sim_config_id>S264.12</sim_config_id>
<sim_config_id>S264.13</sim_config_id>
<sim_config_id>S264.14</sim_config_id>
<sim_config_id>S264.15</sim_config_id>
<sim_config_id>S264.16</sim_config_id>
<sim_config_id>S264.17</sim_config_id>
<sim_config_id>S264.18</sim_config_id>
<sim_config_id>S8663.1</sim_config_id>
[COLOR="Red"]<sim_config_id>S8957.1</sim_config_id>[/COLOR]
</configuration>
</configurations>
To do this, I decompiled the Sony APK from the XZ1C, changed the file, recompiled the APK, signed the file, then placed the file in the /oem/overlay directory with Solid Explorer, and made sure the file permissions were correct.
It's worth mentioning that /oem/modem-config/408/modem.conf lists the modem binary file to be loaded when a T-Mobile SIM is detected. On the XZ1C, this is tmobile_us_ims and that's what modem.conf lists by default. You'll need to change this to one of the modem binary files contained on the XC. I tried using the tmobile_us_ims modem binary file from the XZ1C and it sent my phone into a bootloop. So it's confirmed that the XZ1C modem binary files aren't compatible with the XC. Just pick one from the /etc/customization/modem folder, like amss_fsg_kugo_a1_austria_ims_tar.mbn and list this in the file. You'll need to cut out the prefix and suffix, so just a1_austria_ims for this example. The prefix and suffix will get added by the phone when selecting the file.
Trigger a SIM check by CustomizationSelector. To do this, I deleted the file /data/data/com.sonymobile.customizationselector/shared_prefs/com.sonymobile.customizationselector_preferences.xml and rebooted (as suggested by @pbarrette here: https://forum.xda-developers.com/showpost.php?p=74560870&postcount=76 and here https://forum.xda-developers.com/showpost.php?p=74560870&postcount=77). After a couple of minutes, my phone stated that it needed to reboot to optimize for my network. Once it loaded back up, the proper overlays had been loaded and I could see the settings for VoLTE and WiFi Calling.
This is where my success stops. Without the proper modem binary file, it's a bit of a crapshoot to see if an existing file will work. To do this, just repeat steps 8 and 9 with a different modem binary file. I've tried a handful of these files, but no luck yet. There are 127 files, but I'm sticking with the ones that mention IMS or VoLTE. This reduces the total to 88, but it's still a lot of rebooting and waiting. The files I've tried so far are listed below.
amss_fsg_kugo_a1_austria_ims_tar.mbn
amss_fsg_kugo_a1_austria_volte_vowifi_tar.mbn
amss_fsg_kugo_bouygues_france_ims_tar.mbn
amss_fsg_kugo_bouygues_france_volte_vilte_tar.mbn
amss_fsg_kugo_ee_ims_tar.mbn
amss_fsg_kugo_singtel_ims_tar.mbn
amss_fsg_kugo_telefonica_uk_ims_tar.mbn
amss_fsg_kugo_telekom_germany_ims_tar.mbn
amss_fsg_kugo_tmobile_us_tar.mbn
amss_fsg_kugo_vivo_ims_tar.mbn
amss_fsg_kugo_vodafone_germany_ims_tar.mbn
amss_fsg_kugo_vodafone_spain_ims_tar.mbn
amss_fsg_kugo_vodafone_uk_ims_tar.mbn
amss_fsg_lilac_tmobile_us_ims_tar.mbn
So that's my current status. I'm not planning on doing anything else at this point, because I figured out a way to get my XZ1C working on MetroPCS with VoLTE and WiFi Calling. I'll write a bit about that over in the XZ1C forum. If anyone wants to continue looking into it, please provide an update.
Software Used
In case someone wants to work through this process on their own, here is the software that I used:
Flashtool: Used for flashing firmware to the XC via FTF files. This can also be used to extract the contents of some older SIN files.
http://www.flashtool.net/index.php
newflasher: An alternative to Flashtool. I didn't use this, but I saw it referred to a lot.
https://forum.xda-developers.com/cr...gress-newflasher-xperia-command-line-t3619426
UnSIN: This program can be used to extract the contents of more modern SIN files.
https://forum.xda-developers.com/crossdevice-dev/sony/tool-unsin-sin-v3-unpacker-t3128106
ext2explore: Tool to explore ext4 image files. Once you've used UnSIN, you end up with an ext4 file. This tool can explore the ext4 file and extract files from it.
https://sourceforge.net/projects/ext2read/files/Ext2Read ver 2.0/ext2explore 2.0 beta/
Google platform tools: This includes ADB, fastboot, etc. It comes with the Android SDK, but that file size is massive so Google conveniently packaged just the platform tools in a much smaller zip file.
https://developer.android.com/studio/releases/platform-tools
apktool: This is a tool to decompile/compile APK files. There are other tools out there, but this is the one that I used.
Tool download: https://ibotpeaches.github.io/Apktool/
Guide I used: https://forum.xda-developers.com/showthread.php?t=2213985
Flashable zip guide: I ended up editing the flashable zip from @pbarrette to include only the files I listed above. It was pretty straight forward to edit the script just looking at it, but this was a good resource for explaining things in more detail.
https://forum.xda-developers.com/an...-complete-shell-script-flashable-zip-t2934449
Dirtycow-based TA Dumper for Sony Xperia Devices: This what I used to backup my TA partition.
https://forum.xda-developers.com/crossdevice-dev/sony/universal-dirtycow-based-ta-backup-t3514236
sgs2toext4: This tool can convert an IMG file (eg. boot.img) to ext4. I used it in some of my tinkering (trying to get use-your-own-TA root option working) but I don't think you'll need it
https://forum.xda-developers.com/ga...n-zipalign-t1132724/post15333542#post15333542
Mate there is a magisk module to enable that menu options. But although enabled, neither volte nor vowifi does work without operator support. Does your operator list supported devices for volte? If so, you can risk to change the signatures of your device with a supported and identical platforms.
maluus said:
Mate there is a magisk module to enable that menu options. But although enabled, neither volte nor vowifi does work without operator support. Does your operator list supported devices for volte? If so, you can risk to change the signatures of your device with a supported and identical platforms.
Click to expand...
Click to collapse
Interesting. I've not heard of that module. MetroPCS doesn't list compatible devices as far as I know, but I know of unlocked devices that do work. Could you please provide a link to that module you mentioned?
I don't have Magisk installed but you can search volte in modules library. I think name was the volte enabler or something similar
maluus said:
I don't have Magisk installed but you can search volte in modules library. I think name was the volte enabler or something similar
Click to expand...
Click to collapse
Was it this one? If so, the module isn't doing anything that I'm not already doing. Is there a module that allows for using the Modem Switcher on Sony phones?
https://forum.xda-developers.com/apps/magisk/module-v4-volte-enabler-t3649613
camdecoster said:
Was it this one? If so, the module isn't doing anything that I'm not already doing. Is there a module that allows for using the Modem Switcher on Sony phones?
https://forum.xda-developers.com/apps/magisk/module-v4-volte-enabler-t3649613
Click to expand...
Click to collapse
Yes it is. Btw I noticed a phrase in OP which points out the problem as I stated earlier.
"My carrier supports VoLTE/VoWiFi but not on my device. I made this module to forcefully enable it to test if it worked (it hasn't so far)."
I don't know your provider but still it seems operator support is based on individual devices as it is in my case. When I first call the support center of my carrier the person told me that if my phone does support volte there shouldn't be a problem. I insisted that my phone supports volte and she said that she ll check with tech department and a few minutes later called me back saying indeed they don't support my device. long story short I can't use volte as of now. they support a device from loire platform so may be if I change identification of device to that one to trick the operator network to believe I use the supported device it may work but I have my doubts about consequences so I did not dare yet
maluus said:
Yes it is. Btw I noticed a phrase in OP which points out the problem as I stated earlier.
"My carrier supports VoLTE/VoWiFi but not on my device. I made this module to forcefully enable it to test if it worked (it hasn't so far)."
I don't know your provider but still it seems operator support is based on individual devices as it is in my case. When I first call the support center of my carrier the person told me that if my phone does support volte there shouldn't be a problem. I insisted that my phone supports volte and she said that she ll check with tech department and a few minutes later called me back saying indeed they don't support my device. long story short I can't use volte as of now. they support a device from loire platform so may be if I change identification of device to that one to trick the operator network to believe I use the supported device it may work but I have my doubts about consequences so I did not dare yet
Click to expand...
Click to collapse
My carrier does offer VoLTE and WiFi Calling and those features do work on unlocked phones, so I'm pretty sure it's a Sony problem. In fact, I recently got those features working on an XZ1C. It could work on an XC too, but I'm moving on to the XZ1C. I hope someone gets it to work. Good luck with your carrier.
Don't know if anyone interested, but I found this on a Chinese forum - http://bbs.gfan.com/forum.php?mod=v...rby=lastpost&typeid=&typeid=&orderby=lastpost Apparently, if you flash the 2 files in the link, (http://bbs.gfan.com/android-9530989-1-1.html), it will work. I was going to test it out, but you need an account with some Chinese file sharing service, and I didn't feel like trying to figure it out...
Thank you for the information.
Unfortunately, I am unable to register as the registration needs SMS code received on a Chinese phone number.
I hate when some service requests my phone number (or other irrelevant data) without any way to avoid it…
mp107 said:
Thank you for the information.
Unfortunately, I am unable to register as the registration needs SMS code received on a Chinese phone number.
I hate when some service requests my phone number (or other irrelevant data) without any way to avoid it…
Click to expand...
Click to collapse
2 files on that post (thanks [email protected] ).
Oreo flash CT_v1_xzs.zip , Pie flash CT_v2_xzp.zip .
BUT, that's for XZs and XZP, not for XC. If failed, you can flash oem.sin only (from .FTF firmware) to restore.
To enable VoLTE and Wifi Callling, we need two parts of modem configs.
1. core: *.mbn modem config of specific local carrier that locate in /system/etc/customization/modem/ .
2. guide: modem configs in /oem.
The 2nd part can be import easily from other sony models, but the KEY is 1st part config. If the specific local carrier config can't be found in /system/etc/customization/modem/ , we have to use QPST to put parameters manualy, or no way to enable VoLTE/VoWifi.
camdecoster said:
My carrier does offer VoLTE and WiFi Calling and those features do work on unlocked phones, so I'm pretty sure it's a Sony problem. In fact, I recently got those features working on an XZ1C. It could work on an XC too, but I'm moving on to the XZ1C. I hope someone gets it to work. Good luck with your carrier.
Click to expand...
Click to collapse
Yes, it's Sony's problem. To Sony, importing VoLET/VoWifi parameters of all support carriers is a piece of cake.
There's a post on a Chinese BBS about enable VoLTE:http://bbs.gfan.com/android-9543428-1-1.html
XG_Zepto said:
There's a post on a Chinese BBS about enable VoLTE:http://bbs.gfan.com/android-9543428-1-1.html
Click to expand...
Click to collapse
Has anyone here tried this for a US carrier? I tried to follow along with the translated version but my lack of fully understanding the process and the rough translations have made it very difficult.
Does anyone have experience with the X Compact on T-Mobile?
I was going to change from the iPhone SE (tired of Apple, but need a small phone), which has VoLTE and Wifi Calling out of the box. I have a Note FE which was made for Singapore and I was able to change the CSC to get VoLTE, but not Wifi Calling.
W/O VoLTE it's totally not worth it. Besides not being to use LTE while on a call, I read in the thread the OP referenced regarding the XZ1C, that getting Band 12 w/o VoLTE is also a problem.
And then there's the fingerprint sensor. If I install a European ROM to get it...
Will Rooting help any of the above?
Am I stuck with Apple? That's really depressing...
I'm building an application that requires the use of the depth sensor on my Samsung Galaxy A80. However it seems like it's impossible to access it through Camera2 and ARCore. I asked Samsung directly and the tech support guys best guess was that Samsung has locked it from being used by third parties.
I rooted my phone and started digging through the file system and eventually found a file called 'com.samsung.sensor.imx316.so' located in /vendor/lib/camera (imx316 is the depth sensor). There are also some similar files that ends in '.bin', but .so files seems to be runnable code if I understood the google results correctly.
That file has the same name as the sensor I can't seem to access. Can this file be used somehow? Can I run it in my own app to get access to the depth data? And if not, there should be a way of getting that data right? I mean, it obviously exists somewhere in the phone since pre-installed apps are using it, and a rooted phone has access to everything?
Did you check REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT? How do you know it's impossible?
Most likely you need to reverse engineer the Camera app from your phone.
Your app can call com.samsung.sensor.imx316.so , it's really "just" a linux elf library.
The problem you face is the exported routines from the library, you won't really know
1) the parameters to the functions inside the library
2) any specific order to call functions inside the library i.e. like an init function first , release memory last...
You need to disassemble / reverse engineer the library to make some sense of it (see ghidra / radare2/ ida pro etc ).
Use strace on the current process/app which uses the library to make some sense of the order of calls into the library.
The depth data will be coming from a kernel level driver, you can likely obtain the Samsung kernel source and the driver source should be there. Then it's up to you whether you can make user space library/code to read what the driver exposes. The kernel driver source code will have an uapi header file to investigate.
idk if it helps but i used for a Huawei P30 Pro this https://github.com/Nufflee/tof-camera