How to Disable iPad/iPhone Home Button (Kiosk/Store Demo Mode)

A client that I have asked if it was possible to disable the home button for an app that I am currently developing and I decided to tackle the challenge. All it really requires is a correctly configured mobile configuration plist. Now, a lot of people are probably quickly opening the iPhone Configuration Utility to try and figure out how to do this, but for some reason Apple didn’t put the keys required to disable the home button inside IPCU at all! IPCU can’t even install it on the device because of it.

I have included an example plist that will disable the home button and lock your device into the app. If you would like to just test this mobile config without making your own, feel free to use one I have created and uploaded by clicking here.

BEWARE
Once this profile is installed the first app that is launched when the device is rebooted will be the only app that will run until you reboot the device again.

You must reboot(power off, power on) the device after installing the profile for the changes to take effect. To remove the profile from the device, you must plug the device into IPCU and delete it, then reboot the device. Everything should go back to normal.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PayloadContent</key>
    <array>
        <dict>
            <key>PayloadDescription</key>
            <string>Disables the home button.</string>
            <key>PayloadDisplayName</key>
            <string>Home Button Lock</string>
            <key>PayloadIdentifier</key>
            <string>com.zchristopoulos.kiosk</string>
            <key>PayloadOrganization</key>
            <string>Zachary Christopoulos</string>
            <key>PayloadType</key>
            <string>com.apple.defaults.managed</string>
            <key>PayloadUUID</key>
            <string>B2D02E2D-BAC5-431B-8A29-4B91F71C9FC1</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
            <key>PayloadContent</key>
            <array>
                <dict>
                    <key>DefaultsDomainName</key>
                    <string>com.apple.springboard</string>
                    <key>DefaultsData</key>
                    <dict>
                    <key>SBStoreDemoAppLock</key>
                    <true/>
                    </dict>
                </dict>
            </array>
        </dict>
    </array>
    <key>PayloadDescription</key>
    <string>Disables Home Button</string>
    <key>PayloadDisplayName</key>
    <string>Home Button Lock</string>
    <key>PayloadIdentifier</key>
    <string>com.zchristopoulos.hbkill</string>
    <key>PayloadOrganization</key>
    <string>Zachary Christopoulos</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>614D1FE3-F80D-4643-AF6B-D10C4CC8737A</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
</dict>
</plist>

Also read...

Comments

  1. What’s left to discover is a way to make the iPad automatically run the desired kiosk app to prevent the users from unlocking by simply restarting the iPad.

    Reply
      • Pretty sure. Just did it actually. Added a bit more to the file too so it blocks it with a password thus increasing removal difficulty.

        Here is the code if you want

        PayloadContent

        PayloadDescription
        Disables Home Button of the device and sets it Demo mode
        PayloadDisplayName
        Home Button Lock
        PayloadIdentifier
        com.example.myorganization
        PayloadOrganization
        MY ORG.
        PayloadType
        com.apple.defaults.managed
        PayloadUUID
        0733DC5D-1839-42DF-A743-30F06C962E9A
        PayloadVersion
        1
        PayloadContent

        DefaultsDomainName
        com.apple.springboard
        DefaultsData

        SBStoreDemoAppLock

        PayloadDescription
        Configures Configuration Profile security
        PayloadDisplayName
        Profile Security
        PayloadIdentifier
        com.example.myorganization.ProfileSecurity
        PayloadOrganization
        MY ORG.
        PayloadType
        com.apple.profileRemovalPassword
        PayloadUUID
        C99D3C33-5482-457C-8EFD-B58B272BC48A
        PayloadVersion
        1
        RemovalPassword
        PASSWORD

        PayloadDescription
        Disables Home Button of the device and sets it Demo mode
        PayloadDisplayName
        Home Button Lock
        PayloadIdentifier
        com.example.myorganization
        PayloadOrganization
        MY ORG
        PayloadRemovalDisallowed

        PayloadType
        Configuration
        PayloadUUID
        71904253-0B19-493A-86D2-D8EF05C65E39
        PayloadVersion
        1

        Reply
        • And I guess this is not using standard code flags.

          Anyways its not really that hard to figure out based on the code on the post so a little puzzle?

          Reply
  2. interesting, what version of ipcu were you using. I have 3.4 and it insists on stripping that key upon import and then fails to install on the device

    Reply
  3. This makes me wonder what other hidden tricks are possible through profiles. The options available though iPCU are a bit limited. How did you discover this? Maybe your methods could be used to discover other undocumented configuration options.

    Reply
  4. Pingback: How to Disable iPad Home Button Auch als Kios Mode bekannt. Und: Es funktioniert auch auf dem iPh… | hochwald.net

  5. Pingback: How to Disable iPad Home Button Auch als Kios Mode bekannt. Und: Es funktioniert auch auf dem iPh… | hochwald.net

  6. Thank you! You´re great!
    I´ve searched for something like that for weeks.
    And I think it can really be used by anyone.

    Reply
  7. This is great! I’d love to know how you figured this out, but I’m just as happy knowing that I can repeat it on my own device. Excellent find.

    Reply
  8. You could wait till iOS 6 comes out and use the new dissableing feature on there. I think it’s called Guided Access!
    Hope this helps!
    PS. iOS 6 comes out “This Fall”.

    Reply
    • The “downside” to the Guided Access feature is that the home button has the triple click on-off bit. I have iPads installed in a museum, and I know if I use the Guided Access feature instead of the trick listed on this site (which may get deprecated with iOS 6), our guests will be endlessly trying to guess the password. I don’t want the little password prompt to be sitting on the screen when another guest comes along. There are iPad frames which completely block access to the physical button, but that’s out of budget at this time for us.

      Reply
  9. Awesome. I am deploying multiple iPads for a Audio/Video control system in a place of business, and was thinking I was going to have to rig a bracket to cover the home button. Makes me look like I know what I’m doing now! :)

    Thanks!

    Reply
  10. I agree with all the positive comments above.
    Seems to work perfectly as described. Totally easy install. Overall impressive.
    Using it with iOS 5.1.1

    Reply
  11. Maybe you can help me from the other side of this issue. We purchased a couple of iPads at a business liquidation auction and they said they were from a retail establishment that locked the iPads to one app. They said just do a full restore and it will wipe them for our use.

    Ugh – I figured out how to do the full restore (hold the home button while connecting to the USB until the connect to itunes screen comes up, etc.) and all I get is an error “This iPad is supervised by another computer and cannot be used on this computer”.

    I can’t get past that to do the wipe and restore that is supposed to reset it. Any suggestions?!?

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>