No description, website, or topics provided.
C Assembly C++
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Stratumkey [2] is a physical access control system originally designed for enabling
members of Stratum 0 [1] to enter the hackerspace.

The current implementation uses a large 3-pin male audio jack (6.3mm) on the
slave side (the "key") and female audio jack on the master side (the "door").
Inside the housing of the key is a small MCU (e.g. ATTiny85), that is powered
over two of the three pins.
The third pin is used for communication: We use a very simple one-wire protocol,
which only supports two devices on the bus (master and slave). As our system is
not intended to use more than two devices physically, we omitted the addressing.

Currently the sole purpose of the master is to relay data. It is the interface
between the single-wire-speaking key and the actual controller [3] (using UART to
communicate). The master is intended to do additional stuff in the future, like
opening the door.

  (slave)------------(master)============(controller) [3]
          singe-wire             UART

== Requirements ==

To build this project, you need a working avr-gcc and the avr-libc. If you want
to flash the hex files to an actual MCU, you need of a hardware programmer (the
makefiles are preconfigured to use an AVR Dragon) and if you want to do so using
the makefile's upload target, you probably want to install avrdude.

On Debian/Ubuntu do:
sudo apt-get install gcc-avr avr-libc avrdude

== Using other microcontrollers ==

The project is preconfigured to use an ATTiny85 as slave MCU and an ATMega8 as
master MCU. If you want to use other ATMEL MCUs you need to figure out what
timers and registers to use for the single wire protocol and then create your
own device specific header file in libs/single_wire_uart/ and name after the
pattern swu_device_defines_YOURMCU.h. Have a look at the other device headers.

Also you need to adjust the makefiles. The MCU define is used by avr-gcc [4] and
the DUDEMCU define is used by avrdude (execute `avrdude -p ?`).