# Question
Title: How to tell what architecture an APK is intended for?
I am writing a script to test a large quantity of apks. Some run on x86 and some run on arm. Is there a way I can tell which apks are intended for which architecture?

I have looked through the report on aapt badging with `aapt dump badging application.apk`. For some of the arm compatible versions I see `native-code: 'armeabi-v7a'` but not for all of them, and I don't see any indication of what architecture the x86 compatible apks run on.

I have also tried using apktool to break apart the apk and examine the AndroidManifest.xml. I don't see anything pertaining to the chip architecture in it either.

I'm looking for something on a linux platform.

Any ideas?

# Answer
One (rather crude) way to see what architecture an APK's native libraries are built for is to unzip it (it's only a zip file) and take a look at the libs folder - if the application contains any native libraries, they will be split into the following subfolders inside (with the compiled libraries inside these):

See Android Application Package for more information on an APK's structure, and the above list's source. A more complete (including MIPS64) list, along with some information about architecture-specific things, can be found on an archived version of the Android Developer ABI Management page, captured on April 18th 2016.

Interestingly enough, targeting one single ABI (where an app includes native libraries designed for one architecture) doesn't necessarily mean that the app won't run on devices that use other architectures. ARMv8-a, for example, is backwards compatible with ARM and ARMv7-a, and Intel's x86 Android devices contain a proprietary translation layer that allows ARM code to execute on x86 devices (allowing ARM-only apps to run on x86 platforms). A list of the ABIs that an Android device can execute can be found in the `ro.product.cpu.abilist` property, which can be attained in a shell (e.g. via a terminal app on the device, or over adb using `adb shell`) using the `getprop` command: `getprop ro.product.cpu.abilist`.
> 24 votes

# Answer
You can also use APKSharp:

A Windows tool to De-bloat, view full details & manage APKs on any Android, it has AAPT for Windows & Android inside.
> 1 votes

---
Tags: apk, processor
---


# Question
Title: Do any open source Android ROMs work on smart clocks?
Has LineageOS or any other open source Android ROM moved into the Smart Clock (bedside alarm clock space)?

It seems some of these run Android Things:

> The touchscreen isn't as robust as Google's other smart displays, but **it uses the same Android Things software which is a trimmed-down version of Google's mobile operating system meant for smart home gadgets.**

# Answer
It looks as though the Lenovo Smart Clock open source software is here. Looking quickly it appears to be the kernel only.

The device's SoC appears to from MediaTek, codename `mt8167s` possibly the same device powering the Lenovo Smart Display. (The kernel config file is called `mt8167s_ref_debug_defconfig`). I don't see any device repositories on github for this, but interestingly, there is a file for Google's Fuchsia OS Zircon microkernel for this board.

Somoene appears to have put the source on github here. He (I assume "he"- the name is "deadman96385") has a TWRP recovery repo here for the smart clock (which may actually be named `iot_mt8167s_som` ??) which might be a good starting point for doing a full android port.

Also, looks like he dumped the rom here.
> 1 votes

---
Tags: lineageos, android-things
---


# Question
Title: Apps disappear from start screen but still in the apps menu
Sometimes when an app updates it's icon disappear from start screen (launcher) but still in the apps menu.

What is the reason for this and how to avoid disappearing? Samsung S7

# Answer
> 1 votes
An app can define one or multiple start icons. Each start icon is assigned with a different "start activity" (a different screen in the app).

If an app is reorganized internally this "start activity" may change. As each app icon is assigned to a fixed "start activity" the old app icon you have placed on your home screen (launcher) is no longer valid and is therefore removed.

In the apps menu always all start icons of all apps are displayed. Therefore if the start activity of an app changes the old icon is removed and the new icon is added. Often old and new icon are exactly identical and also the icon text is the same, thus it is not obvious why the icon on the start screen was removed but in apps menu it is still present.

---
Tags: applications, updates
---


# Question
Title: Clear cache and data of Download Manager
Google says to clear cache and data on Play Store and Download Manager when experiencing download problems. I can't find Download Manager on my Android device.

# Answer
> 5 votes
See if you have something like this:
`System settings > Application Manager > All > Downloads`

# Answer
> 2 votes
In Android 9, go to Settings \> Apps & Notifications \> App Info. Select 3 dots in upper-right and Show System. Download Manger should show in list now.

# Answer
> 1 votes
Steps to clear the cache of the Download manager app:

1.Open "Settings" - either:

a) pull down the top (right) menu and click the "cog" icon

b) click on "Application" and select "Settings".

2.Go to "Applications" then tap on "Manage Applications" (older versions)

Or "Application manager" (newer versions)

3.Select the "All" tab (to the right)

4.Now scroll down to the "Download Manager" app and tap it.

5.Tap on "Clear cache" and "Clear Data".

...all done.

# Answer
> 0 votes
On samsung galaxy, go to "apps," then click on the three dots in upper right corner. Select "show system apps." From there you should be able to find download manager. Go to "storage" then "clear cache."

---
Tags: cache, download-manager
---


# Question
Title: Play store apps downloading forever after factory reset
Steps before the problems :

1. The tablet was inactive, whitout recharging, for arround 1 year and half.
2. Acidentaly pressed the keys to 'Download a custom os', and restarted the tablet during the process of download depsite the warning saying i shouldn't.
3. Did a factory reset trough the config option.

The problems :

1. All apps from playstore cant be updated or installed. When clicked on install, it will be 'installing' forever.
2. Cant install apk from outside playstore, i get a messsage "There is a problem with the analisys of the package" (translated freely from my language). Tried 3 apks so far.
3. The time is wrong, 1h fowrward, maybe due to summertime.

solutions i tried :

* For the problem 1 : Clear the cache and the data of the playstore, the download manager and gmail and forced them to stop (in a lot of diferent orders); Logged out and in the email on playstore (with diferent emails); checked for system updates (had none); checked if internal storage was fine downloading several thing from browser, all downloaded and executed normaly; Tried other apps, working pefectly(one, a store, even updated itself, but i couldnt install its apps as well; Restarted ; did another(s) factory reset; and changed the time manually.
* For the problem 2 i just tried to find apk to android 4.0, and im not shure i did it ok.
* For the problem 3 i changed the time manually; automatically; selected the region manually and automatcally, rebooted ; and just used the tablet for 2 days to see if would change. Did those repeatedly in various diferent orders.

Nothing worked, for any poblem. The youtube says, when i open it, that i have either the datetime wrong or a bad internet conection, even when i put the right time manually. So i think the time maybe could be causing the playstore problem also ? I dont know. Im tired.

info :

* Tablet samsung p5100
* Android 4.03
* hardware has arround 7 years old
* Touchscreen broken once, replaced in the past.
* no sd card
* The device might be rooted, cant tell, because cant install root checkers (it had the app supersu installed even after the factory reset. I removed it from an option inside the own app and it dosent persists factory resets anymore. Its gone)

Ps: there is no google play services installed, at least not with this name.

# Answer
> 0 votes
Solution to the problem 2 : Just install an valid apk for your current android versions, in my case, 4.0.3

Solution to the problem 1 : Download and install (using the browser) a new playstore apk for your android version from another trusted store/site, like 'apkmirror'.

---
Tags: google-play-store, rooting, 4.0-ice-cream-sandwich, installation, tablet
---


# Question
Title: How do I copy contacts from my SIM card to a Moto G8 Power?
Well there's not really more to say about my question apart from: Yes, I've looked for this feature on the Internet and on my phone.

# Answer
> 1 votes
You can copy all contacts from your SIM card using the **Contacts ap**p.

Open it, select the **burger menu** in the top left corner, open **Settings** -\> **Import** -\> **SIM card**

---
Tags: contacts, sim-card
---


# Question
Title: Can I copy data to be restored, if phone is stuck in bootloop?
My phone is stuck in a bootloop. I can get into TWRP recovery, which has a file manager. I can also connect the USB cable to computer and see the phones internal memory. Is there a way to copy text messages and WhatsApp messages so I can restore them on another phone?

I'm afraid the filesystem may have been corrupted. When I go to `/data/data/` I expect to see names like "WhatsApp" or "Facebook" but everything is random...like `+NiZZaTrs3RFzYegpkEk`

# Answer
> 3 votes
This was a long process with lots of side problems coming up. Somethings I don't know why they worked or did not work. I will give a recount of what did work in hopes the information will be useful in the future.

At a high level the idea is to backup the data partition, reflash firmware and ROM to fix the bootloop, reload the backed up data partition. Perhaps in some cases this would be enough, but recall the whole data partition is restored - you can't choose individual files or apps. In my case this corrupted some system settings but the data and apps were still there. I used Titanium backup to back those up to external storage, then flashed firmware and ROM again.

Whenever the phone is stuck use the "hard shutdown method" by holding the volume up and power button and waiting for the phone to vibrate 3 times. At this point the phone is off.

**STEPS**

1. The first thing to do is get into recovery mode with TWRP.
(If you already can do this, skip to step 3.)
https://twrp.me/sony/sonyxperiax.html

> **Notes About Sony Devices:**
>
> The Xperia devices have a recovery-in-boot arrangement. This means that the recovery is booted using the regular kernel / boot image in the device. Team Win has worked with the FreeXperia device maintainers to come up with a way to extract the ramdisk from the FOTAKernel partition and use the ramdisk from that partition instead of the recovery that is included in the boot image of your device. This means that if you install current CM nightlies and flash TWRP to the FOTAKernel partition, you will be able to use TWRP instead of the CWM or CM recovery that normally comes in a CM boot image. Other boot images including stock kernels can be repacked to include this extraction utility to allow you to use TWRP from the FOTAKernel partition. This setup allows you to choose what recovery you want to have installed and allows you to update your recovery more easily. Unfortunately this setup requires that the boot image that you have installed include the ramdisk extraction utility.
>
> **TWRP may not work on your device unless you install other custom software as well.**

You will need adb and fastboot, in Windows represented as `adb.exe` and `fastboot.exe` which run in command line terminal - (for adb and fastboot Windows XP click here)

If you do not have TWRP, follow these instructions (for the **Xperia XZ1 Compact**)
a) download the ZIP file from here (it is that TWRP but with working adb)
b) extract the img from the ZIP file (not a flashable zip)
c) connect the phone to the computer via a USB cable in fastboot mode. To put the phone in fastboot mode, completely power it off. Then hold the volume up button and the power button at the same time until the light on the phone turns on. connect the phone to the USB cable if it's not already.
d) If you're on Windows, open a command prompt with administrative privileges by right clicking on it and choosing "run as administrator". I recommend to use `cmd.exe` and not the Windows PowerShell. Navigate to the `platform-tools` folder with the `cd` command. Type in `fastboot devices`. If nothing is returned or it says "unauthorized" that means you need to install the correct drivers. The official drivers are here but I found I couldn't install them directly. I needed to download the Google USB Driver and replace `android_winusb.inf` with that from Sony. I found I needed to reboot using advanced options to disable Windows Driver Verification in order to install the drivers. Right click on the `inf` and choose "install".
2. Now that the drivers are installed, from the elevated command prompt run

```
fastboot devices
fastboot flash recovery C:\path\to\folder\twrp-3.3.1-0-lilac-android10-2.img

```
3. Boot to recovery. This can be done by turning off the phone, holding the volume down button and power on button at the same time until the screen turns on.
(If it doesn't work you can also boot image from fastboot without flashing)

```
fastboot boot C:\path\to\folder\twrp-3.3.1-0-lilac-android10-2.img

```
4. If your phone uses FBE file-based encryption the data will be encrypted with lock screen password/PIN (hence the strange file names in `/data/data` such as `+NiZZaTrs3RFzYegpkEk`). Newer versions of TWRP support decryption. TWRP should prompt you for a password when it first starts, however I found this buggy and it sometimes just didn't ask for a password. If this happens try restarting the phone in recovery or reflashing TWRP. Also going into terminal emulator from Advanced, try the command `twrp decypt [password]`, see here if you had a pattern.
5. Backup your (decrypted) data from TWRP backup menu. make sure backup location is MicroSD Card or USB storage. Only choose the Internal Storage if you planning to save all your files to PC before factory reset.
6. Don't forget to backup Internal Storage manually as it is not included in TWRP backup. You can do this via cmd line

```
adb devices
adb pull /sdcard C:\path\to\folder

```

Note for adb to work, the phone must be in recovery mode (i.e. TWRP is open)
7. Download Flashtool, a ROM of your choice and compatible firmware. You can try to flash the same ROM that you have been using, but I was unable to find stock ROM for this phone. I recommend Lineage 16 with this firmware (Lineage requires 47.2.A.11.228). I tried Lineage 17.1 but setup would go into a loop. Also download GApps Pico for Arm64 and Android 9. Download Magisk zip and apk. This is needed if you're going to use Titanium Backup to backup the apps and data you want to save. Perhaps in some situations this isn't needed if you can migrate without root.
8. Install Flashtool.
9. In Flashtool flash the FTF for the firmware first. Then flash the ROM (e.g. Lineage).
10. Boot into TWRP and install Gapps pico and Magisk. Magisk is needed for root which is needed by Titanium Backup, which will be used later.
11. The phone should be able to boot normally now. Give it plenty of time (e.g. 10 minutes). Take a break to go for a walk.
12. Confirm everything is working relatively ok. For example browse the web, download a simple app from the play store. If it's not, flash a different firmware or ROM with Flashtool.
13. Install and setup Titanium Backup. If you prefer alternative you can also use Migrate! (from the Google Play Store or anywhere else)
14. Reboot to TWRP
15. Restore **only the data partition**.
16. Clear cache and reboot to system.
17. In my experience all the data and apps were restored. But some system functionality was broken (like the WiFi). If it wasn't we would be done on this step :)
18. Use Titanium Backup to selectively backup the apps and data you want to keep. Make sure the backup is put on an SD card or USB storage so it won't get over written.
If your device is not working, there is also a method to do this 'offline' from recovery. refer to the Migrate support thread on forum.xda-developers.com (development in progress)
19. Do a factory reset from TWRP -\> Wipe -\> Format Data -\> type 'yes'
if Format Data fails, Repeat step 7 and 8.
20. The phone should be working normally again.
21. Use Titanium Backup or Migrate to restore the apps and data from step 18.
22. Done.

---
Tags: sms, whatsapp-messenger, recovery-mode, twrp, boot-loop
---


# Question
Title: How to flash firmware from XperiFirm? Can Newflasher save user data?
My phone is stuck in a bootloop and I would like to try to fix it by flashing stock firmware. I used XperiFirm to download firmware. But then in Flashtool it won't load. I tried going to tools -\> bundles -\> fileset decrypt but it just doesn't load it.

I'm running Windows and noticed a part of Flashtool was detected as a trojan. I made an exception and reinstalled so this shouldn't be a problem.

I tried clicking on the XperiFirm button directly inside Flashtool, but it really quickly flashes and goes away without doing anything (nothing is even added to the log).

I looked into using Newflasher but am wondering if there's a way to save data? I would like to do a dirty flash.

# Answer
> 1 votes
I couldn't get the XperiFirm integrated into Flashtool to work. Even with the stand alone, it didn't have the firmware I was looking for. I ended up just Google searching the the firmware with "ftf". Flashing it with Flashtools worked fine.

TL;DR download the desired firmware as an FTF found through a Google Search. Flash it with Flashtool.

---
Tags: rom-flashing, sony-xperia, flashtool
---


# Question
Title: Does greyscale/grayscale mode save battery life?
Simple question but searching I can't find much evidence. I use an LED device (not OLED), would that also make a difference?

# Answer
If the screen is LCD or LED then, there is no battery saving as answered on this question Will grayscale increase or decrease battery consumption? on AskDifferent.

However with an AMOLED screen, there is an advantage as the black pixels will be turned off. According to the article Why You Should Use Always Use Dark Mode on Phones

> That said, the differences in power Google discovered between using an app normally and using its "night mode" (or dark mode) were striking, particularly for OLED-based phones. For example, when testing an AMOLED-based Google Pixel, Google found that Google Maps uses 63 percent less power when it Night Mode compared to normal mode. By contrast, an LCD-based iPhone 7 saw no change in power consumption

Although Night mode is not grayscale, the advantage of switching off the dark pixel should help in saving the battery.
> 1 votes

# Answer
Everybody is confusing **Greyscale** with **Dark Mode**!

Dark mode changes the colors of the apps (including home screen and system apps like settings and such) and usually makes the backgrounds black since most of the screen is the background and by making it black it saves a lot of power. So Dark mode tries to have as much as dark/black colors showing on the screen. so basically it means *dark/black background and white text/elements on screen*.

On the other hand, **Greyscale Mode** is a completely different thing. Yes it will change what you see on the screen but not like 'dark mode'. **Grayscale** simply removes all the colors and makes them grey, just like the old TV's.

*How does this save battery? (and yes it does)* The screen will still be on and the brightness will not change at all so theres no battery saving from the screen. But your smartphone has a GPU inside of it and that's what will save battery in **Greyscale mode** The ***GPU*** is where what you see on your screen gets processed, and it usually works with million of colors that include all the shades and mixes of red, green and blue and there are almost 17 million color possibilities. But in **greyscale** there are only **256**! That's crazy isn't it? And this is exactly what saves your battery power, it's because the GPU has to do WAY LESS calculations.

*Extra info:* colors on the screen are calculated from the values 0-255, 0 being the darkest and 255 the brightest. So a single pixel on a greyscale screen can be one of those 256 possibilities, but in a normal screen that displays all the colors we have a "minipixel" for red, another one for green and one for blue. They mix together in values from 0-255 to create other colors. That means now we have 255*255*255(combining red,green and blue values)=16777216 and thats the number of color possibilities in a RGB screen.
> 2 votes

# Answer
No, because power is still being consumed to display the image. Had the device been OLED or AMOLED, then it would have saved a bit of power, since each pixel is an individual source being powered, and black pixels would not receive power.

The best bet on saving power with LED is if the GPU was processing images in 8-bit, but it does not. If you turned on grayscale and took a screenshot then turned it back off, the image is still in color.
> 1 votes

# Answer
For an **LCD** device the major power factor is the consumption of the background lighting. If you show the screen in color or gray does not have an impact ob the background lighting, therefore it does not make a difference in power consumption.

In **OLED** displays each pixel is shining, or to be precise each sub-pixel (red-green-blue and sometimes an additional white) is shining requires power. The more pixel and the brighter the pixel shine the more power is required. I would assume that e.g. a blue a sub-pixel shining at 100% requires a bit more power than 3 RBG sub-pixel shining at a lower brightness in grayscale mode. However the effect should be not very high. Therefore I would assume that the saved power by an OLED display in grayscale mode is very small.
> 1 votes

---
Tags: battery-life, quick-settings
---


title: Documentation of /system/addon.d

text:
# Question
Title: Documentation of /system/addon.d
Placing scripts into `/system/addon.d/` makes them execute before and after every OTA packag upgrade. This is used or mentioned in multiple places.

I have multiple questions about this:

* Is this a general Android feature or just provided by many custom ROMs? If only ROMs, any notable exceptions?
* Where is the documentation / specification / source ? I would like to get to the APIs that I can work with.
* (related) What is it with this `/tmp/backuptool.functions` that seemingly anyone is sourcing at the beginning of the script. How could I find out which functions are provided by this and what they do?

Thanks a lot!

# Answer
It's not a standard, but just a convention which is followed by many in custom ROM world. IIRC it's the LineageOS/CM who introduced the idea. So their repo is the best place to see latest changes.

There is no complicated API, just a few bash script functions to backup/restore some files during OTAs (dirty flashes).
> 1 votes

---
Tags: twrp, ota-update, system
---


# Question
Title: If /system partition is never encrypted (even in "full-disk" encryption), how is it protected?
It seems that Android's "full-disk-encrytpion" is only concerned about encrypting the `data` or `internal storage` partition. It says:

> Full-disk encryption is the process of encoding all user data on an Android device using an encrypted key. Once a device is encrypted, all user-created data is automatically encrypted before committing it to disk and all reads automatically decrypt data before returning it to the calling process.

I am puzzled what encryption (at rest) of user-data is worth, if an attacker can simply modify the content of the `/system` partition, to contain a malware that would exfiltrate data or encryption key.

Is there a reason to consider Android's encryption to be effective even though `/system` partition is not encrypted?

I assume that an answer involves a `chain-of-trust`, relative to a locked boot loader.

# Answer
> 1 votes
It looks like Google agrees with you and is phasing out "legacy" full disk encryption:

> Caution: Support for full-disk encryption is going away. If you're creating a new device, you should use file-based encryption.

Full disk encryption was considered pretty solid until 2016 because of the hardware backed trusted execution environment. Depending on how the OEM implements the trusted execution environment and if the OEM utilizes the android keystore system. Makes a varying degree of security. If instead it is software backed then not so much.

The encryption keys are not just sitting in some un-encrypted partition. The encrypted encryption key is stored in th e crypto metadata. The hardware backed trusted execution environment’s signing capability and if the android keystore system is implemented then the android device as a whole and even the android kernel do not have access to the keymaster within trusted secure enviroment. The keystore system is very intresting but explaining the security and operations behind it involves a multiple page explaination that would be answered best though its own question.

Android devices that support a lock screen and ship with Android 7.0 or higher have a secondary, isolated environment called a Trusted Execution Environment. This enables further separation from any untrusted code. The capability is typically implemented using secure hardware.

Examples of the way a trusted execution environment can be set up are:

A separate virtual machine, hypervisor, or purpose-built trusted execution environment like ARM TrustZone. The isolated environment must provide complete separation from the Android kernel and user space (non-secure world). This separation is so that nothing running in the non-secure-world can observe or manipulate the results of any computation in the isolated environment.

Android 9.0 introduced a hardware backed trusted execution environment called a strongbox. The strongbox is a completely separate, purpose-built and certified secure CPUs. Examples of StrongBox devices are embedded Secure Elements (eSE) or on-SoC secure processing units.

A hardware backed trusted secure environment that utilizes the android keystore system can serve as strong protection for the encrypted encryption key. Unless a third party such as Qualcomm (2016) happens to mess up with design oversite in the implementation of the keymaster.

# Answer
> 3 votes
`/boot`, `/system`, `/vendor`, `/vbmeta` and **ODM** Partitions are protected by android verified boot (AVB). They are not encrypted but their integrity is verified during boot. Any modification to these partitions will halt the boot flow and brick the device. At this point without EDL mode, you won't be able to flash stock OS to unbrick it.

AVB verifies vbmeta partition image using OEM public key which is hardcoded in android bootloader (ABL). Then hash of boot image is calculated and compared with the hash stored in vbmeta. Once the boot image is verified, kernel constructs hashtree of every partition and compares their root hash with the ones that are stored in vbmeta. In this way, just by protecting vbmeta, every other partition can be verified on boot.

To protect ABL from tampering (e.g. replacing OEM public key with your own and resigning vbmeta with your private key, thus breaking chain of trust), chipmakers implement secure boot. In Qcom devices, Primary Bootloader (PBL) which is burned on CPU die, verifies Xtended Bootloader (XBL) using Qcom's public key which is stored in eFuse. Then Xtended Bootloader verifies ABL and ABL enforces AVB.

When you unlock bootloader (unlock and unlock\_critical), AVB is not enforced but secure boot is still enforced by SoC. This chain of trust goes upto the hardware level making any modification useless. There's no reason to encrypt system partitions as those images are already public. What matters is protection of their integrity.

# Answer
> 0 votes
a quick check on Samsung Galaxy Tab S3 SM-T820 Tablet with official Android 9 Pie indicates that /system is encrypted with FDE

```
:/ $ df -ah
Filesystem                            Size  Used Avail Use% Mounted on
rootfs                                1.5G  9.4M  1.5G   1% /
tmpfs                                 1.7G  1.1M  1.7G   1% /dev
devpts                                   0     0     0   0% /dev/pts
none                                     0     0     0   0% /dev/cpuctl
none                                     0     0     0   0% /dev/cpuset
proc                                     0     0     0   0% /proc
sysfs                                    0     0     0   0% /sys
selinuxfs                                0     0     0   0% /sys/fs/selinux
debugfs                                  0     0     0   0% /sys/kernel/debug
tracefs                                  0     0     0   0% /sys/kernel/debug/tracing
pstore                                   0     0     0   0% /sys/fs/pstore
tmpfs                                 1.7G     0  1.7G   0% /mnt
tmpfs                                 1.7G     0  1.7G   0% /mnt/secure
/dev/block/dm-0                       3.7G  3.5G  245M  94% /system
/dev/block/bootdevice/by-name/apnhlos    0     0     0   0% /system/vendor/firmware_mnt
/dev/block/bootdevice/by-name/modem      0     0     0   0% /system/vendor/firmware-modem
/dev/block/bootdevice/by-name/dsp      12M  4.1M  7.6M  36% /system/vendor/dsp
none                                     0     0     0   0% /acct
none                                     0     0     0   0% /config
/dev/block/bootdevice/by-name/cache   193M  8.8M  184M   5% /cache
/dev/block/bootdevice/by-name/efs      16M  720K   15M   5% /efs
/dev/block/dm-1                        24G   13G   11G  56% /data
/data/knox/secure_fs/enc_user          24G   13G   11G  56% /data/enc_user
/data/knox/secure_fs/enc_media         24G   13G   11G  56% /data/knox/secure_fs/enc_media
tmpfs                                 1.7G     0  1.7G   0% /storage
/data/media                            24G   13G   11G  57% /storage/emulated
/mnt/media_rw/4280-3E71                60G  4.8G   55G   9% /storage/4280-3E71
tmpfs                                 1.7G     0  1.7G   0% /storage/self
:/ $

```

---
Tags: encryption, disk-encryption
---


# Question
Title: How do I backup media, game data (internal storage) using TWRP?
It is known that TWRP does not back up `/data/media` as you can read here and on other posts on this site, also on TWRP FAQ

**How can one bypass this?**

# Answer
There's an app that's just been released (tested on Moto X Play) that bridges the gap between Nandroid and **full** backup and backs up photos, videos, game data etc, which wasn't possible earlier

Tipatch (Play Store) and quoting from developers XDA thread

> Tipatch patches TWRP to backup contents of internal storage (emulated SD card) as part of Data, thus preventing data loss. Internal storage typically includes items such as photos, videos, downloads, game data, and other assorted files.
>
> A side effect is that wiping "Data" will also wipe internal storage. This cannot be fixed.

Programs (instead of using app) for all OS's available on Github

I am not affiliated in any way with the app or developer and wanted to share a tip-off from a friend

Edit: Also now tracker free version available in Izzy's F-droid repo

**Edit 2** User alecxs who is a regular contributor here has a universal bind mount enabler, for the same functionality. You can download it from XDA. There is also a Magisk module "TWRP helper" that claims to do the same (not tested by me).
> 3 votes

# Answer
I would follow the idea from https://forum.xda-developers.com/android/general/tutorial-create-internal-storage-backup-t3389172 \- that is

> Step 1- reboot in recovery Step 2-mount all partitions Step 3-now open file manager Step 4-go to path /data/media Step 5-now rename media folder name to xyz (now path name is /data/xyz) Step 6- now go to backup window Step 7- now refresh memory.... u notice that data partition memory is increase (data+internal storage)

and then back up to your preferred location, e.g. external SD card.
> 1 votes

# Answer
Starting from TWRP version 3.4.0+ we can now make backup of Internal Storage straight from menu without any modification

thanks to the developers who finally decided to include that option after a long period of such feature request :)
> 1 votes

---
Tags: twrp
---


# Question
Title: Generate a root debloat script from a package list after a successful non-root debloat
There are two ways to get rid of apps to debloat a ROM:

* `adb shell pm uninstall -k --user 0 <package-name>` (run on PC)
* `rm -rf <package folder>` (on device, in Terminal of TWRP)

The first method has one big advantage - deleted apps can be restored by

* `adb shell cmd package install-existing <package_name>` But the diasadvantage - it still consumes memory.

So best would be to do the first method until you see is is all fine - not debloated to much. To not manually do the "rm" and selection of packages - **is there a good way to list the uninstalled packages** and **generate a list for the "rm" command**? Thanks for your attention.

# Answer
I guess you mean *only uninstalled system packages*.

Here is a little bash script doing what you want:

```
#!/usr/bin/env bash

set -euo pipefail

declare -a PACKAGES=()

readarray -t PACKAGES < <(comm -3 <(adb shell 'pm list packages -s -u -f' | sort -i) \
                                  <(adb shell 'pm list packages -s -f'    | sort -i))

for package in "${PACKAGES[@]}"; do
    echo "rm -rf $package" | sed -r 's/package://g' | sed -r 's/=.*//g' >> root_debloat.txt
done
echo "root_debloat.txt generated."

```

Then, you just need to run the commands through adb shell as root:

```
adb shell su < root_debloat.txt

```

---

What the script does :

1. Put the list of uninstalled system packages in the array *PACKAGES*.

Why this complicated command ? Because `pm list packages -s -u` returns installed **and** uninstalled system packages. So you need to take the difference of this list and the list of installed system packages.

Each element of the array will have this form (because of the use of the *-f* option) : `package:/path/to/apk=package.name`

2. Generate the list of rm commands and write them one by one, for each package, in the *root\_debloat.txt* file.

You only want the path. The *sed* commands are here to remove the rest.
> 1 votes

---
Tags: adb, twrp, system-apps
---


# Question
Title: How to start the kiwi browser always incognito mode?
I want to start the kiwi browser always in incognito mode. How can i do it ?

I know there is a option to click on incognito mode, But I want it to start with incognito mode.

# Answer
The method might not be optimal but it works for me.

1. Open the app drawer, Long press on Kiwi browser icon.
2. Two choices will appear: New tab and New Incognito tab. Long press on New Incognito tab to create a shortcut.
3. Optional: If you there is a Kiwi browser on your home screen, delete it. Edit the shortcut name from Incognito tab to Kiwi Browser if your launcher allows it.

Caveats: If you open Kiwi Browser from the app drawer, it will open a new tab not a new incognito tab.
> 1 votes

---
Tags: applications, browser, privacy
---


# Question
Title: Open YouTube links from Facebook Messenger app in the Youtube app
I am unable to play YouTube videos from the links I get on my Facebook Messenger app.

Here's what happens:

1. A friend of mine posts a video link to me (YouTube link) as a message on Facebook.
2. I receive it on my Android mobile in the Facebook Messenger app.
3. I click on it and it shows a dialog box (you can call that a pop-up) which asks me to choose an app to open the video with.

Now earlier, there used to be video player apps on my mobile along with the internet browsers installed on my mobile that used to come up there. So I would select an internet browser, and it, in turn, would re-direct me to the YouTube app itself.

However, now, I am only getting video players in that dialog box as an option to open the YouTube video, but of course, if I select them, they are not able to stream the video.

Has anyone found a way around this problem? It is really bothersome.

# Answer
1. Go to the Settings on Facebook Messenger app on Android
2. Navigate to "Photos and Media"
3. Activate/turn on "Open links in default browser"
> 0 votes

# Answer
Try going on to app settings and turn on "links open externally" fixed it for me.
> -3 votes

---
Tags: youtube, facebook-messenger, url
---


# Question
Title: Stopping an ongoing download without exiting Chrome
I have a file that has been stuck at "2 seconds remaining" for about a day. I feel it's never going to finish, so I want to know how to cancel it without quitting or stopping Chrome.

None of these have worked:

* turning off data and WiFi.
* force "Downloads" or "Download Manager" to stop.
* clearing the data of "Downloads" or "Download Manager".
* the suggestion to force "Download Manager" to stop and *then* press "Clear Data" does not work because "Clear Data" becomes grayed out after hitting "Force stop".
* going into notification bar and pressing for some kind of cancel option.

# Answer
The Download manager is just a viewing app for seeing all downloads you have done clearing it or forcing it to stop will do nothing(it will just clear the app's data and cache)
You might want to try clearing cache of chrome app since that's the app you used to download the file by going into Settings -\> Apps/Installed apps -\>*Locate* Chrome app -\> Clear cache
If this still doesn't solve your problem you might want to clear data of the app as well (same procedure as above just click clear data) **WARNING: Clearing data will clear all bookmarks,sometimes the files that were downloaded using chrome and sign you out of chrome(which you sign in after clearing is complete) So better move all the downloaded file to other location before proceeding**
(Not a risky process i get the same problem randomly and do the same thing *most of the time clearing cache does the job*)
> 1 votes

# Answer
Open the Downloads application, press and hold the download you would like to stop, and select the trash icon.
> 0 votes

# Answer
Go to google search box and type Download Manager, an icon will appear below, click on it and you will see a download history, look for the file you want to cancel click and hold the file you want to cancel until you see a trash icon above , click on the trash icon and download will be cancelled.
> 0 votes

---
Tags: chrome-for-android, downloading
---


# Question
Title: Possible to purchase (buy) an Android app from the Google Play store web site without installing it on any device?
Is it possible to purchase (buy) an Android app from the Google Play store ***web site*** without causing that app to be automatically installed on a device?

# Answer
> 4 votes
As far as I know there is no way to buy an app without selecting a device and triggering automatic installation on that device. If the device is offline as far as I know the installation will be performed the next time it comes online.

The only workaround would be to add the Google account on a device, enable Airplane mode, remove the account and reboot the device. Then the device is still listed in Google Play Store for a few months and can be used to buy apps but they will never be installed as the devices comes never online again.

A similar option are "virtual devices" devices that do not exist in reality (or as emulator) but are registered in PlayStore. App download tools like Raccoon are capable of creating such virtual devices. But if those devices are not used for a time they also loose functionality.

---
Tags: google-play-store, installation, google, paid-apps
---


# Question
Title: Xiaomi Redmi Note 4: unable to acquire unlocking bootloader permission
I've created a MIUI account through my Redmi Note 4 and applied for permission to unlock the bootloader through the official Xiaomi unlocking link.

The problem is that after I enter my phone number so that they send me the code which I'd use to apply for the permission --which takes a lot of time to receive but I was patient and waited-- it gives me a pop-up message in Chinese in which it's roughly translated to: "You have reached the limit for this IP".

Please keep in mind that I haven't signed up with many accounts from the same PC. I've tried another email, phone number, and a new MIUI account from a totally different PC and it still gave me the same pop-up message.

I really want to root my device. Please help!

# Answer
It is a known fact that ISPs are allocated a bunch of IP addresses which are then dynamically distributed among the public. So, every time you connect to the internet, it is possible you are allocated a different IP address, and sometimes it might be the same (try `whatismyip` on your browser to see your IP address). So, try the procedure using mobile data.

If it still doesn't work, I would like to suggest to you an unofficial method mentioned in XDA and I request you to go through the entire thread.
> 1 votes

---
Tags: rooting, bootloader-lock, xiaomi, xiaomi-redmi-note-4g
---


# Question
Title: How can I see what exactly an application does?
I'm a bit surprised I couldn't find this answers myself. I am a major minimalist when it comes to computers (my desktop and laptop both run strip-down Linuces) and I wanted to get rid of some of the bloatware that came with my new Android. My only problem being that I'm not entirely sure what some of the applications do and whether I need/want them. Is there any way to get details on what an application does?

Edit: For clarification: when I say "details" I mean some description of what the application does.

Edit: My device is a Samsung S4 Mini from AT&T.

# Answer
> 1 votes
It's a really old question but you may still be interested in this quite new community project : Universal Android Debloater

It's a bash script using ADB to debloat non-rooted smartphones. The packages lists used are as well documented as possible in order to provide a better understanding of what you can delete or not.

# Answer
> 0 votes
Newer android versions let you disable applications you do not want but cannot uninstall. These pre-installed apps are usually in /system/app/YouTube.apk as an example.

To remove: \- root your device \- uninstall app updates using normal settings -\> app manager \- make a backup of your /system/app/appName.apk adb shell, su, \- mount -o remount,rw /system \- rm /system/app/appName.\* \- sync, reboot ( do press enter where i did a ',' ) \- as long as your adb is still working, you can safely restore apps you removed and want back again. But don't forget the file permissions! Do a ls -laF in this folder before, note the permissions, and set them again accordingly after restoring.

Have fun!

---
Tags: applications, bloatware, application-manager, system-info
---


# Question
Title: Device says bootloader unlocked but OEM unlock option can enabled and disabled?
I have a Redmi Note 3 (INDIAN VARIANT Kenzo/Snapdragon variant running on Marshmellow 6.0.1 with MIUI Global 10.2) on which I performed an bootloader unlocking procedure via the tool XiaoMiTool V2 from xda since the official method kept denying me for some reason

I also want to let you know that during the procedure i left the *oem unlocking option disabled* and ran the tool

So after the device's bootloader was unlocked (ss attached)

I noticed that the OEM unlocking option was still active (meaning I can flip the button and it will just ask for the pass and warn me and enable the option: again ss attached)

**So my question is is my device properly unlocked? OR Did I mess up with procedure ?** I know i could dial `*#*#7378423#*#*` *(which doesn't work in miui devices)* or using *fastboot method* mentioned here\- *but the problem is that my device's usb port is damaged in a way that charging works but MTP or any other option doesn't (Yeah I tried multiple usb cables, brought a brand new from official store and multiple devices)* or is there any app to do that ?

**EDIT :** Okay now I tried by adjusting the chord into the port and running `fastboot getvar unlocked`(ss attached)

Now what does this mean ? Is it still locked ?

I would really thankful if someone can help

# Answer
It would be good if you enable the `Allow OEM unlocking` option before proceeding to unlock bootloader
I tried by adjusting the chord into the port and running `fastboot getvar unlocked` which gave no value meaning the device is still locked (ss attached)

Even though it says nothing (unlocked : YES etc), I did switch the toggle on for `Allow OEM unlocking` before proceeding to flash just to be on a safer side and successfully flashed twrp recovery and carbonrom and the device is running well
> 0 votes

---
Tags: rooting, bootloader, xiaomi, bootloader-lock, miui
---


# Question
Title: Automatically turn work profile off on evenings and week-ends
I'd like to block myself from accessing my work apps at certain times and days (typically, evenings and weekends). Ideally, I'd like to use the system-level setting to remove access to all apps on the work profile. Back when all my apps (personal & corporate) were living on the same profile, I used the paid version of Stay Focused to block all work apps individually, and that was a satisfactory solution. Unfortunately, now the "device policy" forces me to put all work apps on the work profile, this Stay Focused app isn't available on the work profile version of the Play Store, and when I install it on the personal profile, it can't block apps on the work profile, so it's basically useless.

I know turning work profile on/off manually is really easy, but

1. I too easily forget to do so (and then mindlessly check work email late at night), and
2. the fact that it's so easy to turn it back on is part of the problem (ideally, I need to be 3-4 clicks away from accessing anything work-related, otherwise I do it mindlessly).

I use a Pixel 3A on Android 10. I can't root my phone. Is there a workaround or am I just out of luck?

# Answer
If you go to settings \> digital wellbeing + parental controls \> digital wellbeing \> ways to disconnect There's a setting for setting a work profile schedule
> 5 votes

---
Tags: applications, settings, profiles, android-10
---


title: Android WIFI Hotspot

text:
# Question
Title: Android WIFI Hotspot
Does anyone know where android save the details (Mac, etc.) of devices that connected **to my phone** ?! (When my device is used as a mobile hotsop)

# Answer
On my device it's `/data/misc/wifi/WifiConfigStore.xml` You will need root to access it.
> -2 votes

---
Tags: wifi-hotspot, mac-address
---


title: How to re-enable apps using ADB?

text:
# Question
Title: How to re-enable apps using ADB?
I got a samsung galaxy folder 2: https://www.samsung.com/hk\_en/smartphones/galaxy-folder2-g165/

It runs Android 6.0.1

Anyways I am not new to ABD and have used it to uninstall system apps on my other phone (Samsung S10) with no problems. So when I got the folder 2 and started removing system apps using pm unistall -k --user 0 as I did with my other phone. Then I decided to remove the contacts app (com.android.contacts) because I installed google contacts.

Well apparently, in doing so that contacts app actually housed the phone app as well. So now I have no phone app on my phone. That's kind of a big deal.

How do I re enable the contacts app using ADB?

My device is not rooted and I don't want to root it. Also I know factory resetting should fix this, but I'd prefer not to do that either. Thanks.

# Answer
> 2 votes
Unfortunately there is no way on Android 6 (and even 7) to reinstall a system app uninstalled with `adb shell pm uninstall PACKAGE`.

The command `adb shell cmd package install-existing PACKAGE` can restore the uninstalled package but it has only been introduced with Android 8.0.

On these older android versions, it is safer to use :

```
adb shell am force-stop PACKAGE && pm disable-user PACKAGE && pm clear PACKAGE

```

so you can revert it if necessary :

```
adb shell pm enable PACKAGE

```

**Note:** `PACKAGE` everywhere above means package name of the app.

---
Tags: adb, 6.0-marshmallow
---


# Question
Title: Phone manufacturer prevents installation of apps signed by third paries, does anyone know a way around this?
I'm trying to put apps on an LG Exalt VN220, which is a flip phone that runs on a limited version of android. Whenever I try to install an apk using adb I get the following message: INSTALL\_PARSE\_FAILED\_INCONSISTENT\_CERTIFICATES. From a quick Google search I learned that this usually occurs when you try updating an app with an update that has a different certificate. This can not be the case because these apps were never installed on the phone before. When I pulled stock apps from the phone and tried to install them I got: INSTALL\_PARSE\_FAILED\_UNEXPECTED\_EXCEPTION. However when I install apps by LG that did not come on the phone they successfully install. Does anybody know if there is a way to get around this?

# Answer
> 0 votes
Not sure how it works with LG exactly because I don't own an LG phone. But I had similar issue with my mi phone.

Before you can install any apps using adb you need to enable developer setting allow usb debugging, and allow install via usb. LG might have some other flags too

In older version of android there was a switch - "allow install from unknown sources". Please look for these settings and do the needful.

# Answer
> 0 votes
This phone is locked down by the manufacturer and will not allow 3rd party apps. Apps compiled by LG will usually pass though, if they meet specific criteria.

Because it is a flip phone running in a dumbed down android environment, the system state is fragile and warrants extra protection.

Also, as of now, there is no known root method for this device, and it is unlikely that the device will generate enough interest in the dev community to produce one. (See Here.)

4G Flip phones from other manufactures are more susceptible to hacks and workarounds than the LG Exalt.

# Answer
> 0 votes
You need to edit the manifest.xml to `com.android.cts.originalpackagename`, if you only edit the xml, and not a recompile of the app, it will get past the signature check. as esaphire mentioned, apps4flip and kosherappsforflip have a bunch of already edited apps.

---
Tags: adb, apk
---


# Question
Title: Grant permissions to a service launched with ADB?
I'm trying to get a simple accessibility service, like Google's Voice Access or Button Mapper to work on an LG Exalt LTE, running a stripped down version of Marshmellow. The stock is missing many UI components, including system Accessibility Settings, which are normally used for turning accessibility services on or off. I would like to know if it is possible to compensate for lack of UI with ADB. I've tried the following: Install the app (Take Button Mapper for example), Its manifest declares a few permissions, that i've granted, say:

`<uses-permission name="android.permission.WRITE_SECURE_SETTINGS" />`

was granted `adb shell pm grant package.name.here android.permission.WRITE_SECURE_SETTINGS`

I even gave it `android.permission.WRITE_SECURE_SETTINGS`

even though its not declared in the permissions list in the top of the manifest. I get this error: `Operation not allowed: java.lang.SecurityException: Package package.name.here has not requested permission android.permission.BIND_ACCESSIBILITY_SERVICE`

However, It is declared in the manifest here though:

```
<service name="a.i" permission="android.permission.BIND_ACCESSIBILITY_SERVICE" stopWithTask="true">
  <meta-data name="android.accessibilityservice" resource="res/xml/accessibility.xml" />
  <intent-filter>
    <action name="android.accessibilityservice.AccessibilityService" />
  </intent-filter>
</service>

```

and thats where the problem is. this is the service itself, and it requires a non-package-wide permission, `BIND_ACCESSIBILITY_SERVICE`.

if I start it with ADB like this `adb shell am startservice -n package.name.here/a.i`

I get and error `Error: Requires permission android.permission.BIND_ACCESSIBILITY_SERVICE`

even though I already granted the permission to the package.

I've even tried `adb shell settings put secure enabled_accessibility_services package.name.here/.a.i`, but still get the same error.

# Bottom line:

How do I start a service and grant permissions to that service with ADB? To be clear. I already know that I can use `adb shell pm grant` to grant a permission to the whole package, but in this case it is a permission not required by the whole package it is declared in a specific component and I am at loss as to how to launch the component with the permissions it requires through ADB.

# Answer
I believe I figured it out. I'll use Voice Access as the example app.

```
adb shell am startservice com.android.cts.apps.accessibility.voiceaccess/com.google.android.apps.accessibility.voiceaccess.JustSpeakService

```

Next

```
adb shell settings put secure enabled_accessibility_services com.android.cts.apps.accessibility.voiceaccess/com.google.android.apps.accessibility.voiceaccess.JustSpeakService

```

Then

```
adb shell settings put secure accessibility_enabled 1

```

Then finally delete the the readout app, to avoid the accessibility features from being overwritten

```
adb shell pm uninstall -k --user 0 com.lge.voicecommand

```

I don't think there should be any errors after that, leave a comment if there are though.
> 2 votes

---
Tags: adb, permissions, accessibility, services
---


# Question
Title: Recover access to Samsung Galaxy Tab A after forgetting the pattern lock
I have Samsung Galaxy Tab A and I put a pattern lock on it, but sometime later, I forgot the pattern.

I've looked it up and the only options to recover are to have the tablet off, but I can't turn the tablet off without the passcode.

How to recover access to it?

# Answer
Push the down volume button and power button at the same time. It reset my tablet and I just reentered the pattern and it worked. I hope this helps.
> 1 votes

# Answer
There's a simple way out.

Assuming your tablet is connected to the Internet and you have Google account signed in, just enter pattern several times till the screen shows **Forgot pattern**. Click it then enter your Google account credentials to gain access to your tablet.
> 0 votes

# Answer
Drain the battery down if you can't shut it down. Then, volume up and power for a few seconds (until it shows its doing something) from there, you can wipe the device
> 0 votes

# Answer
Hold down the power button. Wait for the power off and restart to appear on the screen. You should see a restart in safe mode. Restart and if everything is ok do a regular restart I didn't forget my pattern but it wouldn't work. Just blanked the screen if I put in the correct pattern. And said incorrect pattern if I tried an incorrect pattern. I also noticed it was not counting down the incorrect attempts. I did the above combo just by trying combos. It worked. Good Luck
> 0 votes

---
Tags: pattern-lock, samsung-galaxy-tab-a
---


# Question
Title: How can I upgrade my "obsolete" Pixel to a current/secure version of Android?
I have a first-gen Google Pixel. It came with Android 9 (Oreo), then after I'd had it a while, upgraded itself to 10 (Pie). Just about the time Android 11 (Q?) came out, I was notified that Google would no longer supply updates (not even security updates, it seems) for my phone -- then not yet quite two years old.

Sure, most people buy a new phone as soon as the purchase agreement runs out on their old one. I, however, bought the Pixel originally with the idea that, if I was going to spend $750 for a phone, I'd make it as future resistant as possible. I bought the best camera, fastest processor, and largest storage (128 GB) that I could find, which is how I wound up with a Pixel (Apple wasn't in contention, because Apple).

Now, however, I have to choose between buying a new Pixel 4a (for less than half what I paid for my original Pixel), essentially the same phone I have but with very slightly upgraded specs (camera hardware supports longer exposures, CPU is slightly faster), in order to get two years of updates on a new Android version, buying a Pixel 5 or something else to get a significant hardware upgrade (and paying as much as I did originally) -- or continuing to carry and use my original Pixel, which still works fine, holds charge well, and is nowhere even vaguely close to full.

The only reason I have to think about this is that I'm apparently no longer eligible for security updates, meaning there's the possibility that a flaw that's been fixed for years in newer versions might let someone take control of my phone, steal my photos and storeds passwords, take over my email, etc.

Is there a way to upgrade manually, legally, with a non-rooted phone, and have the upgraded system work correctly with my hardware (camera etc.)?

The phone is on Verizon, if that matters (not sure why it would, but not sure it wouldn't).

# Answer
You could install LineageOS for Pixel 1 (sailfish).

However as Google does not provide updated kernels (and drivers) the updates will only affect problems in the Android system itself.

The disadvantage is that the whole system is no longer genuine regarding Android SafetyNet check so that certain apps (especially payment/banking apps) may refuse to work.
> 0 votes

---
Tags: updates, google-pixel
---


# Question
Title: Why doesn't Huawei provide just the USB driver to use ADB?
I'd like to use the MyPhoneExplorer application to sync my Android smartphone with Windows over USB. This requires first installing a driver for the phone and the ADB application.

However, the official driver seems only available as part of the Huawei HiSuite bloatware: http://consumer.huawei.com/minisite/HiSuite\_en/index.html

Can someone confirm that there's simply no official driver from Huawei, and the alternative is either installing that bloatware, or find a non-official (possibly virus-carrying) driver somewhere?

Thank you.

# Answer
> 7 votes
Ex Honor 6 user

Confirmed. There is no other way except installing Hi Suite or risking unknown driver. Tried unsuccessfully with several trusted *universal drivers*

This is my conclusion after I searched in several forums like XDA, Huawei forums ( trawling is a problem as they are in Chinese and one had to depend on Google translate) and Facebook sites of Huawei users. My search was motivated by unconfirmed posts that HiSuite send user information to its servers- bloatware I could live with. I was left with no option but install HiSuite

# Answer
> 22 votes
Drivers are not distributed as standalone package in order to increase market penetration of the HiSuite software. It's quite popular marketing strategy: you can get what you want only in bundle with something you don't actually want, but need to get the primary item is big enough to make you buckle in and get the whole package.

Nevertheless, you can circumvent the bundling yourself:

* download the HiSuite installer.
* open the installer .exe with 7zip and extract its content preserving internal folder structure (a trick that works on most installers)
* find something that looks like the driver
* run/install it, preferably on a disposable system first, to prove it's what you want.

In HiSuite version 5.0.1.300 it was \\$\_OUTDIR\Driver\all\DriverSetup.exe. Works with P8 Lite and Mate 7.

# Answer
> 4 votes
I was looking for those lately, sorry for Golden Shovel award, but if I found this thread then maybe someone else will find this helpful.

Download installer for this HiSuite. Unpack it, like archive (I use 7-zip). It asks for file replace, just 'yes' it (it is because installer format, don't worry). If you order your Windows to look for driver inside this unpacked folder it will find it, but from catalog tree you should know what's what.

Bang, you have driver without installing crapware.

# Answer
> 4 votes
If you just want to directly access your Honor (I've got an Honor 6A) phone, go to "Settings", "About Phone", press 7x "Build Number" - the phone tells you, that "You're now a developer!".

Go to the new "Developer Options", activate "USB Configuration" an choose MTP or PTP. After that I could access the internal phone memory and the SD card directly via Explorer in Windows - without installing HiSuite or any Drivers or something special. Without these steps I only got a HiSuite Installer Option and no access to the phone's memory.

# Answer
> 1 votes
You can install manually the **Google USB driver** that comes with the **SDK** for **Android** developing, it works to use adb on several **Android** phones, when you're in the process to install it, Windows might tell that the driver might not work properly, but it doesn't care.

# Answer
> 1 votes
As @Gulbahar said, there is no way except installing the HiSuite or relying on unofficial drivers.

What I did and worked was installing HiSuite, restart my pc, and without connecting my phone to HiSuite for privacy concern, uninstalled HiSuite software. Happily when I uninstalled HiSuite it did not uninstalled the driver :).

# Answer
> 1 votes
Here is the official way to install the driver. It is suggested to connect the phone as a virtual USB-device and install drivers from it. Worked fine for me.

# Answer
> 1 votes
Perhaps it is because my phone is brand new (Nova) but when plugged into windows 10 it asks if for charging or file transfer. If you chose the latter you can access the phone and memory card.

# Answer
> 1 votes
Actually, there is a solution, so follow the guide below:

Step One

1. download "HiSuite" from this link: https://consumer.huawei.com/minisite/HiSuite\_en/
2. extract the compressed file then extract "Hisuite\_8.0.1.302\_OVE.exe" file using 7-zip.

Step Two

To install the Android USB driver on Windows 10 for the first time, do the following:

1. Connect your Android device to your computer's USB port.
2. From Windows Explorer, open Computer Management.
3. In the Computer Management left pane, select Device Manager.
4. In the Device Manager right pane, locate and expand Portable Devices or Other Devices, depending on which one you see.
5. Right-click the name of the device you connected, and then select Update Driver Software.
6. In the Hardware Update wizard, select Browse my computer for driver software and click Next.
7. Click Browse and then locate the folder you just extracted from ".exe" file
8. Click Next to install the driver.

Good luck.

# Answer
> 1 votes
The trick is to make android OS connect you before Hisuite bloatware kicks in.

Go to settings \> developer options \> under select USB configuration \> select MTP. then connect your USB.

When you unplug the USB, Huawei will reset it back to charging, hence forcing you again to use it. so you'll have to change the developer options configuration every time you need to connect your USB. This way worked for me on the EMUI 10.1.0.286

I have a mate 20 pro that have been driving me crazy since the EMUI 10 update. Hisuite is ONE of the issues where Hisuite is forced on us now instead of a regular file transfer. Since I was previously able to connect my phone using USB and use it as storage, or backup, etc. Not anymore.

I did have no choice but to install it and give them a copy of my life, i will email the privacy department and request that they delete my details. That's what their website says to do!!!

# Answer
> 0 votes
Not really an answer to the above question but I found this question when trying to find ways to transfer files without needing HiSuite. I wanted to comment on an existing, related answer but in some step of brilliance on the part of I fail to understand you need less reputation to answer than to comment.

If you just want to access the files go to Settings -\> About Phone and tap on the Build No. 7 times. You should get a message (a toast) informing you you're now a developer. Search for enabling developer mode on your phone specifically if you're lost. As Peter said in his answer you can select the file transfer protocol but in my case I also had to enable USB Debugging for the internal storage to show up in my file manager. Why this isn't default behaviour escapes me.

Hope this helps someone because it stole 40 minutes of my life.

# Answer
> 0 votes
I didn't get it to work so in the end I used adb tools from google download, unzip, in the unziped folder in the path name: select all and replace with "cmd", hit enter, `adb push C:\folder\yourfile.txt /data/local`

---
Tags: adb, huawei, usb-drivers
---


title: Zoom in/out via external keyboard

text:
# Question
Title: Zoom in/out via external keyboard
In there a way to get the effect of (zoom out/pinch put)/in with external mouse and or/keyboard? For games like angry birds or using google earth.

# Answer
Hold the key `Ctrl` and `↓` on your keyboard. Two little opaque circles will appear near your mouse. Hold down the left button of your mouse and move those little circles. It will zoom in-and-out just using two fingers.
> 3 votes

# Answer
If you have an external mouse with a scroll wheel, try rolling the wheel while holding down Ctrl on the keyboard.

This works on countless office-type apps (Word, Excel, Outlook, web browsers, image editors etc). Might work on some games and the like?
> 2 votes

# Answer
I know that in the browser you could do:

```
CTRL+I = Zoom-in on page.
CTRL+O = zoom-out on page.

```

I wonder if this works in some other applications. Have you tried the `+` and `-` keys? How about `CTRL++` or `CTRL+-`?
> 1 votes

# Answer
Yes there is for Google Maps: Double click mouse and hold the button down on second click, now to zoom in move cursor up, zoom out move cursor down. After zooming is done release the button. Same thing works in phones and tabs with your finger.
> 1 votes

# Answer
No, sorry.

The only way to use pinch zoom is to pinch zoom - using multitouch.
> 0 votes

# Answer
I found out in settings that your can find in settings there is an enable button for zoomin and out. Is directly the DISPLAY settings.
> 0 votes

# Answer
Hold the control key down on the external keyboard, then use the + and - signs (near the backspace key) to zoom in and zoom out respectively.
> 0 votes

---
Tags: zooming, external-keyboard
---


# Question
Title: Huawei mate 20 lite bootloader-unlock doesn't work due to FRP
I've got two huawei mate 20 lites in front of me, and I have the bootloader codes to unlock them. But when I use adb fastboot to unlock them I get the message "Cannot unlock bootloader, you need to unlock FRP first" not with those exact words, but something like that. How can I unlock the bootloader with the codes that i have without entering the phones settings to enable usb debugging? I feel like I've scanned the whole internet by now. Thank you!

# Answer
have you enabled `allow OEM bootloader unlocking` in settings, it is in dev options

Here's some steps: (optional, to enable dev options): settings \>\> about phone \>\> (tap build no. 7 times)

enable oem unlocking: settings \>\> system \>\> advanced \>\> developer options \>\> allow oem unlocking(turn it on)

Screenshot:

(mine is disabled as I have a unlocked bootloader)
> 1 votes

---
Tags: bootloader-lock, frp
---


title: Regen default.prop

text:
# Question
Title: Regen default.prop
So there is this settop box in india, called airtel internet tv(codename ganesa) It's gone 2 years with no updates, stuck on android 6. it has no usb adb but does have wireless adb. got root using dirtycow and updated default.prop to this:

# before

```
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.hardware=ganesa
ro.product.board=ganesa
ro.adb.secure=1
ro.secure=0
security.perf_harden=1
ro.allow.mock.location=0
ro.debuggable=0
ro.zygote=zygote32
dalvik.vm.image-dex2oat-Xms=64m
dalvik.vm.image-dex2oat-Xmx=64m
dalvik.vm.dex2oat-Xms=64m
dalvik.vm.dex2oat-Xmx=512m
ro.dalvik.vm.native.bridge=0
debug.atrace.tags.enableflags=0
#
# BOOTIMAGE_BUILD_PROPERTIES
#
ro.bootimage.build.date=Tue Jul 16 04:42:11 UTC 2019
ro.bootimage.build.date.utc=1563252131
ro.bootimage.build.fingerprint=airtel/ganesa/ganesa:6.0.1/MUE91/06.02.73:user/release-keys
persist.sys.usb.config=none

```

# after

```
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.hardware=ganesa
ro.product.board=ganesa
ro.adb.secure=0
ro.secure=1
security.perf_harden=1
ro.allow.mock.location=0
ro.debuggable=1
ro.zygote=zygote32
dalvik.vm.image-dex2oat-Xms=64m
dalvik.vm.image-dex2oat-Xmx=64m
dalvik.vm.dex2oat-Xms=64m
dalvik.vm.dex2oat-Xmx=512m
ro.dalvik.vm.native.bridge=0
debug.atrace.tags.enableflags=0
#
# BOOTIMAGE_BUILD_PROPERTIES
#
ro.bootimage.build.date=Tue Jul 16 04:42:11 UTC 2019
ro.bootimage.build.date.utc=1563252131
ro.bootimage.build.fingerprint=airtel/ganesa/ganesa:6.0.1/MUE91/06.02.73:user/release-keys
persist.sys.usb.config=none

```

After a quick reboot wifi adb went rip, I dont have a male-to-male usb cable rn, but can quickly make one if it is the only option!

So I would want to regen stock default.prop

Many thanks!

# Answer
I made a male to male cable at the end and connected it, connected and restored default.prop .

:)
> 1 votes

---
Tags: adb, 6.0-marshmallow
---


title: Permission denied

text:
# Question
Title: Permission denied
\[ASL\] gives this error in library installations:

```
%ANDROID%\platform-tools\adb.exe push %NATIVE% /data/local/asl-native

```

---\>RUN

```
'/data/local/asl-native':Permission denied

```

How can I overcome this problem without roots in the device?

# Answer
You can use `/data/local/tmp`, does not need root.
> 1 votes

---
Tags: adb, shell
---


# Question
Title: On Whatsapp can I know if I am in someone's contact list based on the "security code" messages?
Can I know if someone has me in their contacts based on the security code messages that are sent when there is a change or is that based on whether I have them in my contacts?

I want to know if someone still has me in their contacts, I have their number saved and when I opened the chat I saw the list of security code changes from their side going back 4 years or so (most recent one from this year). Does this mean they still have my number saved or is that because I have theirs?

# Answer
If you are able to see that other contacts' Security Code Change Notification, it means that you are they have you as a contact as.

> These codes are unique to each chat and can be compared between people in each chat to verify that the messages you send to the chat are end-to-end encrypted.

If you have never communicated with a contact, there won't be any security codes exchanged between both of you. Meaning that you won't see changes that happened when they reinstall, update the app or change numbers.

> At times, the security codes used in end-to-end encryption might change. This can happen because you or your contact reinstalled WhatsApp or changed phones.
> 1 votes

---
Tags: contacts, security, whatsapp-messenger
---


# Question
Title: Help with flashing stock ROM on Nokia 3.1 (Mediatek MT6750)
I got my Nokia 3.1 in a bit of a weird situation trying to flash the stock ROM. I feel like it's a lost cause, but since I can still boot in recovery mode, there may still be a solution, I will explain in case someone can help.

It started when I tried to update from Android 8.0 to 10.0 (none of the previous OTA updates had worked and would always reboot in Oreo 8.0). This time, it didn't work and got the phone stuck in a boot loop. The phone is still under warranty, but because I bought it overseas and there's no Nokia care centre here is New Zealand, I had no option but trying to repair it myself.

A wipe/factory reset didn't help, but after changing the active slot from B to A (using fastboot), it booted again in Oreo 8.0. Only problem is that I could no longer start a fresh Oreo 8.0 install without updating first and since all updates failed, I was stuck. I suspect slot B is damaged or corrupt, hence the impossibility to update. To check it, I switched back the active slot to B after a factory reset, and that was not a great idea, the phone wouldn't even boot and looked hard-bricked.

But I still managed to use SP tool to download firmware, so I did that with the original Nokia 3.1 stock ROM (ES2). However, I could not flash all files, I'm not too sure why. I had the error message: ERROR: STATUS\_SEC\_INSUFFICIENT\_BUFFER Verified boot is enabled Please download signed image (sutinfo-verified.img) or disable verified boot

I didn't know how to do either of these, so I skipped the three problematic files: sutinfo.img, systeminfo\_a.img, and cda\_a.img (not sure what they do?).

It worked and un-bricked the phone, but it now boots to recovery mode only. What puzzles me is that I also no longer have access to fastboot, even when I reboot to bootloader (as if it skipped bootloader and went straight to recovery). I suspect it is because it still boots on slot B but I don't know how I can check that or change it back to slot A without fastboot access. I tried using adb: adb shell getprop ro.boot\_suffix but although it can see the device, it failed because it says device is unauthorized. I've tried all the fixes for this I found, to no avail.

So that's where I am, able to boot to recovery (but with adb unauthorized), able to flash firmware (except those files that must be signed), and unable to access fastboot. I'm giving up hope that it's repairable, but I'd love to at least understand what happened, if someone has any idea...

Sorry for the long story...

# Answer
I had the same problem as you, after looking in a lot of forums I managed to solve it, I hope it helps you. My phone was no longer able to access the recovery, nor fastboot. After trying lots of Rom and various methods, I will explain to you which one I recovered the mobile, that is, losing the Imei, but for that there are many valid solutions. Enter the page https://www.needrom.com/download/nokia-3-1/ You have to create a premium account to download, but they are 3USD for 1 month, download the Rom and the flashtool from that link, when it flashes put it in Firmware Upgrade mode and uncheck the preloader, sutinfo, systeminfo and cda boxes. It worked perfectly for me and after that he let me update via OTA to Android 10. Greetings.
> 1 votes

---
Tags: device-firmware, stock-rom, mediatek, nokia-3
---


# Question
Title: How to permanently delete data on an android phone including images videos and etc..?
I have and android phone and I usually delete images and also delete them from trash . But I always can recover deleted items by using third party recovery apps like diskdigger and all deleted files can be recovered by doing this way .

I was wondering If there is a way to delete anything on my phone permanently which cant be recovered ?

# Answer
I don't know if your phone it's rooted or if you know terminal but `rm` it is a badass delete command even in Linux it is really hard to get information from, deleted whit `rm` but not impossible if you want to don't have to factory reset your phone for delete something you can over write on it, like delete it whit

```
rm -rf myfolder/to/delete

```

okay and then over write the space left on the device like

```
dd if=/dev/zero of=/sdcard/some_file_name.txt bs=1024 MiB=space_left_on_megabites

```

this will create a file of the size of the space left on where you want to overwrite the sd or the internal storage you must be really carefully whit the `dd` command "space\_left\_on\_megabites" it is the amount of megabytes left on the device if you have 6 gb it must be MiB=6000 etc..

you will get the notification of running out of space on the device don't worry you would get it back

ones the `dd` command finish it will take some time it's writing whit zeros on all the space left, then you delete the /sdcard/some\_file\_name.txt whit `rm`

```
rm -rf /sdcard/some_file_name.txt

```

then you have wipe ones you available space if you what to make it harder you must repeat the process like 5 times and then it will be really really impossible to recover it! but whit one time does app you mention it wont be available to get it back
> 1 votes

---
Tags: samsung, recovery-mode, data-recovery, delete
---


# Question
Title: TWRP tells me: adb: sideload connection failed: insufficient permissions for device: user in plugdev group; are your udev rules wrong?
```
❯ adb sideload lineage-17.1-20201108-nightly-guacamole-signed.zip
* daemon not running; starting now at tcp:5037
* daemon started successfully
adb: sideload connection failed: insufficient permissions for device: user in plugdev group; are your udev rules wrong?
See [http://developer.android.com/tools/device.html] for more information
adb: trying pre-KitKat sideload method...
adb: pre-KitKat sideload connection failed: insufficient permissions for device: user in plugdev group; are your udev rules wrong?
See [http://developer.android.com/tools/device.html] for more information

```

# Answer
> 0 votes
This is because TWRP doesn't support sideloading on the One Plus 7 Pro. From the official port page

> If you don't download the zip file to your device first for any reason, **you will need to adb push the zip to the device because MTP is not currently working on the OnePlus 7 Pro in TWRP.** If you are unable to use adb, you can also use a USB stick with an OTG cable, if you have those handy.

---
Tags: twrp, side-loading, oneplus-7-pro
---


# Question
Title: How can I tell whether I am booted into the A or B partition?
Android can install to an A or a B partition. This seems to be a default these days. How can I tell which one I am booted into using `adb`?

I am using LineageOS 17.1.

# Answer
# The right-most way (`bootctl`)

The command to provide this information is `bootctl`. As `root` (having run `adb root`), you can use this like this,

```
$ adb shell bootctl get-current-slot

```

Note this is the slot's number, you resolve that to the letter with,

```
$ adb shell 'bootctl get-suffix $(bootctl get-current-slot)'

```

*See also: How can I boot to a specific partition with ADB?, which also uses `bootctl`*

# Using `getvar`

```
$ adb shell /bin/getprop ro.boot.slot_suffix
_b

```

# From `fastboot`

```
$ fastboot getvar all

```

And find in the output: `(bootloader) current-slot: a`

# Other ways

## From `/proc/bootloader_log`

This command from `adb shell`

```
$ grep -i 'DEBUG: boot_' /proc/bootloader_log

```

Or like this,

```
adb shell "grep -i 'DEBUG: boot_' /proc/bootloader_log"

```

It return output like this,

```
avb_slot_verify.c:325: DEBUG: boot_b: Loading entire partition.

```

I believe that's in reference to the `b` partition that it's booting from.

## From `/proc/cmdline`

You can also parse this out of `/proc/cmdline`

```
$ adb shell 'cat /proc/cmdline | tr " " "\n" | grep -i slot'
androidboot.slot_suffix=_b

```
> 11 votes

---
Tags: adb, lineageos, ab-partition
---


# Question
Title: ADB error: insufficient permissions for device: verify udev rules
When I run `adb shell`, I get the following error

```
$> adb shell
* daemon not running; starting now at tcp:5037
* daemon started successfully
error: insufficient permissions for device: user in plugdev group; are your udev rules wrong?
See [http://developer.android.com/tools/device.html] for more information

```

The connection gets thus rejected without me getting any prompt on the phone's side. I have enabled the "USB debugging" option on the phone, which when connected correctly says "USB debugging connected".

# Answer
This can be resolved by enabling ADB transfer in your USB Preferences.

* Plug the phone into the USB
* Drag the phone's top menu (the drawer) down
* Click the notification that says "Android System: Charging this device via USB. Tap for more options."
* Click "File Transfer" (newer devices) or "MTP" (older devices)

Note, if successful you may get a prompt asking you to accept the keys of the computer issuing the `adb shell` command.
> 5 votes

---
Tags: adb, linux, usb-debugging
---


# Question
Title: How can I allow my partner to find my device?
When I lose my device (or think I did) I would like my partner to be able to locate it. However, I cannot find any such setting in the "Find my Device" app.

Is there maybe an alternative application that allows this?

# Answer
It's a bit of a workaround, but I use the Automate app to turn the ringer volume up to maximum when my phone receives an SMS with a specific text from my partner's phone. Then she can ring my phone and it's easy to find.
> 2 votes

# Answer
you must add the account of your partner on the devices and then open Find my Device app and login whit that account on the app and give some permissions, sorry i don't comment instead of answer because it is not complete the answer but i don't have that privilege jet ! :P I hope it helps !
> 1 votes

---
Tags: applications, lost-phone
---


title: Google Play Store without payment

text:
# Question
Title: Google Play Store without payment
Can I use Play Store with no credit/debit card, or PayPal or code to redeem. I have no intent of paying anything, what I want is free, so I don't want to put cards online. Is there a way to do this?

# Answer
You don't have to do anything. Google accounts without payment info work right after creation.

The only negative on a non-pay account is that in Google Play Store if you download an app from time to time you get a nag screen about "Completing your account set-up" where you can specify your payment data, but there is always an option to **Skip** this dialog without negative effect (see sample screen-shot below).
> 2 votes

---
Tags: google-play-store
---


# Question
Title: How to turn off Nokia theme tune on startup?
My Nokia 6 always made the Nokia theme tune when it was turned on from being completely off. However, for a short period, I had another user account on my phone and it didn't make the noise every time, but there were still a few instances where it did.

**I've Tried**

* Putting my phone in Do Not Disturb
* Using the Complete Silence DND option
* Having my phone on silent
* Aeroplane Mode
* Having my phone on charge and off charge makes no difference
* Looking for a setting that turns it off(suggested in a previous anwser)

All of these were done before I turned the phone completely off.

I've done some research on Nokia forums and other sites and most answers suggest one of the following above but none of the above have worked.

Now I have removed the other user and I am running the single user account with no guest user. It is making the noise more, but not every time as before I would say that it's roughly 40% of the time it makes the noise now.

Is the fact that I created the other user account linked to the noise stops, its the only thing I changed on my phone which is why I'm making that assumption.

Is there any way to stop the noise compleat as it can be annoying(and embarrassing) when turning my phone on in public?

I'm running Android 8.1.0

# Answer
> 1 votes
Some Android phones allow going into Settings \> Sound and finding a option called something along the lines of 'Startup Ringtone'.

# Answer
> 0 votes
Just place your finger over the speaker on the bottom of the phone on the right, it completely blocks the sound and only takes a second. I use this method every time and it works 100%.

---
Tags: boot, nokia-6
---


# Question
Title: How to sync a folder on Google drive to android
My workflow is as follows:

1. Photos/videos from my camera's SD card are processed on a PC.
2. Final photos/videos are auto synced between a folder on the PC and Google Drive using Backup and Sync.
3. Photos/videos are downloaded from google drive android app to phone.
4. Photos/videos are used from phone on apps.

I have to do step 3 manually. Is there a way for my phone to download photos/videos from Google drive in the background so that they are available in the Gallery app when I need them.

Phone used: Samsung Note 10

# Answer
Yes. I use Folder Sync for a very similar workflow. It works fine and I have it running on two devices. Additionally, you can setup up for scheduled sync.

> FolderSync enables simple sync to cloud based storage to and from local folders

Autosync for Google Drive is another alternative
> 1 votes

---
Tags: google-drive
---


# Question
Title: How can I boot to a specific partition with ADB?
If I have ADB access to device, how can I specify the boot partition and reboot. I tried with `setprop` but this failed,

```
#> setprop ro.boot.slot_suffix _b
libc: Unable to set property "ro.boot.slot_suffix" to "_b": error code: 0xb
setprop: failed to set property 'ro.boot.slot_suffix' to '_b'

```

# Answer
> 1 votes
# Using `bootctl`

Though it requires `adb root`, one method to do this would be to use `bootctl` if available.

```
#> bootctl set-active-boot-slot SLOT
#> reboot

```

**Note: `SLOT` is a number, you can find out the labels by looping through them and calling `get-suffix`** for example this little shell script,

```
for slot in $(seq 0 $(expr $(bootctl get-number-slots) - 1)); do
  echo $slot: $(bootctl get-suffix $slot);
done;

```

Which will return the mapping,

```
0: _a
1: _b

```

*See also: How can I tell whether I am booted into the A or B partition?*

---
Tags: adb, ab-partition
---


# Question
Title: Flashing GApps from Recovery, getting Error Code: 20
When I try to flash GApps right after flashing LineageOS with TWRP I get,

```
Updater process ended with ERROR: 20
Error installing zip file '/sdcard/open_gapps-arm64-10.0-micro-20201114.zip

```

What is the cause of this problem, how can I fix it?

# Answer
> 0 votes
This is because you can't flash Open GApps **right** after flashing LineageOS. You must reboot back into the recovery TWRP, and flash the application after that.

From the Official Instruction, which support only LineageOS Recovery

> (Optionally): If you want to install any additional add-ons, **click Advanced, then Reboot to Recovery, then when your device reboots, click Apply Update, then Apply from ADB, then `adb sideload filename.zip`** those packages in sequence.

But this is no different for TWRP. You can find people here in the bug reports for Open GApps that have the same problem.

---
Tags: twrp, lineageos, gapps
---


# Question
Title: App can't see wide angle camera in xiaomi redmi note 9
I have `Xiaomi Redmi Note 9`. With standard `Camera` app I can make video using wide angle camera (x0.6). But using `DJI Mimo`, `A Better Camera` or `Filmic pro` I can use only my standard camera (x1.0). Can I fix it somehow?

# Answer
> 2 votes
As far as I know such "special cameras" are often not accessible via Android's standard camera API, hence each app needs to be adapted for your device to be able to use e.g. the wide angle camera. This require a lot of effort so not every camera app developer does this.

Therefore the answer is: You can't fix this on your own, only the developer of the camera app can adapt the app to make it work.

---
Tags: applications, camera, xiaomi, redmi
---


title: Send video stream from android device

text:
# Question
Title: Send video stream from android device
I'm new in android. I was planning to create a Video streaming mobile to mobile in the same wifi connnection but i don't know how to start. I've read about the RTP/RTSP/UDP for streaming video and some sources but I cant follow the process at all. Can someone explain to me how to send or broadcast a video playing in android device then send the data in a server? So that it can be access in like "rtsp//: something like that so that the other device can view it. Sorry for the small info

# Answer
> 2 votes
For most mundane purposes related to your question, there's a really good solution:

DroidCam (or DroidCamX, for PRO version)

I use the PRO version for unlimited streaming resolution. For about $3-4 bucks I have a software that streams the video from my Android phone from a camera of choice (front, back, back wide-angle), over the wire to the PC (works perfectly with Ubuntu Linux and Windows), or over WiFi connection to the LAN. As longs as you have a static local IP address assigned within your LAN, your camera stream is available through the port of choice. Linux and Windows PC clients have options to control autofocus. Android-side software has options for optimizing stream bitrate and quality ("Limit FPS", "FPS Boost").

This is one of the very few paid apps I've had so far, I predominantly use it as a substitute for a web camera (a rather cheap one).

# Answer
> 1 votes
There are two things involved in this. 1. Implementation of RTSP 2. Converting android camera output into RTSP source.

I could not find any open implementation while I was searching for it almost 6 months back. Here is the one which worked for me with little tuning. But you have to clone the repo and work on it directly to get it working https://github.com/mutaphore/RTSP-Client-Server

---
Tags: video-streaming
---


# Question
Title: Custom sound notification on Google Calendar events
I have many calendars on Google Calendar:

1. Hospital appointment (blue)
2. Birthday calendar (yellow)
3. Payday calendar
4. My career's calendar

They are separated by the colours to make it easy for identification, but **I would like to separate the notification sound to go with the colours**. Some more urgent like an alarm, some less aggravating but still just a buzz or something.

It's confusing that they all use the same tone, and although via some apps I can differentiate these between text, voicemail, and Facebook, etc, it's not quite ideal. I have been looking through all calendar apps I can find for this thing.

# Answer
Setting up distinct alarms for separate calendars within the Google Calendar app--or for separate events on any of those calendars--is not a feature provided in the Google Calendar app. If you wish to have that function and to continue using the Google Calendar app, you'll need a third-party add-in such as Calendar Event Reminder. (CER) That one costs a couple of bucks but there may be other options, perhaps even "free" apps.
> 4 votes

# Answer
The third-party app Business Calendar 2 includes the functionality you seek.

Specifically, it allows the user to specify different notification sounds for different calendars, or no notification sounds for specific calendars.

I'm sure Business Calendar 2 has this functionality, but you may be more interested in aCalendar, as it likely also has this functionality, but donates some of their revenue to a non-profit charitable organization.
> 0 votes

# Answer
The feature you are looking for in the Google Calendar is already present.
You can find the instructions to do that at google support here
> -2 votes

---
Tags: notifications, google-calendar, custom-sounds
---


# Question
Title: How to build Android-x86 with VirtualBox guest OS integrations
Androidx86.org says that to use 3D acceleration for my Android-x86 virtual machine, I have to install Linux guest additions. I would like to know how to do that.

I am using a

* Ubuntu 20.10 (64-bit)
* Intel Core i5 4th gen (@3.1 GHz)
* NVIDIA GeForce GT 730
* Oracle VM VirtualBox 6.1

# Answer
> 2 votes
To use GPU acceleration for android x86 vm it's easier if you use qemu.Check this out(the method i used and this video are not fully same.i used the latest version)

Linux exclusive-Feel free to comment your questions

* Install the following build dependencies(no need to build for arch linux read below) using`sudo apt install -y build-essential libepoxy-dev libdrm-dev libgbm-dev libx11-dev libvirglrenderer-dev libpulse-dev libsdl2-dev libgtk-3-dev libsdl1.2-dev ninja-build`
* cd into directory you want to download and build qemu(if you use arch linux you don't have to build qemu.just use the package in official repository.also it is not necessary to add your user to kvm group.it just works.)
* Download latest qemu sources using `git clone https://git.qemu.org/git/qemu.git`
* run `cd qemu`
* run `./configure --enable-sdl --enable-opengl --enable-virglrenderer --enable-system --enable-modules --audio-drv-list=pa --target-list=x86_64-softmmu --enable-kvm --enable-gtk`
* run `make`
* run `sudo adduser yourusername kvm`
* run `sudo chmod 666 /dev/kvm`
* run `sudo touch /lib/udev/rules.d/99-kvm.rules`
* add line `KERNEL=="kvm", GROUP="kvm", MODE="0666"` to 99-kvm.rules
* you can do that by `sudo gedit /lib/udev/rules.d/99-kvm.rules` and pasting the line then saving.
* run `sudo apt install qemu-utils`
* cd to the directory where you want create the virtual hard disk.
* `qemu-img create -f qcow2 Android.img 10G`
* 10G refers to size of hard disk drive,in this case 10 Gigabytes.
* Download androidx89.(latest kernel version performed better for me or was it just a placebo?)
* cd to directory were u git cloned qemu
* cd to directory qemu/build/x86\_64-softmmu/ ie `cd qemu/build/x86_64-softmmu/`
* run

```
qemu-system-x86_64 -boot d \
    -enable-kvm \
    -smp 2 \
    -cdrom "/path/to/android/iso" \
    -name linuz \
    -device virtio-vga,virgl=on,xres=1280,yres=720 \
    -cpu host \
    -device AC97 \
    -m 2048 \
    -display sdl,gl=on \
    -drive file=/path/to/android/Android.img,if=virtio \
    -object rng-random,id=rng0,filename=/dev/urandom \
    -device virtio-rng-pci,rng=rng0 \
    -device virtio-keyboard \
    -boot menu=off \
    -device virtio-tablet \
    -machine type=q35 \
    -serial mon:stdio \
    -net nic -net user,hostfwd=tcp::4444-:5555

```
* smp refers to number of cpu cores given to the virtual machine. -m refers to ram allocated.in this case 2048 megabytes.you can use `-display gtk,gl=on` also but display gtk does not work nvidia proprietary drivers for some reason.
* Use arrow keys to navigate and enter to select.do as follows
* Select Installation
* Select create/modify partition
* dont use gpt
* Select new
* select primary
* press enter
* select write and type yes .then select quit
* select the partition we just created
* select ext4
* select yes to format
* select yes to install grub
* select yes to make /system read write (recommended)
* Once all operations are over u can boot into android.
* To boot directly to hard disk use

```
qemu-system-x86_64 -boot c \
    -enable-kvm \
    -smp 2 \
    -name linuz \
    -device virtio-vga,virgl=on,xres=1280,yres=720 \
    -cpu host \
    -device AC97 \
    -m 2048 \
    -display sdl,gl=on \
    -drive file=/path/to/android/Android.img,if=virtio \
    -object rng-random,id=rng0,filename=/dev/urandom \
    -device virtio-rng-pci,rng=rng0 \
    -device virtio-keyboard \
    -boot menu=off \
    -device virtio-tablet \
    -machine type=q35 \
    -serial mon:stdio \
    -net nic -net user,hostfwd=tcp::4444-:5555

```
* to use adb use `adb connect localhost:4444`
* if arm translator does not install automatically do this

## instructions to manually install native bridge

* Download this file(http://dl.android-x86.org/houdini.php?v=9\_y) in your vm.9 refers to android version if you have a previous version change it accordingly.or you can check it here
* change the name of the file according to the version of android in my case houdini9\_y.sfs.move that file to system/etc/ it can be done using terminal or root browser.

> using terminal type `mv /sdcard/Download/houdini9_y.sfs /system/etc` if you are not comfortable with this method use a root browser app.

* now got to terminal emulator type `su` (if you get a prompt asking weather to give superuser access say yes forever)
* then type `system/bin/enable_nativebridge`
* You might get some errors but they are safe to ignore i suppose.(i got two errors but arm translators worked)
* Go to settings androidx86-options enable native bridge

Setting up tap networking
For better guest-host integrations i use a tap network.

```
sudo ip link add name br0 type bridge
sudo ip addr flush enp3s0
sudo ip link set enp3s0 master br0
sudo ip tuntap add mode tap name tap0 user yourusername
sudo ip link set tap0 master br0
sudo ip link set enp3s0 up
sudo ip link set tap0 up
sudo ip link set br0 up
sudo dhclient -v br0

```

replace `enp3so` with your network interface.use the following to command to launch the emulator

```
qemu-system-x86_64 -boot c \
    -enable-kvm \
    -smp 2 \
    -name linuz \
    -device virtio-vga,virgl=on,xres=1280,yres=720 \
    -cpu host \
    -device AC97 \
    -m 2048 \
    -display sdl,gl=on \
    -drive file=/path/to/imgfile,if=virtio \
    -object rng-random,id=rng0,filename=/dev/urandom \
    -device virtio-rng-pci,rng=rng0 \
    -device virtio-keyboard \
    -boot menu=off \
    -device virtio-tablet \
    -machine type=q35 \
    -serial mon:stdio \
    -netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no \
    -device virtio-net-pci,netdev=mynet0,mac=51:55:00:a1:11:32

```

---
Tags: android-x86, virtualbox, virtualization, gpu
---