Skip to content

Latest commit

 

History

History
93 lines (61 loc) · 3.03 KB

README.md

File metadata and controls

93 lines (61 loc) · 3.03 KB

pcprox python module

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.

Requirements

  • Python 3.x
  • cython-hidapi (generally packaged as python3-hid or python3-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.

Platform support

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:

Otherwise, this should run wherever hidapi runs, as long as one can send USB HID feature reports to keyboard devices (which pcProx simulates).

Setting up permissions

Linux

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

Mac OS X requires that all applications requesting direct access to a keyboard device run as root.

Examples

  • 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.

Other resources