Advanced RS-232 and TCP/IP Control for VP320/VP330 Players

Modified on Mon, 17 Aug at 10:53 AM

The VP320 and VP330 media players by Waves System offer advanced control via RS-232 (serial) and TCP/IP (network) protocols. These protocols allow you to send precise commands to manage playback, volume, subtitles, power, and even external devices like displays (HDMI-CEC) or projectors (PJLINK).

This guide details all available commands, the frame structure, communication parameters, and best practices for successful integration.


Communication Protocols: RS-232 vs TCP/IP

1. RS-232 (Serial)

  • Communication Type: Bi-directional (the player can send and receive data).

  • Connector: DB9 serial port (or other depending on the model).

  • Default Parameters:

    Parameter

    Value

    Baud Rate

    115200 (adjustable from 1200 to 115200)

    Start Bits

    1

    Data Bits

    8

    Parity Bits

    None

    Stop Bits

    1

    Handshake

    None

  • Configuration: Adjustable via System Settings > Serial Port.

  • Default Address: All players have the 0x80 address by default.

    • Note: The address can be modified to target a specific player (see Section 15.1.5).

2. TCP/IP (Network)

  • Communication Type: Incoming only (the player can only receive commands, not send them).

  • Default Port: 65079 (for general commands).

  • IP Address: Must be configured (static or reserved DHCP) for each player.

  • Communication: The player responds to commands sent to its ID number or a general command (address 0x80).


Frame Structure

General Format

All commands are built as serial frames consisting of at least 3 bytes:

Byte

Role

Description

0

Sync + ID

Synchronization byte and player identifier (e.g., 0x80 for all players, 0x81 for player 001).

1

Command

Command code (e.g., 0x02 for playback commands).

2+

Parameters

Command-specific values (e.g., folder number, volume level).

  • Byte Representation: 8 bits (e.g., 10000000b in binary = 0x80 in hexadecimal).

  • Frame Ending: For player responses (via RS-232), a CR/LF (0x0D 0x0A) is added.


Available Commands

? 1. Player Control Commands

1.1. Jump to a Folder

Allows jumping to a specific folder among 1000 possibilities (000-999).

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID (e.g., 0x81 for player 001).

1

Command

0x01

Jump to folder 000-127.

1

Command

0x11

Jump to folder 128-255.

1

Command

0x21

Jump to folder 256-383.

1

Command

0x31

Jump to folder 384-511.

1

Command

0x41

Jump to folder 512-639.

1

Command

0x51

Jump to folder 640-767.

1

Command

0x61

Jump to folder 768-895.

1

Command

0x71

Jump to folder 896-999.

2

Parameter

[0x00-0x7F]

Folder number in the selected range (0-127).

Example:

  • 0x81 0x41 0x7C → Player 001 jumps to folder 636 (since 0x41 = range 512-639, and 0x7C = 124 → 512 + 124 = 636).


1.2. Playback and Standby Commands

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID.

1

Command

0x02

Playback and standby commands.

2

Parameter

0x01

PLAY: Play from the start of the file.

2

Parameter

0x02

STOP: Stop playback.

2

Parameter

0x03

Next file in the current folder.

2

Parameter

0x04

Previous file in the current folder.

2

Parameter

0x05

Pause / Resume at current position.

2

Parameter

0x06

Play next folder.

2

Parameter

0x07

Play previous folder.

2

Parameter

0x08

Toggle standby mode.

2

Parameter

0x09

Increase volume by +1 step.

2

Parameter

0x0A

Decrease volume by -1 step.

2

Parameter

0x0B

Unused.

2

Parameter

0x0C

STANDBY: Put the player in standby.

2

Parameter

0x0D

WAKE UP: Wake up the player.

2

Parameter

0x0E

Pause the player.

2

Parameter

0x0F

Resume playback after pause.


1.3. Volume Adjustment

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID.

1

Command

0x03

Volume command.

2

Parameter

[0x00-0x64]

Volume level (0 to 100).

Example: 0x81 0x03 0x3C → Player 001 sets volume to 60.


1.4. Information Requests

The player can return information via RS-232 (response in ASCII + CR/LF).

Byte

Role

Value (Hex)

Description

Response

0

Sync

0x80

Player ID.

1

Command

0x04

Information request.

2

Parameter

0x01

Player status

PLAYING / STOP / PAUSE / ERROR

2

Parameter

0x02

Current file name

File name (e.g., bird.mp4)

2

Parameter

0x03

File name and location

001/bird.mp4

2

Parameter

0x04

Media in use

USB / SD / Internal Memory

2

Parameter

0x06

Current folder name

001 to 999

2

Parameter

0x09

Remaining time

hh:mm:ss (e.g., 00:05:14)

2

Parameter

0x0A

Total file time

hh:mm:ss (e.g., 01:42:27)

2

Parameter

0x0B

Volume value

0 to 100 (e.g., 16)

Example Frame:

  • Request: 0x81 0x04 0x01 → Status of player 001.

  • Response: PLAYING + CR/LF (in ASCII: 50 4C 41 59 49 4E 47 0D 0A).


? 2. Clock Update Commands

2.1. Update Local Time

Sets the time in the current timezone of the player.

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID.

1

Command

0x0C

Update local time.

2

Hours

[0x00-0x17]

Hours (0-23).

3

Minutes

[0x00-0x3B]

Minutes (0-59).

4

Seconds

[0x00-0x3B]

Seconds (0-59).

Example: 0x81 0x0C 0x0F 0x2D 0x1E → Player 001 sets time to 15:45:30.


2.2. Update Local Date

Sets the date in the current timezone.

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID.

1

Command

0x1C

Update local date.

2

Year

[0x00-0x7F]

Years since 2000 (0-127).

3

Month

[0x01-0x0C]

Month (1-12).

4

Day

[0x01-0x1F]

Day (1-31).


2.3. Update Local Date and Time

Combines commands 2.1 and 2.2.

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID.

1

Command

0x2C

Update local date and time.

2

Year

[0x00-0x7F]

Years since 2000.

3

Month

[0x01-0x0C]

Month.

4

Day

[0x01-0x1F]

Day.

5

Hours

[0x00-0x17]

Hours (0-23).

6

Minutes

[0x00-0x3B]

Minutes (0-59).

7

Seconds

[0x00-0x3B]

Seconds (0-59).


2.4. Update UTC/GMT Time (Epoch Version)

Uses a timestamp epoch (seconds since January 1, 1970).

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID.

1

Command

0x3C

Update UTC (epoch).

2-6

Epoch

[0x00-0x7F]

Timestamp split into 5 bytes (bits 28-34, 21-27, etc.).


2.5. Update UTC/GMT Time (Full Version)

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID.

1

Command

0x4C

Update UTC/GMT.

2

Year

[0x00-0x7F]

Years since 2000.

3

Month

[0x01-0x0C]

Month.

4

Day

[0x01-0x1F]

Day.

5

Hours

[0x00-0x17]

Hours (UTC/GMT).

6

Minutes

[0x00-0x3B]

Minutes.

7

Seconds

[0x00-0x3B]

Seconds.


2.6. Enable/Disable NTP

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID.

1

Command

0x5C

Enable/Disable NTP.

2

Activation

0x00

Disable NTP.

2

Activation

0x01

Enable NTP.

Note: Disable NTP if you use manual commands for the clock.


? 3. Subtitle Selection Commands

3.1. Generic Subtitle Selection

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID.

1

Command

0x0D

Subtitle selection.

2

Parameter

0x00

Disable subtitles.

2

Parameter

0x01

Enable automatic selection.

2

Parameter

0x02

Previous subtitle (no loop).

2

Parameter

0x03

Next subtitle (no loop).

2

Parameter

0x04

Previous subtitle (with loop).

2

Parameter

0x05

Next subtitle (with loop).


3.2. Subtitle Selection by Language Code (ISO-639)

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID.

1

Command

0x1D

Selection by ISO-639 code.

2-4

Language Code

[0x61-0x7A]

3 ASCII bytes (e.g., eng0x65 0x6E 0x67).

Example: 0x81 0x1D 0x65 0x6E 0x67 → Selects the English (eng) track for player 001.


3.3. Subtitle Selection by Index

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID.

1

Command

0x2D

Selection by index.

2

Index

[0x00-0x7F]

Track index (0-127).


3.4. List Subtitle Tracks

Byte

Role

Value (Hex)

Description

Response

0

Sync

0x80

Player ID.

1

Command

0x04

Information request.

2

Sub-command

0x41

List subtitle tracks.

eng;ara;nld + CR/LF

Example Response: eng;ara;nld (available tracks in ISO-639).


? 4. External Device Control Commands

Byte

Role

Value (Hex)

Description

0

Sync

0x80

Player ID.

1

Command

0x02

Playback and standby commands.

2

Parameter

0x13

HDMI-CEC STANDBY: Turn off the display.

2

Parameter

0x14

HDMI-CEC WAKE UP: Turn on the display (One Touch Play).

2

Parameter

0x15

HDMI-CEC standby/power on based on context.

2

Parameter

0x16

PJLINK POWER ON: Turn on the projector.

2

Parameter

0x17

PJLINK POWER OFF: Turn off the projector.


Transmission Modes

1. Unitary Mode (Default)

  • Only custom data transmitted by the [RSSxxx] and [RSExxx] tags are sent on the Tx output (RS-232).

  • Example: A file named video [RSS001].mp4 will send the serial frame defined in serial.txt (line #001).

2. Daisy Chain Mode

  • All data received on Rx is retransmitted identically on Tx.

  • Allows chaining multiple players:

    • Connect the Tx output of player 1 to the Rx input of player 2, etc.

    • The information received by the first player is retransmitted in chain to the others.

  • Activation: Via the Advanced Configuration > Serial Port menu.

  • ⚠️ Warning: A slight delay may occur at the end of the chain if many players are connected.


Advanced Configuration

1. Changing the Player Address

By default, all players have the 0x80 address (for general commands). To target a specific player:

  • Use a command like: 0x8X 0xXX 0xXX where X = player number (e.g., 0x81 for player 001).

  • Example: 0x82 0x02 0x01 → Player 002 executes the PLAY command.

2. Serial Port Parameters (RS-232)

  • Baud Rate: Adjustable from 1200 to 115200 baud (default: 115200).

  • Menu: System Settings > Serial Port.

3. TCP/IP Ports

  • Port 65079: Default port for general commands (player control).

  • Port 44830: Dedicated port for player synchronization (see article 007).


Practical Examples

1. Play Folder 001 on Player 001

  • Frame: 0x81 0x01 0x00

    • 0x81: Player 001.

    • 0x01: Jump to folder command (000-127).

    • 0x00: Folder 000 (000 + 0 = 000).

2. Put Player 002 in Standby

  • Frame: 0x82 0x02 0x0C

    • 0x82: Player 002.

    • 0x02: Playback/standby commands.

    • 0x0C: STANDBY.

3. Request Status of Player 001

  • Frame Sent: 0x81 0x04 0x01

  • Expected Response: PLAYING + CR/LF (if the player is playing a file).

4. Set Volume to 75 on Player 001

  • Frame: 0x81 0x03 0x4B

    • 0x4B = 75 in hexadecimal.

5. Turn On a Projector via PJLINK (Player 001)

  • Frame: 0x81 0x02 0x16


Best Practices

1. RS-232 Wiring

  • Use short cables (max 15 m) to avoid signal loss.

  • Ensure serial parameters (baud rate, bits) match on all connected devices.

2. TCP/IP Network

  • Static IP recommended: Avoid dynamic DHCP for critical installations.

  • Open Ports: Ensure port 65079 (and 44830 for synchronization) is not blocked by a firewall.

3. Testing

  • Check responses: Use a tool like Termite or PuTTY to send frames and receive responses.

  • Start with simple commands: E.g., PLAY, STOP, or status request (0x04).

4. Troubleshooting

Issue

Possible Cause

Solution

No response from player

Incorrect RS-232 wiring or serial parameters

Check connections and baud rate.

Command ignored

Incorrect ID address or malformed frame

Use 0x80 for all players or the specific ID.

TCP/IP port blocked

Firewall or router

Open port 65079 (or 44830).

Delay in Daisy Chain

Too many players in series

Limit to 5-6 players max or use TCP/IP.

Unreadable response

ASCII format not respected

Ensure your testing software interprets CR/LF.


For further reading:

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article