Hi,
I have been trying to root a Nexus 7, and I always end up having the problem that the recovery cannot mount the sdcard. I have wiped the entire device several times and tried installing different google stock images: marshmallow (6.0.1 MMB29O and MMB29Q) and lollipop (5.1.1 LMY48T). I tried installing Cyanogenmod, but couldn't install it without access to the sdcard from the recovery. I also tried different recovery methods.
This is the bootloader loading screen
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
The stock recovery function failing to mount:
Team Win Recovery:
And ClockworkMod Recovery:
I also tried other versions of those recovery tools, but with the same result. I have no problem accessing the SD card from the Android OS, and accessing the device in USB mode was not a problem either.
It would be great if someone knew what the problem is. I have been searching, but couldn't find anything that helped.
Thanks for the help.
Aitor86 said:
I have no problem accessing the SD card from the Android OS
Click to expand...
Click to collapse
Android works fine but recovery does not? Unusual.
Please boot TWRP, run the following and post the log file:
Code:
adb shell blkid > data.txt
adb shell cat proc/partitions >> data.txt
adb shell head /sys/block/mmcblk0/device/* >> data.txt
adb shell dmesg >> data.txt
adb shell cat /tmp/recovery.log >> data.txt
k23m said:
Android works fine but recovery does not? Unusual.
Please boot TWRP, run the following and post the log file:
Code:
adb shell blkid > data.txt
adb shell cat proc/partitions >> data.txt
adb shell head /sys/block/mmcblk0/device/* >> data.txt
adb shell dmesg >> data.txt
adb shell cat /tmp/recovery.log >> data.txt
Click to expand...
Click to collapse
Hi, thanks for the help. This is the output of that code:
pastebin.com/fP5q3DPE
Aitor86 said:
Hi, thanks for the help. This is the output of that code: pastebin.com/fP5q3DPE
Click to expand...
Click to collapse
Hi mate, you wrote "I have no problem accessing the SD card from the Android OS" but the reality is "a few weeks ago I had no problem" - correct?
Your log:
Code:
mmc0: unrecognised EXT_CSD revision 7
mmc0: error -22 whilst initialising MMC card
Try the latest TWRP first, OK?
k23m said:
Hi mate, you wrote "I have no problem accessing the SD card from the Android OS" but the reality is "a few weeks ago I had no problem" - correct?
Your log:
Code:
mmc0: unrecognised EXT_CSD revision 7
mmc0: error -22 whilst initialising MMC card
Try the latest TWRP first, OK?
Click to expand...
Click to collapse
I have no idea what the problem was, but using the latest TWRP (3.0) did the trick. The sdcard is visible, and I can access any file I want from there.
Just to answer your question, the SD card was still accessible from the Android OS, so summing up, the only recovery tool that worked was the latest version of TWRP.
Thanks for the help!!!! I thought I was using the appropriate version, and I had spent more time than I would admit trying to get this working.
Hi
Sent from my iPhone using Tapatalk
Related
so i have adb setup and have it adb.exe in the gfree folder so when i go to command prompt im permission denied after
su
cd /data/local
chmod 777 gfree
./gfree -f
sync
Click to expand...
Click to collapse
what am i doing wrong
heres a pic
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
after cd /data/local it says permission denied what do i do?
zbrah said:
so i have adb setup and have it adb.exe in the gfree folder so when i go to command prompt im permission denied after
what am i doing wrong
heres a pic
after cd /data/local it says permission denied what do i do?
Click to expand...
Click to collapse
are you working from this page? http://forum.xda-developers.com/wiki/index.php?title=HTC_Vision#Rooting_the_G2
why are you cd'ing to data/local? what's in that folder? in the other thread you said you had your files in gfree_02??
http://forum.xda-developers.com/showthread.php?t=855764
im using this method
why would you cd to data/local? you need to put files there, not pull files from there...
martonikaj said:
why would you cd to data/local? you need to put files there, not pull files from there...
Click to expand...
Click to collapse
what should i do then
what commands do i do thanks for the help i appreciate it
On your computer's terminal/command line, navigate to where the gfree file is, and then...
Code:
adb push gfree /data/local
adb shell
This copies gfree to your phone, then puts you in your phone's terminal. Then do this:
Code:
su
cd /data/local
chmod 777 gfree
./gfree -f
sync
Click to expand...
Click to collapse
thats what is says on this thread http://forum.xda-developers.com/showthread.php?t=855764
zbrah said:
thats what is says on this thread http://forum.xda-developers.com/showthread.php?t=855764
Click to expand...
Click to collapse
Aren't you supposed to be running the commands:
Code:
su
cd /data/local
chmod 777 gfree
./gfree -f
sync
In terminal emulator on your phone? from what I remember this is the way I did it. Could be mistaken by the wording though... I just remember using ADB to push all the files then just running terminal emulator on my phone instead of running a shell. Worth a try if you can't get ADB shell to work properly.
zbrah said:
so i have adb setup and have it adb.exe in the gfree folder so when i go to command prompt im permission denied after
what am i doing wrong
heres a pic
after cd /data/local it says permission denied what do i do?
Click to expand...
Click to collapse
From the look of this you still have a $ sign this means you dont have root permission, it should be a # sign after typing su in adb shell . Looks like your temp root didn't work or your not allowing root user permission on your phone right after typing su in adb shell.
The guide you are trying to use specifically says "So we're assuming you've permarooted already and usb debugging is on" but from the thread title, it sounds like you are trying to get permanent root. The guide does not work if you don't already have root.
You should probably use the guide in the Wiki linked to earlier.
The problem is the very first command you type into the command prompt on your phone, i.e. "su", is giving you "permission denied". So as others have said, you are not getting root permissions. If you have rooted previously then the "Superuser" app pops up and asks for permissions the first time you try "su", check it's not coming up with a box on your phone which you're failing to see (then it times out after a few seconds and says "permission denied").
i'm trying to mount system.img to extract the files, but i get errors every time.
i think i don't use the right command, can anyone tell me what is the command for mounting the system.img?
can someone please help me?
should be mount -o rw,remount /dev/block/mmcblk0p1 /system
sinkster said:
should be mount -o rw,remount /dev/block/mmcblk0p1 /system
Click to expand...
Click to collapse
no i get this error:
Code:
can't find system.img in /etc/fstab or /etc/mtab
OverLo4d said:
no i get this error:
Code:
can't find system.img in /etc/fstab or /etc/mtab
Click to expand...
Click to collapse
Which command you are using?
ameer1234567890 said:
Which command you are using?
Click to expand...
Click to collapse
this time i tried the command he suggested, but i tried also this:
Code:
mount -o loop system.img system
or this:
Code:
mount -t ext4 -o loop system.img system
and nothing works
OverLo4d said:
this time i tried the command he suggested, but i tried also this:
Code:
mount -o loop system.img system
or this:
Code:
mount -t ext4 -o loop system.img system
and nothing works
Click to expand...
Click to collapse
I am guessing that you are trying to mount yaffs2 image from nandroid backup! Android does not support mounting yaffs2 images. Perhaps it's a kernel thingy, but I haven't come across any kernel which can do it. Perhaps someone could make a module or something?
In case if you are trying to mount an ext4 image, first create a folder in your sdcard named "system". Then:
Code:
mount -o loop system.img /sdcard/system
ameer1234567890 said:
I am guessing that you are trying to mount yaffs2 image from nandroid backup! Android does not support mounting yaffs2 images. Perhaps it's a kernel thingy, but I haven't come across any kernel which can do it. Perhaps someone could make a module or something?
Click to expand...
Click to collapse
no, it's a system.img converted from system.sin
is there any other way to way or command to extract the files?
OverLo4d said:
no, it's a system.img converted from system.sin
is there any other way to way or command to extract the files?
Click to expand...
Click to collapse
system.img converted from system.sin is the same as system.img from a nandroid backup.
Since you want to extract the img file, you could use this: http://forum.xda-developers.com/showthread.php?t=1645412 or http://forum.xda-developers.com/showthread.php?t=1112906
ameer1234567890 said:
system.img converted from system.sin is the same as system.img from a nandroid backup.
Since you want to extract the img file, you could use this: http://forum.xda-developers.com/showthread.php?t=1645412 or http://forum.xda-developers.com/showthread.php?t=1112906
Click to expand...
Click to collapse
doesn't work, i already tried any kind of unyaffs2
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
OverLo4d said:
doesn't work, i already tried any kind of unyaffs2
Click to expand...
Click to collapse
The sin2img tool you are using may not be compatible with all sin files. Try converting sin to img from flashtool.
ameer1234567890 said:
The sin2img tool you are using may not be compatible with all sin files. Try converting sin to img from flashtool.
Click to expand...
Click to collapse
i'm using bin4ry's sin2img, and it's the only that worked.
I extract the yaffs2 fs with flashtool and got system.yaffs2, but unyaffs2 does not work on it... any idea? (pagesize or something else?)
ldrolez said:
I extract the yaffs2 fs with flashtool and got system.yaffs2, but unyaffs2 does not work on it... any idea? (pagesize or something else?)
Click to expand...
Click to collapse
I already solved the problem and made a tutorial. Look for it in the general section
Sent from my LT18i using xda premium
OverLo4d said:
I already solved the problem and made a tutorial. Look for it in the general section
Click to expand...
Click to collapse
Thanks! To sum up, unyaffs2 does not work, and yaffey does.
I have moved this post to the Desire HD Android Development section (http://forum.xda-developers.com/showthread.php?t=2221039) if a mod wants to delete this thread, that would be great.
I probably won't ever update this.
THIS GUIDE IS MAINLY this guide (http://tau.shadowchild.nl/attn1/?cat=6) SIMPLIFIED TO SOME EXTENT. with parts that werent included in the guide added to the guide and resources added to the ace-tools folder that would have to be downloaded separately.
PREFACE:
Download this and unzip it somewhere (reccommend C:\ root folder): http://www.multiupload.nl/MXW371YT87
Full HTC Desire HD guide to root, S-OFF/Sim Unlock
1. Unlock the bootloader at http://htcdev.com/bootloader/
2. Copy your Unlock_code.bin file that you got in the email to the ace-tools folder.
3. Download rooted stock rom: http://www.multiupload.nl/20T9R21IGY
(link to rom thread: http://forum.xda-developers.com/showthread.php?t=1382235&highlight=rooted+stock )
copy the ROM zip file to your SD card.
4. Install recovery image:
Open cmd and type:
• cd <the directory of the ace-tools folder> (eg cd C:\ace-tools)
Ensure your phone is connected to your PC and then boot into bootloader, then navigate to fastboot.
In cmd:
• fastboot recovery1.img
5. boot into recovery through bootloader and Install the ROM you placed on the SD card, (via install zip fileselect the rom zip)
6. Reboot the phone, ensure the rom is working fine and you have root access you can test this by turning on usb debugging then:
• Adb shell
• Su
You should see the $ turn into a #. If this happens, congrats you have root access.
Then type this:
• Exit
Then again:
• Exit
Then:
• Adb push boot.img /data/local/tmp
• adb shell dd if=/dev/block/mmcblk0p22 of=/data/local/tmp/boot.img
• adb pull /data/local/tmp/boot.img
• adb push goldcard /data/local/tmp
• adb shell chmod 775 /data/local/tmp/goldcard
• adb shell cat /sys/class/mmc_host/mmc2/mmc2:*/cid
take note of the string of numbers and letters that appear.
then:
• adb shell /data/local/tmp/goldcard -c <string of numbers and letters should go here> -o /data/local /tmp/goldcard.img
• adb shell dd if=/data/local/tmp/goldcard.img of=/dev/block/mmcblk1
• adb push misc_version /data/local/tmp
• adb shell chmod 775 /data/local/tmp/misc_version
• adb shell /data/local/tmp/misc_version -s 1.11.111.1
7. If this is all fine boot into bootloader again.
From bootloader go to fastboot.
Go back to the cmd window on your PC from earlier, type in:
• Fastboot oem lock
Then type:
• fastboot oem rebootRUU
• fastboot flash zip firmware.zip
• fastboot reboot-bootloader
unlock the bootloader again using the Unlock_code.bin you got from HTC:
• fastboot flash unlocktoken Unlock_code.bin
then flash boot.img in ace-tools folder:
• fastboot flash boot boot.img
next:
• fastboot flash recovery recovery.img
8. boot to recovery again then:
• adb push gfree /tmp/
• adb shell chmod 775 /tmp/gfree
• adb shell /tmp/gfree -f
reboot to bootloader and you should see it says S-OFF at the top of the screen, if It does congrats your done.
VICTORY:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
help me out if you feel like it by signing up to dropbox with my refferal link:
Always have your stuff when you need it with @Dropbox. Sign up for free! http://db.tt/G8qfL77X
im trying to get soff but it just keeps hanging like this
C:\Users\KingKong\Desktop\platform-tools>adb reboot
C:\Users\KingKong\Desktop\platform-tools>adb wait-for-device push firewater /dat
a/local/tmp
ive waiting over 10 mins and nothing has been sent to my phone please help
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Looks like you haven't authorised adb. Revoke the usb debugging authorizations in developer settings and disable then re-enable usb debugging. Reboot then reconnect and try again this time authorise adb then just type adb devices before running firewater. If it says offline again you need to sort that before continuing otherwise it won't work.
ashyx said:
Looks like you haven't authorised adb. Revoke the usb debugging authorizations in developer settings and disable then re-enable usb debugging. Reboot then reconnect and try again this time authorise adb then just type adb devices before running firewater. If it says offline again you need to sort that before continuing otherwise it won't work.
Click to expand...
Click to collapse
i just tried what you said and its still hanging at the same place i have no idea why its doing it
Are you still getting the offline message? It won't continue with that message. Make sure the developers options are actually switched on. Check the slider at the top. Also make sure to use the original usb cable.
i checked devices and found my phone then i done adb reboot. it rebooted then i put adb wait-for-device push firewater /data/local/tmp and now its stuck like that command prompt now will not let me type into it
tommydee90 said:
i checked devices and found my phone then i done adb reboot. it rebooted then i put adb wait-for-device push firewater /data/local/tmp and now its stuck like that command prompt now will not let me type into it
Click to expand...
Click to collapse
No don't run that command until you have typed 'adb devices' if it shows offline there is no point going any further.
Try this type the command above if it doesn't show any devices attached or says offline. Unplug the usb cable and plug into another usb port then type 'adb devices again'
Does it show any devices attached?
i did do adb devices and it still doing it
C:\Users\KingKong\Desktop\platform-tools>adb devices
List of devices attached
HT453WM04355 device
C:\Users\KingKong\Desktop\platform-tools>adb reboot
C:\Users\KingKong\Desktop\platform-tools>adb wait-for-device push firewater /dat
a/local/tmp
and when i unplug the device this happends
C:\Users\KingKong\Desktop\platform-tools>adb wait-for-device push firewater /dat
a/local/tmp
4306 KB/s (4522136 bytes in 1.025s)
C:\Users\KingKong\Desktop\platform-tools>
i think ive found the problem i do adb devices phones shows like normal then i do adb reboot phone reboots then i do adb device agin just to check it says device offline ?
Dont do adb reboot . As long as your device shows up in adb then follow the instruction on firewater if your device can achieve s-off
C:\Users\KingKong\Desktop\platform-tools>adb wait-for-device push firewater /dat
a/local/tmp
5842 KB/s (4522136 bytes in 0.755s)
C:\Users\KingKong\Desktop\platform-tools>adb shell
[email protected]_m8:/ $ su
su
1|[email protected]_m8:/ $ chmod 755 /data/local/tmp/firewater
chmod 755 /data/local/tmp/firewater
[email protected]_m8:/ $ /data/local/tmp/firewater
/data/local/tmp/firewater
error, run firewater as root. su or FU!!!!!!
1|[email protected]_m8:/ $
this is what i get now
C:\Users\KingKong\Desktop\platform-tools>adb wait-for-device push firewater /dat
a
Are you not rooted? You need root first to run su.
i had to accept it on my phone.. thank you for the help now onto flashing it with google play edition lol
STEP 1: Root the phone with the link provided in the op7t forum.Now you have magisk.
STEP 2: Install the SE LINUX SWITCH APP link: https://labs.xda-developers.com/store/app/com.ibuprophen.selinux
STEP 3: change selinux to permissive. now to go settings-battery optimisation-change the selinux app to not optimised.turn off googleplay protect.
STEP 4:now all you need is a modded stock recovery. download it from here. link: https://drive.google.com/file/d/1S-1Np5CFx9z98Ntp8vUTWFU1ksqIeBSN/view
STEP 5:now go to fastboot and flash the stock modded recovery. CODE: fastboot flash recovery RECOVERYNAME.zip now you have adb enabled stock recovery.
STEP 6:now boot to stock recovery while connected to pc and type adb devices in cmd. it should go to adb. if yes proceed to next step.
STEP 7:now install viper4fx from magisk. phone will reboot. go into viper4a app and install drivers. it will go to fastboot ofcourse.
STEP 8: boot to recovery from fastboot. then just type in the following commands/
1. adb shell
2. cd data
3. cd adb
4. cd modules
5. cd ViPER4AndroidFX
6. rm post-fs-data.sh
7. exit
STEP 8: phone will now boot. again go to viper4a app and install drivers and repeat step 8 again.
VOILA now you have viper fully working on our beloved op7t.
NOTE: disable bluetooth absolute volume for bluetooth to work in v4a.
Dont try installing viper in 10.3.1. you will be stuck in fastboot. so instead download 10.3.0 fastboot image and flash it. then follow the above steps and update the phone by the following.
- Update the Rom WITHOUT REBOOT;
- Open Magisk Manager;
- In Magisk Manager, click on Install/Install/Direct Install;
- Again in Magisk Manager, click on Install/Install/Inactive Slot;
- Reboot. Root, viper and all the magisk modules will be retained. Give a thumbsup
Anyone tried this?
VIZT said:
Anyone tried this?
Click to expand...
Click to collapse
perfectly working in mine.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
why do i need always to set os to permissive?
Snake.s9 said:
why do i need always to set os to permissive?
Click to expand...
Click to collapse
Permissive sets SELinux to behave in a different way than Enforcing(default), which is required for V4A to work.
As far as technical details, I have no idea.
Permissive is dangerous.
Batfink33 said:
Permissive is dangerous.
Click to expand...
Click to collapse
Why ? Explain more please
Snake.s9 said:
Why ? Explain more please
Click to expand...
Click to collapse
Leaves the kernel open to any malicious apps that want to take control of your phone.
Snake.s9 said:
why do i need always to set os to permissive?
Click to expand...
Click to collapse
permissive mode allows some features to run on some instances which are not allowed in enforcing mode. like for example debugging.
Apparently its not meant for me to have viper. Modded recovery won't even work.
i tired it says no such file or directory on rm command
had to load app and install driver first
shorty1993 said:
Apparently its not meant for me to have viper. Modded recovery won't even work.
Click to expand...
Click to collapse
not working in the sense? not able to flash or adb isnt responding?
chwads2k8 said:
i tired it says no such file or directory on rm command
had to load app and install driver first
Click to expand...
Click to collapse
yes. postfs file will be generated only after installing the app. it is necessary to remove it for the phone to boot and for viper to work aswell.
I got to step five say
C:\adb>adb shell
error: device not found
AboNaya said:
I got to step five say
C:\adb>adb shell
error: device not found
Click to expand...
Click to collapse
Why would you type adb shell in fastboot?
Read the instructions again
Sent from my OnePlus7TPro using XDA Labs
Lossyx said:
Why would you type adb shell in fastboot?
Read the instructions again
Sent from my OnePlus7TPro using XDA Labs
Click to expand...
Click to collapse
C:\Users\MY>adb shell
OnePlus7T:/ $ cd data
cd data
OnePlus7T:/data $ cd adb
cd adb
/system/bin/sh: cd: /data/adb: Permission denied
Thank you very much for responding to me. I have taken the steps back to step 8 and the phone, of course, does not start the problem now, it is as follows What is the solution to overcoming this problem, please, I am a fan of this program and after moving to OnePlus SevenT I could not run it for more than ten to twenty attempts
AboNaya said:
C:\Users\MY>adb shell
OnePlus7T:/ $ cd data
cd data
OnePlus7T:/data $ cd adb
cd adb
/system/bin/sh: cd: /data/adb: Permission denied
Thank you very much for responding to me. I have taken the steps back to step 8 and the phone, of course, does not start the problem now, it is as follows What is the solution to overcoming this problem, please, I am a fan of this program and after moving to OnePlus SevenT I could not run it for more than ten to twenty attempts
Click to expand...
Click to collapse
Ah.
After typing adb shell and your prompt shows:
OnePlus7T:/ $
type: su <press enter>
Prompt should now look like this:
OnePlus7T:/ #
Now you have root access and can cd into /data/adb/.
not working
adb shell
# cd data
cd data
# cd adb
cd adb
/system/bin/sh: cd: /data/adb: No such file or directory
what to do now?
grandpajiver said:
Ah.
After typing adb shell and your prompt shows:
OnePlus7T:/ $
type: su <press enter>
Prompt should now look like this:
OnePlus7T:/ #
Now you have root access and can cd into /data/adb/.
Click to expand...
Click to collapse
C:\adb>adb shell
# su
su
/system/bin/sh: su: inaccessible or not found
#
AboNaya said:
C:\adb>adb shell
# su
su
/system/bin/sh: su: inaccessible or not found
#
Click to expand...
Click to collapse
Don't type su, just adb shell and proceed
Sent from my OnePlus7TPro using XDA Labs