Difference between revisions of "Victor protocol"

From sigrok
Jump to navigation Jump to search
Line 3: Line 3:
== USB interface chip ==
== USB interface chip ==


Reverse engineered pinout of the unknown USB/HID chip:
Reverse engineered pinouts of the unknown USB/HID chips:


<table border="0">
<tr>
<th>The chip in the [[Device_cables#Victor_86C_USB_cable]]</th>
<th>The chip in the [[Victor 70C]]</th>
</tr>
<tr><td>
{| border="0" cellspacing="0"
|-
| style="width: 10em; font-weight: bold;" align="right" | RXD
| style="width: 2em;" align="right"  | 1-
| rowspan="10" valign="top" style="width: 10em; background-color: #333333; color: white;font-weight: bold;" | &nbsp;&nbsp;O
| style="width: 2em;" | -20
| style="width: 10em; font-weight: bold;" |
|-
| style="width: 10em; font-weight: bold;" align="right" |
| style="width: 2em;" align="right"  | 2-
| style="width: 2em;" | -19
| style="width: 10em; font-weight: bold;" |
|-
| style="width: 10em; font-weight: bold;" align="right" |
| style="width: 2em;" align="right"  | 3-
| style="width: 2em;" | -18
| style="width: 10em; font-weight: bold;" |
|-
| style="width: 10em; font-weight: bold;" align="right" |
| style="width: 2em;" align="right"  | 4-
| style="width: 2em;" | -17
| style="width: 10em; font-weight: bold;" | 5V
|-
| style="width: 10em; font-weight: bold;" align="right" |
| style="width: 2em;" align="right"  | 5-
| style="width: 2em;" | -16
| style="width: 10em; font-weight: bold;" |
|-
| style="width: 10em; font-weight: bold;" align="right" |
| style="width: 2em;" align="right"  | 6-
| style="width: 2em;" | -15
| style="width: 10em; font-weight: bold;" |
|-
| style="width: 10em; font-weight: bold;" align="right" | GND
| style="width: 2em;" align="right"  | 7-
| style="width: 2em;" | -14
| style="width: 10em; font-weight: bold;" | D+/-
|-
| style="width: 10em; font-weight: bold;" align="right" |
| style="width: 2em;" align="right"  | 8-
| style="width: 2em;" | -13
| style="width: 10em; font-weight: bold;" | D+/-
|-
| style="width: 10em; font-weight: bold;" align="right" |
| style="width: 2em;" align="right"  | 9-
| style="width: 2em;" | -12
| style="width: 10em; font-weight: bold;" |
|-
| style="width: 10em; font-weight: bold;" align="right" |
| style="width: 2em;" align="right"  | 10-
| style="width: 2em;" | -11
| style="width: 10em; font-weight: bold;" | ~6MHz clock (?)
|}
</td>
<td>
{| border="0" cellspacing="0"
{| border="0" cellspacing="0"
|-
|-
Line 68: Line 141:


|}
|}
</td></tr></table>


== Protocol ==
== Protocol ==

Revision as of 20:44, 2 October 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 pinouts of the unknown USB/HID chips:

The chip in the Device_cables#Victor_86C_USB_cable The chip in the Victor 70C
RXD 1-   O -20
2- -19
3- -18
4- -17 5V
5- -16
6- -15
GND 7- -14 D+/-
8- -13 D+/-
9- -12
10- -11 ~6MHz clock (?)
RXD 1-   O -20
2- -19
3- -18
4- -17 5V
5- -16
6- -15
GND 7- -14 D+/-
8- -13 D+/-
9- -12
10- -11 ~6MHz clock (?)

Protocol

The device registers on the USB host as a HID-class device ("Boot Interface" subclass), see lsusb.

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).