Summary
The Lumens CL510 is a document camera (visual presenter) controllable over RS-232 serial. This spec covers the V02 command set, transmitted as 6-byte packets (A0h CMD P1 P2 P3 AFh) at 9600 bps, 8N1, with the camera returning a status packet for every command.
Transport
protocols:
- serial
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
start_bits: 1
flow_control: null # UNRESOLVED: flow control not stated in source
auth:
type: none # inferred: no auth procedure in source
Command packet format
| Byte | Field | Value |
|---|---|---|
| 1 | STX | A0h |
| 2 | CMD | 00h–FFh |
| 3 | Parameter 1 | 00h–FFh |
| 4 | Parameter 2 | 00h–FFh |
| 5 | Parameter 3 | 00h–FFh |
| 6 | ETX | AFh |
Return packet format
A0h CMD P1 P2 P3 St AFh — Status byte St bits:
- bit 0–1:
00= ACK,01= NAK,10= IGNORE,11= Not Used - bit 4: Focus moving/stop
- bit 5: Zoom moving/stop
- bit 6: Iris moving/stop
Traits
# - powerable (Power B1h, System ON/OFF B0h)
# - queryable (Call * query commands)
# - routable # UNRESOLVED: no input/source selection commands
# - levelable (Iris P2 brightness, focus/zoom position, brightness -1/+1)
Actions
- id: preset_or_factory_reset
label: Preset / Factory Reset
kind: action
command: "A0 03 {p1} {p2} {p3} AF"
params:
- { name: p1, type: integer, description: "0=Preset, 1=Factory Reset" }
- { name: p2, type: integer, description: "0=Load preset, 1=Save preset (when p1=0)" }
- { name: p3, type: integer, description: "Preset index 1-8 (when p1=0)" }
- id: slideshow_on_off
label: Slideshow On/Off
kind: action
command: "A0 04 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Off, 1=On" }
- id: slideshow_delay
label: Slideshow Delay
kind: action
command: "A0 06 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=0.5s, 1=1s, 2=3s, 3=5s, 4=10s, 5=Manual" }
- id: image_record_quality
label: Image / Record Quality
kind: action
command: "A0 07 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=High, 1=Medium, 2=Low" }
- id: copy_nand_to_usb
label: Copy From Nand to USB
kind: action
command: "A0 08 00 00 00 AF"
params: []
- id: zoom_stop
label: Zoom Stop
kind: action
command: "A0 10 00 00 00 AF"
params: []
- id: zoom_start_no_af
label: Zoom Start (No AF)
kind: action
command: "A0 11 {p1} {p2} 00 AF"
params:
- { name: p1, type: integer, description: "0=Tele, 1=Wide" }
- { name: p2, type: integer, description: "Speed (range not specified in source)" }
- id: zoom_direct_no_af
label: Zoom Direct (Straight, No AF)
kind: action
command: "A0 13 {p1} 00 {p3} AF"
params:
- { name: p1, type: integer, description: "LowByte zoom position. XGA: 0-56, SXGA: 0-48, WXGA: 0-50, UXGA: 0-44, 1080P: 0-40" }
- { name: p3, type: integer, description: "Speed (range not specified in source)" }
- id: auto_erase
label: Auto Erase
kind: action
command: "A0 14 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Off, 1=On" }
- id: digital_zoom_limit
label: Digital Zoom Limit
kind: action
command: "A0 15 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0x01-0x0A (1x-10x digital zoom limit)" }
- id: digital_zoom_direct
label: Digital Zoom Direct
kind: action
command: "A0 18 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "XGA: 0-44, SXGA: 0-52, WXGA: 0-50, UXGA: 0-56, 1080P: 0-60" }
- id: focus_stop
label: Focus Stop
kind: action
command: "A0 19 00 00 00 AF"
params: []
- id: focus_start
label: Focus Start
kind: action
command: "A0 1A {p1} {p2} 00 AF"
params:
- { name: p1, type: integer, description: "0=Near, 1=Far" }
- { name: p2, type: integer, description: "Speed 0-6" }
- id: focus_direct
label: Focus Direct
kind: action
command: "A0 1B {p1} {p2} {p3} AF"
params:
- { name: p1, type: integer, description: "LowByte of focus position 0-478" }
- { name: p2, type: integer, description: "HighByte of focus position 0-478" }
- { name: p3, type: integer, description: "Speed 0-6" }
- id: zoom_start_with_af
label: Zoom Start (with AF)
kind: action
command: "A0 1D {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Tele, 1=Wide" }
- id: zoom_direct_with_af
label: Zoom Direct (Straight, with AF)
kind: action
command: "A0 1F {p1} 00 {p3} AF"
params:
- { name: p1, type: integer, description: "LowByte zoom position. XGA: 0-56, SXGA: 0-48, WXGA: 0-50, UXGA: 0-44, 1080P: 0-40" }
- { name: p3, type: integer, description: "Speed (range not specified in source)" }
- id: white_balance
label: White Balance (AWB, Auto Tune)
kind: action
command: "A0 22 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Auto Tune, 1=AWB" }
- id: set_pan_mode
label: Set Pan Mode
kind: action
command: "A0 26 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Off, 1=On" }
- id: mask_mode
label: Mask Mode
kind: action
command: "A0 27 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Disable, 1=Mask, 2=Highlight" }
- id: freeze
label: Freeze
kind: action
command: "A0 2C {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Off, 1=On" }
- id: iris
label: Iris
kind: action
command: "A0 30 {p1} {p2} 00 AF"
params:
- { name: p1, type: integer, description: "0=AE ON NightVision OFF, 1=Manual AE OFF, 2=AE OFF, 3=Manual" }
- { name: p2, type: integer, description: "Brightness 0-100 (Normal 50/60Hz) or 0-80 (NightVision 60Hz)" }
- id: negative_film
label: Negative (film)
kind: action
command: "A0 36 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Off, 1=On" }
- id: color_gray
label: Color (gray)
kind: action
command: "A0 37 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Photo, 1=Gray" }
- id: language_select
label: Language Select
kind: action
command: "A0 38 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=English, 1=Traditional Chinese, 2=German, 3=French, 4=Spanish, 5=Russian, 6=Dutch, 7=Finnish, 8=Polish, 9=Italian, 10=Portuguese, 11=Swedish, 12=Czech, 13=Simplified Chinese" }
- id: brightness_control
label: Brightness Control
kind: action
command: "A0 39 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=-1, 1=+1 (single-step nudge)" }
- id: disable_dz_after_optical_zoom
label: Disable Digital Zoom After Optical Zoom
kind: action
command: "A0 40 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Disable, 1=Enable" }
- id: call_master_version
label: Call Master Version
kind: query
command: "A0 45 00 00 00 AF"
params: []
notes: "Return packet encodes PVLxxx ASCII in P1/P2/P3."
- id: call_ae_status
label: Call AE Status
kind: query
command: "A0 46 00 00 00 AF"
params: []
notes: "P1 in return: 0=Off, 1=On."
- id: enable_disable_logo
label: Enable / Disable LOGO Image
kind: action
command: "A0 47 {p1} {p2} 00 AF"
params:
- { name: p1, type: integer, description: "0=power-on setting, 1=power-off setting" }
- { name: p2, type: integer, description: "0=Default logo, 1=Customer logo" }
- id: playback_page_change
label: Playback Image Index Change Page
kind: action
command: "A0 4A {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Page Up, 1=Page Down" }
- id: all_osd_on_off
label: All OSD On/Off
kind: action
command: "A0 4B {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Off, 1=On" }
- id: call_slave_version
label: Call Slave Version
kind: query
command: "A0 4D 00 00 00 AF"
params: []
notes: "Return packet encodes PVMxxx ASCII in P1/P2/P3."
- id: call_laser_status
label: Call Laser Status
kind: query
command: "A0 50 00 00 00 AF"
params: []
notes: "P1 in return: 0=Off, 1=On."
- id: call_text_photo_status
label: Call Text/Photo Status
kind: query
command: "A0 51 00 00 00 AF"
params: []
notes: "P1 in return: 0=Photo, 1=Text, 2=Gray."
- id: reg1
label: reg1
kind: action
command: "A0 52 {p1} {p2} 00 AF"
params:
- { name: p1, type: integer, description: "0=Read, 1=Write" }
- { name: p2, type: integer, description: "0x00-0xFF register value (write) or 0x00 (read - value returned in return packet)" }
- id: reg2
label: reg2
kind: action
command: "A0 53 {p1} {p2} 00 AF"
params:
- { name: p1, type: integer, description: "0=Read, 1=Write" }
- { name: p2, type: integer, description: "0x00-0xFF register value" }
- id: reg3
label: reg3
kind: action
command: "A0 54 {p1} {p2} 00 AF"
params:
- { name: p1, type: integer, description: "0=Read, 1=Write" }
- { name: p2, type: integer, description: "0x00-0xFF register value" }
notes: "Source description for this row contains a copy-paste artefact referencing AC 50/60Hz power state and zoom positions; behaviour not clearly specified."
- id: call_ac_50_60hz_power_state
label: Call AC 50/60 Hz Power State
kind: query
command: "A0 58 00 00 00 AF"
params: []
- id: call_zoom_position
label: Call Zoom Position
kind: query
command: "A0 60 00 00 00 AF"
params: []
notes: "Return packet carries current optical zoom position in P1/P2."
- id: call_digital_zoom_position
label: Call Digital Zoom Position
kind: query
command: "A0 62 00 00 00 AF"
params: []
notes: "P1 in return. XGA: 0-44, SXGA: 0-52, WXGA: 0-50, UXGA: 0-56, 1080P: 0-60."
- id: call_focus_position
label: Call Focus Position
kind: query
command: "A0 64 00 00 00 AF"
params: []
notes: "P1 LowByte / P2 HighByte encode position 0-956; P3 carries speed 0-5."
- id: call_freeze_status
label: Call Freeze Status
kind: query
command: "A0 78 00 00 00 AF"
params: []
notes: "P1 in return: 0=Off, 1=On."
- id: call_iris_status
label: Call Iris Status
kind: query
command: "A0 7A 00 00 00 AF"
params: []
notes: "P1: 0=Auto, 1=Manual. P2: brightness 0-100 (Normal 50/60Hz) or 0-80 (NightVision 60Hz)."
- id: call_negative
label: Call Negative
kind: query
command: "A0 87 00 00 00 AF"
params: []
notes: "P1 in return: 0=Off, 1=On."
- id: call_color
label: Call Color
kind: query
command: "A0 88 00 00 00 AF"
params: []
notes: "P1 in return: 0=Photo, 1=Gray."
- id: call_brightness_position
label: Call Brightness Position
kind: query
command: "A0 89 00 00 00 AF"
params: []
notes: "P2 in return. Normal 50/60Hz: 0-100. Microscope 60Hz: 0-134, Microscope 50Hz: 0-128. NightVision 60Hz: 0-80."
- id: call_mix_zoom_position
label: Call Mix Zoom Position
kind: query
command: "A0 8A 00 00 00 AF"
params: []
notes: "P1 in return: LowByte zoom position 0-100."
- id: call_menu_status
label: Call Menu Status
kind: query
command: "A0 8B 00 00 00 AF"
params: []
notes: "P1 in return: 0=Off, 1=On."
- id: capture_type
label: Capture Type
kind: action
command: "A0 96 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Single, 1=Continuous, 2=Disable" }
- id: capture_time
label: Capture Time
kind: action
command: "A0 97 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=1hr, 1=2hr, 2=4hr, 3=8hr, 4=24hr, 5=48hr, 6=72hr" }
- id: capture_interval
label: Capture Interval
kind: action
command: "A0 98 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=5s, 1=10s, 2=30s, 3=1min, 4=2min, 5=5min" }
- id: key_function
label: Key Function
kind: action
command: "A0 A0 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "1=Enter, 2=Up, 3=Down, 4=Left, 5=Right, 6=Menu" }
- id: af_one_push_trigger
label: AF One Push Trigger
kind: action
command: "A0 A3 01 00 00 AF"
params: []
- id: set_sharpness_gamma
label: Set Sharpness (Gamma)
kind: action
command: "A0 A7 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Photo, 1=Text, 2=Gray" }
- id: set_image_mode
label: Set Image Mode
kind: action
command: "A0 A9 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Normal, 1=Slide, 2=Film" }
- id: night_vision
label: Night Vision
kind: action
command: "A0 AB {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Off, 1=On" }
- id: system_on_off
label: System ON/OFF (All lamp on)
kind: action
command: "A0 B0 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Off, 1=On" }
- id: power
label: Power
kind: action
command: "A0 B1 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Off, 1=On" }
- id: capture
label: Capture
kind: action
command: "A0 B2 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Capture, 1=Record" }
- id: playback_thumbnail
label: Playback Thumbnail
kind: action
command: "A0 B3 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Thumbnail, 1=PBP Thumbnail" }
- id: preview_rotation
label: Preview Rotation
kind: action
command: "A0 B4 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Rotate 0°, 1=Rotate 90°, 2=Rotate 180°, 3=Rotate 270°" }
- id: delete
label: Delete
kind: action
command: "A0 B6 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Delete one, 1=Delete all, 2=Format" }
- id: call_system_status
label: Call System Status
kind: query
command: "A0 B7 00 00 00 AF"
params: []
notes: "Return P1: 0=not ready, 1=ready to receive command. Return P2: 0=power off, 1=power on."
- id: laser_on_off
label: Laser On/Off
kind: action
command: "A0 C1 {p1} 00 00 AF"
params:
- { name: p1, type: integer, description: "0=Off, 1=On" }
Feedbacks
- id: system_status
type: enum
values: [not_ready, ready]
source: "Call System Status (A0 B7 ...) P1"
- id: power_state
type: enum
values: [off, on]
source: "Power (A0 B1) or Call System Status P2"
- id: ae_status
type: enum
values: [off, on]
source: "Call AE Status (A0 46 ...) P1"
- id: laser_status
type: enum
values: [off, on]
source: "Call Laser Status (A0 50 ...) P1"
- id: text_photo_mode
type: enum
values: [photo, text, gray]
source: "Call Text/Photo Status (A0 51 ...) P1"
- id: freeze_status
type: enum
values: [off, on]
source: "Call Freeze Status (A0 78 ...) P1"
- id: iris_mode
type: enum
values: [auto, manual]
source: "Call Iris Status (A0 7A ...) P1"
- id: iris_brightness
type: integer
range: "0-100 (Normal 50/60Hz) or 0-80 (NightVision 60Hz)"
source: "Call Iris Status P2"
- id: negative
type: enum
values: [off, on]
source: "Call Negative (A0 87 ...) P1"
- id: color_mode
type: enum
values: [photo, gray]
source: "Call Color (A0 88 ...) P1"
- id: brightness_position
type: integer
range: "0-100 (Normal), 0-128/0-134 (Microscope 50/60Hz), 0-80 (NightVision 60Hz)"
source: "Call Brightness Position (A0 89 ...) P2"
- id: mix_zoom_position
type: integer
range: "0-100"
source: "Call Mix Zoom Position (A0 8A ...) P1"
- id: menu_status
type: enum
values: [off, on]
source: "Call Menu Status (A0 8B ...) P1"
- id: zoom_position
type: integer
range: "resolution-dependent (see action notes)"
source: "Call Zoom Position (A0 60 ...) P1/P2"
- id: digital_zoom_position
type: integer
range: "XGA: 0-44, SXGA: 0-52, WXGA: 0-50, UXGA: 0-56, 1080P: 0-60"
source: "Call Digital Zoom Position (A0 62 ...) P1"
- id: focus_position
type: integer
range: "0-956 (P1 LowByte / P2 HighByte)"
source: "Call Focus Position (A0 64 ...) P1/P2"
- id: ac_power_state
type: integer
range: "50/60 Hz AC line frequency (encoding not specified)"
source: "Call AC 50/60 Hz Power State (A0 58 ...)"
- id: master_version
type: string
source: "Call Master Version (A0 45 ...) - PVLxxx ASCII in P1/P2/P3"
- id: slave_version
type: string
source: "Call Slave Version (A0 4D ...) - PVMxxx ASCII in P1/P2/P3"
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or power-on sequencing requirements.
Notes
- This is a visual presenter / document camera; the listed commands are image-pipeline controls (zoom, focus, freeze, capture, slideshow, OSD) rather than AV routing.
- The vendor documentation labels the document "CL510,V02 Command Set" but only documents revision 1.0 dated 2020-02-14 applying to firmware PVL303 / PVM105. Whether later firmware revisions extend the command set is not stated.
- For zoom and focus, the position ranges differ by output resolution (XGA / SXGA / WXGA / UXGA / 1080P). An integrator must know the current output resolution to interpret position values.
- The
reg1/reg2/reg3commands give generic read/write access to internal register space; semantics are not described in the source. - An Ethernet command set for the CL510 exists per the vendor downloads index but is not part of this revision; this spec is RS-232 only.
Provenance
source_domains:
- mylumens.com
source_urls:
- "https://www.mylumens.com/Download/RS132%20-%20CL510,V02%20RS-232%20command%20set_1_0.pdf"
- "https://www.mylumens.com/Download/CL510,V01%20RS-232%20command%20set_1_2.pdf"
retrieved_at: 2026-04-26T18:08:49.991Z
last_checked_at: 2026-06-02T17:23:16.518Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T17:23:16.518Z
matched_actions: 64
action_count: 64
confidence: medium
summary: "All 64 spec actions match source command table one-to-one with identical opcodes; transport parameters (9600 baud, 8N1) verified verbatim. (6 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "An Ethernet command set for the CL510 is referenced in vendor indexes but was not included in the source for this revision. RS-232 only."
- "flow control not stated in source"
- "a printing artefact in the source duplicates \"Parameter1\" in the return packet table; the second instance is treated here as Parameter 3 to match the command packet structure."
- "no input/source selection commands"
- "source contains no safety warnings, interlock procedures, or power-on sequencing requirements."
- "serial flow control not stated; AC 50/60 Hz return value encoding not specified; reg3 row description contains source-side ambiguity; firmware compatibility range beyond PVL303 / PVM105 unknown; Ethernet command set not included."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0