Magisk General Support / Discussion

Search This thread

Captain_cookie_200

Senior Member
Sep 12, 2021
1,145
1
325
Samsung Galaxy Tab 3 10.1
Sony Xperia 5 II
But not yet!

... And , of course, you're only speaking of the (small) subset of apps who's Devs require proper attestation to an unmodified execution environment, and who's designs you want to take advantage of while circumventing the same... and their wishes...

The vast majority of apps are not threatened at all!

... And not yet because Google has clearly been in no great rush to fix that attestation...

And of course many of us thought this would have been achieved years ago!... Ie. Game Over for the mouse... But the Cat hasn't killed the mouse yet; it's still playing with it... so the game continues!

Fun eh! (?)...

... Bye, MagiskHide. Long live MagiskHide (Wu) - PW

Perspective is a funny thing...
does this mean custom roms etc. are gonna be gone too? (if arent rooted) because some roms dont pass safety net, play integrity by default.
 

dr4go

Senior Member
Dec 17, 2010
473
397
Vienna
does this mean custom roms etc. are gonna be gone too? (if arent rooted) because some roms dont pass safety net, play integrity by default.
Dude you can't defeat tee / hardware attestation. As long as nobody breaks that it's a dead end.

And although it was fun sometimes, I'm glad that my road will soon end as well regarding root - which is insane, it really is... unbelievable what **** has happened the last years regarding that... but I seriously can't believe how much time I've literally wasted the last years just to keep the phone running with every app I want and need on the phone. It's not worth it anymore...
 

Captain_cookie_200

Senior Member
Sep 12, 2021
1,145
1
325
Samsung Galaxy Tab 3 10.1
Sony Xperia 5 II
Dude you can't defeat tee / hardware attestation. As long as nobody breaks that it's a dead end.

And although it was fun sometimes, I'm glad that my road will soon end as well regarding root - which is insane, it really is... unbelievable what **** has happened the last years regarding that... but I seriously can't believe how much time I've literally wasted the last years just to keep the phone running with every app I want and need on the phone. It's not worth it anymore...
rip... i finally had a phone running custom gsi... i pass safety net everything... guess its going away gotta go back to one EW (it lags alot for my phone with cut features)
 

73sydney

Account currently disabled
How long will you keep cheating yourself with this? Dear pndwal

Dude youre so predictably negative i was literally counting down until you posted here....it astounds me that you spend your time building a custom magisk build

If you dont believe in it, why do you bother, and why do you always have to be negative here?
 
  • Like
Reactions: pndwal

73sydney

Account currently disabled
I need help with accessing the magisk recovery mode.
I have no boot ramdisk, as indicated by the app, so I did the extra step needed. I keep doing the volume up, just boots normally without accessing magisk recovery mode. Logs are attached, and any help is appreciated. Thank you!

Please specify your device.....
 
  • Like
Reactions: pndwal

73sydney

Account currently disabled
My bad, its samsung a50. i can provide more details if the logs aren't enough

to boot into recovery on recent Samsungs, you need to make sure you have a cable plugged in and use the side/bixby key and volume up, this is how it works on my S20+ 5G

cable is important - like to get into download mode for ODIN, you have to power the phone off, hold down the vol up and down buttons, and then plug the cable in....

for more info on magisk install for your device, check your devices forums:


 
Last edited:
  • Like
Reactions: ipdev and pndwal

pndwal

Senior Member
I need help with accessing the magisk recovery mode.
I have no boot ramdisk, as indicated by the app, so I did the extra step needed. I keep doing the volume up, just boots normally without accessing magisk recovery mode. Logs are attached, and any help is appreciated. Thank you!
Not sure you need recovery mode w/ Galaxy A50... Some seem to have had success rooting w/ zip installer so I'm assuming magisk in boot ramdisk can work for you... (Nb Magisk installs a basic ramdisk when patching if absent, but Ramdisk = No remains.)

You seem to have A11... Do you mean you can't get to recovery from powered down state at all?...

I believe you now need USB connection while using any special key combo booting, eg to recovery or safe mode, on Sammy with late Android (OneUI 3.0+?) so that's probably your issue... Apparently even connecting a usb headset while doing key combo works...

Even if you succeed running Magisk in recovery, give Magisk in boot a go... PW
 
Last edited:
  • Like
Reactions: ipdev and 73sydney

pndwal

Senior Member
@badabing2003

Any chance we can stop this becoming a Pixel Flasher development thread (again)?

Thread title:

Magisk General Support / Discussion​


If im pointing this out, you know you've done something wrong....as im about the most offtopic person seen on xda :)
Might be being a bit harsh...

He's trying to diagnose a magisk routine issue, even if called from his/other 3rd party utility... Any issue here is plainly in Magisk code... PW
 

ququq

New member
Oct 7, 2022
4
4
Not sure you need recovery mode w/ Galaxy A50... Some seem to have had success rooting w/ zip installer so I'm assuming magisk in boot ramdisk can work for you... (Nb Magisk installs a basic ramdisk when patching if absent, but Ramdisk = No remains.)

You seem to have A11... Do you mean you can't get to recovery from powered down state at all?...

I believe you now need USB connection while using any special key combo booting, eg to recovery or safe mode, on Sammy with late Android so that's probably your issue... Apparently even connecting a usb headset while doing key combo works...

Even if you succeed running Magisk in recovery, give Magisk in boot a go... PW
I'm certain its A50, sadly wished it was on an easier model. And yes, I can't access the Magisk Recovery Mode indicated in point nine of the installation for samsung devices here in this github page by topjohnwu.

And thank you, I'll try what you've suggested with the usb connection thing.
Skipping to the installer in the apk app unfortunately doesnt work however, tried it. Just boots up again to normal android, though this is if I understood you correctly.
 
  • Like
Reactions: ipdev and pndwal

ququq

New member
Oct 7, 2022
4
4
to boot into recovery on recent Samsungs, you need to make sure you have a cable plugged in and use the side/bixby key and volume up, this is how it works on my S20+ 5G

cable is important - like to get into download mode for ODIN, you have to power the phone off, hold down the vol up and down buttons, and then plug the cable in....

for more info on magisk install for your device, check your devices forums:


Thank you! I'll look into these posts and try it once again with your suggestions in mind.
 
  • Like
Reactions: ipdev and pndwal

badabing2003

Recognized Contributor
Sep 17, 2012
4,930
9,136
@badabing2003

Any chance we can stop this becoming a Pixel Flasher development thread (again)?

Thread title:

Magisk General Support / Discussion​


If im pointing this out, you know you've done something wrong....as im about the most offtopic person seen on xda :)
I'm sorry, I thought I was posting in Magisk General Support / Discussions thread.
I'll go find that thread and post in in there.
My apologies.

those devs never set a foot here and tried to use the thread to develop their own software.....
So it's not about the relevance of the post to the thread, but who and why?

And if it matters to you at all, I saw a post in another thread where a user was having an issue with Magisk and it poked my interest, (he wasn't even using PixelFlasher), this thread being the most pertinent thread with resident experts to ask about how that part of Magisk functioned, I posted it here. If that knowledge eventually can produce a tool that helps users avoid similar problems or rectify the situation, where's the harm in there?
 
  • Like
Reactions: ipdev and pndwal

pndwal

Senior Member
does this mean custom roms etc. are gonna be gone too? (if arent rooted) because some roms dont pass safety net, play integrity by default.
Na... Just means that when banks etc consider that the critical mass of devices with keymaster 3+ / Android 8+ is sufficient to justify enforcing strongIntegrity in combination with a consideration of the number of modern devices (OnePlus and others) that still have broken keymaster implementations and can't pass stongIntegrity verdict, they'll adopt that option and running such bank apps etc will be out of the question for any device with an unlocked bootloader as it will be for older (A7 and earlier) devices and many (notably OnePlus but also some RealMe, Xiaomi, other) devices with busted OEM keymaster...

FWIW, I believe this decision is still a way ahead as banks will be hard pressed to make the move with this known casualty list... Further, I don't imagine Google will preempt this move either, but I think they'll be obliged to move to adopt strongIntegrity for G Pay, Playstore etc once banks do... I now believe they're waiting just like we are... This is only a hunch but...

So custom ROMs themselves are in no danger...

Eventually it seems you may also need to carry an unmodified phone in your other pocket if you wish to have a customised device as a daily driver...

😝 PW
 
  • Like
  • Haha
Reactions: dr4go and 73sydney

73sydney

Account currently disabled
I'm sorry, I thought I was posting in Magisk General Support / Discussions thread.
I'll go find that thread and post in in there.
My apologies.


So it's not about the relevance of the post to the thread, but who and why?

And if it matters to you at all, I saw a post in another thread where a user was having an issue with Magisk and it poked my interest, (he wasn't even using PixelFlasher), this thread being the most pertinent thread with resident experts to ask about how that part of Magisk functioned, I posted it here. If that knowledge eventually can produce a tool that helps users avoid similar problems or rectify the situation, where's the harm in there?

Maybe if it didnt tend to be post after post (along with a large graphic signature promoting software) that tends to dominate the thread when you post here, and detract from people asking actual general questions

Then theres the fact that no one here is an active developer on magisk and yet youre asking development questions, in a general thread (not sure how many times i have to point this out?)

Generally threads at least in my experience have always been separated on XDA, go and look at any devices section, theres one for development, and one for Q&A..

Ill also refer the gentleman to (which contains developer guides):

 
  • Wow
Reactions: pndwal

Captain_cookie_200

Senior Member
Sep 12, 2021
1,145
1
325
Samsung Galaxy Tab 3 10.1
Sony Xperia 5 II
Na... Just means that when banks etc consider that the critical mass of devices with keymaster 3+ / Android 8+ is sufficient to justify enforcing strongIntegrity in combination with a consideration of the number of modern devices (OnePlus and others) that still have broken keymaster implementations and can't pass stongIntegrity verdict, they'll adopt that option and running such bank apps etc will be out of the question for any device with an unlocked bootloader as it will be for older (A7 and earlier) devices and many (notably OnePlus but also some RealMe, Xiaomi, other) devices with busted OEM keymaster...

FWIW, I believe this decision is still a way ahead as banks will be hard pressed to make the move with this known casualty list... Further, I don't imagine Google will preempt this move either, but I think they'll be obliged to move to adopt strongIntegrity for G Pay, Playstore etc once banks do... I now believe they're waiting just like we are... This is only a hunch but...

So custom ROMs themselves are in no danger...

Eventually it seems you may also need to carry an unmodified phone in your other pocket if you wish to have a customised device as a daily driver...

😝 PW
i am screwed my knox is tripped and i have no other device nor can i buy one. rip me
 

73sydney

Account currently disabled
i am screwed my knox is tripped and i have no other device nor can i buy one. rip me
knox is tripped the moment you unlock the bootloader and then flash any nonofficial binary....that is probably the most common knowledge thing in the entirety of customizing a Samsung device....

knox tripping is not the end of the world, it merely means youve lost warranty and a couple of Knox backed Samsung features, and at least one of those can be regained with magisk
 

Top Liked Posts

  • There are no posts matching your filters.
  • 5
    I'm now having a problem hiding the TJW Magisk 27002 app ...

    I finally was able to resurrect my old Pixel 5. It's running stock A11 and was running TJW Magisk 26004 with no problem.

    The Magisk manager was showing that the upgrade to 27002 was ready for installation, and so I did the following:

    (1) Unhide Magisk
    (2) Update Magisk (27002 was listed)
    (3) After Magisk manager restarted, I did Direct Update to 27002, including reboot
    (4) Magisk 27002 indeed came up properly after reboot.
    (5) Tried to perform Hide The Magisk App.

    I entered the arbitrary name for hiding, and I clicked "OK". But the hiding never took place.

    I rebooted again, to see if perhaps that's necessary, and I repeated the hiding attempt by adding the same arbitrary name, and I again clicked "OK". But the hiding still didn't take place.

    I searched my device, and there is no app nor shortcut with that arbitrary name. I also tried other, different arbitrary names, but after clicking "OK", the hiding still didn't take place for any name I chose.

    What am I missing?
    Known issue. A fix has been merged. You can use the Debug app, revert back to 27001 or wait until 27003 is released.

    EDIT: Ninja'd 🙃
    4
    Is the Magisk 27001 APK/zip still available anywhere? I'd like to downgrade, but I can only find 27000 on Github and 27002 via update. I don't want to go to Canary in case the mounting changes break anything, or Debug as I hear the extra logging etc. causes performance issues (correct me if I'm wrong).
    Only v27000 is Stable. (and Beta). v27001 and v27002 are Canary or Debug

    Set your Update Channel to Stable and you will see (just like you can see also on GitHub) that latest Stable is v27000, there was never Stable v27001 or v27002

    Generally, Stable is always Nx100

    So, you cannot downgrade to Stable v27001 but Canary v27001 should be just like Stable v27000 (same codebase). That's also the general policy, whenever Nx100 Stable is released, then immediately comes Canary Nx100 +1, on the same code-base

    Therefore, downgrade to Stable v27000 instead
    4
    Direct Install with recovery mode checked worked for me. You were right.

    After I flashed wrong CSC firmware my baseband and EMEIs disappeared. Now I have updated bootloader and I cant to flash original CSC firmware anymore. Any ideas how to restore baseband, EMEIs or it is too late?
    Yep, I told you several times that you need Recovery mode (selected) for your Ramdisk=No device; instructions for this are also clear in official Installation Instruction page too, but apparently you have not been trying to follow official instructions, so it's no real surprise you've messed up firmware too... Please take *extra* care when modding as there are simply so many variables and pitfalls! 😬

    Are you flashing patched AP (Application Processor binary) along with all the other package binaries (X4?) for your S10+ (also in Magisk Installation page, Samsung section)??

    CP is Cellular Processor (Nb. Oft repeated references to CP as 'core processor' may be misleading) binary package (also referred to as Baseband Modem) so that should have fixed mismatched baseband etc... correct CSC (Consumer Software Customization; region, APN and carrier specific software packages/settings) and even BL (Bootloader) are most likely also important...

    Nb. BL doesn't always update bootloader version, but if later firmware has been flashed be aware that these can also cause anti-roll back version for bootloader to be incremented (in the event that an update patches serious vulns) so you original firmware may be blocked and you may need to use later packages only...

    If flashing latest complete firmware package via Odin doesn't fix your IMEI / baseband issues it may be that you've messed with partitions that contain unique device values in the past... You may need to ask in Galaxy, S10 or S10+ XDA forums for that. 🤠 PW
    4
    I'm now having a problem hiding the TJW Magisk 27002 app ...

    I finally was able to resurrect my old Pixel 5. It's running stock A11 and was running TJW Magisk 26004 with no problem.

    The Magisk manager was showing that the upgrade to 27002 was ready for installation, and so I did the following:

    (1) Unhide Magisk
    (2) Update Magisk (27002 was listed)
    (3) After Magisk manager restarted, I did Direct Update to 27002, including reboot
    (4) Magisk 27002 indeed came up properly after reboot.
    (5) Tried to perform Hide The Magisk App.

    I entered the arbitrary name for hiding, and I clicked "OK". But the hiding never took place.

    I rebooted again, to see if perhaps that's necessary, and I repeated the hiding attempt by adding the same arbitrary name, and I again clicked "OK". But the hiding still didn't take place.

    I searched my device, and there is no app nor shortcut with that arbitrary name. I also tried other, different arbitrary names, but after clicking "OK", the hiding still didn't take place for any name I chose.

    What am I missing?
    Known problem with 27002, the debug version doesn't have the problem with hiding, read back to see the discussion about it
    3
    I actually updated the app from the app itself before doing my OTA upgrade so it get the version 27 of magisk, I tried installing that one again I had in my downloaded folder. But I also downloaded again the app from github.

    I do have root, I've modified the boot file with magisk, so I'm not sure what to do now. I'll try installing an older version. But as you see of the screenshot from app manager, I don't know how the app is installed and removed almost immediately. At first I thought it was caused by an android 14 new security change.
    Run magisk -c from adb shell and see what version it reports.
    Then uninstall every copy of magisk app,
    You have more than one (including possibly a hidden one)
    Then reboot and install magisk app matching the version reported by magisk -c command.
  • 1103
    This is the place for general support and discussion regarding "Public Releases", which includes both stable and beta releases.
    All information, including troubleshoot guides and notes, are in the Announcement Thread
    156
    Hello, I haven't given much support on XDA lately. It can be resulted from
    • University started and I have limited free time. In fact, I mostly develop during midnight
    • I live in Taiwan, which has large time zone differences between my European/American contributors/testers, which usually forces me to stay up late at night to discuss/test stuffs.
    • The new version is about to come, I don't want to spend effort on supporting old releases
    The planned update is delayed again and again, to some point I think I'll shed some light about what has been happening lately, also along with some announcements.

    New Forum!
    As you might have already discovered, Magisk got its own subforum on XDA! Many thanks to all the support you gave me, and much more information/features/support is about to come!
    **For developers supporting all the devices that are not using standard Android boot format, feel free to create threads in this section (actually, PLEASE do so) for your favorite devices after v7 is out. As I currently know, Asus devices require signing the boot image before flashing, and is model dependant; Sony devices seems to use ELF kernel that is unpatchable, or some has two ramdisks (inner + outer), both requires different workarounds; LG bootloader locked devices has to manually "BUMP" the boot image after flashing Magisk..... and there may be lots of other crazy boot image formats that haven't come up to my attention yet.
    It is impossible for me to support all these non-standard boot images, and I hope the community can collaborate to make Magisk running across all the devices. Overall, community collaboration is what XDA about :D

    The Pixel Phone
    Some of you might already know this news, that the next Pixel Phone right around the corner seems like it does not have ramdisk in boot image, which pretty much wrecked Magisk in all ways. However, it pretty much doomed root itself too. Kernel modifications is inevitable IMO, so I'll try to migrate my scripts to C programs that could possibly be included into the kernel itself. Note that I'm not familiar with linux kernel, I'm not even sure if my idea and concept is correct or not. But once the device is available, I think developers will find a way to bypass all the difficulties, and I'll do my best to learn things ;)

    Current Progress
    In the past month, I've spent quite some time learning SELinux, so that I can avoid using SuperSU's sepolicy patches. Thanks to the helps and tips from @phhusson and @Chainfire, I finally have a much clearer understanding of how SELinux works. The Magisk core parts (the scripts, boot image patches, new features, more supports) are actually done some time ago. What is causing all the delays is the Magisk Manager.
    To be completely honest, although I can code in Java without much issues, Magisk Manager is actually my first Android application, I had to reach out for assistance, and fortunately awesome developers like @DVDandroid and @digitalhigh contributed a lot, which makes the current Manager awesome.
    After the repo system and module management is mostly done, I was about to do some adjustments and release, but what we really done is decided to add another feature: auto-unroot with per-app settings. I decided to wait for it to be finished, and then do my adjustments. Due to reasons that'll be mentioned later, this feature will likely not be available for the next release (should come in future updates)

    Safety Net Disaster
    Those who are using Magisk for Safety Net bypass purposes must have known that Google recently updated the detection method of my Systemless Xposed. I still have no idea what Safety Net is detecting, so currently I cannot fix it on my side (also because I'm busy working on the next update). However, suhide developed by @Chainfire is able to hide Xposed and worked fine.
    However, only my Systemless Xposed v86.2, which is based on SuperSU's su.d, is supported using that method. v86.2 and v86.5 (latest, Magisk based) have nearly identical binaries, and the only difference is the path where the binaries are stored.
    I'm still not sure what's the real issue for it not being supported, I just hope it is not done intentionally.

    Conclusion
    Due to the fact that my Safety Net bypass is not 100% perfect now, I do not want to spend any more time waiting for auto-unroot to be polished. What I'm doing now is finishing up all the things I'd like to change in Magisk Manager (it has been a while since I last contributed to Manager, my fellow developers are doing all the heavy job), which might take a little more time, after that, packed with tons of information to be announced in Magisk Section, I'll release the long awaited update.

    Hope this lengthy post gives you the idea of the whole situation, and again thanks for all your support!!
    121
    Ah, some Chainfire bashing, I hope it is not too late for me to exercise additional villainy.

    First, let me make clear I have nothing against @topjohnwu, nor against Magisk. Magisk is an interesting project and it certainly displays @topjohnwu ingenuity and persistence. I don't doubt we will see more interesting things from his hands.

    -------------------------

    What has happened here is not all that dark and complicated, from either end. I returned from holidays, and someone pointed me at Magisk. My first thought: interesting!

    Among other things, the thread lists some issues with SuperSU, which in combination with the phrase The developer also requests users to not bug Chainfire with compatibility requests for SuperSU with Magisk from the portal article, raised my left eyebrow by nigh half an inch. The popular systemless xposed mod is apparently now based on it, and apparently it now no longer works with SuperSU, and apparently I'm not supposed to fix that, nor any of the other found issues. I found that a bit weird. So yes, I have told @topjohnwu that I was a bit surprised he was posting about issues with SuperSU without notifying me about them (I can't fix or help fix issues I'm not aware of, after all).

    He's also spreading a modified version of the SuperSU package, which is not all that uncommon, nor necessarily a problem. I have not looked into what he modified, I only ran a few quick tests on one of my devices, and found some commonly used commands run as root to be broken. I have informed him of this as well.

    It appears the tool of choice for Magisk is phh's Superuser, because of some of the mentioned issues with SuperSU. That's fine by itself, but fixing issues in that superuser by incorporating SuperSU's binaries into it is a somewhat questionable practise. After all, SuperSU is a commercial closed-source package that helps pay for my dinner, and superuser is a direct competitor. I have informed him that I was surprised he did this without asking for permission. I have expressed similar surprise on him spreading a modified version of LiveBoot (which helps pay for a snack now and then).
    @topjohnwu has also stated that Magisk's scripts are largely influenced by mine (I have not checked). Scripts based on mine are used all over the place on XDA, some people have crafted amazing things based on them, I have never made an issue of this (otherwise I would have just made them binaries). But yes, I have also stated to him that I don't think it's very nice to base something on one program, and then using that to (almost exclusively) push something directly competing with that program.

    tl;dr Towards @topjohnwu, I have:
    - expressed surprise he has issues getting Magisk to work with SuperSU, and has chosen not to inform me about those
    - expressed surprise he is using SuperSU binaries in a competing superuser without permission
    - expressed surprise he is posting a modified LiveBoot without permission
    - informed him of issues with the modified SuperSU he has posted
    - let him know I thought it wasn't very nice to be applying my scripts to benefit seemingly exclusively that same competing superuser

    To be crystal clear:
    - I have not asked for an apology
    - I have not asked for Magisk to be abandoned, neither the root hiding nor systemless module parts, and certainly not systemless xposed
    - I have not made an issue of any of this anywhere, until this post
    - I have not even specifically asked for anything to be taken down (though obviously in my opinion the other superuser package mixed with SuperSU's binaries, as well as the LiveBoot package, should go)
    - I have not reported this thread to XDA moderators for copyright violations or otherwise

    While my conversation with @topjohnwu may not win any awards for being friendly (though it may win some for brevity), I think all things considered my response has been rather mild. To be perfectly honest, until the apology post, I thought this was over with already. I think the apology post was triggered because I haven't replied to his last PM for a while - I was in the zone, it happens.

    To emphasize again, I have nothing against @topjohnwu, Magisk, or systemless xposed, and it is certainly not my goal to see any of them go. If it can be made to work together with SuperSU, great.

    I get it though: you think of something, you want to see if you can make it work, you finally get it to work, you publish it, it takes off - enthusiasm gets the better of you. Maybe in the rush some mistakes are made. That doesn't mean you have to just drop it and run. None of my stuff would make it past 0.1 if I stopped at the first big mistake :)

    Aside from said being in the zone coding, I usually regret actually responding to these sort of things the day after, which has made me hesitant to reply. Surprise me.
    76
    Thread temporarily closed so everyone sees this.

    The flood of "SafetyNet isn't working for me either!" posts are not helpful, at all. Please refrain from posting further, it will be looked into. Please do not forget that not passing SafetyNet is 100% NORMAL AND INTENDED when you have an unlocked booloader or running custom firmware. These are workarounds and they will be worked around in turn.

    The Flash
    Forum Moderator

    EDIT: Thread is reopened... I will be cleaning any SafetyNet posts for a while to keep the thread clean for real issues.
    75
    Hello everyone!

    I am aware that Google has updated Safety Net that makes Magisk itself a no go for Android Pay. In fact, I witnessed the change live while I am developing the new magiskhide, which should hide all Magisk modules and Magisk installed root.

    Google is serious about Safety Net now, clearly hunting down all possibility to run Xposed with Safety Net passed. I spend quite some time examining the new security measures last midnight, and fortunately it seems that it is possible to run Magisk and root along with Safety Net if no Xposed is running. I'm glad I removed the old root toggle at the right time lol, that is no longer feasible with the latest detection.

    So stay tuned for the next update, it will come with bug fixes, along with the new magiskhide to bypass that Safety Net.

    Google, how will a few systemless mods do any harm :p:p