DQR Display Test BenchRIAB dynamic QR device · spec 1.06
USB idle
Socket idle
This browser has no Web Serial API. Use Chrome or Edge on desktop. If the page is opened from a file and the connect button does nothing, serve it instead: python3 -m http.server 8000 then open http://localhost:8000/dqr_tester_v1.html.

Serial port

115200 8N1, no flow control

Health checks

ping → OK  ·  snno → device serial no

Show a QR code

AT+QR_DISPLAY="<payload>"

Write a text row

AT+STR_DISPLAY=<row>,"<text>"  ·  rows 1–22, 32 chars per row

Show a stored image

AT+PIC_DISPLAY=<seconds>,<image>[,<image>…]  ·  first number is the hold time, the rest rotate

Each number opens /image<n>.rgb.raw from device storage. A "Failed to open file" reply means that file was never uploaded, not that the command was wrong.

Countdown timer

AT+TI=<seconds>  ·  shown along the bottom of the screen

Filesystem

AT+LS is confirmed working, so the sibling commands are likely Unix-style too

config.txt is 12 bytes and it is the only file on the device. If it holds the image slot mapping, its contents explain why slots 1 to 4 return an empty path.

Answer a prompt

Goes out as a plain line with no AT prefix — use it when the device is waiting on you

Abort sends ESC then two blank lines. If the device still will not talk, power cycle it.

Build an image payload

320 × 480 RGB565 is 307,200 bytes — check the size matches what AT+LS reports after upload

no payload built yet

The test pattern puts pure red, green and blue bars first and marks the top-left corner. If red shows up blue, the byte order is wrong; if the corner marker is in the wrong place, width and height are swapped.

Upload a file

Drives the handshake: command, filename, byte count, then the raw bytes

free space unknown — run AT+LS

Prove the shape with a 5 byte text file first, then run AT+LS to see whether it landed and whether the reported size matches. Only move to a 307,200 byte image once a small one round-trips.

Probe for undocumented commands

Sends each line, waits 900 ms, reports which ones the firmware answers

idle

Everything in this list only reads. Nothing writes, deletes or reboots.

Commands that could change or wipe the device

These are guesses at names, not documented commands. One of them may format the filesystem, clear the slot configuration, erase the serial number, or drop the device into a binary transfer mode that stops answering until it is power cycled. The unit already has no images on it, so the files are not what is at risk — the configuration and serial number are. Get the vendor's provisioning tool before reaching for these, and do not run them on a unit you need working.

Send anything

Up and down arrows walk back through what you sent

Payment run

Walks one transaction end to end, 2 s between steps

idle

Middleware socket

Billing app normally holds this socket; middleware owns the USB port

Q200 — put a QR on screen

Reply comes back as R200

The tag table lists TO with a 3-digit length field, but every worked example in the spec uses 2. Tick the box to send the table's version.

Q100 — report the outcome

Reply comes back as R100

Send anything

Straight onto the socket, no validation

Error codes and tag lengths
CodeMeaning
00Success
01Communication error
02Invalid command
03Missing parameter
98Timeout
99Malfunction or decline
TagFieldLength digitsMax value
BNBrand name218
MNMerchant name218
QRQR string49999
AMAmount, paise210
TOTimeout, seconds2 in examples, 3 in table3
STStatus22
FMFooter message218
ERError message218

Wire log