Issues after a failed Android 12 update; now cannot update, no sound. - Google Pixel 4a Questions & Answers

What happened
Attempted to update from Android 11 > 12 using Magisk, following the steps here. This resulted in a bootloop.
I attempted to re-flash my old patched magisk boot image that I still had, and while it does boot, I have the following issues:
The issues
-I have no sound (which is at a system level and not a hardware level, I get errors depending which app I try to use, and videos will not play unless I mute them)
-I am not rooted
-I cannot update using the Android system updater; I get error "Something went wrong. To finish updating, restart your device". Restarting does not do anything (Note: It says "Update to Android 11" on the prompt, even though it says I'm currently using Android 11 RQ1A.210205.004)
-Upon boot it says "System UI is not responding", but I haven't noticed any issues related to this other than the popup.
What I've tried
-I tried patching a Magisk 12 boot image and flashing that with fastboot. When I do this, it boots to the fastboot menu with "Error Boot Prepare". I used Sunfish SQ1A, non-Verizon/non-Vodaphone versions, which I'm pretty sure is correct for my non-5g ATT Pixel4a. I also attempted the November release of 12, same results.
-Doing some research, it sounds like the "no sound, can't update" issue is fairly common when an update fails. A common fix I saw was to wipe the cache partition. When I booted to recovery mode, it says "No commands", so I cannot wipe from there. When I attempted "fastboot erase cache" I got error "FAILED (remove: 'Not allowed to erase (cache)'). Every search I did for this error says to enable OEM Unlocking in dev options, which was already enabled.
Not sure what else to try from here. I would be happy to either update to 12, or to keep 11 and just get my audio/root back.
Thanks

Continuing my research, I'm getting mixed results in regards to cached partition, and if it even exists for the 4a (meaning my attempts are pointless)
This article gives instructions on how to clear it (which don't work for me, but a lot of things aren't working on the phone at the moment haha)
Whereas THIS article states that systems with an A/B slot (like the 4a) do not have a cache partition.

To "get back to normal" I would probably dirty flash the version of Android 11 you had in before...
When I did the Android 12 update, I found lots of warnings that "dirty flashing" breaks from Android 11 to Android 12, so I didn't do my usual process. Instead, I sideloaded the full OTA package in order to do the upgrade. That might even work from your current state...
After the upgrade I used Magisk 23 (release, not canary) to patch the boot.img (which I extracted from the factory image), used fastboot boot patched.img and then used Magisk to install (direct). You can flash from fastboot but I don't do that.
My normal "dirty flash" upgrade looks like this:
1 download the factory image
2 extract it and the embedded zip until you have boot.img
3 send that to the phone and use Magisk manager to patch it. Send it back to the pc
4 replace the -w in the flash_all script with --skip-reboot. Add these 3 extra lines to the end.
fastboot reboot-bootloader
sleep 5
fastboot boot patched.img
5 run the script
6 use Magisk manager to install (direct)

I attempted to sideload both the recent 11 OTA package, and the 12 OTA package. After each one, the results were the same, I got a generic error of "status 1" on the phone (fastboot on my computer completed fine without issues).
I then attempted your dirty flash method with a couple versions of android 11. Again, the script completed successfully each time, but I hit a bootloop when trying to start (G logo with the loading bar for 20+ minutes).
After this, I was completely unable to even flash my old magisk image that was working previously. That would result in the same bootloop.
I attempted the recovery menu option to perform a factory reset (i backed up everything previously). That said it completed, and then the same bootloop happened.
I went to the pixelrecovery site on chrome, and it just gets stuck on "checking software" until the site eventually times out.
Not sure where to go from there, I've pulled out my old phone to use in the meantime.

I finally managed to get it working, I used the android flash website via chrome. It failed the first time, but worked after that, and managed to get an Android 12 image booted. It made me re-lock my bootloader, and it also did a complete wipe (so me trying the failed factory reset earlier didn't mess me up anyway, apparently had to do it regardless).
From there I was able to go through the normal rooting steps, unlock bootloader, patch with magisk, fastboot flash boot magist_patched.img, everything is working fine now.
I feel like I must have done something wrong in the process to get it this broken, and unfortunately this isn't too much of a tutorial for anyone with the same problems (since I ended up essentially just wiping it and starting from scratch), but it is what it is.
Thank you for the suggestions!

Related

LoadImageAndAuth error, can't get into system or TWRP

I installed the Active Edge Magisk Module (from this thread) and after it rebooted it got stuck on the "Android is Updating" screen. I forced a reboot and when I got back into the system I was greeted with an impassable "System UI has stopped" (or something) dialog.
So I decided to just scrap it all and restored from a nandroid I'd made not five minutes prior. Restore successful. Rebooted, aaannnd.
ERROR: LoadImageAndAuth Failed: Load Error
I'm stuck in bootloader, unable to get into either System or TWRP. Attempting either just makes the screen go black for a sec before it spits me right back. The upside is that I can at least see it in adb.
I've found one or two other instances of the error message, but they were trying to flash the update whereas I was just flashing a Magisk module. I don't know if they're related or not.
More importantly, though — how can I fix this? Is Deuce's script my only option or is there a simpler, more painless fix?
I got this error yesterday when I tried to update to the latest January patch. I ran deuce's script to no avail but ultimately I fixed it by fastbooting TWRP and switching slots (in my case from b to a.) If I tried to boot to TWRP from booting to recovery, it always hung on the splash screen, I had to fastboot TWRP.
Sent from my Pixel 2 using Tapatalk
HELP
Hi, I got same problem here, and I have no idea what I can do now. Can you give more detail(like step by step) to show me what you did?
Spikelangelo said:
I got this error yesterday when I tried to update to the latest January patch. I ran deuce's script to no avail but ultimately I fixed it by fastbooting TWRP and switching slots (in my case from b to a.) If I tried to boot to TWRP from booting to recovery, it always hung on the splash screen, I had to fastboot TWRP.
Sent from my Pixel 2 using Tapatalk
Click to expand...
Click to collapse
kongpingzi822 said:
Hi, I got same problem here, and I have no idea what I can do now. Can you give more detail(like step by step) to show me what you did?
Click to expand...
Click to collapse
It was a while ago but basically:
Boot into bootloader
Note which slot you're currently on (b or a)
Use fastboot to switch slots
Reboot bootloader to confirm (should then show opposite slot)
That did it for me
Example: if you are on slot b, enter:
Fastboot --set-active=a
Fastboot reboot-bootloader
It should now show a as active
I forget from there if I just had to reboot and all was good or if I had to reflash the factory image.
I think what ultimately caused it for me was that I was immediately flashing twrp/kernel/magisk after updating without first fully booting android so it could complete the upgrade. I'm not 100% sure though, like I said, it was a while ago.
Sent from my Pixel 2 using Tapatalk
Thanks a lot, I totally bricked my phone and nothing worked , then paid someone to fix all problems. OMG, nightmare

Oneplus 6 and magisk (stuck in fastboot )

hi guys,
my op6 is running stock oos with magisk as root. My phone worked fine for several months. Today I tried switching magisk from the stable version to canary by first upgrading the manager app and then hitting the direct install option. This failed several times and I got an error saying:
! Unable to unpack boot image
I thought this could be fixed by a reboot, but well... it wasn't. Now the phone only boots into the bootloader. I booted into twrp and tried to uninstall magisk via the uninstall.zip. This fails with error
-Unpacking boot image
! Unsupported/Unknown image format
- Unmounting partitions
cd /tmp/repackorig/ && /sbin/magiskboot unpack -h '/tmp/repackorig/boot.img' process ended with ERROR: 1
Error unpacking image
I don't really know what this means. I'm guessing my boot.img is corrupted?
Is there any way I can solve this problem without a factory reset? Can I just flash the stock boot.img via fastboot?
Do you have any idea what went wrong here, so that I can avoid the error next time?
Yesterday I broke op5 during the magisk update. The repair was simple, flash stock boot.img as boot partition.
I flashed it from TWRP.
Try dirty flashing your ROM without flashing magisk.
I'm also facing the same issues. Tried updating from the Magisk App. Didn't receive any error messages. After reboot I'm stuck in fastboot mode and I cannot access recovery. I do not have a backup of the data on this phone.
Is there any way I can still (temporarily) access the data? I'm panicking a little bit. My OOS is stock and rooted and hasn't been updated in about a year. I'm not sure if I can still figure out the specific OOS version that is installed.
EDIT:
Have been trying to flash the stock boot.img with fastboot. I've tried both 10.0.1 and 10.3.0 so far. Both resulted in the "BOOTLOADER UNLOCKED" warning and got stuck there. 10.3.1 is my last option, because I don't think I've updated this device since. Would it make a difference if I tried to do it from twrp?
EDIT2:
I do however have access to the recovery mode now. If I'm not mistaken this means I might be able to extract the data.
EDIT3:
The recovery mode is not asking me for my unlock pattern (which I think it should be doing) and is not showing up under 'adb devices'. I've tried flashing the boot.img of all OOS versions I can think of with fastboot, nothing will let me boot back in or let me access adb through the recovery. Am I ****ed?
MoresM said:
I'm also facing the same issues. Tried updating from the Magisk App. Didn't receive any error messages. After reboot I'm stuck in fastboot mode and I cannot access recovery. I do not have a backup of the data on this phone.
Is there any way I can still (temporarily) access the data? I'm panicking a little bit. My OOS is stock and rooted and hasn't been updated in about a year. I'm not sure if I can still figure out the specific OOS version that is installed.
EDIT:
Have been trying to flash the stock boot.img with fastboot. I've tried both 10.0.1 and 10.3.0 so far. Both resulted in the "BOOTLOADER UNLOCKED" warning and got stuck there. 10.3.1 is my last option, because I don't think I've updated this device since. Would it make a difference if I tried to do it from twrp?
EDIT2:
I do however have access to the recovery mode now. If I'm not mistaken this means I might be able to extract the data.
EDIT3:
The recovery mode is not asking me for my unlock pattern (which I think it should be doing) and is not showing up under 'adb devices'. I've tried flashing the boot.img of all OOS versions I can think of with fastboot, nothing will let me boot back in or let me access adb through the recovery. Am I ****ed?
Click to expand...
Click to collapse
Maybe it's worth trying change the slot and see if it will start? Of course from the fastboot level.
MoresM said:
I'm also facing the same issues. Tried updating from the Magisk App. Didn't receive any error messages. After reboot I'm stuck in fastboot mode and I cannot access recovery. I do not have a backup of the data on this phone.
Click to expand...
Click to collapse
I managed to fix it as well by flashing the stock boot.img for my software version to both slot_a and slot_b using fastboot. I left the active slot setting alone otherwise.
Afterwards I booted into twrp through fastboot and installed blu spark twrp and magisk 21.4 from there as a user suggested on the Magisk github: https://github.com/topjohnwu/Magisk/issues/3924
Note that github link also has a solution to flawlessly upgrade to latest Magisk without data loss but I haven't had the time to look at it.

Just bricked

Okay so yesterday I decided to finally try to install TWRP to flash a custom rom on the system, but never thought it would give so much headache. My drivers were bad, the system locked and android 11 updating making the phone all sorts of bugs, I was anxious to get rid of it, and I did somehow. I was unable to flash TWRP into the recovery as the system partition type is different than usual for it seems, but the recovery partition was all weird, "no command" was stuck in the screen even after a hard reset through there. So I got Magisk and got Root and used Smart Flash to install TWRP through the running system and it landed successful. But when going to the recovery the TWRP screen was flickering, but I could send ADB commands yet and boot normally, I just couldn't access the recovery functions yet. So I flashed a different version of the TWRP with the IMG and the zip folder and nothing worked then I realized that maybe I should erase the partition before flashing it and then the murder. I found a tutorial on erasing stuff, but the whole process cost me more than twelve hours as I messed with so many things and was kinda learning the hows and dos.
But then I saw the command "fastboot erase system -w" that was a shortcut for all cleanup processes and I was wanting to wipe it again even to recover my google backup and be able to use my messenger apps. But it did erase, of course, the whole system and everything, simply destroying everything, but yet stuck in the fastboot screen. What I did? Well, I downloaded the TGRZ of an older version of xiaomi mi a3 firmware, the android 10, as I was tired and thought that maybe if I downgraded it I would get my phone to get rid of android 11 bugs and sleep for good till tomorrow, that is today. I ran the script to wipe anything and install the system over it and it did successfully, then the message "successfully installed, press any key to finish" but then the prompt closed and the phone tried to reboot but fell into a hard brick. The computer recognizes the device as the name "QUSB_BULK_CID:0411_SN:EFCF04FD" and the hardware ID "USB\VID_05C6&PID_9008" matches the original.
So is there anything I could do yet? Phone warranty ended in january and that's why I tried that process, it is any worth?
BillyWroth said:
Okay so yesterday I decided to finally try to install TWRP to flash a custom rom on the system, but never thought it would give so much headache. My drivers were bad, the system locked and android 11 updating making the phone all sorts of bugs, I was anxious to get rid of it, and I did somehow. I was unable to flash TWRP into the recovery as the system partition type is different than usual for it seems, but the recovery partition was all weird, "no command" was stuck in the screen even after a hard reset through there. So I got Magisk and got Root and used Smart Flash to install TWRP through the running system and it landed successful. But when going to the recovery the TWRP screen was flickering, but I could send ADB commands yet and boot normally, I just couldn't access the recovery functions yet. So I flashed a different version of the TWRP with the IMG and the zip folder and nothing worked then I realized that maybe I should erase the partition before flashing it and then the murder. I found a tutorial on erasing stuff, but the whole process cost me more than twelve hours as I messed with so many things and was kinda learning the hows and dos.
But then I saw the command "fastboot erase system -w" that was a shortcut for all cleanup processes and I was wanting to wipe it again even to recover my google backup and be able to use my messenger apps. But it did erase, of course, the whole system and everything, simply destroying everything, but yet stuck in the fastboot screen. What I did? Well, I downloaded the TGRZ of an older version of xiaomi mi a3 firmware, the android 10, as I was tired and thought that maybe if I downgraded it I would get my phone to get rid of android 11 bugs and sleep for good till tomorrow, that is today. I ran the script to wipe anything and install the system over it and it did successfully, then the message "successfully installed, press any key to finish" but then the prompt closed and the phone tried to reboot but fell into a hard brick. The computer recognizes the device as the name "QUSB_BULK_CID:0411_SN:EFCF04FD" and the hardware ID "USB\VID_05C6&PID_9008" matches the original.
So is there anything I could do yet? Phone warranty ended in january and that's why I tried that process, it is any worth?
Click to expand...
Click to collapse
You should never try to install software for another board (mi mix 3 global is codenamed "perseus")...
If you are unable to reach fastboot and recovery, you may refer to this, since it sounds like your phone is in EDL mode:
Reboot to EDL mode from FASTBOOT!
Reboot to EDL mode from FASTBOOT! No more Test Point Method needed Technical Details: Redmi Note 3 support rebooting to EDL in Android Bootloader aboot module (the "reboot-edl" command) but fastboot utility doesn't recognize "reboot-edl" in the...
forum.xda-developers.com
I never encountered this issue so only do this if you're absolutely sure you have no other means of flashing anything on it (i.e. through fastboot), and use the appropriate firmware at all times for your specific model
CriGiu said:
You should never try to install software for another board (mi mix 3 global is codenamed "perseus")...
If you are unable to reach fastboot and recovery, you may refer to this, since it sounds like your phone is in EDL mode:
Reboot to EDL mode from FASTBOOT!
Reboot to EDL mode from FASTBOOT! No more Test Point Method needed Technical Details: Redmi Note 3 support rebooting to EDL in Android Bootloader aboot module (the "reboot-edl" command) but fastboot utility doesn't recognize "reboot-edl" in the...
forum.xda-developers.com
I never encountered this issue so only do this if you're absolutely sure you have no other means of flashing anything on it (i.e. through fastboot), and use the appropriate firmware at all times for your specific model
Click to expand...
Click to collapse
well it seems I recovered it back, I bricked it and somehow it just got into EDL mode without cable or opening it up. So I found a tutorial back on reddit showing how use GFIL to install the stock rom back. I used android 10 stock rom before bricking it, but as I just flashed everything on empty partitions it didn't work, it seems that the Qualcomm setup needs some kind of previous work to set everything up. Anyways I managed to boot it, but now I'm aware that I should use Lineage recovery instead of TWRP as Mi A3 support is lacking, that's why after installing it I got it flickering (no compatible version with the latest Android 11 firmware).
BillyWroth said:
well it seems I recovered it back, I bricked it and somehow it just got into EDL mode without cable or opening it up. So I found a tutorial back on reddit showing how use GFIL to install the stock rom back. I used android 10 stock rom before bricking it, but as I just flashed everything on empty partitions it didn't work, it seems that the Qualcomm setup needs some kind of previous work to set everything up. Anyways I managed to boot it, but now I'm aware that I should use Lineage recovery instead of TWRP as Mi A3 support is lacking, that's why after installing it I got it flickering (no compatible version with the latest Android 11 firmware).
Click to expand...
Click to collapse
hello, im having maybe a similiar case with my phone (in this case its a MI A3) i installed "succefully" evolution x 6.3 on my phone and everthing was ok with a few bugs, the only problem was that mi cannot connect to internet, so i decided to restart the phone and now my phone just don't turn on, the power button don't respond and i cannot start up my phone and its just a black screen, if u remeber ¿can u pass the tutorial that u saw on reddit? maybe it can help me

Question Pixel 7 Pro Fastboot "device requires partition vendor_kernel_boot"???

HI all,
While attempting to update my Pixel 7 Pro (while retaining root, via the modified factory zip method where you root init_boot.img, then replace it in the factory zip, then run google's provided flash-all script) I've been encountering this issue when flash-all reached its last step of flashing the actual zip with the images via fastboot:
"fastboot: error: device requires partition vendor_kernel_boot which is not known to this version of fastboot"
This happens on both the new firmware as well as with the firmware I flashed through this method previously. New firmware after this causes a boot loop, while performing a flash of the old firmware results in the same error but at least gets me back into the system in the state it was in before attempting to upgrade.
Any idea why this is happening? I've ensured fastboot & adb are both up to date and attempted from both Windows and a Fedora laptop both to the same error. It's worth noting I installed the old (current) firmware previously through the same method successfully (before this) so not sure why it's decided to not work now....
Update: tried again via PixelFlasher and did not encounter the error so I guess if anyone else hits this issue and sees this post.... just use PixelFlasher(?????) No idea the why or how but seems to be good now.
Sounds like you were trying to flash in Fastboot mode rather than FastbootD.
Tomadock said:
Sounds like you were trying to flash in Fastboot mode rather than FastbootD.
Click to expand...
Click to collapse
Negative. I also thought that might be the issue and attempted it (the actual command it was running, not the entire script again since that would reboot to bootloader again) in FastbootD as well to the same result.
Sceleratis said:
HI all,
While attempting to update my Pixel 7 Pro (while retaining root, via the modified factory zip method where you root init_boot.img, then replace it in the factory zip, then run google's provided flash-all script) I've been encountering this issue when flash-all reached its last step of flashing the actual zip with the images via fastboot:
"fastboot: error: device requires partition vendor_kernel_boot which is not known to this version of fastboot"
This happens on both the new firmware as well as with the firmware I flashed through this method previously. New firmware after this causes a boot loop, while performing a flash of the old firmware results in the same error but at least gets me back into the system in the state it was in before attempting to upgrade.
Any idea why this is happening? I've ensured fastboot & adb are both up to date and attempted from both Windows and a Fedora laptop both to the same error. It's worth noting I installed the old (current) firmware previously through the same method successfully (before this) so not sure why it's decided to not work now....
Click to expand...
Click to collapse
i tried the latest version of "SDK Platform Tools"; it worked for me
Sceleratis said:
HI all,
While attempting to update my Pixel 7 Pro (while retaining root, via the modified factory zip method where you root init_boot.img, then replace it in the factory zip, then run google's provided flash-all script) I've been encountering this issue when flash-all reached its last step of flashing the actual zip with the images via fastboot:
"fastboot: error: device requires partition vendor_kernel_boot which is not known to this version of fastboot"
This happens on both the new firmware as well as with the firmware I flashed through this method previously. New firmware after this causes a boot loop, while performing a flash of the old firmware results in the same error but at least gets me back into the system in the state it was in before attempting to upgrade.
Any idea why this is happening? I've ensured fastboot & adb are both up to date and attempted from both Windows and a Fedora laptop both to the same error. It's worth noting I installed the old (current) firmware previously through the same method successfully (before this) so not sure why it's decided to not work now....
Click to expand...
Click to collapse
Literally error says everything....
You need latest platform tools that supports vendor _kernel_boot partition
Google added vendor kernel boot partition on P7 series that's been supported only on latest platform tools

OOS 13 F13 soft bootlop

Hi everyone!
I’m having a soft bootloop of my OnePlus 8t 12/256, KB2005, OOS 13, F13, International or EU firmware.
No root, locked bootloader, native unmodified recovery.
The phone reboots in 1-2 seconds after OOS13 is loaded, disregard the activity I try to do.
The issue started after I have rebooted the phone. Before reboot, it was running normally, no significant glitches.
Some time before this reboot/issue I have potentially:
had an issue with the OTA update installation,
have installed oneplus dialer and sms (to replace the google’s), installed modified launcher to get rid of the google shelf on the left.
I can enter the fastboot and recovery, and I have used ADB in the past on the device, but cannot get it running now since it restarts before connected.
Tried to no avail:
fastboot set_active other
fastboot erase cache
Both are failing on the locked device:
Setting current slot to 'a'
FAILED (remote: 'Slot Change is not allowed in Lock State')
fastboot: error: Command failed
Erasing 'cache'
FAILED (remote: 'Erase is not allowed on locked devices')
fastboot: error: Command failed
Click to expand...
Click to collapse
The same goes for fastboot boot twrp.img.
Sadly I don’t have a backup of my personal files on the device, that’s why I try to either fix it, or at least recover the data from it before I go to factory reset/unbricking options.
I was trying to fetch the userdata partition (225gb) via MsmDownloadTool – it reported that the file successfully downloaded within 15s, but no file was even created. It worked with boot.img though (~96mb).
I have also tried to return the default system apps to google phone and sms, create a guest user (unable to fully switch to it before reboot), stay in airplane mode, on/off wifi, etc. Still it reboots every few seconds which makes it almost impossible to navigate in the menu (2-3 clicks are possible max).
I’m unable to check if I have “install updates automatically” in the developer options (I bet it is disabled), also unable to navigate to clearing cache of the system launcher.
Any help in trying to fix/recover the data from the device is appreciated.
atomaniac said:
Hi everyone!
I’m having a soft bootloop of my OnePlus 8t 12/256, KB2005, OOS 13, F13, International or EU firmware.
No root, locked bootloader, native unmodified recovery.
The phone reboots in 1-2 seconds after OOS13 is loaded, disregard the activity I try to do.
The issue started after I have rebooted the phone. Before reboot, it was running normally, no significant glitches.
Some time before this reboot/issue I have potentially:
had an issue with the OTA update installation,
have installed oneplus dialer and sms (to replace the google’s), installed modified launcher to get rid of the google shelf on the left.
I can enter the fastboot and recovery, and I have used ADB in the past on the device, but cannot get it running now since it restarts before connected.
Tried to no avail:
fastboot set_active other
fastboot erase cache
Both are failing on the locked device:
The same goes for fastboot boot twrp.img.
Sadly I don’t have a backup of my personal files on the device, that’s why I try to either fix it, or at least recover the data from it before I go to factory reset/unbricking options.
I was trying to fetch the userdata partition (225gb) via MsmDownloadTool – it reported that the file successfully downloaded within 15s, but no file was even created. It worked with boot.img though (~96mb).
I have also tried to return the default system apps to google phone and sms, create a guest user (unable to fully switch to it before reboot), stay in airplane mode, on/off wifi, etc. Still it reboots every few seconds which makes it almost impossible to navigate in the menu (2-3 clicks are possible max).
I’m unable to check if I have “install updates automatically” in the developer options (I bet it is disabled), also unable to navigate to clearing cache of the system launcher.
Any help in trying to fix/recover the data from the device is appreciated.
Click to expand...
Click to collapse
Try to boot OOS in safe mod and see if it working good or not.
If it's working good, delete modifications you've made to the system (oneplus apps or smth else if you did it).
It it's still rebooting in safe mod, you can try to change slots, to boot partition which was active before OTA update, it can be working good.
Rootk1t said:
Try to boot OOS in safe mod and see if it working good or not.
If it's working good, delete modifications you've made to the system (oneplus apps or smth else if you did it).
It it's still rebooting in safe mod, you can try to change slots, to boot partition which was active before OTA update, it can be working good.
Click to expand...
Click to collapse
Thanks for your suggestions. Unfortunately, the issue is exactly the same in the Safe Mode. 1-2 seconds that the system is running are hardly enough to uninstall anything, but I've tried my best about it.
As for changing the slots - it does not work as the bootloader is locked.

Categories

Resources