USB host permission denied after re-enumeration on Android 13 kiosk: platform behavior and workarounds
Android
After a USB device power cycle or re-enumeration event on an Android 13 kiosk, your app may lose USB host access and require a permission prompt to reconnect. This article explains why this happens and what you can do to resolve it.
Understanding the issue
When a USB device (like a payment terminal) is disconnected and reconnected, Android's security model treats it as a new device attachment. Your kiosk app must receive permission to access it again. On most Android devices, this permission persists automatically. However, on some Android 13 non-Google Mobile Services (non-GMS) devices, Esper cannot automatically persist these permissions across re-enumeration events, and your app must prompt the user each time.
This affects kiosk applications running on:
- Android 13 non-GMS OEM firmware (not Esper Foundation)
- Devices without Samsung Knox integration
- Third-party device manufacturers
Before you begin
Check whether your device is affected:
- Your device is running Android 13 non-GMS firmware
- You're using Esper Agent v8.6.1155 or similar
- Your kiosk app loses USB host permissions after power cycles or cable reconnections
If your device runs Esper Foundation or Samsung Knox, this issue may not apply — contact Esper Support for details specific to your device.
Solution 1: Update the app manifest (recommended)
The most reliable solution is to have your app developer add a USB device filter to the app's AndroidManifest.xml. This tells Android to automatically grant permission for that specific USB device.
- Contact your application developer (for example, Grubbr Systems or your kiosk software provider).
- Ask them to add a
<usb-device>intent filter to the app manifest targeting your USB device. Include the vendor ID (VID) and product ID (PID) of your payment terminal or other USB device. - Request that they rebuild and deploy the updated app to your devices.
- After the update, disconnect and reconnect the USB device to verify that the app reattaches without prompting the user.
Once the user grants permission once with this approach, Android caches the permission and automatically restores it on future connections.
Solution 2: Work with your device OEM
Your device manufacturer may provide a proprietary way to pre-authorize USB devices without a user prompt.
- Contact your device manufacturer (for example, Frank Mayer, MicroTouch, or Posiflex).
- Ask whether they offer OEMConfig settings, a USB device whitelist, or a system permission policy that can pre-authorize your kiosk app for specific USB devices.
- If available, work with the OEM or your Esper account team to apply these settings via Devices & Groups → Device Details → OEMConfig.
Solution 3: Evaluate Esper Foundation
If your organization can transition to an Esper Foundation-supported device, Esper Foundation provides deeper OS integration that may enable automatic USB permission grants.
- Contact Esper Support to discuss device models that run Esper Foundation in your region.
- Evaluate whether upgrading your fleet is feasible for your use case.
- If you proceed, work with your Esper Solutions team to configure USB permissions via Foundation's enhanced capabilities.
Interim workaround
While you implement a permanent solution, train your site staff to handle the USB permission prompt manually:
- When the app prompts for USB device permission after a power cycle or reconnection, instruct users to tap Allow or Always allow.
- Selecting "Always allow" caches the permission for future connections in the same session.
- Document this as a temporary procedure until the app manifest or OEM solution is deployed.
Verify the fix
After implementing your chosen solution, test the fix:
- Disconnect the USB device (payment terminal, scanner, or other hardware).
- Wait 5 seconds, then reconnect it.
- Verify that your app automatically reattaches and functions without a user prompt.
- Perform a test transaction to confirm end-to-end functionality.
Still need help?
If you've tried the solutions above and the issue persists, or if you need help determining which solution applies to your device, submit a support ticket. include:
- Your device model and Android version
- Your USB device VID and PID
- The name and version of your kiosk app
- Your Esper Agent version (visible in Devices & Groups → Device Details)
- Steps you've already taken to resolve the issue
Please sign in to leave a comment.
Comments
0 comments