LF RFID tag access system to be used with an electric door strike
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
eaon a72aa8b639
Make sure the service is always restarted
6 months ago
125kHz-door.service Make sure the service is always restarted 6 months ago
LICENSE Create LICENSE 10 months ago
README.md Reflecting recent changes in documentation 6 months ago
access.py Back to curl it is 6 months ago
envs Fixes #1 6 months ago


Low-Fi 125kHz RFID access for Hack Manhattan



  • systemd
  • 1 green & 1 red LED and the appropriate resistors
  • Deadbolt/key sensor for (non-RFID) legacy access (ours)


When using systemd:

  • Place this repo in /opt/125kHz-door/
  • Put the 125kHz-door.service in /etc/systemd/system/, run systemctl daemon-reload and systemctl enable 125kHz-door.service
  • Add the appropriate environment variables to /opt/125kHz-door/envs if you want to override the default configuration
  • See access.py source for wiring. (Yes I’m lazy, it’s for 3 different boards!)
  • Make sure KHZ125_ACL URI isn’t readable by any IP other than the keyless access device

When not using systemd: you should be able to deduce what to do for your init system/replacement.

Configuration (environment variables)

  • KHZ125_ACL: provide URI to access control list (see next section). Default: https://spacy.hackmanhattan.com/cards/json/1
  • KHZ125_AUTH: secret token for Authorization: Bearer $KHZ125_AUTH headers. Default: not present.
  • KHZ125_JSONDB: provides path for where the json database is stored. Default: /opt/125kHz-door/acldb.json, acldb.json for “debug” mode
  • KHZ125_TIME: how long the relay to open the door is turned on. Default: 5 seconds
  • KHZ125_CACHE: how long to wait for the HTTPS request to finish until falling back onto cache. Default: 0.75
  • KHZ125_NO_DEADBOLT: if present it disables legacy access support. Default: not present.
  • KHZ125_NO_LED: if present it disables green/red LEDs for status reports. Default: not present.
  • KHZ125_READER: device path to the HID RFID reader

acldb.json Format

125kHz RFID tags have 32bit IDs. The USB keyboard “types” this ID as a number with leading zeros, hence:

    "0000000001": "description",
    "0004044444": "Not an actual card"