# Question
Title: How do I view Google Camera's motion photos on my Windows PC?
I can download the JPGs from my DCIM folder in my Pixel 2 and I know that the video is encoded inside the JPG, but I don't know what image viewer I can use to see the motion.

I usually use Irfanview, but I haven't yet been able to find out how to make it show the motion. And I haven't found anyone talking about how to do it.

Does anyone know?

# Answer
I did some experimenting based on the answer by James Henstridge and came up with a simple PHP script that successfully split every Google Camera's motion photo I threw at it.

**2022-01-24 - Code has been updated. See the edit at the bottom of this post. I'm leaving the old code here to avoid any confusion.**

```
<?php

  $src_arg = $argv[1];
  $src_dir = realpath(pathinfo($src_arg, PATHINFO_DIRNAME));

  echo "Scanning for files...\n";

  foreach (glob($src_arg) as $src) {

    $file = realpath($src);

    if (!is_dir($file) && in_array(strtoupper(pathinfo($file, PATHINFO_EXTENSION)), ["JPEG", "JPG"])) {

      echo "\tProcessing: " . $file . "\n";

      $filesize = filesize($file);
      echo "\t\tFile size: " . $filesize . "\n";

      $handle = fopen($file, "rb");
      $data = fread($handle, $filesize);
      fclose($handle);

      $eoi_pos = strpos($data, "\xFF\xD9\x00\x00\x00\x18");
      echo "\t\tEOI segment position: " . $eoi_pos . "\n";

      if ($eoi_pos !== FALSE) {
        $output_base = $src_dir . DIRECTORY_SEPARATOR . pathinfo($file, PATHINFO_FILENAME);
        echo "\t\tSaving photo...\n";
        file_put_contents($output_base . "_photo.jpg", substr($data, 0, $eoi_pos + 2));
        echo "\t\tSaving video...\n";
        file_put_contents($output_base . "_video.mp4", substr($data, $eoi_pos + 2));
      } else {
        echo "\t\tSKIPPING - File does not appear to be a Google motion photo.\n";
      }

    }

  }

  echo "Done.\n";

?>

```

It should work on Windows and Linux. You just pass a path as the first argument and it will split any files that it believes are motion photos. You can use wildcards. It's non-destructive - the source file(s) are not deleted.

Some example uses:

```
php google_motion_photo_splitter.php c:\test\file.jpg
php google_motion_photo_splitter.php c:\test\*.jpg
php google_motion_photo_splitter.php c:\test\*

```

**2022-01-24** As j3App mentioned in their answer, at some point, Google decided to add debug data between the JPG and MP4 in some cases. At the end of 2021, I also began seeing other variations (MP4s with varying start bytes - ex: 0000001C instead of 00000018, extra JPG EOI segments earlier in the image near XMP tags, etc). Anyway, I modified the code to search for the MP4 header first and then work backward to find the JPG EOI segment. It's worked on all variations I encountered. Here is the updated code:

```
<?php

$src_arg = $argv[1];
$src_dir = realpath(pathinfo($src_arg, PATHINFO_DIRNAME));

echo "Scanning for files...\n";

foreach (glob($src_arg) as $src) {

  $file = realpath($src);

  if (!is_dir($file) && in_array(strtoupper(pathinfo($file, PATHINFO_EXTENSION)), ["JPEG", "JPG"])) {

    echo "\tProcessing: " . $file . "\n";

    $filesize = filesize($file);
    echo "\t\tFile size: " . $filesize . "\n";

    $handle = fopen($file, "rb");
    $data = fread($handle, $filesize);
    fclose($handle);

    $mp4_start_pos = strpos($data, "ftyp");

    if ($mp4_start_pos !== FALSE) {
      $mp4_start_pos -= 4; # the real beginning of the mp4 starts 4 bytes before "ftyp"

      $jpg_end_pos = strrpos(substr($data, 0, $mp4_start_pos), "\xFF\xD9");

      if ($jpg_end_pos !== FALSE) {
        $jpg_end_pos += 2; # account for the length of the search string

        $output_base = $src_dir . DIRECTORY_SEPARATOR . pathinfo($file, PATHINFO_FILENAME);
        echo "\t\tSaving photo...\n";
        file_put_contents($output_base . "_photo.jpg", substr($data, 0, $jpg_end_pos));
        echo "\t\tSaving video...\n";
        file_put_contents($output_base . "_video.mp4", substr($data, $mp4_start_pos));

      } else {
        echo "\t\tSKIPPING - File appears to contain an MP4 but the no valid JPG EOI segment could be found.\n";
      }

    } else {
      echo "\t\tSKIPPING - File does not appear to be a Google motion photo.\n";
    }

  }

}

echo "Done.\n";

?>

```
> 8 votes

# Answer
I haven't seen any software to view them other than on the Google Photos website. I was curious about this so started pulling apart one of the photos from my phone, and here's what I found:

1. The image file appears to be a standard JPEG image, but continues on after the End of Image segment (`0xFF 0xD9`).
2. `exiftool` reports unrecognised MakerNotes. I suspect this custom metadata identifies the file as a motion photo.
3. If transfer all the data after the EOI segment to a separate file, you'll have a standard MPEG-4 container. I got a GStreamer crash when trying to play it, but ffmpeg seems to be able to handle it and displayed the following metadata:

```
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'foo.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2018-07-07T20:37:57.000000Z
    com.android.version: 8.1.0
  Duration: 00:00:01.87, start: 0.000000, bitrate: 20283 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, smpte170m/smpte170m/unknown), 1024x768, 20161 kb/s, SAR 1:1 DAR 4:3, 30.01 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2018-07-07T20:37:57.000000Z
      handler_name    : VideoHandle
    Stream #0:1(eng): Data: none (mett / 0x7474656D), 108 kb/s (default)
    Metadata:
      creation_time   : 2018-07-07T20:37:57.000000Z
      handler_name    : MetadHandle
    Stream #0:2(eng): Data: none (mett / 0x7474656D), 0 kb/s (default)
    Metadata:
      creation_time   : 2018-07-07T20:37:57.000000Z
      handler_name    : MetadHandle
Unsupported codec with id 0 for input stream 1
Unsupported codec with id 0 for input stream 2

```

So, that's a 1.87 second H.264 video with resolution 1024x768, which seems to roughly match up with what I see from Google's apps/website (a drop in resolution and change in aspect ratio).

I know it isn't a complete solution, but it might be enough to get started on a tool to extract the videos.
> 5 votes

# Answer
Although the question is for Windows, I think it's appropriate to post my script to play it from command line on Linux here:

https://gist.github.com/vi/5de17bb8d4ea91b8c28e79e0bac6c3cb

```
#!/bin/bash

if [[ -z "$1"  || "$1" == --help || "$1" == "-?" ]]; then
    echo "Usage: mvimg_play MVIMG_20190806_183324.jpg [other files]"
    echo "Plays Google's Motion Photo using mpv. Depends on exiftool, mktemp, bash and mpv."
    exit 0
fi

FOUND=0
ARGS=()

TORM=()
TOKILL=()

function cleanup() {
    for i in "${TORM[@]}"; do
        rm -f "$i"
    done
    for p in ${TOKILL[@]}; do
        wait $p
    done
}

trap "cleanup" EXIT

for i in "$@"; do
    O=$(exiftool -t $i  | grep -F 'Micro Video Offset' | cut -f 2-2)
    if [[ -z "$O" ]]; then
        # wrong file? Just appending to playlist as is
        ARGS+=($i)
    else
        FOUND=1
        S=$(find $i -printf '%s')
        T=`mktemp`

        ARGS+=("$T")
        dd if="$i" skip=$((S-O)) iflag=skip_bytes of="$T" 2> /dev/null &
        TOKILL+=($!)
        TORM+=("$T")
    fi
done

if [[ $FOUND == 0 ]]; then
    echo "EXIF tag wasn't detected in specified files. Maybe exiftool does not work?" >&2
fi

mpv "${ARGS[@]}"

```

Maybe it can be used on Windows as well, with enough Mingw/Cygwin hackery.
> 2 votes

# Answer
There's also Motion-Photo-Viewer. Can either be self hosted or used online to play a single `*.MP.jpg` (and extract the mp4 through `right-click-save-as`.

You do not need a Web Server, so cloning the project and opening `index.html` will suffice.
> 2 votes

# Answer
I tried out the answer from Kory \- thanks Kory. Since my Pixel 4a 5G adds a significant amount of debug info between the jpg and the mp4, my extracted mp4's didn't play.

So I had to add a little bit of extra functionality to Kory's solution

```
<?php

/** execute like > php motionPhotoSplitter.php "Camera Roll/*.MP.jpg" < */
const MP4_TYPES = ["avc1", "iso2", "isom", "mmp4", "mp41", "mp42", "mp71", "msnv", "ndas", "ndsc", "ndsh", "ndsm", "ndsp", "ndss", "ndxc", "ndxh", "ndxm", "ndxp", "ndxs"];
$src_arg = $argv[1];
$src_dir = realpath(pathinfo($src_arg, PATHINFO_DIRNAME));

echo "Scanning for files...\n";

foreach (glob($src_arg) as $src) {

    $file = realpath($src);

    if (!is_dir($file) && in_array(strtoupper(pathinfo($file, PATHINFO_EXTENSION)), ["JPEG", "JPG"])) {

        echo "\tProcessing: " . $file . "\n";

        $filesize = filesize($file);
        echo "\t\tFile size: " . $filesize . "\n";

        $handle = fopen($file, "rb"); // binary read
        $data = fread($handle, $filesize);
        fclose($handle);

        $eoi_pos = strpos($data, "\xFF\xD9"); // end of image in a jpeg file: #FFD9
        echo "\t\tEOI segment position: " . $eoi_pos . "\n";

        if ($eoi_pos !== FALSE) {
            $output_base = $src_dir . DIRECTORY_SEPARATOR . pathinfo($file, PATHINFO_FILENAME);
            echo "\t\tSaving photo...\n";
            file_put_contents($output_base . "_photo.jpg", substr($data, 0, $eoi_pos + 2));

/** an mp4 block starts with 4 bytes for length, then "ftyp", then a valid mp4-type as defined in the array MP4_TYPES */

            $mp4Pos = strpos($data, "ftyp", $eoi_pos);
            if ($mp4Pos && in_array(substr($data, $mp4Pos + 4, 4), MP4_TYPES)) {
                echo "\t\tSaving video...\n";
                file_put_contents($output_base . "_video.mp4", substr($data, $mp4Pos - 4));
            }
        } else {
            echo "\t\tSKIPPING - File does not appear to be a Google motion photo.\n";
        }
    }
}
echo "Done.\n";
?>

```
> 1 votes

# Answer
If you have already downloaded the jpg and MP files to your PC, all you need to do is edit the extension. Change it from filename.MP to filename.MP4 or .MPG and play with any media player like VLC, or import into any video editor like Premiere or EDIUS
> 0 votes

# Answer
I am not a fan of the solutions I have found so far, so I created my own Motion Photo Utility /exporter. https://www.3d-i.com/motionphotoutility/ it is free, closed source (for now), in alpha, and works on most platforms. It does a lot more validation, meta reading, update meta tags and detects some malformations… See website for more.

All the solutions I have looked at so far seem to follow the pattern of read whole motion photo jpeg file ~3,000,000 bytes long and look for EOI marker of jpeg anywhere in the file aka 0xffd9. Take a hacksaw and chop it there, and assume all is okay. You might get lucky and the corrupt info can be read by some robust software.

**Warning the following is a verbose explanation, it may put some of you to sleep!**

These new jpeg files are complex. Old jpeg version has 11 tags describe everything: https://docs.fileformat.com/image/jpeg/

The simplest jpeg parsers generally read to tag/marker, read *var =* *bytes\[length\]* associated with tag. Then consume the next *var* length of bytes in some defined manner. At the end of that data block a tag is EXPECTED 0xFFXX, if it is not there then throw an exception…. But that is also not enough.

Today jpeg file format continues to undergo changes adding meta data Exif, XMP… In the last few decades, every camera company has had some say in putting all kinds of interesting data into these files. From shoving thumbnails, videos, gps , orientation …, often for good reason. Exif meta data has several hundred tags, when that was not enough XMP was added, which has unrestricted length for describing imbedded data.

Some of these programs completely violate the rules, forgetting to represent tags etc, or have incorrect information.

Those poor software engineers that write your media players etc (vlc/browser), over the last decades, have to navigate around the changes and display what they can. The problem is they don’t know what the intent for a lot of the imbedded meta/data, and it is often just dropped. Case in point, open up a copy of an android motion photo on windows, click the favorite icon (heart). Observe the file size before and after, it is about half the size. Windows will delete content (including video), add some of its own meta tags and largely keep existing meta that describe the very data that was deleted. Aka it makes a mess. In my test VLC player (which is incredibly robust) will play motion photo as a video, but only render a still image.
> 0 votes

# Answer
I'm developing a motion photo viewer for Windows 10/11, compatible with various motion photo formats from Google and Samsung, including JPG and HEIC.

It also allows exporting of video as MP4 and still frames as JPG.

Install from Windows Store: https://www.microsoft.com/store/apps/9NMBBHZ33KLM

Or download MSIX installer: https://phomo.cam

Please let me know if you have any issues. Thanks!
> 0 votes

---
Tags: photos, windows, google-camera
---


# Question
Title: Can I mount dead phone's partitions in VM?
Dead phone. Have all partitions saved/read off internal memory including data partitions, all not encrypted, phone was rooted. Android 11 custom ROM, crDroid. Need to mount data partition if possible, in Linux or Windows, doesn't matter. Is there a way to mount all partitions in some ARM Android VM to recreate the phone with data? Had trouble mounting data partition in Linux. Thanks.

# Answer
> 2 votes
You can mount unencrypted partition image on linux:

check file system whether is EXT4 or F2FS

```
$ xxd -l 1088 userdata.img | grep 53ef
$ xxd -l 1032 userdata.img | grep 1020.f5f2

```

for F2FS install additional package

```
$ sudo apt install f2fs-tools

```

mount the image with `/dev/loop?` created from losetup

```
$ mkdir data
$ sudo losetup -vf userdata.img
$ losetup -a
$ sudo mount -t ext4 -vo loop,ro,noload,noatime /dev/loop? data
$ sudo mount -t f2fs -vo loop,ro,norecovery,noatime /dev/loop? data

```

Note: WSL kernel doesn't support F2FS by default, linux only

---
Tags: data-recovery, linux, partitions, mount, vm
---


# Question
Title: Restore WhatsApp chats on new phone but forgot the encryption password of my back up
I am moving WhatsApp to a new phone.

After inserting 6 digits from the new phone I am logged out of my old phone. That is fine. Now the new phone ask for encryption password. I have no idea if that's ever been asked before.

I can click forget my password but https://faq.whatsapp.com/639067727894647 it's the new phone. It doesn't have my WhatsApp yet.

I want to cancel moving to the new phone and let WhatsApp run on the old phone.

However the old phone requires me to insert 6 numbers from my new phone and those 6 number is not available because WhatsApp haven't properly migrate.

I want to create another backup in my old phone and then do the move again/

It's very surprising and unexpected for WhatsApp to ask for encryption password AFTER I move to a new phone and can't back up.

They should have asked that in the beginning. If I forget I can just recreate another WhatsApp backup on the old phone.

I can't do that now and I am stuck in the middle

Or do I?

# Answer
> 1 votes
Wow

I got my chat back.

How?

There are 2 ways.

On the old phone there is an option saying need help in getting the code. There's an option to use SMS instead. Use that and I am back to the old phone.

This is not how I did it.

What I did is to choose skip on the new phone.

Then I logged in again on my whatsapp on the old phone using the same number. They still store my chat on the phone it turns out.

Again I was asked for encryption password. I say I forget and they allow me to create another one by verifying my fingerprint.

So I got my whatsapp on the old phone complete with all the chat.

Hurray.........

Now that I know the enscryption password I can just move again more carefully.

I do think Whatsapp should have asked for the enscryption password before asking for 6 digit key. Like make sure your know your enscryption password before moving forward.

But they do think of the possibility when things go wrong like my situation and I am just happy my chats are back.

---
Tags: whatsapp-messenger
---


# Question
Title: Take a voice note without unlocking the device
Sometimes, I want to take a voice note quickly. My ideal approach will look something like this:

1. Take the phone
2. Push a button
3. Speak a sentence (**without unlocking the device**)
4. Done

Later, I want to see a list of open voice notes (not handled yet) and reply them. No speech-to-text magic is needed. The primary focus is on speed.

Background: If I am talking to someone and want to take a note, I don't want to disturb the conversation since taking the phone, unlocking it, opening a note app, and finally typing it takes too long.

Best solution would be this: Start recording without looking at the phone. Like a dictaphone.

Anyway to get this thing get done?

# Answer
> 5 votes
Well, I don't know a specific application for this specific task. But you can use the built-in camera to record a video (obviously with audio) without unlock the phone.

Most devices have the function to take a picture without unlocking (camera-button, sliding, shaking etc). On the camera screen you can change from picture mode to video record easily.

# Answer
> 1 votes
Like @Izzy mentioned in the comments, Tasker is the way to go. Here you can see a List of Plug-Ins and 3rd Party Tools where you can find Easy Voice Recorder. With this installed it will be easy to create a Task for recording ;)

# Answer
> 1 votes
This is possible (recording audio without unlocking the device, but with the screen on) with the help of the excellent Macrodroid app. When I tried to do the same I found this hint. For those who are not familiar with how MD works, this device automation tool almost always works with the Trigger/Action/Constraint concept. For a basic recording we should created

* Trigger: Shake device
* Action: Vibrate (to sense that the action is executed),
* Action: Record microphone (for actual recording).

The record action allows choosing a fixed length for recording starting with 30 seconds, but with the help of two macros and variables it's possible to use the first shake to start an unlimited recording and the second one is to stop it (maybe with an additional vibrate signal). Please note that the device might turn the screen off during the recording and for the off action to be successful one should light the screen with the side button.

Also have in mind that there are false triggers possible, for example when you use the device as an alarm clock and grab it in the morning there might be a shake trigger. So constraints settings might be used for example to avoid using the macro when particular apps are active (in foreground). Also additional actions (like the torch in the original article) might be used for additional indication that the recording is on.

The mentioned configuration was tested on a couple devices with Android 7 and 11 versions and worked flawlessly recording audio notes while the device was in the locked state

---
Tags: notes, voice-recording
---


# Question
Title: Can you install previously supported system updates after device has been discontinued?
Last week I got a (used) Samsung Note20 Ultra with AT&T. It has Android 11, One UI 3.1 and Security Patch March 1, 2021. Although it is now discontinued, but it was upgradable to Android 13 and One UI 5. Can I still get those "old" updates that this phone was upgradable to?

If I try to update it, it says, "Software Update Interrupted. No updates are available for your device at this time. Please try again in 24 hours." It has been saying this for a week now.

# Answer
You would be able to get those updates over-the-air (by direct download onto the phone) if your network supplier (in this case, AT&T) still had them available on their servers. It appears AT&T have taken them down.

This is hardly surprising, since the device was discontinued in December 2021, and it would cost AT&T a little money to keep them available. They could reasonably expect that everyone who wanted them would have uploaded them by now.

Your best hope to get those updates now is to locate someone who downloaded and preserved them. Your odds of success are not high. The first place to ask is XDA.
> 0 votes

---
Tags: updates, att
---


title: Multiple networks simultaneously

text:
# Question
Title: Multiple networks simultaneously
I have a wireless sensor (A) that sends the captured data to an Android device (B) over a wifi network created by A. The data is received correctly on an app running on B, however the problem is that the wifi created by A lacks internet and I need to maintain internet connection on device B.

From the information I have been able to find, Speedify could accomplish this task, however I need a free alternative. The objective is that B can have internet while using the data reception application that needs to be connected to A's Wi-Fi, perhaps there is some way to force only the application to connect to A's Wi-Fi ( as a possible alternative to the simultaneous use of networks).

Device B would have the possibility of being rooted if this were necessary.

Related question: https://stackoverflow.com/questions/77288629/how-to-route-local-traffic-over-wifi-and-everything-else-using-the-mobile-data-i

# Answer
It seems that while the api has a funtion to allow this, the apps running have to use this function. It isnt just a matter of the Android version, but also the manufacturer (unless rooted) and the apps themselves.
> 0 votes

---
Tags: wi-fi, root-access, networking, remote-access
---


# Question
Title: Where can audio resources of an app be stored at?
I have a copy of the package "com.rdsg.goofymemes", a 21st-century humor soundboard (you can find it here.)

For weeks, I have been on a mission to retrieve audio files from this soundboard, but they are nowhere to be seen.

Usually, they are in /res/raw but inside of this folder is "firebase\_common\_keep.xml".

```
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@string/google_app_id,@string/gcm_defaultSenderId,@string/google_api_key,@string/firebase_database_url,@string/ga_trackingId,@string/google_storage_bucket,@string/project_id" />

```

I can launch the app and play sounds without having WI-FI on, so the audio resources must not be loaded from the internet. I have tried searching for different extensions (mp3, wav, ogg, flac and so on) but still cannot find the audio files.

So I plugged a rooted phone into my computer and downloaded the app. I have then looked at the private app directory (data/data/com.rdsg.goofymemes/) and still can't find nothing.

(I used JADX to extract the source code.)

# Answer
> 1 votes
As Firelord said, there is a unity3d file located in assets/bin/data. After some digging, I found AssetStudio, a Windows program that can open assets (in my case a unity3d file).

Some assets failed to load, and some, upon selection (which triggers preview) crashed the app, but I got around it.

---
Tags: applications
---


# Question
Title: Does Android automatically back up the old/original data after a factory data reset?
I have been continuously having problems with my device being compromised, and even after a factory reset, the problem still persists.

If an Android device is not instructed after a factory data reset, will it automatically back up the old/original data?

# Answer
> 2 votes
A factory reset erases all data on the user data partition. On Android devices with default encryption this process is unreversible. Any backup has to be taken before a factory reset is performed.

If you have enabled device backup to Google cloud then of course if you use the same Google account and restore data from Google Cloud a malicious app could be reinstalled. But that would require that the app is available via Google Play Store at the time when you log in after factory reset. Google tries to identify malicious apps and remove them from Play Store but that does not mean Play Store is 100% malware free.

However that does not mean malware can not survive a factory reset on the device itself. For that it would have been placed on the system partition or another partition that is not modified by factory reset.

Depending on the phone such a persistent malware is likely or not. If you really think your device is compromised then there is only one solution:

Buy a new device from a trusted vendor, enable a new lock screen PIN with 5 or more digits and that nobody who knows you can guess (no birthday or PIn used elsewhere).

Use a new Google account with a new, secure and complex password. Do only install trusted apps from large known companies you trust.

And most important learn how your device behaves and what is normal. A lot of users suspect their devices to be malicious because they don't understand how Android works and misinterpret device behavior.

This site is a good place to learn how Android works, read it several times a week and learn from the questions and answers other user post or just browse older questions as long as they are not about an Android version too far away from your device.

---
Tags: backup, factory-reset
---


# Question
Title: Android Device Partition table not recognized by any of the partition management tools
I have an Android 8.0.0 device (https://www.tvbox-manufacturer.com/product\_category/fire-tv-stick/) with eMMC as a storage medium.

The eMMC is removable (BGA socket on the Board).

The device boots and works perfectly fine with the eMMC.

However, when I connect the eMMC chip to a Linux machine (using eMMC to USB converter), the partitions on it are not recognized by the Linux Machine (Ubuntu 16.04).

I have tried the following tools to list the partitions to no avail:

1. gdisk
2. cgdisk
3. parted

Following are the logs (device is `/dev/sdd`):

```
 - lsblk

Last login: Tue Jan 14 11:39:49 2020 from 192.168.21.145
flash@nandflash:~$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931.5G  0 disk
├─sda1   8:1    0  29.8G  0 part [SWAP]
├─sda2   8:2    0     1K  0 part
├─sda5   8:5    0   476M  0 part /boot/efi
├─sda6   8:6    0 190.8G  0 part /
├─sda7   8:7    0  95.4G  0 part /var
└─sda8   8:8    0 615.1G  0 part /home
sdb      8:16   0 931.5G  0 disk
├─sdb1   8:17   0  14.9G  0 part
├─sdb2   8:18   0  95.4G  0 part
├─sdb3   8:19   0   977M  0 part
└─sdb4   8:20   0 820.3G  0 part
**sdd      8:48   1  14.7G  0 disk**
sr0     11:0    1  1024M  0 rom
flash@nandflash:~$

 - gdisk

flash@nandflash:~$ **sudo gdisk /dev/sdd**
[sudo] password for flash:
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): p
**Disk /dev/sdd: 30777344 sectors, 14.7 GiB**
Logical sector size: 512 bytes
Disk identifier (GUID): 1D109CAC-AD7E-4231-A398-D1B1FB515752
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 30777310
Partitions will be aligned on 2048-sector boundaries
Total free space is 30777277 sectors (14.7 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name

Command (? for help):

 - cgdisk

    Warning! Non-GPT or damaged disk detected! This program will attempt to
convert to GPT form or repair damage to GPT data structures, but may not
succeed. Use gdisk or another disk repair tool if you have a damaged GPT
disk.

                         Press any key to continue....

 - parted

    flash@nandflash:~$ sudo parted /dev/sdd
GNU Parted 3.2
**Using /dev/sdd**
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Error: /dev/sdd: unrecognized disk label
Model: Generic STORAGE DEVICE (scsi)
Disk /dev/sdd: 15.8GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted)

```

Can anyone please shed light on why this might be happening?
The Android device boots just fine with the same eMMC.

The output of the file -sk command is shown below:

```
flash@nandflash:~$ sudo file -sk /dev/sdd
/dev/sdd: data
flash@nandflash:~$

```

Adding the hexdump:

```
00000000   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
.............................................................  ................
00000190   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000001A0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000001B0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000001C0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000001D0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000001E0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
000001F0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
00000200   78 1E BB 3F  C4 C2 B2 3F  C6 DC 9B E6  0B D9 0E 67  x..?...?.......g
00000210   EA 82 D0 91  53 2F 05 91  73 A2 9C CD  2D F4 E1 DF  ....S/..s...-...
00000220   0E 7B 19 88  85 04 DC F9  AD B0 A8 B2  AD 4B 81 E5  .{...........K..
00000230   F3 4C F3 9C  9F 51 E4 E9  DF 0B ED 83  71 E3 31 75  .L...Q......q.1u
00000240   D4 F9 A4 51  CD 4A E5 1C  DE B6 42 57  EC 32 59 C5  ...Q.J....BW.2Y.
00000250   75 1D F6 9A  12 6E 6C BD  DD FD 8D 0B  3A 8D E3 9A  u....nl.....:...
00000260   9A 3E 2F 2E  8D EC 9C 0A  32 0D 9F 57  3D C5 3F 09  .>/.....2..W=.?.
00000270   6E 7F 18 27  4F 5E 89 CF  55 90 B9 7F  36 9E 68 90  n..'O^..U...6.h.
00000280   96 41 AC C1  44 08 4C E9  A3 83 08 E7  92 E9 E1 62  .A..D.L........b
00000290   14 2D 6D 36  5C 36 12 7D  D4 07 01 22  BA 56 06 47  .-m6\6.}...".V.G
000002A0   16 66 C0 6A  B4 A5 31 A8  92 93 52 7C  E6 61 6C DB  .f.j..1...R|.al.

```

# Answer
> 3 votes
The partitions aren't recognized because your device, like most Android devices with Amlogic chipsets, uses Amlogic's proprietary partition table instead of a standard partition table like GPT or MBR. Amlogic's partition table is unconventional because it's placed quite far into the eMMC, at an offset of 36MiB (0x2400000), instead of near the beginning. I believe this to be because Amlogic chipsets read critical bootloader code from offset 0x200, which standard partition tables would overlap.

Amlogic's fork of Linux contains code to read the custom partition table (emmc\_partitions.c and emmc\_partitions.h), and from that I've created a Kaitai Struct parser, amlogic\_emmc\_partitions (also on GitHub here), which specifies the layout in a declarative way.

You can load that format, along with a dump of at least 0x518 bytes from offset 0x2400000 in your eMMC, into the Kaitai Web IDE to see the partitions, but unfortunately that's about all the tooling that currently exists to work with this particular partition format. Unless other tools are written, editing such tables is only possible manually with a hex editor.

---
Tags: internal-storage, linux, partitions
---


# Question
Title: How to spawn "sign-in to network" page for a captive portal?
How do I execute captive portal?

On a Z828 from ZTE, Android version 5.1.1, I'm trying to get something like:

While Starbucks generally works for me, all too often, other networks, when using public Wi-Fi, simply give a notice along the lines of:

See also:

Can I get a notification of failed WiFi connection for secured network?

Notify when connected to working Wi-Fi point

Only connect to certain Wi-Fi networks

Nearby wifi networks causing notification

How to disable the "sign in to wifi network" page?

Although nothing is quite on point, leaving me at:

> Still can't connect?
>
> If you still can't connect, please contact your Internet Service Provider, router manufacturer, or network administrator.

Which, simply isn't an option for most public Wi-Fi hotspots. Perhaps, there's simply no solution.

Incidentally, my Kindle connects to the Wi-Fi hotspot, then, of its own volition, brings me to the captive portal through datavalet. Seems specific to Android that I must first try to browse to a random website, which, sometimes, will then bring me to a captive portal. Maybe.

# Answer
> 1 votes
It depends upon the firewall vendor and how they implement it. If you're using a Cisco, such as one of the Meraki devices- the captive portal spawns best under Firefox versus Chrome/ium or Opera. And also another way to catch it, is to

* Disconnect from the access point
* Clear any saved credentials
* Re-log in

Take care to notice the notifications you're likely to get a prompt. Follow the prompts. If your AP is as I have mine set up, it is likely a click through the walled garden, these pages include a check box radio form entry field, You need to fill in the check, then click 'continue'.

# Answer
> 0 votes
If you can not get the splash screen to appear, this will bring the login page to your browser: http://httpforever.com

---
Tags: wi-fi, notifications, settings, 5.1-lollipop, networking
---


# Question
Title: Hide USB debug mode from app without rooting
How do I hide USB debugging mode from an app without rooting? Is it possible? I need to automate an app, but it has a USB debugging mode restriction. Please give me advice.

# Answer
> 1 votes
The only way to bypass a debug mode check on an unrooted device is by manipulating the app itself.

However apps that check debug mode usually contain other protection measures like app signature self-checks, app integrity checks, or use an app obfuscator and protector or are even bound to Google Play Integrity.

What type of app are we talking about? An app you need for corporate access? Then it may be easier to talk to your company administrators if this restriction is configurable. Debug mode checks are often left-overs from old Android versions. Before Android 4.2 debug mode and Android Debug Bridge were very insecure and could act like a back door bypassing all security restrictions configured by the admins. At that time blocking adb was important for device security but nowadays that isn't necessary anymore as adb does no longer accept unauthorized connections.

---
Tags: applications, usb-debugging
---


# Question
Title: Remotely power on Android for finding the device
Can an Android be powered on remotely? My intent is to find my phone if it's turned off.

# Answer
> 5 votes
Android itself does not provide any functionality to automatically boot itself (except from a simple reboot directly after shutdown).

Some manufacturer modify Android to provide scheduled power on, but the scheduled power-on times have to be configured in the device before power down.

But a remotely initiated boot is impossible, because how would you tell Android to boot? Wifi is powered off, Bluetooth is off, only on some phone USB is active even when powered off (e.g. MTK SoC based devices).

---
Tags: remote-control, lost-phone, power-on
---


# Question
Title: Continued access to paid-for app that has been deleted from Play Store?
I paid for an app from the Google Play Store some years ago. I have been using it successfully up to yesterday.

Today, I tried to use it and it complained I wasn't licensed and redirected me to the Play Store app. However, that just gives an error "Something went wrong", or "Try again". The Play Store app still lists the app as being installed. All my other paid-for apps appear unaffected.

After some testing, I worked out that the app seems to have been deleted from the Store. I have emailed the author and am waiting for a response.

If I don't get a response, are there options to recover the use of the app?

# Answer
> 0 votes
For this particular app, a partial temporary workaround has been to disable networking (wifi / mobile data) so that the app cannot contact the license server.

Functions that require network access don't work but existing local data can be retrieved and exported.

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


# Question
Title: How to pull only newer files with “adb pull”? (Android SDK utility)
With the command `adb pull /sdcard/` I can copy all the contents of the internal memory of my Android phone into my current local directory.

And `adb pull /mnt/extSdCard/` does the same with the external SD card. But that command always copies everything, even files I already have stored locally.

Is there any way to copy only new and modified files? (files with a **newer date**)

# Answer
adb-sync - small, yet powerfull python script that can do all your asked and more... https://github.com/google/adb-sync
> 9 votes

# Answer
As described by ss-3-1415926535897932384626433 there is no flag, but you have to get a list of files first and then check if your local files match. I wrote a little script for it:

```
#!/bin/sh

rfolder=/sdcard/DCIM/Camera
lfolder=Camera

adb shell ls "$rfolder" > android.files

ls -1 "$lfolder" > local.files

rm -f update.files
touch update.files

while IFS=  read -r q; do
  # Remove non-printable characters (are not visible on console)
  l=$(echo ${q} | sed 's/[^[:print:]]//')
  # Populate files to update
  if ! grep -q "$l" local.files; then
    echo "$l" >> update.files
  fi
done < android.files

script_dir=$(pwd)
cd $lfolder

while IFS=  read -r q; do
  # Remove non-printable characters (are not visible on console)
  l=$(echo ${q} | sed 's/[^[:print:]]//')
  echo "Get file: $l"
  adb pull "$rfolder/$l"
done < "${script_dir}"/update.files

```

Adjust the remote folder `rfolder` and the local folder `lfolder` to locations of your own choice.
> 10 votes

# Answer
`adb pull` doesn't seem to provide a flag to pull selected files.

As a workaround, you can do this: Use `adb shell [Unix shell command]` to copy selected files to a temporary location and then pull all files from that location.

**Update:**
You can use `cp -u [source] [destination]` unix shell command to copy only modified files on subsequent run. You can also use `-r` flag to use it on subdirectories recursive, if its required.
> 4 votes

# Answer
Though not fully documented, starting with 27.0.1 aka platform tools r27 (not before) the following can be used:

```
adb push --sync local/ device/
# adb pull --sync -a device/. local/

```

(note the trailing dot on `adb pull`; without that you'd end up with `local/device/*`, see here; also the `-a` is needed only here to keep the timestamps of the files intact)

Not directly related to `adb push`: file permissions are not kept, which is probably due to the file system used. Files pushed to the internal SD card will always be set to `0660` and on the external card to `0771`, which I could not even change using `adb shell chmod` on the device itself (though I received no error either on trying).

If you need more options as you might know them from `rsync` (e.g. `--delete` or `--exclude`), you can also take a look at the Python script better-adb-sync.

**Update:** running a few tests it seems `--sync` is simply ignored with `adb pull` even if no error is thrown: **newer files on target have been overwritten!** Not sure if implementation is planned, but with r27 being released in 2018 I'd not place a bet on that. With `push` it works as advertized, though.
> 2 votes

# Answer
Because google's official adb pull was slow to support --sync, I found a big guy to modify the aosp adb source code. Add --sync option to adb pull, pulling only newer files. Compiled for windows.

Self-testing logic on win10 is no problem. Only pull updated files on the android phone, and do not delete win files that are not on the android phone.

https://github.com/freemedom/adb-pull-sync/raw/main/adb.zip
> 0 votes

---
Tags: adb
---


# Question
Title: How to unlock device when I forgot my password?
I've read Recovering from forgotten lock pattern which states that there is an option to disable the lock using my Google account information. However I did not noticed such an option when I entered my *password* five times wrong. (Although there was also a 20s or 30s delay to complicate brute force attacks.) I use Android 4.0.3 on a Asus Transformer Prime TF201.

Would factory reset work?

# Answer
> 9 votes
You can always factory reset your device. Factory reset wipes out all custom configurations including PIN/Security Lock.

# Answer
> 1 votes
Yes, a factory reset will work.

First, you will need to boot into recovery mode, this is device-specific, so you will need to google how it's done on your phone. But on mine for example: hold power and volume up until a menu opens up, select recovery with volume up, press volume down, and when the "no command" screen opens up, press power and volume up.

Once you're inside recovery mode, select "factory reset" or "perform factory reset" with the volume buttons, and press the power button. Then select yes, and press the power button.

After the factory reset is completed, it will ask for your Google account credentials. If it asks for the previous password, tap "use Google account instead". If your device doesn't have a Google account or you don't know the password for it, look up your phone on hardreset.info and select "bypass frp" or "bypass factory reset protection".

# Answer
> 0 votes
That depends. If you do not want to lose your previous data, I suggest using the Android bypass tools available, but it needs a subscription though. Or if you are thorough in your monthly backup, I suggest factory resetting your mobile which differs with each phone model.

I can give an example for the Samsung model.

1. Press the power button and lower part of the volume button simultaneously
2. When the screen blanks out, immediately stop pressing the lower volume button and press the upper half button with the power button.
3. It shows you the settings like reboot, restore, etc etc
4. For navigation, use volume buttons. For selecting, use the power button
5. Select the factory reset
6. Then select reboot

Tada! Then it asks for the password, just sign in with Google account instead.

---
Tags: 4.0-ice-cream-sandwich, lock-screens, security, password, locked-out
---


# Question
Title: How can I update my TV that is running android OS 4.2.1
I have a TV from the brand "Haam". It's supposed to be smart, but recently I couldn't use any app. Nothing works on it. I can only watch regular channels from satellite. I want to update the TV software, but the only way to update it is by using USB. The following figure shows the system details:

This is my first time to update a TV. I don't have the experience on this. Please, I need your help and advice in this regard. Thanks in advance.

# Answer
The possible routes to updating this TV are:

* If the manufacturer has produced a later version of Android for it, install that.
* If someone independent has produced a "custom ROM" for it, based on a later version of Android, you could install that, if you trust them. The best place to find out about that would be xda-developers.com.

In either case, if your TV is available under other brand names in other countries, Android for the differently-branded models might work, but there are two things to check:

1. Is that Android available in Arabic?
2. Is the differently-branded model *identical*, except for the branding?

Point 2 is really important, because there are no "generic" versions of Android available to install.

## Why can't I get generic Android? I can get generic Windows for a PC!

PCs are all descended from the original IBM PC, first released in the early 1980s. They all have a lot in common in the design of their hardware. Android devices have a lot less in common: they mostly use ARM processors and lithium-ion batteries. But almost everything else can and does vary.

To let the same Android operating system run on widely differing hardware, there's a layer of software called "device drivers" that operate the hardware. All operating systems have something like that, but the details vary.

Windows comes with a large library of device drivers, enough to let it start up on almost any PC-compatible computer, and then download the correct drivers if necessary. But Windows takes up a lot more storage than Android, and has the advantage of all of its hardware being generally similar. Windows also requires care and maintenance; Android has to do without that, because it's intended to be usable to anyone, including people without any computer skills.

Also, many of the device drivers for Android hardware are proprietary to the SoC or device manufacturers, who don't want to let anyone else see their source code. They make and sell hardware: Android is a necessary overhead for them, so that the hardware is useful. Microsoft, in contrast, are mostly a software company.

All this means:

* Only the manufacturer of your TV can *easily* produce an updated Android for it.
* Anyone else who want to do that needs to find or write source code for device drivers for it. Those are needed to operate the screen, the USB ports, the TV receiver and decoder, and all the other electronics in the TV.
* They may be able to find open-source device drivers for some of the electronics, but they'll likely need to write some drivers themselves.
* Writing device drivers usually involves "reverse engineering" the relevant parts of the electronics: figuring out how software can operate them by trial and error. This is quite time-consuming.

Ask on XDA-developers, but prepare to be disappointed. There are millions of Android-based devices out there stuck on old versions of Android. Their manufacturers would rather sell you a new device than spend money on producing updated software, which few people will install.
> 1 votes

---
Tags: updates, operating-system, android-tv, smart-tv
---


title: Location and content of telephony.db

text:
# Question
Title: Location and content of telephony.db
Can I use SQLite to find the telephony database, `telephony.db`? What tables are stored in this database?

Tried researching in library books, but can't find the list.

# Answer
The file `telephony.db` is located in the path `/data/user_de/0/com.android.providers.telephony/databases/telephony.db`.

Note that this path requires a root permissions (thus a rooted device).

Once you have downloaded the database you can view the content and the database structures (tables, columns, ...) by any SQLite database viewer.

On a rooted device you can access `telephony.db` via file explorer app with root support, or via `adb shell`\+ `su`. `adb pull` will not work unless you are running an insecure adb versions which allows `adb root`.

On older Android devices (Android 11 and older) you should be able to get `telephony.db` via `adb backup com.android.providers.telephony` and then extract the created `backup.ab` using Android Backup Extractor, a Java based command-line tool.
> 1 votes

---
Tags: telephony
---


title: SIM card not detected on Lineage OS

text:
# Question
Title: SIM card not detected on Lineage OS
I installed LineageOS on my OnePlus One (bacon) a few months ago. With Covid-19 lockdown it was weeks before I noticed that the SIM card isn't being detected. I thought it might be damaged, but EE sent me a replacement, and inserting it changed nothing.

Could it be an absent LineageOS driver? Is that likely? If so, where would I get it from? Perhaps there is a problem with the SIM connectors? As there is the "NO SIM card" message, I assume that no other diagnostic software can communicate with the SIM when it is in such a state.

# Answer
> 2 votes
I think I found a solution to this. In my case, the SIM stops working every time I place the SIM into another device and back into my Oneplus One (Lineage OS). It works perfectly until I remove the SIM card, put it into another device, and then back.

I have tried factory data reset, different custom OS, stock OS, Ubuntu Touch, nothing worked. After having tried hundreds of different variations, here's the recipe:

1. Flash Lineage OS recovery
2. Install Lineage OS (all with SIM inserted)
3. After install, boot into the system. SIM won't be detected at this point
4. Go back to the recovery mode (Vol. Down + Power for several minutes)
5. Format cache data ONLY
6. Boot back into the OS. Sometimes the SIM will start working even at this point but if not, just do a factory data reset now (initiated from the OS settings) and the SIM will be working perfectly

I don't know if anyone else will find this useful or maybe it's just pure luck and it is indeed totally random whether it works or not, but I have done this a few times after having succeeded to test stability, and so far this method works every time.

# Answer
> 1 votes
I got it fixed by creating the APN manually.

`Mobile network` \> `Advanced` \> `Access Point Names`. Here I created a new one using only the information posted online by the provider (leaving everything else untouched). Comparing the newly made one with the old one, there were some differences, like the newly made one didn't specify a port or a password.

# Answer
> 0 votes
It may help to remove the screen lock / password fully and reboot. There's some bug that prevents the SIM card from working if you have a screen lock. Afterwards, you can set the screen lock back.

---
Tags: lineageos, sim-card, oneplus-one
---


# Question
Title: ADB Wifi loses connection when device's screen turns off - Realme 7 - Android 10
I work on Android Studio while using actual device for ADB using ADB over tcp/ip through command prompt (no additional software). But, this new device gets offline the moment screen turns off. I've tried turning off everything related to Battery Optimization or Wifi. Although, there's no such specific setting to let the Wifi awake after device sleeps like my old phone Huawei.

I'd also posted this over the official forum of Realme about a week ago but no one has replied so far. Link - Wifi gets turned off after screen lock - ADB issues.

So, Device's status in ADB devices goes to offline the very moment screen locks and then I've to do the process of ADB Wifi all over again and I don't want to use cable all the time because it affects battery through that 0.5/0.9 mA slow charging through motherboard. It is already slow enough that battery gets discharged even after continuous charging. I use ADB Wifi for more than 14 hours per day hence I need a stable solution.

So, my question is how to keep the device's Wifi on even after screen lock? I know it's device specific because of the custom changes to the ROM but I really need something.

# Answer
I have a windows batch file that just calls adb and touches the top left pixel of the screen once every 2 seconds. Leave that running in another command prompt window and your device will never sleep. One could do this with wakelocks and proper code and all that, but this method works (as long as there's not an active UI element at position 1,1, which there isn't usually. One could send a mouse-motion or something I guess but this works and is v.simple.

```
@echo off
:start
adb shell input tap 1 1
powershell -nop -c "& {sleep 2}"
echo | set /p="."
goto :start

```
> 2 votes

# Answer
I run the device farm in our company based on ADB wifi and I had similar problem. I ended up with creating an app to keep wake-lock all the time to prevent device sleep (it has to have foreground service, otherwise it gets killed too, and it has to have turned off battery optimization for the same reason). Now I am online nearly all the time.
> 1 votes

# Answer
It's a bug in the rom in some kinds of android devices, apparently. This fixed it for me:

Link: https://github.com/Genymobile/scrcpy/issues/1382

Here's what you have to do:
Go to Usb preferences in developer options, and change it from "data transfer" or anything else to "no data transfer". Tell me if this fixed it for you! Sending this here for any onlooker.
> 1 votes

---
Tags: wi-fi, adb, battery, android-10
---


title: Google Sheets cell value as a widget

text:
# Question
Title: Google Sheets cell value as a widget
I would like to have some value from a cell in a google spreadsheets that is displayed on my android phone, a little bit like a KPI that I can track. So I thought that there must be a way to add this as a widget. Only thing I found that seemed to be working was "Meta Widget" but the app is not on the play store anymore (ref: Show a piece of a Google Spreadsheet document on Andriod main screen).

Any ideas on how to achieve this currently? Thanks!

# Answer
This Q&A page has an answer close to what you mentioned:

First, you can set up your Google Sheet to be "published," which essentially makes it a web page, so the caveat here is that you'll only want to add things to this page that you're okay with being publicly visible. The workaround here is to create a *new* sheet, link only the relevant information, then publish this new sheet.

After that, the suggestion on the forum was Meta Widget as you suggested, but another (more recent) suggestion may be something like Widgetify, which I found in this Computerworld article.
> 2 votes

---
Tags: applications, app-widgets, google-sheets
---


# Question
Title: Sending message chats to the bottom of the list and is archive the only option?
I was reading this about archiving chat and it says:

> You won’t get notifications for archived chats unless you’re mentioned or replied to.

Does that mean that if I have a chat with an individual and the last message to them was from me, if I archive it, when the person sends a new message it will considered a reply and I will get a notification?

What I was trying to do is "push" some chats to the bottom of the list and archive seems the only option to do such "housekeeping". I want to make sure I don't lose a reply/message too.

# Answer
<sup>*(This answer was based on WhatsApp 2.24.6.77 and testing between 2 WhatsApp accounts on different devices)*</sup>

> What I was trying to do is "push" some chats to the bottom of the list and archive seems the only option to do such "housekeeping".

Correct. As of this version, archiving is the only way to hide chats from the main chat lists without deleting them.

> Does that mean that if I have a chat with an individual and the last message to them was from me, if I archive it, when the person sends a new message it will considered a reply and I will get a notification?

Archived individual chats won't give any notifications, either if the sender sends a message normally or replies to a specific message by the receiver (by swiping a message horizontally).

The quoted remark about getting notifications when being mentioned (using @username) or replied to *only applies in a group chat*.

To still get notified when new messages come in archived chats, turn off the "Keep chats archived" option in Chat settings, but there is no way to apply it per chat. All archived chats are affected, and new messages will unarchive them.
> 1 votes

---
Tags: whatsapp-messenger, chat, chat-history
---


# Question
Title: Why can't I turn the volume all the way down during calls?
I asked this because I have searched way too long and all the results I'm getting is why is your phone silent during calls. I can't turn the volume silent during calls, like my zoom meeting. Why?

# Answer
Posting an answer that took me too long to find.

Settings \> Accessibility \> Hearing Enhancements \> Mute all sounds
> 0 votes

---
Tags: calls, volume
---


# Question
Title: How do I completely mute the sound in phone calls?
I don't mean I want to mute the ringtone, and I don't mean I want to mute my own microphone. I want to mute the sound of the *other person on the call*.

When I use the volume control during a call, I can put the slider all the way down to zero but the call is still audible - either the slider only acts on the ringtone, or the slider is capped at a minimum (non-zero) volume level. How do I make the call completely silent?

(For context: I make calls using a relay service, where I type, and a remote assistant speaks and types the response back to me. This service involves making the call on my phone, so I still get the sound of the people talking - I want to silence this.)

# Answer
Posting an answer that took me too long to find.

Settings \> Accessibility \> Hearing Enhancements \> Mute all sounds
> 1 votes

# Answer
Indeed there is a minimum output volume for the audio coming from the call.

There might be a hidden settings, although it might be difficult to find or to apply to some phone models or Android verions.

There is also an option that is probably applicable to all phones: you can plug any headphones using the audio jack (assuming your phone has an audio jack, which perhaps all Android phones still have). This redirects the audio to the headphones, and if you don't wear the headphones you will not hear it. Which is what you were asking for, isn't it?

Notice: if you plug a headset (headphones with included microphone), your phone will most certainly use the headset's microphone, which may or may not be what you want. If you plug headphones (without microphone) your phone will continue to use its internal microphone.
> 0 votes

---
Tags: audio, calls, volume-control, volume, mute
---


# Question
Title: Application named Athena, green, circular, filled, black. Malware?
I was looking for software to sync my Oppo A15s and PC. So I got to a software named My Phone Explorer. Both my phone and PC are working smoothly and efficiently. There is no problem in syncing, but one fine day, I was just checking the file section of My Phone Explorer, in which I found a subsection named Applications.

In this application section, I found the list of all applications which are system applications as well as which I have installed from Play Store or by side loading. Now, the problem starts in this list: there are a few applications named "Athena", "green", "circular", "filled", and a few more; which I do not remember that I have installed. When I try to delete them, there is a failure notice.

My Phone Explorer can export these as .APK. When I googled them, mostly they were talking about Windows desktop malware. So, can anybody enlighten me on what these are, and if they are malware, how to remove them?

# Answer
****GAINING MORE KNOWLEDGE IS SIMPLE ANSWER.****

When I checked on andriod debugg bridge with `adb shell` and then `pm list packages` with following output

Now checking the list I come to know that Athena,green,circular,filled,black are system packages. Thanks to Andrew.T & Robert.
> 1 votes

---
Tags: applications, malware
---


# Question
Title: Screen-lock: any way to specify a list of sensitive apps to opt-out locking all apps?
Recently I started using screen locking, just because I started using NFC and Google Wallet. If the device does not have a screen-lock set up, Google Wallet removes cards the in 5 minutes. Okay, this sounds reasonable to me for the security reasons. I don't consider all other applications super-sensitive so for me this is totally fine not to use screen locking for them. The annoying thing about the screen lock is that it locks almost everything except a more or less safe audio player with very limited capabilities like "start"/"stop"/"prev/next track": switching to another playlist requires the device to be unlocked; using a dumb calculator with zero personal data requires the device to be unlocked; opening a short-lived Firefox Focus instance requires it too.

I find the idea of locking all apps regardless their sensitiveness quite annoying, and I'm wondering is there probably a way to screen-lock only a specified list of applications ***I*** consider critical?

Currently I have a Pixel 6 Pro device with rooted stock Android 14 (not sure if I'm fine to switch to another Android-based OS, but why not?), so I guess Magisk-, XPosed/LSPosed-, XPrivacyLua-based extensions might be great in this case.

# Answer
Its easier to use a `Screen Lock` or `App Lock` app. I have used AppLock in the past and it works well. You can select which apps need to be locked.

Since then I have moved to Kaspersky for its anti-virus functions. IT comes bundled with App Lock, so I am using that. This too works well and allows you to select the apps.
> 0 votes

---
Tags: lock-screens
---


# Question
Title: ADB stopped working after installing Windows 11 23H2
I've been using ADB from the command prompt on this Microsoft Surface Book 3 laptop with success for about a year. It upgraded to Windows 11 23H2 from 22H2 a couple of weeks ago, and since then, ADB can't see any devices. I've rebooted laptop and devices, tried two different cables, and updated ADB. I now have:

```
> adb --version
Android Debug Bridge version 1.0.41
Version 35.0.1-11580240
Installed as C:\android\platform-tools\adb.exe
Running on Windows 10.0.22631

> adb devices
List of devices attached

```

It does not sound a tone when an Android device is connected, which it used to do.

I'd never needed to install special USB drivers on Windows 10 or 11, so I have not tried that. The devices do not show up in Windows Explorer. What am I missing?

# Answer
As soon as I post the question, I think of something else to try, and start finding the solution.

The laptop had lost the ability to access ADB devices on its USB-A ports. It could do that via its sole USB-C port, and sounds a tone when an Android device is connected there. That's specific enough to report as a bug.

I don't usually use the USB-C port because it is too close to the power connector, making it awkward to have power and USB-C connected at the same time.

Then the laptop started ignoring its keyboard. This model is actually a 2-in-1, a large Windows tablet with an attachable keyboard, which bears the USB ports, power connector and so on. Detaching and re-attaching the keyboard got it working, and now the USB-A ports can see Android devices. Computers!
> 0 votes

---
Tags: adb, usb-debugging, windows-11
---


# Question
Title: How can I prevent YouTube shorts from looping by default?
I use YouTube app on Android. How can I prevent YouTube short videos from looping by default?

# Answer
> 1 votes
You cannot do anything about this currently, but I did send feedback (bottom left of the menu) expressing how dumb this is and that they should have an option not to loop... and also that this option should be default, because why oh why would we want to keep looping? So I suggest anyone reading this send the same feedback... maybe they will eventually listen.

---
Tags: video, youtube
---


# Question
Title: Automatically unlock the lock screen when the correct PIN is entered
On my Motorola Droid X2, I have to enter the PIN and then hit the arrow-like return button. On my iPod Touch, if I type the 4 digit passcode, it'll unlock as soon as I hit that fourth digit.

Is there any way to have the lock-screen unlock as soon as I enter the correct code?

# Answer
No, because unlike the iPhone/iPod Touch, the unlock PIN can be longer than 4 digits. Android allows between 4 and 16 digits for the lock screen. Since it is "unknown" what the length of your PIN is, you have to press OK to indicate "you are done".
> 6 votes

# Answer
Some of the alternate lock types unlock immediately.

The built-in Android pattern lock, where you do a "join the dots" between the nine dots displayed on the screen unlocks immediately your finger lifts off the screen (presuming that you've got the pattern right).
> 4 votes

# Answer
Yes, the question is old but remains valid for current time as well, so I'm answering keeping currently relevant Android versions in mind.

If your Android is rooted, has a compatible Xposed Framework1 installed, then provided that your Android can run GravityBox Xposed module, the latter can solve the problem.

### Instructions:

1. Install GravityBox relevant to your Android version, enable the module under Xposed Installer app and reboot the device.
2. Launch GravityBox, go to *Lockscreen tweaks* and enable *Quick unlock*. Once you enable it, the previously grayed out entry named *PIN length* would become available for tweak. Set it to the length your current PIN/Password consists of.

Changes would take place immediately.

(Click image to enlarge)

Official GravityBox versions:

---

1 Xposed Framework: Android 4.x, Android 5.x and 6.x
> 3 votes

# Answer
Handcent SMS has a lockscreen with PIN input that also has similar functionality. Entering the correct code auto unlocks when the last correct digit is entered without the need to press OK.
> 2 votes

# Answer
On Android 10, you didn't have to press the arrow key for PIN code, just lift your finger after the 4th button push, and it auto signs in.

When I bought Alcatel 1B burner phones, they came with Android 10 stock and I noticed that feature right away and the option to not briefly show password letters when entering passwords.

Now on Android 11, you have to push the continue arrow again after the PIN code.
> 1 votes

# Answer
"Auto-confirm unlock" became part of Android 14 (and AOSP), see Settings change 4c8ad8f

> \[Auto Pin Confirm\]: Changes to allow PIN auto confirm feature to be controllable by the user

for how to reach the setting, see the screenshot in the article.
> 1 votes

# Answer
On OnePlus/OxygenOS phones, this setting can be changed when changing the PIN itself. So if you want to switch to auto-enter versus manual enter, do the procedure for changing the PIN and you will have a checkbox while entering the PIN to change this setting.
> 0 votes

# Answer
Yes, there is a way to get unlocked without tapping "OK" soon as you finish your PIN. Go to Security settings and on PIN code, there will be an option saying "Confirm PIN without tapping OK". Check that and you are good to go.
> 0 votes

# Answer
The Cyanogenmod (checked in CM10) lock screen also allows to unlock as soon as you enter the correct code.
> -1 votes

---
Tags: lock-screens
---


# Question
Title: Export Firefox for Android bookmarks to HTML file
I would like to transfer my Firefox mobile bookmarks to my desktop and would prefer doing it without using Firefox sync or any cloud-based extension.

Is there a way to export Firefox for Android bookmarks to an HTML file?

# Answer
> 2 votes
As of 2019, Firefox for Android has no built-in support for exporting bookmarks.

However there are some workarounds/alternatives:

1. According to the "Chosen Solution" on the Firefox Support Forum, use Firefox Sync for Android to transparently move bookmarks across devices.
2. Find an add-on (like EverSync).
3. If your phone is rooted, you can directly query your profile's database.

# Answer
> 1 votes
I do not have enough reputation to add a comment to Paul Benedict's answer hence I am forced to add this "comment" as an answer...

Paul's "Workaround/alternative 1" (which links to the "Chosen Solution" on the Firefox Support Forum) suggests using "Firefox Sync for Android" (and yes, I do realise that the OP explicitly requested a solution that does *not* involve using Firefox Sync). This will NOT work as desired, because although you can sync your mobile bookmarks over to desktop firefox, Desktop Firefox's "Export Bookmarks to HTML" does NOT "export mobile bookmarks when exporting as HTML" (note that bug is almost 3 years old now).

For anyone who do not object to using Firefox Sync, either:

1. sync from android to desktop, then export to .json, or
2. sync from android to desktop, copy or move your bookmarks from "Mobile Bookmarks" to "Other Bookmarks, and then "Export Bookmarks to HTML".

HTH.

# Answer
> 1 votes
There is a workaround for this. It's not an out-of-box solution but if you really have that much of a problem connecting to Firefox sync (like I do), you can do this:

1. Open Firefox for Android, tap the kabob for the drop-down menu, then tap bookmarks.
2. A list of your bookmarks will now be on the screen, you can individually select all these bookmarks. Select the ones that you want to export.
3. Once selected, tap the share button at the top. Then tap copy to clipboard. This will copy all the URLs of your selected bookmarks.
4. Using an IDE for Android such as Acode, open a new file and save it as bookmarks.html, then insert this syntax:

```
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Bookmarks</title>
</head>
<body>
  <h1>Bookmarks</h1>
  <ul>
    <li><a href="https://example.com/page1">Page 1</a></li>
    <li><a href="https://example.com/page2">Page 2</a></li>
    <li><a href="https://example.com/page3">Page 3</a></li>
    <!-- More bookmark entries go here -->
  </ul>
</body>
</html>

```
5. Paste your list of URLs, wrap with the tag delimiters and other syntax indicated above. After the URL, in the placeholder text above (Page 1, Page 2, Page 3), this is the name for your bookmark, so insert whatever name you want as the title for that bookmark to appear when you import into another browser instance.

# Answer
> 0 votes
There is a way to export bookmarks to a file (not HTML, though) if that is enough for you ("you" being whoever ends up here from a search engine, as this question is already rather old). It might or might not be a practical solution depending on the amount of bookmarks that you have.

If you go to Bookmarks view in Firefox for Android (in my case the first item in the main menu), you can long-press on the first item to select it, and then proceed to selecting all of your bookmarks one by one. (I did not find a way to select all, so this is where "it might not be practical for you" comes in). You can then click the sharing button in the menu bar, and select a best fitting way of storing the bookmarks from the alternatives that are presented to you.

It's hard to be more precise here as the sharing alternatives depend on the apps you have on your phone, but I was able to simply store the text on the clipboard, and then paste it to a simple text file using an installed text editor. You might have other, more practical alternatives as well. With this method the bookmarks are "exported" as a simple list of URLs (plain links) so you will lose any meta data like bookmark names that you might have stored in Firefox.

---
Tags: firefox-for-android, bookmarks, export
---