• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Root Stuck in manual deodex question:

Steven58

Former Heavyweight Champion of AF-Early Bird Club
Moderator
Feb 19, 2010
34,789
28,747
USA
I've successfully done most of the steps to manually deodex.
However, when I get to the last step, it says

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\Users\Steven>adb shell
'adb' is not recognized as an internal or external command,
operable program or batch file.


This is what the last step says to do: (and I get stopped with the above message) I'm sure it's a simple mistake, but any guidance would be appreciated! TIA!


Open a command prompt, and do the following:
Code:
adb shell
su
stop
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
cp /sdcard/done_app/* /system/app/
cp /sdcard/done_frame/* /system/framework/
rm /system/app/*.odex
rm /system/framework/*.odex
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
reboot
 
Open a command prompt, and do the following:
Code:
adb shell
su
stop
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
cp /sdcard/done_app/* /system/app/
cp /sdcard/done_frame/* /system/framework/
rm /system/app/*.odex
rm /system/framework/*.odex
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
reboot
Sorry i'm no help, but I got a ? also. You open the command prompt on the pc right? Or do I open terminal emulator?
 
Upvote 0
Is your current directory set to the tools folder of your Android SDK?

Code:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Owner>adb shell
'adb' is not recognized as an internal or external command,
operable program or batch file.

C:\Documents and Settings\Owner>cd desktop/android/tools

C:\Documents and Settings\Owner\Desktop\android\tools>adb devices
List of devices attached


C:\Documents and Settings\Owner\Desktop\android\tools>adb shell
error: device not found

C:\Documents and Settings\Owner\Desktop\android\tools>
My phone isn't currently plugged in, clearly, but that's the situation that you need to be in, in order to use ADB.
 
Upvote 0
Thanks. I looked online and was headed to that conclusion. I realized I had to point the dos prompt. Thanks for reminding me how. It's been a long time since I used dos.! :)
I'll let you know how it goes. tia!

hehe: I remembered! Now it is!

eraursls1984! Type this in your dos prompt before you try the commands:

cd c:\android-sdk-windows\tools

I'm in the right place and I'm going to try it from here. I'll let you know how it goes!
 
  • Like
Reactions: eraursls1984
Upvote 0
almost:

Now I'm getting this error:

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.


C:\Users\Steven>cd c:\android-sdk-windows\tools

c:\android-sdk-windows\tools>adb shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
# su
su
# stop
stop
# mount -o rw, remount -t ext3 /dev/block/mmcblkl
mount -o rw, remount -t ext3 /dev/block/mmcblkl
Usage: mount [-r] [-w] [-o options] [-t type] device directory
# p21 /system
p21 /system
p21: not found
# p21 /system
p21 /system
p21: not found
#
 
Upvote 0
eraursls1984, issue the command cd followed by the directory location of the, "tools," folder that's located in your Android SDK.

ie. - cd /desktop/android/tools/

almost:

Now I'm getting this error:

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.


C:\Users\Steven>cd c:\android-sdk-windows\tools

c:\android-sdk-windows\tools>adb shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
# su
su
# stop
stop
# mount -o rw, remount -t ext3 /dev/block/mmcblkl
mount -o rw, remount -t ext3 /dev/block/mmcblkl
Usage: mount [-r] [-w] [-o options] [-t type] device directory
# p21 /system
p21 /system
p21: not found
# p21 /system
p21 /system
p21: not found
#
Why are you trying to issue, "p21 /system/"? That isn't a command or a step.

Follow these steps.
Code:
adb shell
su
stop
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
cp /sdcard/done_app/* /system/app/
cp /sdcard/done_frame/* /system/framework/
rm /system/app/*.odex
rm /system/framework/*.odex
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
reboot
Each line is one command that needs to be issued.
 
  • Like
Reactions: eraursls1984
Upvote 0
almost:

Now I'm getting this error:

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.


C:\Users\Steven>cd c:\android-sdk-windows\tools

c:\android-sdk-windows\tools>adb shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
# su
su
# stop
stop
# mount -o rw, remount -t ext3 /dev/block/mmcblkl
mount -o rw, remount -t ext3 /dev/block/mmcblkl
Usage: mount [-r] [-w] [-o options] [-t type] device directory
# p21 /system
p21 /system
p21: not found
# p21 /system
p21 /system
p21: not found
#

when i type in adb shell i don't get that message that you got here.... i dont get the # sign either... I am rooted also I have no idea whats stopping me from doing this lol
 
Upvote 0
when i type in adb shell i don't get that message that you got here.... i dont get the # sign either... I am rooted also I have no idea whats stopping me from doing this lol
You need to have the Android SDK downloaded and be able to use ADB. If you can't use ADB, then you need to read up on how to do so.

EDIT:
Paycer, I saw a post where you said if it stays a $ then you don't have root but I do I just used root explorer and took screens with drocap2 to make sure. It stays "$" and tells me permission denied?
How are you connecting your phone to your computer? As in, what USB mode have you selected on your phone?

How did you root your phone? What software version are you currently at and what method was used to upgrade to it?

Make sure you have access to the ADB command and your phone is plugged in. Type su. Does it tell you, "permission denied," as well?
 
Upvote 0
ThatOneDude05, you need to have the Android SDK downloaded and be able to use ADB. If you can't use ADB, then you need to read up on how to do so.

EDIT:
How are you connecting your phone to your computer? As in, what USB mode have you selected on your phone?

How did you root your phone? What software version are you currently at and what method was used to upgrade to it?

Make sure you have access to the ADB command and your phone is plugged in. Type su. Does it tell you, "permission denied," as well?

I have android SDK downloaded I rooted using ADB. Im connect PC mode USB debugging im at 2.2 and I did it OTA. after i type in su it does nothing i get permission denied when i type in stop.
 
Upvote 0
Ok.. I got one error message in the text. It said something was "read only" I'll highlight it. Can you tell me if I was successful or not? I did try it twice. TIA!

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\Users\Steven>cd c:\android-sdk-windows\tools

c:\android-sdk-windows\tools>adb shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
# su
su
# stop
stop
# mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /system
Usage: mount [-r] [-w] [-o options] [-t type] device directory
# cp /sdcard/done_frame/* /system/framework/
cp /sdcard/done_frame/* /system/framework/
cp: /system/framework/am.jar: Read-only file system
cp: /system/framework/android.policy.jar: Read-only file system
cp: /system/framework/bmgr.jar: Read-only file system
cp: /system/framework/com.blockbuster.moto.lib.jar: Read-only file system
cp: /system/framework/com.cequint.platform.jar: Read-only file system
cp: /system/framework/com.google.android.maps.jar: Read-only file system
cp: /system/framework/com.motorola.android.Firewall.jar: Read-only file system
cp: /system/framework/com.motorola.android.camera.jar: Read-only file system
cp: /system/framework/com.motorola.android.customization.jar: Read-only file sys
tem
cp: /system/framework/com.motorola.android.datamanager.base.jar: Read-only file
system
cp: /system/framework/com.motorola.android.dlna.jar: Read-only file system
cp: /system/framework/com.motorola.android.drm1.jar: Read-only file system
cp: /system/framework/com.motorola.android.frameworks.jar: Read-only file system

cp: /system/framework/com.motorola.android.mediasync.jar: Read-only file system
cp: /system/framework/com.motorola.android.mime.jar: Read-only file system
cp: /system/framework/com.motorola.android.mobad.jar: Read-only file system
cp: /system/framework/com.motorola.android.syncml.jar: Read-only file system
cp: /system/framework/com.motorola.android.telephony.jar: Read-only file system
cp: /system/framework/com.motorola.android.widget.jar: Read-only file system
cp: /system/framework/com.motorola.android.wmdrm.jar: Read-only file system
cp: /system/framework/com.motorola.atcmd.base.jar: Read-only file system
cp: /system/framework/com.motorola.atcmd.pluginMgr.jar: Read-only file system
cp: /system/framework/com.motorola.blur.library.friendfeed.jar: Read-only file s
ystem
cp: /system/framework/com.motorola.blur.library.home.jar: Read-only file system
cp: /system/framework/com.motorola.blur.library.messaging.jar: Read-only file sy
stem
cp: /system/framework/com.motorola.blur.library.service.jar: Read-only file syst
em
cp: /system/framework/com.motorola.blur.library.utilities.jar: Read-only file sy
stem
cp: /system/framework/com.motorola.tiltscroll.jar: Read-only file system
cp: /system/framework/com.pv.extensions.jar: Read-only file system
cp: /system/framework/core.jar: Read-only file system
cp: /system/framework/dmt.jar: Read-only file system
cp: /system/framework/ext.jar: Read-only file system
cp: /system/framework/framework-tests.jar: Read-only file system
cp: /system/framework/framework.jar: Read-only file system
cp: /system/framework/ime.jar: Read-only file system
cp: /system/framework/input.jar: Read-only file system
cp: /system/framework/javax.obex.jar: Read-only file system
cp: /system/framework/jcifs-krb5-1.3.12.jar: Read-only file system
cp: /system/framework/monkey.jar: Read-only file system
cp: /system/framework/pm.jar: Read-only file system
cp: /system/framework/services.jar: Read-only file system
cp: /system/framework/svc.jar: Read-only file system
# rm /system/framework/*.odex
rm /system/framework/*.odex
rm failed for /system/framework/am.odex, Read-only file system
# rm /system/framework/*.odex
rm /system/framework/*.odex
rm failed for /system/framework/am.odex, Read-only file system
# mount -o ro,remount -t ext3 dev/block/mmcblk1p21 /system
mount -o ro,remount -t ext3 dev/block/mmcblk1p21 /system
# reboot
reboot

c:\android-sdk-windows\tools>

Last question, how do I tell if I'm deodexed fer shur? TIA!
 
Upvote 0
How are you connecting your phone to your computer? As in, what USB mode have you selected on your phone?

How did you root your phone? What software version are you currently at and what method was used to upgrade to it?

Make sure you have access to the ADB command and your phone is plugged in. Type su. Does it tell you, "permission denied," as well?
I tried in pc mode, then charge only, then mass storage, and pc mode again. Pc mode isn't in "debugging" mode thats why I tried the others.

2.2 OTA, rooted the semi one click method, lol.
1. Extract and Update Android SDK package to your computer. The file comes in a zip file. Just open it up and drag and drop the android-sdk-windows folder to your C drive. Next, extract the files from the DORoot zip file to the tools folder of Android SDK. You should be moving 7 or 8 files into the tools folder.
2. Install Motorola Drivers
(Tip, to stop the launching of the Verizon/Motorola site, go to the MotoConnect icon in the bottom righ, right click, when phone connects, nothing.)
3. Make sure you phone is in PC Mode with USB Debugging enabled
PC Mode: Notification blind -> USB connection -> PC Mode
USB Debugging: Settings -> Applications -> Development -> USB debugging
You need USB debugging icon showing in notifications. Try Charge Only if you can't get PC Mode to show USB debugging.
4. Double-click and run doroot.bat


What is abd command? Isn't that just getting to the sdk tools folder? I entered "cd c:\android-sdk-windows\tools" and it got me to that directory finally


Thanks for all your help Paycer and steven
 
Upvote 0
ERROR: OVERFLOW
*head explodes*

Ok.. I got one error message in the text. It said something was "read only" I'll highlight it. Can you tell me if I was successful or not? I did try it twice. TIA!

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\Users\Steven>cd c:\android-sdk-windows\tools

c:\android-sdk-windows\tools>adb shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
# su
su
# stop
stop
# mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /system
Usage: mount [-r] [-w] [-o options] [-t type] device directory
# cp /sdcard/done_frame/* /system/framework/
cp /sdcard/done_frame/* /system/framework/
cp: /system/framework/am.jar: Read-only file system
cp: /system/framework/android.policy.jar: Read-only file system
cp: /system/framework/bmgr.jar: Read-only file system
cp: /system/framework/com.blockbuster.moto.lib.jar: Read-only file system
cp: /system/framework/com.cequint.platform.jar: Read-only file system
cp: /system/framework/com.google.android.maps.jar: Read-only file system
cp: /system/framework/com.motorola.android.Firewall.jar: Read-only file system
cp: /system/framework/com.motorola.android.camera.jar: Read-only file system
cp: /system/framework/com.motorola.android.customization.jar: Read-only file sys
tem
cp: /system/framework/com.motorola.android.datamanager.base.jar: Read-only file
system
cp: /system/framework/com.motorola.android.dlna.jar: Read-only file system
cp: /system/framework/com.motorola.android.drm1.jar: Read-only file system
cp: /system/framework/com.motorola.android.frameworks.jar: Read-only file system

cp: /system/framework/com.motorola.android.mediasync.jar: Read-only file system
cp: /system/framework/com.motorola.android.mime.jar: Read-only file system
cp: /system/framework/com.motorola.android.mobad.jar: Read-only file system
cp: /system/framework/com.motorola.android.syncml.jar: Read-only file system
cp: /system/framework/com.motorola.android.telephony.jar: Read-only file system
cp: /system/framework/com.motorola.android.widget.jar: Read-only file system
cp: /system/framework/com.motorola.android.wmdrm.jar: Read-only file system
cp: /system/framework/com.motorola.atcmd.base.jar: Read-only file system
cp: /system/framework/com.motorola.atcmd.pluginMgr.jar: Read-only file system
cp: /system/framework/com.motorola.blur.library.friendfeed.jar: Read-only file s
ystem
cp: /system/framework/com.motorola.blur.library.home.jar: Read-only file system
cp: /system/framework/com.motorola.blur.library.messaging.jar: Read-only file sy
stem
cp: /system/framework/com.motorola.blur.library.service.jar: Read-only file syst
em
cp: /system/framework/com.motorola.blur.library.utilities.jar: Read-only file sy
stem
cp: /system/framework/com.motorola.tiltscroll.jar: Read-only file system
cp: /system/framework/com.pv.extensions.jar: Read-only file system
cp: /system/framework/core.jar: Read-only file system
cp: /system/framework/dmt.jar: Read-only file system
cp: /system/framework/ext.jar: Read-only file system
cp: /system/framework/framework-tests.jar: Read-only file system
cp: /system/framework/framework.jar: Read-only file system
cp: /system/framework/ime.jar: Read-only file system
cp: /system/framework/input.jar: Read-only file system
cp: /system/framework/javax.obex.jar: Read-only file system
cp: /system/framework/jcifs-krb5-1.3.12.jar: Read-only file system
cp: /system/framework/monkey.jar: Read-only file system
cp: /system/framework/pm.jar: Read-only file system
cp: /system/framework/services.jar: Read-only file system
cp: /system/framework/svc.jar: Read-only file system
# rm /system/framework/*.odex
rm /system/framework/*.odex
rm failed for /system/framework/am.odex, Read-only file system
# rm /system/framework/*.odex
rm /system/framework/*.odex
rm failed for /system/framework/am.odex, Read-only file system
# mount -o ro,remount -t ext3 dev/block/mmcblk1p21 /system
mount -o ro,remount -t ext3 dev/block/mmcblk1p21 /system
# reboot
reboot

c:\android-sdk-windows\tools>

Last question, how do I tell if I'm deodexed fer shur? TIA!
You messed up on this part.
Code:
# mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /system
Usage: mount [-r] [-w] [-o options] [-t type] device directory
You issued this command incorrectly.
Code:
mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /system
It needs to be like this.
Code:
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
Do not put a space after the comma and before "remount".

When you tried to mount /system/, it didn't work correctly and you therefore did not have read/write permissions. You were still left with read-only permissions and that's why the commands thereafter failed.

__________________

I have android SDK downloaded I rooted using ADB. Im connect PC mode USB debugging im at 2.2 and I did it OTA. after i type in su it does nothing i get permission denied when i type in stop.
What do you mean, "it does nothing,"? Try doing the process like you've been doing, right click in the command prompt, and click on, "Mark." Left-click and highlight everything, then hit Enter. Paste the text here, please.

__________________

I tried in pc mode, then charge only, then mass storage, and pc mode again. Pc mode isn't in "debugging" mode thats why I tried the others.
Your phone needs to be in PC Mode when connected and have, "USB debugging," enabled in Menu > Settings > Applications > Development.

What is abd command? Isn't that just getting to the sdk tools folder? I entered "cd c:\android-sdk-windows\tools" and it got me to that directory finally
If you're in that directory, then you can now use ADB. ADB stands for Android Debug Bridge. It's essentially the same thing as using the Terminal Emulator on your phone, but it's from your computer instead. It's just a terminal shell that allows you to issue certain raw commands.

Type adb help to learn more about the command and its variants.
 
  • Like
Reactions: eraursls1984
Upvote 0
C:\android-sdk-windows\tools>adb devices
List of devices attached
015A9CA604022021 device


C:\android-sdk-windows\tools>adb shell
$ su
su
stop
stop
Permission denied
$ $ mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
mount: Operation not permitted
$


this is what im getting. lol im getting frustrated and thanks for helping me out
 
Upvote 0
Update:

I did it again. Something told me that maybe if I had a read-only response, I should try it in pc mode. I did. This time I got this. There seemed to be an error at the bottom, but take a look and tell me what you think. TIA!

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.


c:\android-sdk-windows\tools>adb shell
# su
su
# stop
stop
# mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /sytem
mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /sytem
Usage: mount [-r] [-w] [-o options] [-t type] device directory
# mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /system
Usage: mount [-r] [-w] [-o options] [-t type] device directory
# mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
# cp /sdcard/done_app/* /system/app/
cp /sdcard/done_app/* /system/app/
# cp /sdcard/done_frame/* /system/framework/
cp /sdcard/done_frame/* /system/framework/
# rm /system/framework/*.odex
rm /system/framework/*.odex
# mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
mount: Device or resource busy
# mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
mount: Device or resource busy
# reboot
reboot

c:\android-sdk-windows\tools>
 
Upvote 0
Debugging is selected but it doesn't show up in the notification bar when in pc mode, only when in charge onle or mass storage modes.
Then something isn't right. Try reinstalling the Motorola drivers.

http://www.motorola.com/staticfiles/Support/Experiences/Global_Drivers/USB_Drivers_bit_4.7.1.zip

I recommend following this thread. It's relevant to your interests. :p
http://androidforums.com/droid-x-su...9-droid-x-doesnt-connect-computer-period.html
Your gonna have a major headache tomorrow Paycer if not already, haha
I don't know about the headache, but my eyes have been hurting a little bit for a while now. Too much phone + PC time.

C:\android-sdk-windows\tools>adb devices
List of devices attached
015A9CA604022021 device


C:\android-sdk-windows\tools>adb shell
$ su
su
stop
stop
Permission denied
$ $ mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
mount: Operation not permitted
$


this is what im getting. lol im getting frustrated and thanks for helping me out
1.) Go a little slower with issuing the commands. I can see overlaps when you're jumping the gun and trying to do another command when it's still trying to process the initial one(s). You have to wait for the $ or # prompt to come back before issuing another command.

2.) Like I said, if you can't get the # prompt, then I don't see how you can have root access. Try re-rooting and redoing the commands after. I don't know what else to tell you. :( Sorry.

Update:

I did it again. Something told me that maybe if I had a read-only response, I should try it in pc mode. I did. This time I got this. There seemed to be an error at the bottom, but take a look and tell me what you think. TIA!

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.


c:\android-sdk-windows\tools>adb shell
# su
su
# stop
stop
# mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /sytem
mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /sytem
Usage: mount [-r] [-w] [-o options] [-t type] device directory
# mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o rw, remount -t ext3 /dev/block/mmcblk1p21 /system
Usage: mount [-r] [-w] [-o options] [-t type] device directory

# mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
# cp /sdcard/done_app/* /system/app/
cp /sdcard/done_app/* /system/app/
# cp /sdcard/done_frame/* /system/framework/
cp /sdcard/done_frame/* /system/framework/
# rm /system/framework/*.odex
rm /system/framework/*.odex
# mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
mount: Device or resource busy
# mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
mount: Device or resource busy
# reboot
reboot

c:\android-sdk-windows\tools>
You're doing it again. Never put a space after rw, or before remount.

EDIT: Actually, I think you did the process correctly. I reread and I think you corrected yourself. I just didn't notice it until now. The prompt telling you that the device or resource is busy is normal. Go ahead and try the entire process again just to make sure. The second time around, it shouldn't give you that error.

To make sure, do as I said in the quote a few posts above. Check /system/app/ to see if there are any files with an .odex file extension. If there aren't any, then you've successfully deodexed.

If I have to stop and unplug my phone after getting this far but not finishing will my phone be messed up? If not, when I start tomorrow will I restart from this step, or restart from beginning?
I don't know exactly where you're at. I'm helping like four different people and things are beginning to get jumbled. I don't really recommend stopping the process halfway through, but all you're really doing when deodexing is removing some files afaik. You should be okay.
 
Upvote 0

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones