Difference between revisions of "Victor protocol"
Line 3: | Line 3: | ||
== USB interface chip == | == USB interface chip == | ||
Reverse engineered | 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;" | 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 19: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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
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). |