wiki: ingest GEE-QR-ER80 QR access reader datasheet

The reader on hand is a GEE-QR-ER80 QR/DataMatrix/1D barcode access reader
(not an EM4100 prox-card reader as first guessed). Interfaces: Wiegand 26/34,
RS-232, RS-485, USB, TCP/IP; 4-15 VDC; Linux-supported. Variant on hand: -Q-W
(QR scanner, Wiegand/RS-232/485).

This is the QR-ticket scanner the design already needed: a host-side reader
whose scans become read-bus events consumed by the (already-built) exit flow
and QR-permit path. Prefer RS-232/485 over Wiegand (Wiegand can't carry a
variable-length QR string; autonomy is moot with the no-ACL Dingtian).

New source + entity pages; updated ticket-encoding, entry-exit-readers, index.
Open (blocks the adapter): the RS-232/485 frame + baud (ASCII CR/LF expected).
This commit is contained in:
2026-06-16 08:22:23 +02:00
parent e579fe5b6e
commit bf37106c5c
7 changed files with 124 additions and 1 deletions
+6
View File
@@ -22,6 +22,12 @@ There are **two populations** of users, and they map to **two integration paths*
| [[wiegand]] reader → UHPPOTE port | The controller | Controller (onboard card list) | **Yes** — works if host down |
| Pure TCP/IP reader | Host only | Host, then UDP `open` to relay | No — host on critical path |
| [[lpr-camera|LPR]] / QR scanner | Host only | Host | No |
| **[[gee-qr-er80]] QR reader (serial)** | Host only | Host (reads serial → `read` bus) | No |
> Concrete host-side reader on hand: the **[[gee-qr-er80]]** (QR over RS-232/RS-485). Note autonomy
> is moot here anyway — the current relay ([[dingtian-relay]]) has **no onboard card list**, so even
> a Wiegand reader would be host-decided. So we take the serial/QR path straight to the host's
> `read` bus.
## Key points
+3
View File
@@ -37,6 +37,9 @@ must have:
- The **scanner is a device behind an adapter** ([[device-adapter-pattern]]): a new `ReaderDevice`
kind (QR/barcode imager) — likely the same `IdentitySource = "ticket"` / `"qr"` path. Keeps the
app device-agnostic; hardware model is procurement ([[bom]], [[open-questions]]).
- **On hand:** the **[[gee-qr-er80]]** QR access reader (`-Q-W`: QR scanner, Wiegand/RS-232/RS-485,
Linux-supported) — the concrete scanner for this path. A serial `ReaderDevice` adapter feeds the
`read` bus; pending the reader's RS-232 frame/baud (see [[gee-qr-er80]] open questions).
## Ticketless alternative (plate as the ticket)
+59
View File
@@ -0,0 +1,59 @@
---
type: entity
tags: [parking, hardware, readers, qr]
sources: [gee-qr-er80]
updated: 2026-06-16
status: open
---
# GEE-QR-ER80 (QR access reader)
The project's **QR-code reader** (GEE NFC LIMITED). A static optical scanner for **QR /
DataMatrix / 1D barcode**, optional ID/IC card. This is the **[[ticket-encoding|QR ticket]]
scanner** the design called for — read at the pay station and exit lane — and a path for **QR
[[permit]]** credentials. On hand: variant **`-Q-W`** (QR scanner; Wiegand/RS-232/RS-485).
(See [[gee-qr-er80|datasheet summary]] / `raw/`.)
## What it is (and isn't)
- **Optical, not RFID-prox.** Earlier we *assumed* "ER80-EM" = a 125 kHz EM4100 card reader — the
datasheet corrects that: it's a **QR/barcode scanner**. The `-EM` in the original label was a
mis-id; the real model is **GEE-QR-ER80**. Optional `D`/`C` variants add ID/IC card, but the unit
on hand is **QR-only** (`-Q`).
- **Multi-interface** (Wiegand 26/34, RS-232, RS-485, USB, TCP/IP); the `-W` variant exposes
**Wiegand + RS-232/RS-485**.
## How it fits our architecture — host-side reader
It's a **host-side identity source** ([[entry-exit-readers]]): the host sees the scan, decides, and
commands the relay — exactly the model the read-driven flows already use. A scan becomes a
`DeviceReadEvent` on the internal `read` bus (`kind: "qr"`/`"ticket"`, value = the scanned string),
consumed by the **exit flow** and the **QR-permit** path ([[parking-session]], [[permit]]) — both
**already built**. So integration is a new **`ReaderDevice` adapter**, no business-logic change
([[device-adapter-pattern]]).
- **Interface choice:** prefer **RS-232/RS-485 (serial)** for the QR variant — Wiegand can't carry a
variable-length QR string well (it's built for fixed-width card IDs). The host reads scans over a
serial port (USB-serial on TX/RX, or the USB variant); no Wiegand-decode hardware needed. This
suits [[offline-first]] (local serial, no network) and sidesteps the [[dingtian-relay|Dingtian]]'s
lack of an onboard card list (we never wanted autonomy here anyway).
- **LED/BEEP control lines** mean the host can drive scan feedback (accepted/rejected) — nice for an
unmanned lane.
- **Linux-supported**, 4–15 VDC — fits the [[disk-os-hardening|appliance]].
## Open questions (block the adapter)
1. **RS-232/RS-485 protocol:** baud rate + frame format, and confirm a QR scan emits as an **ASCII
string** (expected) terminated by CR/LF vs. a framed/checksummed protocol. This is the one fact
the adapter needs and the datasheet omits. Resolve via vendor docs or by observing the port on a
scan.
2. **Serial vs. USB-CDC vs. TCP/IP** for *this* unit: `-W` is Wiegand/RS-232/485. Decide the host
wiring (a USB-RS232/485 adapter on TX/RX, most likely).
3. **Does Wiegand mode even carry QR?** Likely Wiegand is for the optional *card* modes only; confirm
so we don't design a Wiegand path for QR.
## Next
A `ReaderDevice` driver in `packages/devices` (serial transport) emitting `read` events. Add it to
the [[device-registry]] under the `reader` category so the [[first-run-setup]] wizard can assign it
per lane. Pending open-question #1 (the serial frame) before coding.
+3 -1
View File
@@ -7,7 +7,7 @@ updated: 2026-06-14
# Index
Content catalog for the wiki. Start at [[overview]]. Maintained on every ingest.
Counts: 1 source · 18 entities · 24 concepts · 5 decision records.
Counts: 2 sources · 19 entities · 24 concepts · 5 decision records.
## Overview & navigation
- [[overview]] — the top-level synthesis and entry point.
@@ -16,6 +16,7 @@ Counts: 1 source · 18 entities · 24 concepts · 5 decision records.
## Sources
- [[parking-system-architecture]] — design notes: stack, threat model, devices, UHPPOTE, ESP32, readers, BOM, open decisions.
- [[gee-qr-er80]] — datasheet: GEE QR access reader (QR/DM/1D; Wiegand/RS-232/485/USB/TCP; Linux).
## Entities — technology stack
- [[technology-stack]] — the full stack table; all MIT/Apache/BSD, chosen to avoid lock-in.
@@ -37,6 +38,7 @@ Counts: 1 source · 18 entities · 24 concepts · 5 decision records.
- [[atecc608]] — secure element; non-extractable signing key (host events + controller auth).
- [[wiegand]] — reader standard feeding the controller directly (autonomous permit-holder path).
- [[lpr-camera]] — edge-AI plate recognition; host-side casual-identity source.
- [[gee-qr-er80]] — QR access reader on hand; host-side serial → `read` bus (the QR-ticket scanner).
- [[zkteco-controller]] — ❌ rejected/historical; aux-input path was a contender, not pursued.
- [[dingtian-relay]] — ✅ CHOSEN access controller; decoupled inputs solve the button blocker (driver verified on hardware).
- [[rongta-printer]] — ✅ CHOSEN 80mm thermal printer; ESC/POS over raw TCP 9100; driver written, one unit reachable at 10.0.10.6.
+16
View File
@@ -607,3 +607,19 @@ guarantee. Recorded in [[dingtian-relay]] (new Hardening section).
free −1); exit frees a slot; routes RBAC (op can't set, −5→400, set/clear ok); verifyChain ok.
Full build 5/5. Physical FULL-sign relay output deferred.
- Updated [[capacity-occupancy]] (as-built).
## [2026-06-16] ingest | GEE-QR-ER80 QR access reader datasheet
- User has the reader; ingested `raw/GEE-QR-ER80 QR Code Access Control Reader.pdf`.
- CORRECTION: earlier guessed "ER80-EM" = a 125 kHz EM4100 prox-card reader. WRONG — the datasheet
shows **GEE-QR-ER80**, a **QR / DataMatrix / 1D barcode** optical access reader (optional ID/IC
card). It's the [[ticket-encoding|QR ticket]] scanner the design already needed, not a card reader.
- Specs: interfaces Wiegand 26/34 · RS-232 · RS-485 · USB · TCP/IP; 4–15 VDC <800 mA; 360°;
Windows + **Linux**; wiring VCC/GND/D0/D1/TX(R+)/RX(R-)/LED/BEEP. On hand: **`-Q-W`** (QR scanner;
Wiegand/RS-232/RS-485).
- Fit: host-side reader → a serial `ReaderDevice` adapter emitting `read` events → consumed by the
already-built exit flow + QR-permit path. Prefer RS-232/485 (serial) over Wiegand (Wiegand can't
carry variable-length QR; autonomy moot since [[dingtian-relay]] has no onboard ACL).
- New: source [[gee-qr-er80]] summary + entity [[gee-qr-er80]]. Updated [[ticket-encoding]],
[[entry-exit-readers]], [[index]].
- OPEN (blocks the adapter): the RS-232/485 **frame + baud** — is a QR scan an ASCII CR/LF string
(expected) or framed? Datasheet omits it; resolve via vendor docs or by observing the port.
+37
View File
@@ -0,0 +1,37 @@
---
type: source
tags: [parking, hardware, readers, qr, datasheet]
sources: [gee-qr-er80]
updated: 2026-06-16
---
# Source: GEE-QR-ER80 QR Code Access Control Reader (datasheet)
Vendor datasheet (GEE NFC LIMITED, ©2007–2019) for the **GEE-QR-ER80** — a static
**QR-code access-control reader**, optional ID/IC card. The reader the project has
on hand for the [[ticket-encoding|QR ticket]] path. Raw:
`raw/GEE-QR-ER80 QR Code Access Control Reader.pdf` (3 pages). Entity: [[gee-qr-er80]].
## Key takeaways
- **Optical scanner**, not a prox-card reader: reads **QR, DataMatrix, 1D barcode** (static).
Optional add-ons for **IC card UID / ID card**.
- **Multi-interface:** **Wiegand 26/34, RS-232, RS-485, USB, TCP/IP** — selectable by variant.
- **Power:** 4–15 VDC, < 800 mA. **Read direction:** 360°. Built-in scanner LED.
- **OS:** Windows XP/7/8/10 **and Linux** (explicit) — fits the [[disk-os-hardening|Linux appliance]].
- **Wiring (Wiegand/RS-232/485 variant):** VCC(+12V), GND, **D0/D1** (Wiegand), **TX/R+ , RX/R-**
(RS-232 / RS-485), plus **LED** and **BEEP** control lines (host can drive feedback).
- **Order code** `GEE-QR-ER80-<scanner>-<interface>`: `Q`=QR scanner / `D`=ID reader / `C`=IC reader;
`W`=WG·RS232·RS485 / `U`=USB / `T`=RJ45 (TCP/IP). **On hand: `-Q-W`** (QR scanner; Wiegand/RS-232/RS-485).
## Section map
- p1 — overview, physical + feature table (interfaces, power, read direction).
- p2 — supported types (QR/DM/1D + optional IC/ID), OS, environment; **wire definition** (pin table).
- p3 — order-code breakdown, applications (access control / vacation rentals / time attendance).
## Not in this datasheet (open)
- The **RS-232/RS-485 data protocol**: baud rate, frame format, and whether a QR scan is emitted as
an **ASCII string** (expected) vs. some framed protocol. Decides the host-side adapter — see
[[gee-qr-er80]] open questions. Resolve by vendor docs or by observing the port on a scan.