not have logo to sharj - Xiaomi Mi A2 Lite Questions & Answers

I'm root my A2lite(ptchboot and install Magisk)
but i turn off my phone and connect to sharj
is turn down,no go logo to sharj!!!

hosseinj2 said:
I'm root my A2lite(ptchboot and install Magisk)
but i turn off my phone and connect to sharj
is turn down,no go logo to sharj!!!
Click to expand...
Click to collapse
You turned off the phone, and while off, you connected a charger.
You expect to see something on the screen...
I'm not sure if this works because I never have my phone off
It could be the unlocked bootloader rather than Magisk that has caused this?
I'll do some tests tonight.

yes, turn off your phone and connect to charge,you see logo to charge battery!
but I don't have,
I think i flash patchboot this happen

Ok, so first some disclaimers...
1) I am running 10.0.10.0 with an unlocked bootloader.
2) I have both TWRP (3.3.1-dees_troy) and Magisk (19.3) installed.
3) I have a custom splash screen (https://forum.xda-developers.com/mi-a2-lite/themes/splash-image-maker-t3914702).
I turned off my phone and plugged it into the charger.
I saw the Android one logo for a bit.
I saw a battery indicator briefly.
The screen turned off.
I unplugged the phone and tried to turn it on... I'm not sure what was going on but the power button wasn't working, probably the phone was "turning off" after charging?
I plugged the phone into the charger again and it showed the battery indicator, but the screen was flickering on and off. I seem to recall discussion of this on these forums back when I first got the phone. As I said, I don't normally turn my phone off so I don't see this issue.
I did a bit of digging and found this old thread, which suggests that both TWRP and Magisk cause the charging animation to break, and that the phone won't charge while in this state. https://forum.xda-developers.com/mi-a2-lite/help/battery-animation-charge-power-off-t3875783
Both TWRP and Magisk modify the boot partition. I guess they do something that interferes with the charger animation. If I'm reading this right, /init looks at /init.rc and there's a case for running /charger -> /sbin/charger -> /root/charger, which is I guess what is responsible for doing the charging animation.
I found a page where someone describes bypassing this state and just booting the phone when the charger is connected. If I turned my phone off more often, I might be interested in doing this... https://appdictive.dk/blog/android/how-to/2017/04/20/disabeling_offline_charge_on_android/

a1291762 said:
Both TWRP and Magisk modify the boot partition. I guess they do something that interferes with the charger animation.
Click to expand...
Click to collapse
I feel like I'm going to sink a bunch of time into this...
I compared my vanilla and Magisk-patched boot images. It looks like Magisk changes both the kernel (zImage) and init, but not init.rc or charger. The patched image has a backup of the original init on it, so maybe the modified init just does Magisk stuff before restoring the original init and booting normally...
I kind of curious now and interested in trying to poke at this but it's going to be very slow going. Making changes, repacking the boot image, fastboot flashing then powering off and booting with the charger. And it'll be even slower if I can't figure out a way to start adb from that state (or save logs somewhere persistent, not sure if this happens before /data has been mounted).
I wish this phone had a serial port in the headphone Jack like Asus/Nexus devices do... but I couldn't find any information suggesting it has and I'm not about to put voltage into the microphone pin in the hope that it does.

thank you to answer.but I don't understand good
if i flash this file which fastboot my logo charge is come back?and root is working?(my build is v 10.0.9 Android 9)

hosseinj2 said:
thank you to answer.but I don't understand good
if i flash this file which fastboot my logo charge is come back?and root is working?(my build is v 10.0.9 Android 9)
Click to expand...
Click to collapse
No, that does not seem to be the case.
Based on the old thread, you need to go back to stock boot image (no twrp or Magisk) to get charging while off to work again.
I plan to try some tests of custom boot images to see if I can get it to work right, but it may take some time.

a1291762 said:
No, that does not seem to be the case.
Based on the old thread, you need to go back to stock boot image (no twrp or Magisk) to get charging while off to work again.
I plan to try some tests of custom boot images to see if I can get it to work right, but it may take some time.
Click to expand...
Click to collapse
ok , I'm waiting than you

I did a bit of digging...
charger is the binary that runs when you boot with the charger plugged in. It's in AOSP (code for Mi A2 Lite is probably different and probably not open sourced): https://android.googlesource.com/platform/system/core/+/jb-mr1-dev-plus-aosp/charger
I unpacked a few images and looked at the charger binaries. I found that there seems to be many versions of this binary. One for each of Oreo, Pie, TWRP (dees_troy), TWRP (offain).
I found a reference to the MIUI charger binary being used for the Mi A2 Lite Linage build (because it works?)...
https://github.com/33bca/android_device_xiaomi_daisy/commit/47fd114e0062659a840e6bebaf57f4fb77b976c1
I downloaded both the Lineage ROM and a Redmi 6 Pro boot.img and confirmed that Lineage is using the Redmi 6 Pro's chargeonlymode binary.
Alas, when I attempted to pack this into a boot.img and flash it, both twrp and the system failed to start. But that could just be because I can't actually pack a working boot.img...
I was able to copy the binaries onto the phone and run them from TWRP (I use 3.3.1-dees_troy). The binaries fought with the recovery for control of the screen occasionally, but I was able to observe at least some of the binaries apparently working correctly.
- oreo - screen lit but black
- pie - screen lit but black
- twrp 3.3.1-dees_troy - displayed as numbers and text
- twrp 3.3.1-offain - screen lit but black
- lineage - graphical display
I also noticed that when the binary worked, it fairly aggressively turned off the display. I had to press the power button, sometimes several times, to get the display to come on briefly showing the charging image before it turned off again.
When I unpacked my actual boot.img (extracted from the phone), it had TWRP's charger binary (ie. installing TWRP replaces your charger binary?) but when I actually boot the phone, that's not the binary I see. Instead, /sbin/charger is a link to /root/charger, which is the Pie binary. When I boot to TWRP, I see the TWRP charger binary. I wonder if this is something to do with Magisk?
I'm not yet sure what all this means... When I flashed a vanilla image and plugged my phone into a charger, it sort-of seemed to work but the screen turned off quickly. But maybe that's just the "aggressive" screen turning off I noted when I ran the binaries from TWRP?
I'll try to confirm this, plus any difference between having only TWRP, only Magisk or both.
And there's always that Lineage binary, if I can get it packed into a boot.img...

Related

STUCK ON REBOOT [LOGCAT included]

hi everyone
when i reboot my device by any means (from inside of android, recovery, even adb reboot-bootloader), the device never finishes the reboot. interestingly, when i have it plugged into windows by usb, when doing the reboot i hear the usb disconnect sound, then the usb connect sound, then it just stays black screen and is unresponsive. only fixed by holding power or power+down button.
some info:
bootloader v 4.02 // twrp 2.7.1.1 // liquidsmooth current nightly
however, this problem happens on stock rooted as well as all custom roms
i have included a logcat of the issue (never made one before but i think i did it right) if someone can please help me, i'm thinking i may need to return my model.
thank you! :fingers-crossed:
Vember31 said:
hi everyone
when i reboot my device by any means (from inside of android, recovery, even adb reboot-bootloader), the device never finishes the reboot. interestingly, when i have it plugged into windows by usb, when doing the reboot i hear the usb disconnect sound, then the usb connect sound, then it just stays black screen and is unresponsive. only fixed by holding power or power+down button.
some info:
bootloader v 4.02 // twrp 2.7.1.1 // liquidsmooth current nightly
however, this problem happens on stock rooted as well as all custom roms
i have included a logcat of the issue (never made one before but i think i did it right) if someone can please help me, i'm thinking i may need to return my model.
thank you! :fingers-crossed:
Click to expand...
Click to collapse
Have you tried flashing stock images using fastboot?
It seems like the system can't write to /data directory, maybe flashing everything again will fix that issue.
alresave said:
Have you tried flashing stock images using fastboot?
It seems like the system can't write to /data directory, maybe flashing everything again will fix that issue.
Click to expand...
Click to collapse
I did flash the stock images (the latest 4.4.4) and unfortunately still had the same problem. i'll give it another shot today though to see what happens
EDIT: performed the fastboot flash with the factory images and had the same issue. tried philz recovery and wouldn't turn back on after selecting reboot. checked permissions on /data and /system and everything was RW. i tried remounting both as well to no avail. must be a hardware issue i feel like at this point
*Try flashing through a different custom recovery.
* figure out how to use the flashall.bat script to flash a new recovery, bootloader, ROM and kernel.
*Try fastboot boot for the recovery as opposed to fastboot flash. (I'm not sure if this will do anything)
*try wugfresh toolkit soft brick unroot+flash stock
Ps: this is just a list of ideas. Flashing a working ROM should mount all of your directories.
mugzylol said:
*Try flashing through a different custom recovery.
* figure out how to use the flashall.bat script to flash a new recovery, bootloader, ROM and kernel.
*Try fastboot boot for the recovery as opposed to fastboot flash. (I'm not sure if this will do anything)
*try wugfresh toolkit soft brick unroot+flash stock
Ps: this is just a list of ideas. Flashing a working ROM should mount all of your directories.
Click to expand...
Click to collapse
Thanks for the suggestions, though trying those methods unfortunately hadn't done it either. Eventually, the ability to reboot simply showed up just the other day. I'm not too sure why it did and wasn't working before, but I kind of think it needed about 1-2 days of being powered on while connected to a charger. Previously, I would charge it only every few days with the power off and unplug it to use it. That's the only difference I can spot for anyone else who runs into this problem. Keep it connected to the charger for a day or two with the power on.

Interrupted flashing during "VolumeUp + Power" mode

I have updated my Nexus 5x to 7.1.1 beta and after a day it powered off and I got the infamous red led during charging. I was not able to turn the phone on even after leaving the charger on for some days. I thought it is bricked and left it alone connected to my computer.
However today, out of nowhere Google logo popped up. It was bootlooping, but I was able to enter bootloader and original recovery. I wanted to flash it from bootloader, but was unable, because it was still oem locked. And I was not able to oem unlock, because I did not do the required part in the Developer Tools menu. I tried to adb sideload OTA in the original recovery, but sideloading stopped after uploading ~48% every time.
So I opted for the "VolumeUp + Power" mode flashing. Phone was recognized and I started flashing the appropriate TOT file. However at 33% on phone and 28% on the PC, progress stopped. And after a minute or so phone turned off. Currently it has no signs of life at all. Have I completely bricked it now? Is there a way to recover from interrupted "VolumeUp + Power" flashing mode?
EDIT: at first I though maybe the battery died during flashing. But interruption was not abrupt. First the progress slowed down to halt. And then after some time phone turned off.
It seems not all is lost. Have a blinking red light again after leaving it connected to computer for a day. Back to square one, but at least it is alive.
Your motherboard is dead.
And it is not your fault, mine also died while using beta 7.1 and I sent it RMA. They replaced for a new one.
But in my case i had unlocked bootloader, I flashed back 7.0 and it gave no results, still bootloop that's why I sent
Thanks for the info.
After leaving my phone with a clamp on a power button throughout the night (so the red light would flash continuously), I got it booting into "VolumeUp + Power" mode and this time I have successfully flashed the same TOT file via LGUp software. It was still bootlooping after flashing. Now I was able to enter into bootloader and recovery and this time sideloading the same previous file actually works. However it still bootloops.
Anyway, I tried to RMA it and after giving my IMEI to the Google rep, they said that they could not find it in their system after checking US and UK store records. Also tried calling LG warranty, but they do not know of my IMEI either. I got this phone from Swappa, so I left wondering where did the original owner of this phone got it from. He claimed that he got it as a present...
BlinK_ said:
Thanks for the info.
After leaving my phone with a clamp on a power button throughout the night (so the red light would flash continuously), I got it booting into "VolumeUp + Power" mode and this time I have successfully flashed the same TOT file via LGUp software. It was still bootlooping after flashing. Now I was able to enter into bootloader and recovery and this time sideloading the same previous file actually works. However it still bootloops.
Click to expand...
Click to collapse
out of curiosity, have you ever tried to flash custom recovery through the bootloader ? If you can, you might also wanna try to make a EFS backup, wipe all partition, then flash custom rom or near-stock rom like this one, just for the sake of testing.
anazhd said:
out of curiosity, have you ever tried to flash custom recovery through the bootloader ? If you can, you might also wanna try to make a EFS backup, wipe all partition, then flash custom rom or near-stock rom like this one, just for the sake of testing.
Click to expand...
Click to collapse
I wanted to flash custom recovery but was unable to do so, because device is still OEM locked. And I am unable to unlock it, because I did not do the confirmation in the Developer Options before device started to bootloop. Is there a way to flash custom recovery without this step in Developer Options?
BlinK_ said:
I wanted to flash custom recovery but was unable to do so, because device is still OEM locked. And I am unable to unlock it, because I did not do the confirmation in the Developer Options before device started to bootloop. Is there a way to flash custom recovery without this step in Developer Options?
Click to expand...
Click to collapse
For now, no way that I can think of. You could try to oem unlock it until it work, just cross your finger I guess?
I have some progress here. Since I was able to sideload various OTA images, I started doing that one by one and seeing if some of them would not bootloop. And after flashing 7.0.0 (NRD91N) from here (https://developers.google.com/android/ota) phone booted successfully and now is working. Will report if I get any problems.

Did I hard brick my XA2?

Hey all, I got my XA2 a couple months ago and have been really enjoying it. Right out the box, I flashed LineageOS and the phone's been operating mostly fine for a while, with the exception of OTA updates. For a while, attempting to install a zip to slot B was causing problems with the modem, and after a certain point it was hanging on the Lineage boot screen.
I wanted seamless updates to work, so I tried something I thought would work. Using the unofficial FlashTool, I flashed the official Sony 12.9 ROM (July patch, I think?) hoping to OTA to the current 13.38 ROM and "reset" the B partitions to their stock state. However, the built-in Software Update kept saying I was up-to-date, and Xperia Companion on my laptop said it couldn't check for updates. So, I tried another route of using the official Sony Flash Tool "Emma." I saw two updates, so I flashed the older one (4.01 I think) and it worked fine. Then I used Fastboot to switch active partitions to the B slot and flashed the newer version (5.29 I think). I noticed the active slot had been changed back to A, so I set it to B and Fastboot rebooted. This is where I experienced problems.
Upon trying to power up the device, I see the LED flash green briefly, and nothing happens on screen. Upon plugging the device in with either volume key pressed, attempting to recover the device, I get the same thing with the flashing LED, except it does this repeatedly, and thus am unable to boot into Fastboot or Flash Mode. Am I screwed? It's not too terrible as I have other devices I can use, although now I essentially have a $300 paperweight...
If you are linux try to check dmesg when plugging into pc, in windows check device manager.
However, due to the fact its doing something at green led and abl/xbl is what sets led red I suspect there is an issue booting off emmc or something.
You could also check the serial log if you want to be sure of the isssue.
EDIT: try plugging into USB with the power key pressed
See if that does anything
If not, try plugging in with volume up pressed
Did you manage to recover your phone again? It seems mine went broken now the same way.
I had flashed some Oreo based firmware (50.1.A.13.123) probably to Slot A to be able to OEM unlock it and remove the branding and bring it back to Oreo from Pie. Then unlocked bootloader and followed the LOS flashing guide and flashed LOS to Slot a. After rebooting TWRP it hang in a casual bootloop. Maybe there was a Pie based Firmware flashed to Slot B. I've tried to reflash original Oreo firmware to Slot A again and now I can't manage to get into flashmode or fastboot mode. Even forced shotdown or reboot with holding Power+VolUp and 2 minutes way won't work it seems. Linux cosole doesn't report anything using dmesg here.
Any idea? What do you mean how to check serial console - the phone one or pc?

Applying Magisk to OnePlus 3 on Android Pie results in a soft-brick

Yesterday I took some time to attempt to upgrade my OnePlus to Android Pie after finding out earlier that it's not as simple as just installing an update when your boot loader is unlocked. After a bit of searching I found this guide which I followed to upgrade OxygenOS to version 9.0.5. After some initial problems (I didn't pay enough attention and TWRP was set to auto-reboot which complicated matters a little) I managed to finish the upgrade and the device booted.
After confirming everything worked well I figured I should flash Magisk back onto the device so that I would have root access again. I flashed Magisk 19.3 and tried to boot the phone but it got stuck on the spinning OnePlus logo during boot. Left it running for over an hour, nothing happened so eventually I decided to flash the OTA update and the BL/KM patch again, which made my phone boot again but without Magisk, obviously.
After that I tried flashing Magisk 19.2 and Canary (19.4), both with the same results: a spinning logo, nothing more.
I'm not sure what else I can try. In a particular braindead moment I thought I should just try to take a look at Magisk's log file but of course that's not accessible without root access. I've got a feeling that the patch to the bootloader is causing issues with Magisk's firmware patch but I'm not familiar enough with this kind of problem to figure out what is going on exactly.
Does anyone recognize this problem or can one of you tell me what I could try to get Magisk running again?
I had this problem. Turns out after each flash: twrp, magisk, a reboot/ power off is required.
Here's what I do.
1) flash recovery using fastboot
2) reboot to recovery
3) on home screen of TWRP > reboot > power off
4) wait 5 seconds, turn phone back on and go to TWRP right away
5) flash magisk > TWRP home screen > reboot > power off
6) wait 5 seconds, turn phone back on and go to TWRP directly
7 TWRP home screen > reboot > reboot phone
Should get you to boot
dpj52190 said:
I had this problem. Turns out after each flash: twrp, magisk, a reboot/ power off is required.
Here's what I do.
1) flash recovery using fastboot
2) reboot to recovery
3) on home screen of TWRP > reboot > power off
4) wait 5 seconds, turn phone back on and go to TWRP right away
5) flash magisk > TWRP home screen > reboot > power off
6) wait 5 seconds, turn phone back on and go to TWRP directly
7 TWRP home screen > reboot > reboot phone
Should get you to boot
Click to expand...
Click to collapse
Thanks, I'll give it a go later tonight!
dpj52190 said:
I had this problem. Turns out after each flash: twrp, magisk, a reboot/ power off is required.
Click to expand...
Click to collapse
I tried it just now. Sadly I get the same end result. Thanks anyway though.
I have an ADB log of the crash that happens that causes the phone not to boot, maybe that's familiar to someone around here? I uploaded it here.
Hello can I ask a question why do you need root
OP, I just upgraded the battery in my OP3 and, due to some software quirks with a certain custom ROM, decided to switch to Havoc which I liked a lot on my OP6. I flashed Magisk with no issue. Here are the steps I took:
Starting with unlocked BL
Boot into the newest official version of TWRP via fastboot.
Flash OOS 9.0.5 and boot into it, completing device setup.
Reboot into OnePlus recovery, then from within, reboot into fastboot
Flash TWRP to recovery in fastboot, then shut down device (do not attempt to fastboot reboot recovery, it will boot into OOS and overwrite TWRP)
Boot device, use volume key to interrupt startup, boot into recovery (TWRP)
Follow installation instructions from Havoc thread, do not wipe cache/dalvik after flashing, do not boot before flashing all zips (I flashed ROM -> gapps -> Magisk in that order)
OP, I'm not familiar with OOS's current status. My recommendation is to try a different ROM to see whether it is a compatibility issue with the ROM itself. Alternatively, try flashing OOS then Magisk one after the other in TWRP without interruptions, like I did. From the wording of your OP it sounds like you booted into the newly flashed OOS, then flashed Magisk after, which may be the source of your problems.
kallum7 said:
Hello can I ask a question why do you need root
Click to expand...
Click to collapse
I work on an app that uses location data and it's pretty convenient to be able to test it on a real device but with a joystick instead of real location data. To make matters more complicated it's my personal phone and I use that to play Pokémon Go too. Without cheating I might add, the root is not for PG but because I do want to be able to play it on the same phone that I use to test my app I need Magisk to hide the fact that it's rooted or the game won't start.
LunarisDream said:
OP, I just upgraded the battery in my OP3 and, due to some software quirks with a certain custom ROM, decided to switch to Havoc which I liked a lot on my OP6.
Click to expand...
Click to collapse
Thanks for the suggestion but I'd rather keep using OOS on this phone as long as I don't have a new phone for daily use. I don't really want to modify this thing too much without having a replacement ready in the likely case that I screw something up.
OP, I'm not familiar with OOS's current status. My recommendation is to try a different ROM to see whether it is a compatibility issue with the ROM itself. Alternatively, try flashing OOS then Magisk one after the other in TWRP without interruptions, like I did. From the wording of your OP it sounds like you booted into the newly flashed OOS, then flashed Magisk after, which may be the source of your problems.
Click to expand...
Click to collapse
I tried both flashing the OTA, the modded firmware and Magisk in one go and separately after confirming that the OTA/FW were working. Sadly both methods resulted in the same problem.
If anyone's wondering I did a clean flash and factory reset, then installed Magisk again after that. Everything's working again now. Thanks for trying to help!

Question OP 9 Pro stuck on infinite loop using LineageOS

Hi all,
I'm coming back to Android after an absence and would like to run Lineage on a new US unlocked 9P. I followed the directions in the Lineage OS website and unfortunately the phone now is stuck in a constant animation of the blue circle moving left over the arc, and there isn't much I think I will be able to do about it until the battery runs out.
Here's what I did as per the directions:
-got and installed adb and fastboot from the Windows zips from Google
-added the install location to the path enviro variable
-installed the Universal ADB driver from Github
-activated USB debugging and OEM unlocking on the phone
-got the phone repeatedly into fastboot mode but then got stuck since 'fastboot devices' didn't show anything
-got bailed out by another thread here that one needs to check for updates with phone connected and Win will download the relevant USB drivers. Thanks!
-unlocked the bootloader
-downloaded and flashed the 18.1-20210803 recovery img
-sideloaded the copy-partitions 20210323 zip and it got stuck at 47% just like the website said
-did the factory reset
-sideloaded the the LOS 2020210803 zip to the phone and rebooted
When I rebooted it just plays the animation I mentioned at the beginning, so it looks like it's stuck in a permaloop.
I should mentioned that after I flashed recovery and booted into the normal Oxygen mode it would take much longer to boot so perhaps there was something already creating the loop.
I am grateful for any assistance.
Thanks,
How long have you left it? First install of Lineage spins for ages
I think I left it for an hour or so. Thanks for the info - I just turned it on and will let it spin for a while and see what happens.
I let it run until the battery died. I fully recharged it and am letting it run again. Same result of blue circle tracing arc to the left.
Success!
I tried to install the prior version (0720) which was then rejected for being too old. I wiped the storage and then tried 0803 again and it installed. I turned it on, the circle moved for a while and then the Lineage logo came up. I just finished setup, and it looks beautiful.
So far so good!
lexcimer said:
Success!
I tried to install the prior version (0720) which was then rejected for being too old. I wiped the storage and then tried 0803 again and it installed. I turned it on, the circle moved for a while and then the Lineage logo came up. I just finished setup, and it looks beautiful.
So far so good!
Click to expand...
Click to collapse
Everytime you flash a new rom you need to wipe data after
Anytime that happens you just go back into recovery and wipe data a few times and it should work after that.
It would've been due to encryption. Each time you flash a new rom you need to wipe userdata which removes your lock and also removes encryption. If you try to install a rom without doing this first, the rom cannot access that partition, because it doesn't yet know the unlock code/pattern, which is why it just gets stuck trying to do so.
Thank you to the 3 posters above, and I appreciate DJ Sub's explanation, makes sense in hindsight and I'll keep it in mind for the future.
PS - I'm glad to be back to the Android modding community, it's refreshing to be able to steer what OS my phone is running
I had the same problem (also a couple of different boot loop problems) when flashing LineageOS.
I did many things, so can't say for sure which one helped me to fix that, but the things I did were:
Restore from boot loop via MSM tool flashing EU image.
Updating that OxygeneOS to the latest using internal updater.
Repeating the LOS installation process several times in different conditions to isolate the source of the problem. I was changing LineageOS package, OpenGapps package, etc.
One of the problems I've found was that latest OpenGapps package (July 28th if I'm correct) was causing the boot loop on first start (very similar to what you're describing):
Phone tries to boot showing the LOS animation.
It goes for several minutes.
Then the phone vibrates, reboots and it continues from the start.
If I'm not mistaken, it was fixed by using the version from July 24th. The latest package also were removed from the OpenGapps page later AFAIR.
Second problem was after the successful boot. The phone was rebooting from the first setup wizard, booting to recovery (or some other partition) and proposing to make a factory reset.
Not sure which of my steps solved this, but I was updating back to the last LOS package watching closely that I'm flashing the same slot on each step and also making sure that slots are properly copied from one to another with the corresponding script.
Even in the most stable setup I was probably having some setup wizard loop problems, so I was skipping account setup steps and doing that manually later.
I'd say that installing LOS on OnePlus 9 Pro was most difficult and problematic installation in my experience and I did that a lot previously: HTC Wildfire S, THL 5000, Zuk Z1, Xiaomi Mi 5s, Xiaomi Mi 9T (Redmi K20) and several other devices.

Categories

Resources