# setup These are the notes for the June 2026 at://chicago check-in setup. ## hardware - laptop: Nate's Mac, running macOS, connected to the printer over USB - printer: Omezizy Bluetooth Shipping Label Printer 4x6 / 249BT - labels: MUNBYN 4" x 3" direct thermal labels, white, 500 labels per roll - connection used for printing: USB - connection avoided for laptop printing: Bluetooth Bluetooth may work from phone apps, but the reliable event-day path is USB + CUPS + `lp`. ## printer driver The printer did not move when configured as a generic Zebra ZPL label printer, even though CUPS marked the job complete. The working driver is the official Omezizy/label-printer driver: - PPD shown by macOS: `Label-Printer` - driver version: `1.4.3` - CUPS filter: `rastertolabeltspl` - protocol family: TSPL The working CUPS queue: ```text _PM_249_BT ``` The working USB URI: ```text usb:///PM-249-BT?serial=Q354E53B4250232 ``` ## printer settings Use 4x3 labels: ```text PageSize=w288h216 media=w288h216 ``` Useful inspection commands: ```bash lpstat -t system_profiler SPPrintersDataType lpoptions -p _PM_249_BT -l ``` Known-good print command: ```bash lp -d _PM_249_BT \ -o PageSize=w288h216 \ -o media=w288h216 \ -o fit-to-page \ /path/to/label.pdf ``` ## local print worker Install dependencies: ```bash npm install ``` Run against production in dry-run mode: ```bash CHECKIN_SERVER_URL="https://check-in.chicago.at" npm run print-worker ``` Run against production in real print mode: ```bash CHECKIN_SERVER_URL="https://check-in.chicago.at" \ PRINT_MODE="lp" \ PRINTER_NAME="_PM_249_BT" \ npm run print-worker ``` The print worker renders HTML with Playwright Chromium, exports a 4x3 PDF, then sends it to CUPS with `lp`. By default the worker does not print the initial SSE snapshot. That prevents old check-ins from reprinting when the laptop worker restarts. It still prints new live check-ins, including a new Verifire post from the same account. To intentionally reprint the current snapshot, opt in: ```bash PRINT_SNAPSHOT=1 npm run print-worker ``` ## event-day checklist 1. Plug printer into power. 2. Load 4x3 thermal labels with the printable side oriented for the feed path. 3. Connect printer to laptop over USB. 4. Confirm the queue is visible and idle: ```bash lpstat -t ``` 5. Start the print worker: ```bash CHECKIN_SERVER_URL="https://check-in.chicago.at" \ PRINT_MODE="lp" \ PRINTER_NAME="_PM_249_BT" \ npm run print-worker ``` 6. Keep the terminal visible during check-in. 7. Keep regular blank labels and a marker around for people who do not want to post. ## undo a check-in If someone needs to be unchecked-in, delete them by handle or DID. This removes them from stored check-ins and broadcasts an `uncheckin` event so the wall drops their card. ```bash curl -X DELETE \ -H "x-checkin-admin-token: $CHECKIN_ADMIN_TOKEN" \ "https://check-in.chicago.at/api/checkins/zzstoatzz.io" ```