Summary
The Lumens DC153 is a document camera supporting RS-232 serial control via a half-duplex asynchronous interface. This spec covers the binary command packet protocol (6-byte packets framed by STX/ACK handshake) including image, lamp, capture, playback, zoom, focus, brightness, and power functions.
Transport
# RS-232 only per source. Wire diagram shows DB9 null-modem (PC RX/TX crossed, GND-GND).
protocols:
- serial
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none # source: "Flow control: NA"
auth:
type: none # inferred: no auth procedure in source
Protocol framing (per source):
- Transmit method: Asynchronous Half-Duplex Serial
- Handshake: PC sends STX = 0x73 ('s'), MASTER replies ACK = 0xAA
- Packet: 6 bytes —
A0h | CMD | P1 | P2 | P3 | AFh(P3 reserved 00h for transmit; carries status byteSton return) - Inter-byte delay: 0.1 ms
- Master active time: 10 ms < Time < 12 s
- Return status
St: 0 = Action Succeed, 1 = NAK (No Action), 2 = Ignore (Command not in list)
Traits
# Inferred from documented commands:
# - powerable (Power On/Off command present)
# - routable (Source command switches Camera/PC input)
# - queryable (multiple "Call *" status query commands present)
# - levelable (Brightness Control, Zoom Control, Focus Control, Set R/B value)
Actions
# Each row from the source command packet table is a separate action.
# Literal hex payloads preserved verbatim from source (A0h prefix + CMD byte + params + 00h + AFh suffix).
# "Call *" entries are queries (kind: query) returning state.
- id: reset
label: Reset to Factory
kind: action
command: "A0 03 00 00 00 AF"
params: []
notes: "P1 must be 00h for factory reset."
- id: af_one_push_trigger
label: AF One Push Trigger
kind: action
command: "A0 A3 00 00 00 AF"
params: []
notes: "Triggers one-shot autofocus."
- id: white_balance_one_push_trigger
label: White Balance One Push Trigger
kind: action
command: "A0 22 00 00 00 AF"
params: []
notes: "Triggers one-shot auto white balance."
- id: freeze
label: Freeze
kind: action
command: "A0 2C {P1} 00 00 AF"
params:
- name: P1
type: integer
description: "00 = Off, 01 = On"
- id: image_mode
label: Image Mode
kind: action
command: "A0 36 {P1} 00 00 AF"
params:
- name: P1
type: integer
description: "00=Normal, 01=Gray, 02=Film, 03=Positive, 04=Microscope"
- id: source_select
label: Source Select
kind: action
command: "A0 37 {P1} 00 00 AF"
params:
- name: P1
type: integer
description: "00=Camera, 01=PC"
- id: lamp
label: Lamp
kind: action
command: "A0 38 {P1} 00 00 AF"
params:
- name: P1
type: integer
description: "00=Off, 01=On"
- id: key_function
label: Remote Key Function
kind: action
command: "A0 A0 {P1} 00 00 AF"
params:
- name: P1
type: integer
description: "01=Set, 02=Up, 03=Down, 04=Left, 05=Right, 06=Menu"
- id: set_rb_value
label: Set R/B Gain
kind: action
command: "A0 A1 {P1} {P2} 00 AF"
params:
- name: P1
type: integer
description: "Red gain value (0~96)"
- name: P2
type: integer
description: "Blue gain value (0~96)"
- id: call_rb_value
label: Call R/B Value
kind: query
command: "A0 A2 00 00 00 AF"
params: []
notes: "Returns Red value in P1 (0~96), Blue value in P2 (0~96)."
- id: set_sharpness
label: Set Sharpness (Gamma)
kind: action
command: "A0 A7 {P1} 00 00 AF"
params:
- name: P1
type: integer
description: "00=Photo, 01=Text"
- id: power_on_off
label: Power On/Off
kind: action
command: "A0 B1 {P1} 00 00 AF"
params:
- name: P1
type: integer
description: "00=Off, 01=On"
- id: capture
label: Capture
kind: action
command: "A0 B2 00 {P2} 00 AF"
params:
- name: P2
type: integer
description: "00 = Normal Capture. Returned RP2 = amount of currently stored images."
- id: playback
label: Playback
kind: action
command: "A0 B3 00 {P2} 00 AF"
params:
- name: P2
type: integer
description: "00 = Normal Playback (80-picture playback index). Returned RP2 = amount of currently stored images."
- id: flip
label: Flip
kind: action
command: "A0 B5 {P1} 00 00 AF"
params:
- name: P1
type: integer
description: "00=Disable, 01=Flip"
- id: delete
label: Delete
kind: action
command: "A0 B6 {P1} {P2} 00 AF"
params:
- name: P1
type: integer
description: "00=delete one picture, 01=delete all pictures, 02=Format"
- name: P2
type: integer
description: "00 = Delete one image (Execute Playback and Playback Index only). Returned RP2 = amount of currently stored images."
- id: call_digital_zoom_position
label: Call Digital Zoom Position
kind: query
command: "A0 62 00 00 00 AF"
params: []
notes: "Returns P1: 100 (Wide) ~ 1600 (Tele)."
- id: call_focus_position
label: Call Focus Position
kind: query
command: "A0 64 00 00 00 AF"
params: []
notes: "Returns P1P2 (16-bit): 0 (Near) ~ Max (Far)."
- id: call_freeze_status
label: Call Freeze Status
kind: query
command: "A0 78 00 00 00 AF"
params: []
notes: "Returns P1: 00=Off, 01=On."
- id: call_flip_status
label: Call Flip Status
kind: query
command: "A0 79 00 00 00 AF"
params: []
notes: "Returns P1: 00=Off, 01=On."
- id: call_ae_status
label: Call AE Status
kind: query
command: "A0 80 00 00 00 AF"
params: []
notes: "Returns P1: 00=Manual, 01=Auto; P2: Brightness value."
- id: call_image
label: Call Image Mode
kind: query
command: "A0 87 00 00 00 AF"
params: []
notes: "Returns P1: 00=Normal, 01=Gray, 02=Film, 03=Positive, 04=Microscope."
- id: call_lamp_status
label: Call Lamp Status
kind: query
command: "A0 50 00 00 00 AF"
params: []
notes: "Returns P1: 00=Off, 01=On."
- id: call_text_photo_status
label: Call Text/Photo Status
kind: query
command: "A0 51 00 00 00 AF"
params: []
notes: "Returns P1: 00=Photo, 01=Text."
- id: brightness_control
label: Brightness Control
kind: action
command: "A0 39 {P1} {P2} 00 AF"
params:
- name: P1
type: integer
description: "02=Set brightness to P2 value directly, 01=Increase (+1), 00=Decrease (-1)"
- name: P2
type: integer
description: "When P1=02, target brightness value (auto adjusts to that value)."
- id: zoom_control
label: Zoom Control
kind: action
command: "A0 3A {P1} 00 00 AF"
params:
- name: P1
type: integer
description: "01=Zoom In (+1), 00=Zoom Out (-1). Returned RP1(LOW)/RP2(HIGH) = Zoom position."
- id: focus_control
label: Focus Control
kind: action
command: "A0 3B {P1} 00 00 AF"
params:
- name: P1
type: integer
description: "01=Focus (+1, far), 00=Focus (-1, near). Returned RP1(LOW)/RP2(HIGH) = Focus position."
- id: reflash_eeprom
label: Reflash Important Values on EEPROM
kind: action
command: "A0 42 {P1} 00 00 AF"
params:
- name: P1
type: integer
description: "02=Image Data, 03=User Preset, 04=Error Code. Clears saved EEPROM values; returns to defaults after reboot."
- id: call_version
label: Call Version
kind: query
command: "A0 45 00 00 00 AF"
params: []
notes: "Returns firmware version as 'DK P1.P2 P3'."
- id: call_preset_menu
label: Call Preset Menu
kind: query
command: "A0 A4 00 00 00 AF"
params: []
Feedbacks
# One entry per observable state surfaced by a "Call *" query or return-packet field.
- id: power_state
type: enum
values: [on, off]
source_query: power_on_off
- id: freeze_state
type: enum
values: [off, on]
source_query: call_freeze_status
- id: flip_state
type: enum
values: [disabled, enabled]
source_query: call_flip_status
- id: lamp_state
type: enum
values: [off, on]
source_query: call_lamp_status
- id: image_mode
type: enum
values: [normal, gray, film, positive, microscope]
source_query: call_image
- id: source_input
type: enum
values: [camera, pc]
source_query: source_select
- id: sharpness_mode
type: enum
values: [photo, text]
source_query: call_text_photo_status
- id: ae_mode
type: enum
values: [manual, auto]
source_query: call_ae_status
- id: brightness_value
type: integer
source_query: call_ae_status
notes: "Returned in P2 of AE Status response."
- id: digital_zoom_position
type: integer
range: [100, 1600]
source_query: call_digital_zoom_position
notes: "P1 of response. 100=Wide, 1600=Tele."
- id: focus_position
type: integer
range: [0, 65535]
source_query: call_focus_position
notes: "P1P2 (16-bit little-endian) of response. 0=Near, Max=Far."
- id: red_gain
type: integer
range: [0, 96]
source_query: call_rb_value
- id: blue_gain
type: integer
range: [0, 96]
source_query: call_rb_value
- id: stored_image_count
type: integer
source_query: capture
notes: "Returned in RP2 after Capture, Playback, or Delete operations."
- id: firmware_version
type: string
source_query: call_version
notes: "Format: 'DK P1.P2 P3'."
- id: command_status
type: enum
values: [succeed, nak, ignore]
notes: "Status byte St in every return packet: 0=Action Succeed, 1=NAK (No Action), 2=Ignore (Command not in list)."
Variables
# Section omitted: every documented parameter is either a discrete command
# (covered as an Action) or returned via a query (covered as a Feedback).
# No standalone settable-but-not-discrete variables exist in this protocol.
Events
# Section omitted: source describes no unsolicited push notifications.
# All device-to-host traffic is solicited (reply to a sent command).
Macros
# Section omitted: source defines no multi-step macro sequences.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures,
# or power-on sequencing requirements. Only the Reflash EEPROM command
# mentions a side effect (clears saved EEPROM, defaults restored after reboot);
# controller-side confirmation is recommended but not mandated by source.
Notes
- Packet framing is non-standard ASCII: bytes are 6-byte fixed frames
A0h CMD P1 P2 P3 AFh, not ASCII text or VISCA. STX (0x73) / ACK (0xAA) handshake precedes every command; PC must wait for ACK before transmitting the 6 payload bytes. - Inter-byte gap of 0.1 ms is required during payload transmission; Master reply may take 10 ms–12 s depending on command.
- Return packets mirror the request structure but byte 5 carries the status byte
St(0=OK, 1=NAK, 2=Ignore) instead of the reserved00h. - Source contains obvious typos: "FlIm" (Film), "Microscpoe" (Microscope), "Reflash" (Reflash), "Uncton" (Function). Param values copied verbatim from source where present; inferred corrections only applied to labels/descriptions.
- The DC153 was discontinued by Lumens; this protocol document is the only known machine-readable spec and appears to predate the current mylumens.com catalog.
Provenance
source_domains:
- web.archive.org
- mylumens.com
source_urls:
- http://web.archive.org/web/20100925084728/http://lumens.com.tw/files/TechDoc/RS-232-DC153-2006-0814.pdf
- "https://www.mylumens.com/Download/RS128%20-%20LC200%20RS-232%20command%20set_1_5.pdf"
retrieved_at: 2026-09-16T03:39:11.424Z
last_checked_at: 2026-09-16T22:17:06.816Z
Verification Summary
verdict: verified
checked_at: 2026-09-16T22:17:06.816Z
matched_actions: 30
action_count: 30
confidence: medium
summary: "All 30 spec actions match source rows 1-30 by unique CMD byte; transport params verified verbatim; 1:1 coverage. (3 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware version not stated in source"
- "source contains no safety warnings, interlock procedures,"
- "firmware version compatibility range not stated in source."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0