Test without hardware

During guided setup, choose Browser simulator. It consumes a simulator-only ten-minute pairing code, can be toggled online or offline, and lets an Admin choose a roster member in place of a fingerprint scan. Simulator check-ins are accepted only during eligible meeting windows. The simulator never receives a hardware kiosk credential, never counts as the active production kiosk, and never creates or handles fingerprint data.

Use it to verify pairing, roster selection, check-in delivery, attendance confirmation, reports, and basic offline-status behavior. A physical Raspberry Pi and R503 are still required for fingerprint enrollment, sensor matching, UART, Chromium kiosk mode, and full offline-queue acceptance.

Hardware checklist

Assemble the printed enclosure

Start with the LancerLogin enclosure CAD in Onshape. Print one case, one case back, and two screen brackets with no support material.

Before assembly, prepare eight M3 heat-set inserts, eight matching M3 × 6 socket-cap screws, the display's Pi mounting hardware, and the DSI ribbon cable. Install every heat-set insert in the case before handling the electronics. Use a temperature appropriate for the printed material, press each insert straight and flush, then let the plastic cool.

  1. Attach the Pi to the display. Put the display face down on a clean, nonconductive surface. Use the display's mounting screws or standoffs and do not over-tighten its board.
  2. Connect the DSI ribbon cable. Fully seat it in the display and Pi connectors, close both retaining tabs, and check its orientation against the marks on the boards.
  3. Install the reader. Press the included reader nut into the matching pocket in the front case. Thread the R503 into that nut from the outside until secure, without twisting its cable.
  4. Set the display assembly into the case. Lower the Pi and display into the front opening. Keep the DSI cable in its intended path and clear of all standoffs and case edges.
  5. Wire the reader to the Pi. Use the UART pinout below. Confirm the labels on the reader harness before applying power. Do not rely on wire color alone.
  6. Fit the screen brackets. Place both brackets, then use the prepared M3 × 6 screws to secure the display assembly. The screen should sit squarely with no trapped cable.
  7. Close the case. Arrange the remaining cable slack away from screw posts, place the case back, and fasten the remaining M3 × 6 screws. Stop if a screw does not start cleanly in its insert.
Confirm the reader revision before power. Connect VCC to the Pi 3.3 V rail on physical pin 1. If your reader label, voltage requirement, or harness differs, stop and use the reader's supplied wiring diagram.
R503 fingerprint reader wiring to the Raspberry Pi GPIO header: VCC to 3.3-volt pin 1, ground to pin 6, reader TXD to Pi receive pin 10, and reader RXD to Pi transmit pin 8.
The UART lines cross: reader TXD goes to Pi RXD, and reader RXD goes to Pi TXD. The optional reader touch or wake lead is not used.
R503 labelPi physical header pinPi signal
VCC13.3 V
GND6Ground
TXD10GPIO 15 / RXD
RXD8GPIO 14 / TXD

Guided installer

  1. Download install-lancerlogin.sh from the matching immutable GitHub release.
  2. Run sudo bash install-lancerlogin.sh --dry-run. This checks and describes changes without modifying the Pi.
  3. Run sudo bash install-lancerlogin.sh --install. The installer verifies the checksum, configures the local service, creates a desktop kiosk relaunch shortcut when Chromium is installed, and prints a `.local` address plus a LAN IP fallback. It does not ask for Cloudflare details.
  4. In the Admin dashboard, name the kiosk and create a ten-minute one-time pairing key.
  5. On a phone or laptop connected to the same network, open the printed Pi address and paste the key. The Pi pairs and its local pairing panel closes.
1

Pairing key

Combines public routing information with a single-use code and kiosk name. Paste it as one item; it expires after ten minutes and is not stored on the Pi.

2

Kiosk credential

Returned only to the Pi. The Pi stores it locally; D1 stores only its hash.

3

Fingerprint boundary

R503 templates remain inside the sensor. Cloud requests contain member and meeting identifiers, never templates or scans.

Scan without choosing a meeting

The R503 scans continuously. A member presents an enrolled finger; the Worker selects the one eligible meeting from the timestamp and returns the member, meeting, and arrival/departure result. The first accepted scan welcomes the member and records arrival; the next says goodbye and records departure. An eight-second device debounce prevents a held finger from generating both events.

Organization branding remains cached while offline. Every scan enters the ordered local queue before cloud delivery, and the footer shows reader, queue, and time state. Meeting attendance windows cannot overlap, including the organization-wide late-scan allowance, so the kiosk never asks a member to choose.

Source-backed LancerLogin kiosk preview at 800 by 480 pixels using synthetic Example Arts Club data. It shows a green network indicator, organization title, Place finger on reader prompt, status text, and reader, queue, and clock status in the footer.

Current kiosk software rendered locally with synthetic data. This is not evidence of physical reader or hardware acceptance.

1

Protected network access

Hold the green network icon for three seconds to open touch Wi-Fi settings.

2

Member-facing state

The status line sits below the primary prompt and changes between ready, processing, welcome, goodbye, rejected, and offline feedback.

3

Operational footer

Reader availability, queued scans, and local time remain visible without administrator clutter.

4

Organization identity

The header shows the organization title and, when configured, its optional logo.

Use protected local tools

Hold the network dot for three seconds to create or enter the local 6–12 digit settings PIN, view nearby Wi-Fi, and use the on-screen keyboard. LancerLogin passes a password to NetworkManager but never saves or displays it. Hold the organization name or logo for three seconds and use the same PIN for fingerprint maintenance: test the reader, choose an active roster member from a touch-friendly picker, label a finger, enter a slot with the on-screen number pad, confirm replacements, and review or remove local mappings.

Enrollment captures the same finger twice and creates the template inside the R503. The owner-only Pi file stores only slot, roster ID, and finger label. Removing a mapping retains the sensor template; no template or raw scan enters D1, a cloud request, a backup, or a log.

Replace a kiosk

LancerLogin supports one active kiosk. The Admin dashboard requires explicit replacement confirmation. The existing kiosk remains active until the replacement code is redeemed; then its credential is disabled.

The Kiosks page shows heartbeat, reader state, pending scans, last successful sync, release, pairing time, and a scrubbed issue category. Admins can rename, retire, replace, view history, reload the display, restart the software, reboot the Pi, reset the local PIN, or choose Update to latest stable when a compatible release is available. Recovery accepts only those fixed, short-lived dashboard actions and never provides a remote shell.

Update or recover safely

A physical kiosk update is separate from a dashboard installation update. In Kiosks or Settings → Updates, choose Update to latest stable only when the kiosk is online and a newer compatible stable release is shown. Wait for the kiosk to return online with its installed release. If the release lookup is unavailable or no completion status appears, do not assume an update started.

Use the Raspberry Pi Connect remote shell for an approved on-device recovery procedure when that is the installation's configured remote-support method. SSH is not required. Keep local pairing, mappings, PIN state, and the pending queue private. Do not re-pair, restore an old queue, or restore D1 automatically.

Captive portalsComplete portal login manually before installation. Offline-first queueing continues after setup, but automatic captive-portal handling is unsupported.