Difference between revisions of "Victor protocol"

From sigrok
Jump to navigation Jump to search
(Created page with "Many digital multimeters made by [http://www.china-victor.com/ Victor] share the same protocol. At least the Victor 70C and Victor 86C support this protocol. In the 70...")
 
Line 8: Line 8:
|-
|-
| style="width: 10em;" |
| style="width: 10em;" |
| style="width: 1em;"  | 1-
| style="width: 1em;" align="right"  | 1-
| rowspan="10" valign="top" style="width: 10em; background-color: #333333; color: white;font-weight: bold;" |   O
| rowspan="10" valign="top" style="width: 10em; background-color: #333333; color: white;font-weight: bold;" |   O
| style="width: 1em;"  | -20
| style="width: 1em;"  | -20
Line 15: Line 15:
|-
|-
| style="width: 10em;" |
| style="width: 10em;" |
| style="width: 1em;"  | 2-
| style="width: 1em;" align="right"  | 2-
| style="width: 1em;"  | -19
| style="width: 1em;"  | -19
| style="width: 10em;" |
| style="width: 10em;" |
Line 21: Line 21:
|-
|-
| style="width: 10em;" |
| style="width: 10em;" |
| style="width: 1em;"  | 3-
| style="width: 1em;" align="right"  | 3-
| style="width: 1em;"  | -18
| style="width: 1em;"  | -18
| style="width: 10em;" |
| style="width: 10em;" |
Line 27: Line 27:
|-
|-
| style="width: 10em;" |
| style="width: 10em;" |
| style="width: 1em;"  | 4-
| style="width: 1em;" align="right"  | 4-
| style="width: 1em;"  | -17
| style="width: 1em;"  | -17
| style="width: 10em;" |
| style="width: 10em;" |
Line 33: Line 33:
|-
|-
| style="width: 10em;" |
| style="width: 10em;" |
| style="width: 1em;"  | 5-
| style="width: 1em;" align="right"  | 5-
| style="width: 1em;"  | -16
| style="width: 1em;"  | -16
| style="width: 10em;" |
| style="width: 10em;" |
Line 39: Line 39:
|-
|-
| style="width: 10em;" |
| style="width: 10em;" |
| style="width: 1em;"  | 6-
| style="width: 1em;" align="right"  | 6-
| style="width: 1em;"  | -15
| style="width: 1em;"  | -15
| style="width: 10em;" |
| style="width: 10em;" |
Line 45: Line 45:
|-
|-
| style="width: 10em;" |
| style="width: 10em;" |
| style="width: 1em;"  | 7-
| style="width: 1em;" align="right"  | 7-
| style="width: 1em;"  | -14
| style="width: 1em;"  | -14
| style="width: 10em;" |
| style="width: 10em;" |
Line 51: Line 51:
|-
|-
| style="width: 10em;" |
| style="width: 10em;" |
| style="width: 1em;"  | 8-
| style="width: 1em;" align="right"  | 8-
| style="width: 1em;"  | -13
| style="width: 1em;"  | -13
| style="width: 10em;" |
| style="width: 10em;" |
Line 57: Line 57:
|-
|-
| style="width: 10em;" |
| style="width: 10em;" |
| style="width: 1em;"  | 9-
| style="width: 1em;" align="right"  | 9-
| style="width: 1em;"  | -12
| style="width: 1em;"  | -12
| style="width: 10em;" |
| style="width: 10em;" |
Line 63: Line 63:
|-
|-
| style="width: 10em;" |
| style="width: 10em;" |
| style="width: 1em;"  | 10-
| style="width: 1em;" align="right"  | 10-
| style="width: 1em;"  | -11
| style="width: 1em;"  | -11
| style="width: 10em;" |
| style="width: 10em;" |

Revision as of 22:40, 28 September 2012

Many digital multimeters made by Victor share the same protocol. At least the Victor 70C and Victor 86C support this protocol. In the 70C this is generated by a chip inside the device, on the 86C it's in the cable.

USB interface chip

Reverse engineered pinout of the unknown USB/HID chip:

1-   O -20
2- -19
3- -18
4- -17
5- -16
6- -15
7- -14
8- -13
9- -12
10- -11

Protocol

The device registers on the USB host as a HID-class device ("Boot Interface" subclass), see lsusb. Note: The USB/HID chip is in the multimeter (not in the USB cable/connector) for this device. The device is connected to the PC using a standard USB cable (without any internal logic/chip).

The protocol payload is 14 bytes of data which can be read from endpoint 1, at no more than 1 Hz.

The 14-byte chunk is somewhat obfuscated. To deobfuscate, subtract the ASCII value of the following string from each of the 14 bytes in turn: jodenxunickxia. Then reshuffle the bytes into different positions, according to the following table:

Original position  0  1  2  3  4  5  6  7  8  9 10 11 12 13
Final position  6 13  5 11  2  7  9  8  3 10 12  0  4  1

The deobfuscated payload is then structured as follows:

Byte Bit Value
0 Unused (always contains 0x50).
1 Unused (always contains 0xb0).
2 Flags.
0 Minus.
1-7 Unused.
3 Major measurement modes.
0 Voltage measurement mode, combined with AC or DC flags in byte 6. In combination with the Diode flag in byte 4, signifies diode testing mode.
1 Current measurement mode, combined with AC or DC flags in byte 6.
2 Resistance measurement mode. In combination with the Continuity flag in byte 4, signifies continuity testing mode.
3 Unused.
4 Frequency measurement mode.
5 Capacitance measurement mode.
6 Temperature measurement mode, in degrees Celcius.
7 Temperature measurement mode, in Fahrenheit.
4 Value factors and extra measurement modes.
0 µ (Micro).
1 m (Milli).
2 k (Kilo).
3 M (Mega).
4 Continuity (in combination with resistance mode in byte 3).
5 Diode (in combination with voltage mode in byte 3).
6 Duty cycle measurement mode.
7 Unused.
5 Extra flags and value factors.
0 Unused.
1 Unused.
2 Max measurement mode.
3 Min measurement mode.
4 Unused.
5 Unused.
6 n (Nano).
7 Unused.
6 Flags.
0 Unused.
1 Unused.
2 Auto-ranging mode.
3 DC measurement.
4 AC measurement.
5 Relative measurement.
6 Hold mode.
7 Unused.
7 Decimal point position.
0 No decimal point.
1 Rightmost (1 digit after point).
2 Middle (2 digits after point).
3 Leftmost (3 digits after point).
4 Unused.
5 Unused.
6 Unused.
7 Unused.
8 Unused (always contains 0x04).
9 Least significant digit on display.
10 Second digit from right.
11 Second digit from left.
12 Most significant digit.
13 Unused (always contains 0xd4).