Make/Model  Device VersionConnection Type
PMS/Crystalio IIVPS-3300 and VPS-3800Serial

Description:

The Pixel Magic Systems Crystalio II is a fully-featured 1080p scaler and video processor featuring HDMI, SDI and Analog video inputs as well as digital and analog audio inputs. It further boasts two HDMI outputs and an analog output that are active simultaneously (analog is active HDCP allowing) as well as digital and analog audio outputs. The VPS3800 further features HD-SDI inputs, a precision temperature-compensated oscillator and an internal media player with 250GB hard drive.

Quirks and Limitations:

This is an initial release of this driver. More user testing and feedback is required.

  1. The Crystalio II does not respond to commands during startup (approximately 25 seconds) and shutdown (approximately 5 seconds). The driver recognizes this and will throw an error if commands are sent during these intervals. Interfaces should System::Pause as needed.
  2. This driver makes only a subset of the complete command set available.
  3. The Crystalio II does not asynchronously make status changes available at the RS232 connection, therefore this driver must poll for field updates. To be kind to the Crystalio II, the driver polls in a reasonably leisurely fashion.
  4. Some firmware versions for the Crystalio II have a bug that causes it to report the output resolution as a random string instead of the correct value. This driver assumes 1080p output should an unsupported value be reported. The author has only witnessed this when outputting 1080p with custom timings but the issue is not necessarily limited to this situation.
  5. When using the Media Player in the VPS3800 the response time for RS232 queries increases slightly. This driver is tuned to take this into account, but it is possible that future versions of the Crystalio II firmware may make this worse and thus outside the current tolerance.
  6. PMS have not (yet) implemented commands to control the Media Player component of the VPS-3800.
     

Connection Details

The Crystalio II runs at 38400 baud and this is not currently changeable. It uses a standard D-pin d-sub connector and PC users will need a null-modem cable to use it. Only three wires are needed: Rx, Tx and ground.

Driver Fields

This section lists the fields that the driver makes available, their types, minimum and maximum values, etc...

NameTypeR/WDescription/Limits
AspectRatioStringR/WSets or reads the source video aspect ratio. This is an enumerated field. Allowed values are: 4:3, 16:9, 43LB, 169LB1.85, 169LB2.35, 169LB2.40, Full, 1:1, NLS, Customize.
AspectRatioCusIntR/WSets or reads the custom aspect ratio. This value is used only when AspectRatio is set to Customize. The allowed range of this value is from 100 to 300 where 100 means 1.00.
AudioDelayIntR/WSets or reads the audio delay. The allowed range of this value is -150 to 200.
CropBottomIntR/WSets or reads the amount by which the bottom of the source video is cropped. The allowed range is 0 to 180.
CropLeftIntR/WSets or reads the amount by which the left of the source video is cropped. The allowed range is 0 to 180.
CropRightIntR/WSets or reads the amount by which the right of the source video is cropped. The allowed range is 0 to 180.
CropTopIntR/WSets or reads the amount by which the top of the source video is cropped. The allowed range is 0 to 180.
FilmBiasIntR/WSets or reads the bias for film detection. The allowed range is 1 to 9.
FilmDetectStringR/WSets or reads the film detection window. This is an enumerated field. Allowed values are: Normal, Small.
InputAudioStringR/WSets or reads the audio input. This is an enumerated field. Allowed values are: Analog1, Analog2, Analog3, Digital1, Digital2, Digital3, Digital4, HDMI1, HDMI2, HDMI3, HDMI4, MediaPlayer.
InputPassthru_Component1BooleanR/WWhen True, signal passthru is enabled for the Component1 input.
InputPassthru_Component2BooleanR/WWhen True, signal passthru is enabled for the Component2 input.
InputPassthru_HDMI1BooleanR/WWhen True, signal passthru is enabled for the HDMI1 input.
InputPassthru_HDMI2BooleanR/WWhen True, signal passthru is enabled for the HDMI2 input.
InputPassthru_HDMI3BooleanR/WWhen True, signal passthru is enabled for the HDMI3 input.
InputPassthru_HDMI4BooleanR/WWhen True, signal passthru is enabled for the HDMI4 input.
InputPassthru_SDI1BooleanR/WWhen True, signal passthru is enabled for the SDI1 input.
InputPassthru_SDI2BooleanR/WWhen True, signal passthru is enabled for the SDI2 input.
InputSelectStringR/WSets or reads the video input. This is an enumerated field. Allowed values are: HDMI1, HDMI2, HDMI3, HDMI4, SDI1, SDI2, Component1, Component2, Component3, Component4, S-Video1, S-Video2, Video1, Video2, Video3, Video4, MediaPlayer.
InvokeStringWWriting to this field causes the supplied string to be sent to the device (with a line terminator appended). This would be useful for sending commands that this driver does not directly support. This field is always available.
OutputBorderHIntR/WSets or reads the horizontal border. The allowed range is 0 to 999.
OutputBorderVIntR/WSets or reads the vertical border. The allowed range is 0 to 999.
OutputResStringR/WSets or reads the current output resolution. This is an enumerated field. Allowed values are: 480p, 576p, 720p, 1080i, 1080p, 640x480, 800x600, 848x480, 852x480, 856x480, 960x540, 1024x576, 1024x768, 1024x1024, 1280x720, 1280x768, 1280x1024, 1360x768, 1360x1024, 1366x768, 1368x768, 1400x788, 1400x1050, 1440x864, 1440x960, 1440x1152, 1920x1080, 1920x1200.
OutputSelectStringR/WSets or reads the current output. Whilst all outputs are active simultaneously, each output has its own set of configuration. This is an enumerated field. Allowed values are: HDMI1, HDMI2, Analog.
OverscanIntR/WSets or reads the overscan amount. The allowed range is -90 to 90.
PIPPBPModeStringR/WSets or reads the Picture in Picture/Picture by Picture operating mode. This is an enumerated field. Allowed values are: OFF, PIP, PBP.
PIPPBPSubSourceStringR/WSets or reads the sub-source video input for Picture in Picture/Picture by Picture modes. This is an enumerated field. Allowed values are: HDMI1, HDMI2, HDMI3, HDMI4, SDI1, SDI2, Component1, Component2, Component3, Component4, S-Video1, S-Video2, Video1, Video2, Video3, Video4, MediaPlayer. Note that there are hardware limitations on which combinations of main-input and sub-input sources work. These do not seem to be enforced by the Crystalio II and simply fail to work.
PositionH/PositionVIntR/WSets or reads the horizontal/vertical position. The allowed range is -99 to 99.
PowerBooleanR/WWriting: Startup (True) or shutdown (False) the device. Reading: Device is powered on (True) or off (False). This field is always available.
RecallImageProfileIntWLoads the specified Image profile. Profiles are numbered from 0 to 9.
RecallInputProfileIntWLoads the specified Input profile. Profiles are numbered from 0 to 9.
RecallOutputProfileIntWLoads the specified Output profile. Profiles are numbered from 0 to 9.

Unless otherwise indicated, these fields are placed into an error state when the power is off to the Crystalio II.

The complete RS232 command set and associated documentation for the Crystalio II can be found in a PDF at this support page. Further descriptions of the functions of these fields may be found in the Crystalio II user manual, also available at the PMS support site.