# ALC-4096 — RS-232 Serial Control and Command Reference

## RS-232 Connection

### Protocol Settings

| Parameter | Value |
|-----------|-------|
| Baud rate | 9600 |
| Data bits | 8 |
| Stop bits | 1 |
| Parity | None |

### Physical Connection

**Controller side:** CN8 (Molex 53261-0671 compatible; mating: Molex 51021-0600)

| CN8 Pin | Description | DB9 Pin | Description |
|---------|-------------|---------|-------------|
| 4 | RS-232 Tx Data | 2 | RS-232 Rx Data |
| 5 | Ground | 5 | Ground |
| 6 | RS-232 Rx Data | 3 | RS-232 Tx Data |

RS-232 connection cable P/N 426171800-3 (300mm) available separately.

### RS-232 via USB-C (Rev 2x–30 and later)

PCB revision 2x–30 adds USB-to-RS-232 via U29 (CH340K). Jumpers JP13 and JP14 select the RS-232 path:

| JP13 & JP14 | RS-232 Path |
|-------------|-------------|
| 1-2 closed | RS-232 via CN8 connector |
| 2-3 closed | RS-232 via USB-C port (P6) |

### Software

OSD functions can be controlled by sending RS-232 commands. Compatible programs include Accessport, Telix, or the Serial Utility program developed by Digital View. Contact local support for information.

**Command buffer limits:**
- Via CN8: up to 380 bytes per command string
- Via J1: up to 50 bytes per command string

### Data Encoding Convention

Values in RS-232 commands use ASCII-coded hex numbers:
- `n` = 1-byte: e.g., value 0x1 is sent as "1" (0x31)
- `nn` = 2-byte: e.g., value 0x1E is sent as "1","E" (0x31, 0x45)

---

## 1. Button Equivalent Commands

| Function | Command | Description |
|----------|---------|-------------|
| Menu button | 0xF7 | Menu button pressed |
| Select-down button | 0xFA | Select-down button pressed |
| Select-up button | 0xFB | Select-up button pressed |
| Right/+ button | 0xFC | Right/+ button pressed |
| Left/− button | 0xFD | Left/− button pressed |

---

## 2. Parameter Commands

Each parameter command supports these operations:
- **Set:** `<cmd>, nn` — Set to value nn
- **Increment:** `<cmd>, "+"` — Increase by one step
- **Decrement:** `<cmd>, "-"` — Decrease by one step
- **Reset:** `<cmd>, "R"` or `"r"` — Reset to default
- **Query:** `<cmd>, "?"` — Query current value
- **Min query:** `<cmd>, "n"` — Query minimum (where supported)
- **Max query:** `<cmd>, "m"` — Query maximum (where supported)
- **Source-specific set:** `<cmd>, "i", ss, nn` — Set for specific source
- **Source-specific query:** `<cmd>, "o", ss` — Query for specific source

### Image Controls

| Function | Command | Range | Default | Notes |
|----------|---------|-------|---------|-------|
| Black level | 0x81 | 0x00–0x64 (0–100%) | 0x32 (50%) | Supports source-specific set/query |
| Contrast | 0x82 | 0x00–0x64 (0–100%) | 0x32 (50%) | "A"/"a" prefix for all; supports source-specific |
| Saturation | 0x83 | 0x00–0x64 (0–100%) | 0x32 (50%) | |
| Hue | 0x84 | 0x00–0x64 (0–100%) | 0x32 (50%) | |
| Sharpness | 0x8A | 0x00–0x34 ("0"–"4") | 0x32 ("2") | |
| Aspect ratio | 0x8C | See values below | "1" (Full) | |
| Display orientation | 0x8E | "0" = normal, "5" = 180° | "0" | |

**Aspect ratio values (0x8C):**
- `"0"` — 1:1
- `"1"` — Full screen (default)
- `"9"` — 4:3
- `"A"` — 16:9
- `"F"` — 5:4

### Audio Controls

| Function | Command | Range | Default | Notes |
|----------|---------|-------|---------|-------|
| Volume (L+R) | 0x80, "A" | 0x00–0x64 (0–100%) | 0x32 (50%) | |
| Mute on/off | 0x80, "M" | "0" = mute, "1" = audio on | "1" | |

### OSD Controls

| Function | Command | Range | Default | Notes |
|----------|---------|-------|---------|-------|
| OSD H position | 0x90 | 0x00–0x64 (left–right) | 0x32 (middle) | |
| OSD V position | 0x91 | 0x00–0x64 (top–bottom) | 0x32 (middle) | |
| OSD transparency | 0x92 | 0x00–0x64 (0–100%) | 0x00 | |
| OSD menu timeout | 0x93 | "0x30 0x30" = ON (always), "0x30 0x42" = 11s (default), up to "0x33 0x43" = 60s | 11s | |
| OSD menu rotate | 0x8F | "0" = 0°, "1" = 270°, "2" = 180°, "3" = 90° | "0" | |
| OSD status enquiry | 0xBB | — | — | Returns "0" = off, "1" = on |
| OSD turn off | 0xBD | — | — | Returns "0" = fail, "1" = success |

### Input and Source Controls

| Function | Command | Values | Default |
|----------|---------|--------|---------|
| Input main select | 0x98 | "0x48,0x31" = HDMI; "0x50,0x31" = DisplayPort | DisplayPort |
| Auto source seek | 0x99 | "0" = Off; "1" = On | "1" (On) |

### Color Controls

| Function | Command | Values | Default |
|----------|---------|--------|---------|
| Gamma | 0x9D | "5" = 1.8, "7" = 2.0, "2" = 2.2, "A" = 2.4, "C" = 2.6 | "2" (2.2) |
| Color temperature | 0xB3 | "2" = 6500K, "4" = USER, "5" = 9300K, "6" = 7500K, "7" = 5800K, "8" = sRGB | "2" (6500K) |
| Red level (User temp) | 0xB4 | 0x00–0xFF (0–255) | 0x80 |
| Green level (User temp) | 0xB5 | 0x00–0xFF (0–255) | 0x80 |
| Blue level (User temp) | 0xB6 | 0x00–0xFF (0–255) | 0x80 |

For color temperature and RGB levels, source-specific set/query is supported using "i", ss, c, nn and "o", ss, c formats (where c = 0x34 for USER color temperature, ss references input per 0x98).

### Hotkey Configuration

| Function | Command | Values | Default |
|----------|---------|--------|---------|
| Hot Key 1 (+/− keys) | 0xA0, "1" | "1"=Volume, "2"=Black level, "3"=Contrast, "4"=Saturation, "5"=Input, "B"=No function, "E"=Aspect, "G"=Hue, "H"=Backlight, "L"=Sharpness | "H" (Backlight) |
| Hot Key 2 (Up/Dn keys) | 0xA0, "2" | Same values as above | "5" (Input) |

### Power and System Controls

| Function | Command | Values | Default |
|----------|---------|--------|---------|
| Power save | 0x9F | "0" = Off, "1" = On | "1" (On) |
| Default power state | 0xEE, 0x6B, 0x50 | "0" = Off, "1" = On | "1" (On) |
| Runtime counter | 0xA1 | nnnnn (×0.5 hour); max 0x1FFFE = 65535 hours | — |

Runtime counter counts when backlight is on.

### Backlight Controls

| Function | Command | Range | Default |
|----------|---------|-------|---------|
| Backlight level | 0xE0 | 0x00–0x64 (0–100%) | 0x64 (100%) |
| Backlight on/off | 0xE1 | "0" = Off, "1" = On | "1" (On) |
| Backlight D/A or PWM | 0xE5 | "0" = PWM, "1" = D/A | "0" (PWM) |
| Backlight PWM frequency | 0xE6 | 100–440 Hz in 20Hz steps | 160 Hz |
| Backlight invert | 0xE7 | "0" = Off, "1" = On | "0" (Off) |
| Min backlight level | 0xEE, 0x5C | 0x00–0x32 (0–50%) | 5% |

**PWM frequency hex values (0xE6):**

| Frequency | Value |
|-----------|-------|
| 100 Hz | "0","6","4" |
| 120 Hz | "0","7","8" |
| 140 Hz | "0","8","C" |
| 160 Hz | "0","A","0" (default) |
| 180 Hz | "0","B","4" |
| 200 Hz | "0","C","8" |
| 220 Hz | "0","D","C" |
| 240 Hz | "0","F","0" |
| 260 Hz | "1","0","4" |
| 280 Hz | "1","1","8" |
| 300 Hz | "1","2","C" |
| 320 Hz | "1","4","0" |
| 340 Hz | "1","5","4" |
| 360 Hz | "1","6","8" |
| 380 Hz | "1","7","C" |
| 400 Hz | "1","9","0" |
| 420 Hz | "1","A","4" |
| 440 Hz | "1","B","8" |

### Video Signal Queries

| Function | Command | Return Format |
|----------|---------|---------------|
| Horizontal resolution | 0xB7 | 3–4 digit hex (pixels) |
| Vertical resolution | 0xB8 | 3 digit hex (lines) |
| Horizontal sync frequency | 0xB9 | 3 digit hex (units of 100Hz) |
| Vertical sync frequency | 0xBA | 3 digit hex + "i"/"p" (interlace/progressive) |
| Video input status | 0xC9 | "0","0" = no video; "H","1" = HDMI; "P","1" = DP; "U","1" = USB-C |

### OSD Lock

| Function | Command | Values |
|----------|---------|--------|
| OSD switch mount lock | 0xEE, 0x62 | "0" = Unlock (default); "1" = Lock (no response to OSD keys) |

### Sensor Queries

| Function | Command | Return |
|----------|---------|--------|
| Light sensor value | 0xEE, 0x70, 0x50, 0x35, 0x33, 0x3F | Ambient light value (e.g., 1735.7) |
| Onboard temperature | 0xEE, 0x70, 0x50, 0x3B, 0x34, 0x3F | Temperature in °C (e.g., +25.5) |

---

## 3. Panel Timing Commands (0xEE, 0x74)

These commands set panel timing parameters to the SRAM of the ALC-4096. Values are BCD decimal in ASCII (e.g., 610 is sent as 0x36 0x31 0x30).

| Sub-cmd | Parameter | Format |
|---------|-----------|--------|
| 0x30 | Typical frame rate | nnn |
| 0x31 | Max frame rate | nnn |
| 0x32 | Min frame rate | nnn |
| 0x33 | Panel style | n: 4 = V-by-One, 5 = eDP 1.2 |
| 0x34 | eDP PHY rate | n: 0 = RBR, 1 = HBR, 2 = HBR2 |
| 0x35 | LVDS/V-by-One output ports | n: 0 = 1 port, 1 = 2 ports, 2 = 4 ports, 3 = 8 ports (default) |
| 0x36 | Hsync back porch | nnnn |
| 0x37 | Display horizontal width | nnnn |
| 0x38 | Vertical total (typical) | nnnn |
| 0x39 | Vertical total (max) | nnnn |
| 0x3A | Vertical total (min) | nnnn |
| 0x3B | Vsync back porch | nnnn |
| 0x3C | Display vertical height | nnnn |
| 0x3D | Horizontal total (typical) | nnnn |
| 0x3E | Horizontal total (max) | nnnn |
| 0x3F | Horizontal total (min) | nnnn |
| 0x40 | Hsync width | nn |
| 0x41 | Vsync height | nn |
| 0x42 | Pixel clock typical (MHz) | nnn |
| 0x43 | Pixel clock max (MHz) | nnn |
| 0x44 | Pixel clock min (MHz) | nnn |
| 0x45 | Panel power on time T1 (ms) | nnnn |
| 0x46 | Panel power on time T2 (ms) | nnnn |
| 0x47 | Panel power on time T3 (ms) | nnnn |
| 0x48 | Panel power off time T4 (ms) | nnnn |
| 0x49 | Panel power off time T5 (ms) | nnnn |
| 0x4A | Panel power off time T6 (ms) | nnnn |
| 0x4B | Read all timings checksum | Sum of parameters 0x30–0x4A |
| 0x4C | Dump all timing parameters | Outputs all SRAM values |
| 0x4D | Output display bit mode | n: 1 = 8-bit, 2 = 10-bit |
| 0x4E | Panel display division | n: 1, 2, 4, or 8 |
| 0x57 | Write SRAM to EEPROM | Returns "1" = success, "0" = fail |

Use sub-command `0x3F` as the 2nd parameter to query/dump current SRAM values.

---

## 4. User EDID Commands (0xEE, 0x76)

| Operation | Command | Notes |
|-----------|---------|-------|
| Select port | 0xEE, 0x76, nn | nn: "0x50,0x31" = DP; "0x48,0x31" = HDMI; "0x55,0x31" = USB-C |
| Send EDID block 0–128 | "S" or "s", followed by 256 ASCII bytes | Returns "1" = success, "0" = fail |
| Send EDID block 129–254 | "E" or "e", followed by 256 ASCII bytes | For EDIDs > 128 blocks; returns "1"/"0" |
| Reset EDID | "R" or "r" | Resets to pre-defined EDID for selected port |

---

## 5. Light Sensor Settings (0xEE, 0x78)

| Sub-cmd | Parameter | Range |
|---------|-----------|-------|
| 0x30 | Light sensor mode | "0x30" = Disable, "0x31" = Enable |
| 0x31–0x3C | Ambient light level 1–12 | 0–1808 (hex: 0x30,0x30,0x30 to 0x37,0x30,0x38) |
| 0x3D–0x48 | Backlight level 1–12 | 0–100 (0x30,0x30,0x30 to 0x30,0x36,0x34) or 0–255 (0x30,0x30,0x30 to 0x30,0x46,0x46) or OFF (0x45,0x45,0x45) |
| 0x3F | Query all settings | Returns "1" = success, "0" = fail |
| 0x57 | Write SRAM to EEPROM | Saves light sensor parameters |

---

## 6. System and Diagnostic Commands

| Function | Command | Return |
|----------|---------|--------|
| RS-232 acknowledge enable/disable | 0xC1, "0"/"1" | "0" = disabled, "1" = enabled (default) |
| Command availability check | 0xC4, nn | "0" = not available, "1" = available |
| Soft power on/off | 0xC8, "0"/"1" | "0" = off, "1" = on; "?" = query |
| Query BIOS version | 0xCB, "0" | "VV.YY.ZZ" (V = release, E = engineering) |
| Query PCBA number | 0xCB, "1" | "41789" for ALC-4096 |
| Query revision number | 0xCB, "3" | "AA" from firmware version VV.YY.ZZ.AA |
| Test pattern | 0xCD, n | "0"=Off, "1"=Red, "2"=Green, "3"=Blue, "4"=White, "5"=Black, "6"=Color Bar, "7"=SMPTE Color Bar, "8"=8-bit Grey Bar |
| Reset parameters | 0xCE | Returns "1" = successful |
| Reset ALL parameters | 0xCF | Includes user color temp, all video modes |
| Copyright query | 0xF8, "C" | Returns "DIGITALVIEW LTD." |

---

## DDC/CI Support (Appendix III)

The ALC-4096 supports DDC/CI at HDMI, DisplayPort, and USB-C ports for the following functions:

- Brightness (backlight brightness)
- Contrast
- Color temperature (6500K / 7500K / 9300K / sRGB / User)
- Sharpness
- Input source (HDMI & USB-C)
- Power mode (on/off)
- Restore factory defaults (excludes user color temperature and brightness)
- Volume

---

## Hex-to-ASCII Reference Table

| Hex | ASCII | Hex | ASCII | Hex | ASCII | Hex | ASCII |
|-----|-------|-----|-------|-----|-------|-----|-------|
| 0x30 | 0 | 0x41 | A | 0x61 | a | 0x2B | + |
| 0x31 | 1 | 0x42 | B | 0x62 | b | 0x2D | - |
| 0x32 | 2 | 0x43 | C | 0x63 | c | 0x3F | ? |
| 0x33 | 3 | 0x44 | D | 0x64 | d | | |
| 0x34 | 4 | 0x45 | E | 0x65 | e | | |
| 0x35 | 5 | 0x46 | F | 0x66 | f | | |
| 0x36 | 6 | 0x47 | G | 0x67 | g | | |
| 0x37 | 7 | 0x48 | H | 0x68 | h | | |
| 0x38 | 8 | 0x49 | I | 0x69 | i | | |
| 0x39 | 9 | 0x4A | J | 0x6A | j | | |

---

*Source: Digital View ALC-4096 instruction manual v1.00, Appendix II (pages 25–34) and Appendix III (page 34).*
