How this system works
What runs where, how a booth switches mode, and exactly what each booth needs before it will work.
01What it does
Every booth is a Windows PC running Breeze DSLR Remote Pro and the MDB Payment Utility, wired to a Nayax card reader. This dashboard flips any booth between Paid (card-gated) and Free Vend (walk-up, for corporate and private hire) on a schedule or with one click, without anyone visiting the machine.
02What it runs on
l7-photobooth-config — Debian 13, 2 cores, 3.8 GB RAM, 47 GB diskdb.json) plus uploaded files on disk — no database serverbooths.lane7.info. The VM itself has no certificate and no port 443.C:\BreezeControl, run by a Windows Scheduled Task as the booth's autologon user, polling every 60 secondsBooths only ever call out. Nothing connects inward, so no venue needs a firewall change — that is why a booth on any network works, and why the whole design is poll-based. The agent also updates itself: publish a new version here and the fleet picks it up on its next poll.
The JSON datastore is deliberate, not a shortcut. No database server and no native dependencies means the same code runs identically on a laptop, this VM, or a cloud host — only the address changes.
03What actually happens on the booth when the mode changes
Three physical steps, performed locally by the agent:
welcome.jpg / ready.jpg.
Remote Pro takes a while to come back — measured between 63 and 114 seconds on consecutive restarts of the same booth. That is why the Booth test waits for the photobooth window to appear rather than sleeping for a fixed time.
04Deploying a new booth — the files it needs
Everything below lives on the booth PC. Get these right and the install is a double-click.
a. Two Remote Pro settings profiles
Set the booth up by hand once for each mode, then save the profile from Remote Pro (Advanced Settings → Save):
Paid.xmlCard-gated configurationFreeVend.xmlWalk-up configurationThese two files are nearly identical — on a real booth they differ by about ten lines, which are the touch actions. Everything else is that booth's own camera, printer and path settings, which is exactly why a profile must never be copied between booths.
b. Four guest-facing screen images
In the booth's Photobooth Images folder:
welcome_paid.jpg · ready_paid.jpgShown in Paid modewelcome_free.jpg · ready_free.jpgShown in Free Vend modewelcome.jpg / ready.jpg. Exactly one pair must be parked at any time — if both or neither are present the agent reports a half-switched folder and refuses to guess. Until all four exist the booth fails to apply any mode, on every poll, forever, while still showing as Online with an "Apply failing" badge. You can upload the Free Vend pair once per venue under Manage venues → Free Vend images and every booth in that venue will fetch what it is missing.c. The corporate logo slot
Remote Pro is pointed once at logo_corporate_blank.jpg, in a region of the screen template that is already white — so a blank file is invisible. The agent swaps a client's logo into that file for Free Vend sessions and restores a blank one afterwards.
d. The agent installer
Fill in Booths → Settings → Deployment for that booth, save, then Download agent installer. It is a self-elevating .bat with that booth's own config and API key baked in — double-click it on the booth and accept the prompt. Nothing to type.
C:\<Venue>Photoboothimages\imagesC:\Program Files (x86)\BreezeSys\DSLR Remote Pro\DSlrRemote.exeC:\Program Files (x86)\BreezeSys\MDB Payment Utility\MDBPayment.exeC:\<Venue>Photoboothimages\Paid.xmlC:\<Venue>Photoboothimages\FreeVend.xmllocalhost sends that booth to its own machine and it can never check in — or self-update out of it.05Booth test — what it does and does not prove
Puts the booth into Free Vend for a few minutes, waits for Remote Pro's own photobooth window to reappear (restarts measured between 63 and 114 seconds on the same real booth), pauses a further 8 seconds so the booth is genuinely interactive, then sends two taps to the centre of the screen — the first takes it from standby to ready, the second starts the sequence, the same way a guest would. You still have to check that a print comes out — that is the half no software here can verify.
It taps rather than asking Remote Pro directly because, measured on a real booth on 2026-10-07, Breeze's photobooth API accepts every call and does nothing, and so do its documented keyboard shortcuts. A tap works. The booth's own profile explains it: photoboothUseMouseToTrigger is on, photoboothKeyboard is off. A new booth therefore needs its touch trigger enabled in Remote Pro, or Booth test cannot drive it.