This is an open-source reimplementation of the functionality available in the
CmdpcProx
utility for the RFIDeas pcProx USB readers, as a Python 3 module.
This has been tested with the RDR-6081AKU/APU (pcProx 125kHz HID Prox Desktop USB reader). It might work with other readers, but I don't have any other readers to test.
This implements the proprietary and undocumented USB HID commands that
CmdpcProx
uses to control the device.
This differs from some other implementations in that it does not
use evdev
to access the device. This also does not require the closed
source CmdpcProx
executable (which is only available for Linux x86 and
Windows x86).
This does not support USB Serial or other non-USB interfaces.
- Python 3.x
- cython-hidapi (generally packaged as
python3-hid
orpython3-hidapi
)
Note: There are multiple Python libraries called hid
or hidapi
; this
library was tested with the Trezor fork.
Python 2.x is not supported, and will not be supported.
Known-working platforms:
- Linux (tested on
x86_64
, but will probably work on any Linux-supported CPU architecture, including ARM). - Mac OS X (tested on 10.14)
Non-working platforms:
- Windows (would require this hidapi patch)
Otherwise, this should run wherever hidapi runs, as long as one can send USB HID feature reports to keyboard devices (which pcProx simulates).
Copy the udev rules (as root):
install -o0 -g0 -m0644 udev/60-rfideas-permissions.rules /etc/udev/rules.d/
udevadm control --reload-rules
Then disconnect the pcProx (if connected), and then reconnect it.
These rules use uaccess, which should grant access to anyone logged in locally
via systemd-logind
(which includes most recent Linux distros).
If you're using this with a user which is not logged in locally, or are not
using systemd
, modify this configuration to replace TAG+="uaccess"
with
something like GROUP="rfidusers"
, which will instead set ACLs based on group
membership.
Mac OS X requires that all applications requesting direct access to a keyboard
device run as root
.
-
configure.py: A basic configuration utility that supports dumping and changing settings at the command line, and storing the running configuration in the EEPROM.
-
usbtest.py: An example application that runs the pcProx in non-keyboard mode, and flashes the LEDs on the device.
-
Protocol documentation (also explains the behaviour of different device settings)