All advoli PCIe Graphics Cards support both a Configuration Console and an API
The Console and the API are accessible through USB as Virtual COM ports
Programatically, they are opened and use just like any other COM port
Opening the COM-port at any BaudRate except 110 baud opens the Configuration Console
Opening the COM-port at 110 baud accesses the API, which uses the TRAPI specification below
Text Readable Application Programming Interface (TRAPI)
TRAPI is a simple human readable text based interface protocol for control and query from an application to devices. It uses text stings of readable characters rather than commands sent as hex numbers, which is most commonly used between devices and applications.
easy to program using C/C++/C#,Visual Basic, .NET, ActiveX, etc.
simple, easy to learn syntax
query of temperatures, fans speeds, features, read and set parameters, etc.
firmware version queries and even can support firmware upgrade
practical to use through command console interface such as a terminal program
Basic Syntax Rules:
case insensitive
spaces and uppercase are ignored
Commands are terminated with [CR]
Optional local echo of characters
Modal Single Character Commands:
These keys can be sent any time, will immediately cause action, and clear any pending requests.
KEY ASCII NOTES
[ESC] 27 Resets parsing and terminates current command.
clears all buffers and commands currently in process.
[ESC] can be sent before any command to ensure a ready state
[?] Instantly displays a brief help menu
[`] 96 Toggles echo sent back to the host.
[CR] 13 Terminates all commands, and executes parsing.
Empty [CR] with no command prompts ; to indicate
that the API is operational.
Key Characters in Responses:
KEY ASCII NOTES
% Asynchronous message start character
; End of response or message character
: Data/value separator
? Syntax Error
Example:
fan
Response:
;SYSPWROFF; //system is off, so no fans running
;SET:80%;Fan1:%13500RPM;Fan2:12752RPM; //fan status
Notification:
%added display channel 2;
%fan stuck;
Single Character Commands
These commands respond right away, and does not require [CR]
[CR] Carriage Return (ENTER)Response:
; reply OK, the API is responsive
[ESC] ASCII character 27 (the escape key), terminates any command immediately and starts overResponse: (none)
` ASCII character 96 (the apostrophe key) toggles echo back to host. This is typically used only in manual text use mode, so the user can see characters typed to the API, and typically not used when sending commands from an application through a serial port
? //show brief helpExample Response:--- API MODE HELP --- advoli products follow the TRAPI specification TAPI mode is entered when opening serial at 110baud To exit TRAPI mode, open at a different baud rate.
Command Listing
All the following commands are terminated with [CR] (the enter key)
qeftajdtyertyrusgyusgyud some randome keystrokes to simulate a non-existing commandResponse:? syntax error
ver request to see the version of the FW and/or APIResponse:;TABXFW91:2020-Mar-15;
i2cbaud Get the current baudrate of the I2C busi2cbaud 400000 Set the baudrate of the I2C bus to 400kHz
Possible Responses:;402738; The actual closets possible baudrate to the specified value;E; ERROR in the baudrate value specified
i2cw 00 11 22 33 write 3 (hex) bytes to channel 0. The bytes written are 0x11 0x22 and 0x33
Possible Responses:;A; ACK: I2C Acknowledge, the command was accepted ;N; NACK: The command was Not-Acknowledged ;E; ERROR: Some error like a bus error, occurred
i2cr 00 03 read 3 (hex) bytes from channel 0
Possible Response:;A02:cc dd ; ACK read 2 bytes: cc and dd ;N; NACK ;E; ERROR
i2cwr 00 04 55 66 first write two bytes 0x55 and 0x66, then if ACK immediately read 4 (hex) bytes from channel 0
Possible Response:;A04:cc dd ee ff; ACK read 4 bytes: 0xcc , 0xdd , 0xee, 0xff;N; NACK ;E; ERROR
i2creset Resets the I2C controllers and tries to clear a bus with data or clock lines stuck low
Possible Response:;ERROR; Could not fix, error is still there;OK;FIXED; OK, problem was fixed
pcireset Resets the PCI bus of the PC
Possible Response:;
pciwake Issues the signal on the PCI-bus to wake up the systemPossible Response:
;
vr Reads the current reset state in hex format, where each bit is a channel, i.e. 0x01 is channel A, 0x02 is channel B etcvr 0x3e Assert the reset for Channel Avr 0x3f Deassert reset for all (6) channels
Typical Responses:;0x3F; All channels are out of reset;0x00; All channels held in reset
ch Reads the current channel state of enabled or disabled in hex format, where each bit is a channel, i.e. 0x01 is channel A, 0x02 is channel B etc.ch 0x3e Disable Channel A, all others are Enabledch 0x3f All (6) channels are enabled
Typical Responses:;0x3F; All channels are enabled;0x00; All channels are disabled
halt stops any reading of sensors on the I2C bus, so a firmware upgrade can be uninterrupted. If sensors are not halted before a firmware upgrade, the likelihood that I2C commands with overlap in time with commands reading local temp sensors, cable diagnostics, etc is high, and commands would have to be retried, which causes complexity in writing safe firmware update algorithms.
Response:;
resume resumes reading of sensors on the I2C busResponse:;
The format is VoltageName:VoltageValue and each name/value pair is separated by comma (,) except the last result, which is terminated by semicolon (;). Note that there can be more than one voltage reading for the same voltage name, as seen in the example where 1V is read two different places on the product.
Response Field Descriptions (per channel)A: Channel IdentifierTX: Channel Direction (TX or RX)VS100TX, Chip Type (i.e VS100TX, VS010TX, VS2310TX)RX: Channel Direction (TX or RX)VS100RX, Chip Type (i.e VS100RX, VS010RX, VS2310RX)LUP, Link Status (LUP:Link is Up, LDN:Link is Down, LLP:Link in LowPowerMode, LFB:Link in FallBackMode)HDMI, Video Status: (HDMI: Video in non-HDCP mode, HDCP:Video in HDCP mode, NOVD:No Video Signal)HDBT, Operation Mode: (DSCN:Disconnected, LRMD:LongReachMode, STB1/STB2:StandByModes, ETFM:Ethernet Fallback Mode, HDPT:HDMI Pass Through Mode63, Cable Length in meters (m), cable lengths under 20m and over 110m show as <20 or >110. If no cable shows NA. other options are: NR:NotReady, ERR:Error97-83-88-95 Instant Cable Quality (not accumulated over time). Best is 99, worst is 0. if no cable:---\n End of data for one Channel, \n=[CR] Character Return, or "the enter key"; End of data for all Channels
The format is VoltageName:VoltageValue and each name/value pair is separated by comma (,) except the last result, which is terminated by semicolon (;). Note that there can be more than one voltage reading for the same voltage name, as seen in the example where 1V is read two different places on the product.
mode Sets all of the channels to Auto mode for ALL channels.
Example Response: ;A:STB2,B:HDBT,C:LRMD,D:DSCN,;
Response Field Descriptions (per channel)A: Channel Identifier(mode), Can be one of the following Operation Modes: Operation Mode: (DSCN:Disconnected, LRMD:LongReachMode, STB1/STB2:StandByModes, ETFM:Ethernet Fallback Mode, HDPT:HDMI Pass Through Mode; End of data for all Channels
Setting HDBaseT Operation Mode
mode A Sets all of the channels to Auto mode for ALL channels. mode A A L L Sets a different mode for EACH channel. This example sets Channels A and B in Auto Mode, and Channels C and D in Long Reach Mode. Note that the number of channels much match the number of channels. Use command channels to find that.
Example Responses: ;; OK. New Mode set;? Error. New Mode not set
Ethernet Cable has 4 pairs. The 4 numbers separated by a dash (-) represents the signal quality for each pair.For each pair, best is 99, worst is 0. if no cable:---
Response: ;; OK? Error, make sure there are no parameters and try again
EDID Configuration Commands
There are 3 basic EDID modes, and these are the commands and functions:
Response: ;; OK? Error, make sure there are no parameters and try again
Response: ;; OK? Error, make sure there are no parameters and try again
Response: ;; OK? Error, make sure there are no parameters and try again
Example Response: ;A:AUTO,VDACT,PLUGGEDIN\nB:GCM,VDACT,PLUGGEDIN\nC:LOFF,NOACT,PLUGGEDIN\nD:F0,NOACT,UNPLUGGED\n
Response Field Descriptions (per channel)A: Channel IdentifierAUTO, EDID mode, can be: AUTO, LOCK (Locked and ON), LOFF (Locked and OFF), OFF (Always OFF), GCM (Graphics Card Mode), Fn (Fixed mode n), Un (User Mode n)VDACT, Video Activity can be VDACT if video is flowing, or if not will be NOACTPLUGGEDIN Connection to Display or Projector is detected, can be PLUGGEDIN or UNPLUGGED\n End of data for one Channel, \n=[CR] Character Return, or "the enter key"; End of data for all Channels
restart Soft start of EDID detection, will normally not cause loss of screensrestart ! Hard Restart of EDID detection, and will cause screens to be temporary lost.
Example Response:ERR I2C was busy, try again? Syntax Error in command
Successful command returns exactly 255 (0xff) bytes of data in this format:;00 ff ff ff ff ff ff 00 06 97 6b 00 00 00 00 00 01 1a 01 03 80 30 1b 78 2e 43 f5 a7 56 53 9c 26 10 50 54 0f cf 00 d1 c0 01 00 01 00 01 00 01 00 01 00 01 00 01 00 29 36 80 a0 70 38 1f 40 30 20 35 00 40 44 21 00 00 1e 00 00 00 ff 00 54 42 36 5f 47 48 4f 53 54 0a 20 20 20 00 00 00 fd 00 32 3c 0f 52 11 00 00 00 00 00 00 00 00 00 00 00 fc 00 31 30 38 30 50 0a 20 20 20 20 20 20 20 01 36 02 03 1e f1 51 90 05 04 03 02 07 06 1f 14 13 12 11 16 15 0f 0e 01 23 09 7f 07 83 01 00 00 29 36 80 a0 70 38 1f 40 30 20 35 00 40 44 21 00 00 1e 02 3a 80 d0 72 38 2d 40 10 2c 45 80 dc 0c 11 00 00 1e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7f ;
Example Response:ERR I2C was busy, try again? Syntax Error in command
Command returns the configured PHY address if configured, otherwise 0xff as show below.;A:ff:ff:ff:ff:00B:ff:ff:ff:ff:00C:ff:ff:ff:ff:00D:ff:ff:ff:ff:00;
Example Response:NOPOE; The product does not have PoE Controller(s)ERR I2C was busy, try again? Syntax Error in command
Example response:POE:59.1C,48.18VA:AUTO,3,ROK 5.45W,48.42V,112.49mA,374mAB:AUTO,NA,OC 0.00W,0.00V,0.00mA,374mAC:AUTO,NA,OC 0.00W,0.00V,0.00mA,374mAD:AUTO,NA,OC 0.00W,0.00V,0.00mA,374mA;Where:A: Channel IdentifierAUTO: PoE mode, can be AUTO, MAN, OFF, SAUT (Semi-Auto)3: PoE Classification, can be NA, 1,2,3,4,R(reserved),0,OC(Open Circuit),CM(class missmatch)ROK: Channel Status, can be: ROK(resOK),NA(?),SHORT,RTOL(res too low), RTH(res too high),OC(open circuit),MF(mosfet fault), LEG(legacy detect),CINV(cap invalid),OOR(out of range)5.45W: Port Power Consumption48.42V: Port Voltage Reading112.49mA: Port Current Reading
Example Response:NOPOE; The product does not have PoE Controller(s)ERR I2C was busy, try again? Syntax Error in command
Example response:A:FW10,44C,40371,32245,1004mV,1723mV,3177mV,fb:e4:c6B:NAC:NAD:NAWhere:A: Channel IdentifierFW10: Receiver Fan Controller Firmware Version44C: Internal temperature of the PCB of the receiver40371: Fan1 RPM32245: Fan2 RPM1004mV: Receiver 1.0V reading1723mV: Receiver 1.8V reading3177mV: Receiver 3.3V readingfb:e4:c6: Accelerometer XYZ reading of the position of the receiver