← Guides / Access Control Protocols
May 19, 2025

How to hack a UHPPOTE system to work with Apple Access Passes

Access Control Protocols
Auston Bunsen
Overview
In this guide, we’ll walk through integrating perhaps the worlds most popular access control system (at least according to Amazon.com), a basic UHPPOTE door access system, with reader that recognizes Apple Wallet-based credentials, using AccessGrid-issued passes. This setup should also work with Google Wallet based credentials as well.

We’ll integrate a mini Wiegand controller, wire up power, configure card number ranges, and replace the legacy reader with a VTAP 100 that supports the H10301 Wiegand format. This is ideal for replacing standalone keypads with modern NFC authentication with minimal disruption to the existing infrastructure.

Prerequisites


Getting Power Wired
You’ll need to provide stable 12V DC power to both the controller and the reader. We hotwired the UHPPOTE Power Supply Control directly into an Anker Prime 6-in-1 charging station (Amazon link). To wire it up, just shove the power supply wires into the socket - be sure not to touch the exposed bits with your hands or you will get shocked! It doesn't matter which order they go in because it's an A/C 110 - 240 V power supply. This is how it should look:

Note: The power light is ON, that's how you know power is flowing.


Hotwiring the UHPPOTE power supply with an Anker Prime
Hotwiring the UHPPOTE power supply with an Anker Prime


Wiring the rest
OK, so now you've got power. Let's move on to wiring the rest of your set up.

🚨 "Unplug" your power supply so you don't die.

You need to wired the ground and power outouts from the power supply control to the TUYA wiegand microcontroller's ground and power inputs. Do this now. Map GND to GND, then +12V (power supply) to DC+ (controller).

Next you need to wire up the reader to the controller. If you pop open your VTAP 100, you'll see it has a green connector waiting for wires, map them in the following way:

VTAP 100 TUYA Controller
PWR+ DC+
GND GND
D0 D0
D1 D1
GRN LED
RED --
BEEP BZR

Note that you do not need to map the RED to anything, just leave off the wire. It should look something like this:



Selecting a Card Number Range & Programming the Microcontroller
UHPPOTE controllers must be programmed to recognize a range of Wiegand 26-bit card numbers. Use the IR remote that comes with the controller. It must be within 1 inch of the device to register inputs. I'm not kidding, 1 inch! Here's what we mean:

Now, "plug in" the power supply, wait for the red lights and using the remote (assuming you are using factory settings) press:

*123456# 1 # [Number of Cards, max 999] # [Starting Card Number, e.g., 19942069] #

For this, we'll allow 200 cards starting at 19942069 (site code: 199, card numbers 42069-42269):

*123456# 1 # 200 # 19942069 #

The controller will now accept Wiegand 26-bit cards in the configured range. The controller will take up to 2 minutes to program them all and it's LED will blink various colors through out the process, ending at solid red once it is done.

Configuring Your Reader
Since this is just a proof of concept, we'll jump straight into reader config. You can use the AccessGrid config tool or futz with config.txt - your choice. Here's how our reader config tool looks:

AccessGrid Reader Config Tool
AccessGrid Reader Config Tool

Here's a sample for you, in case you don't yet have an AccessGrid account:

!VTAPconfig ; This section defines the Google Smart Tap collector ID and key for the pass you want to read ; This is AccessGrid's collector ID ST1CollectorID=12345678 ST1KeySlot=2 ST1KeyVersion=1 ; The following is for formatted Google SmartTap passes PassFormat=2 AccessTCI=002000 NFCType4=D ; Read type 4 cards and Wallet passes as DESFire DESFireAppID=ACCE55 DESFireFileID=00 DESFireKeyNum=1 DESFireKeySlot=1 ; use appkey1 or above ; The following is for formatted DESFire cards and Apple Access DESFire passes DESFireFormat=2 ;Add Wiegand support, please contact support ; WiegandMode=1 KBLogMode=1 ; This section controls how the LEDs and buzzer behave. Two beeps for a pass, one for a card: LEDSelect=1 LEDDefaultRGB=FFFFFF PassLED=00FF00,200,1,1 PassBeep=100,100,2 TagLED=00FF00,200 TagBeep=100

Of course, you'll need to add the keys and such, but this is basically the config. You need to make sure you have "unplugged" the power supply before proceeding!

Unplug the power supply before proceeding!

Now, plug in the reader with a microusb to usbc cord and load all of the config files onto the reader. Eject the device and restart it. We're going to test now.
Issuing Credentials
In order to test our setup, we need Apple and or Google credentials. AccessGrid makes issuing and managing Apple Wallet credentials simple! So go ahead and open an account, go through onboarding, we'll be right here.

Now that you're set up, go ahead and issue an NFC key. Here's a sample using our python library:

from accessgrid import AccessGrid # get these from your access grid account account_id = "[placeholder]" secret_key = "[placeholder]" card_template_id = "[placeholder]" client = AccessGrid(account_id, secret_key) card = client.access_cards.provision( card_template_id=card_template_id, employee_id="101010101", card_number="42169", site_code="199", full_name="Jose Casanova", email="[email protected]", phone_number="+17867212241", classification="Employee", title="CEO", start_date="2025-04-03T22:46:25.601Z", expiration_date="2026-04-20T22:46:25.601Z" ) print(card.id) print(card.url)

Note that we set the card number and site code to be in range based on the configuration we set on the TUYA microcontroller!

Download the pass using the link output from the script above. Each pass will transmit a compatible card number via the VTAP when tapped. Go ahead and "plug in" the power supply again, if everything is on, go ahead and tap! You should hear the "door" unlock, here's a video to help you out:

Conclusion
You’ve successfully converted a legacy UHPPOTE door system into a modern Apple Wallet-compatible setup using a VTAP 100 reader and AccessGrid credentials. This approach keeps existing infrastructure intact while introducing NFC security. By wiring in a Wiegand-compatible controller and using the VTAP’s flexible output modes, you can repeat this process for every door in the building.

If you run into issues, verify:

  • VTAP is properly outputting Wiegand (use serial debug first).
  • Controller has the right card range configured.
  • Power supply is clean and stable (12V, 3A).
Let us know how your deployment goes — and don’t forget to share improvements or tricks you find along the way. You can always reach us by opening a chat in the bottom right of the app!
© AccessGrid 2024
Privacy
Terms