Difference between revisions of "Victor 70C"
Uwe Hermann (talk | contribs) m |
|||
Line 1: | Line 1: | ||
[[File:Victor 70C.jpg|thumb|right|Victor 70C]] | [[File:Victor 70C.jpg|thumb|right|Victor 70C]] | ||
The [http://www.china-victor.com/english/en/product_data.aspx?ClassID=168&ID=121 Victor 70C] is a 4000 counts, CAT II handheld digital multimeter with USB connectivity. It is also sold as the | The [http://www.china-victor.com/english/en/product_data.aspx?ClassID=168&ID=121 Victor 70C] is a 4000 counts, CAT II handheld digital multimeter with USB connectivity. It is also sold as the [http://github.com/mvneves/victor70c#victor70c-software-for-linux EZA EZ-735]. | ||
See [[Victor 70C/Info]] for more details (such as '''lsusb -vvv''' output) about the device. | See [[Victor 70C/Info]] for more details (such as '''lsusb -vvv''' output) about the device. | ||
Line 28: | Line 28: | ||
== Protocol == | == Protocol == | ||
The device registers on the USB host as a HID-class device. The protocol payload is 14 bytes of data which can be read from endpoint 1, at no more than 1 Hz. | The device registers on the USB host as a HID-class device ("Boot Interface" subclass), see [[Victor_70C/Info#lsusb|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: '''<code>jodenxunickxia</code>'''. Then reshuffle the bytes into different positions, according to the following table: | 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: '''<code>jodenxunickxia</code>'''. Then reshuffle the bytes into different positions, according to the following table: | ||
{| border="0" width="50%" style="font-size: smaller" class="alternategrey | {| border="0" width="50%" style="font-size: smaller" class="alternategrey sigroktable" | ||
|- | |- | ||
| Original position | | Original position | ||
Line 70: | Line 72: | ||
The deobfuscated payload is then structured as follows: | The deobfuscated payload is then structured as follows: | ||
{| border="0" width="95%" style="font-size: smaller" class="alternategrey | |||
{| border="0" width="95%" style="font-size: smaller" class="alternategrey sigroktable" | |||
|- | |- | ||
! style="width: 3em;" | Byte | ! style="width: 3em;" | Byte | ||
Line 79: | Line 82: | ||
| 0 | | 0 | ||
| | | | ||
| ''Unused (always contains 0x50)'' | | ''Unused (always contains 0x50).'' | ||
|- | |- | ||
| 1 | | 1 | ||
| | | | ||
| ''Unused (always contains 0xb0)'' | | ''Unused (always contains 0xb0).'' | ||
|- | |- | ||
| 2 | | 2 | ||
| | | | ||
| ''Flags'' | | ''Flags.'' | ||
|- | |- | ||
| | | | ||
| 0 | | 0 | ||
| Minus | | Minus. | ||
|- | |- | ||
Line 104: | Line 107: | ||
| 3 | | 3 | ||
| | | | ||
| ''Major measurement modes'' | | ''Major measurement modes.'' | ||
|- | |- | ||
| | | | ||
Line 132: | Line 135: | ||
| | | | ||
| 6 | | 6 | ||
| | | Temperature measurement mode, in degrees Celcius. | ||
|- | |- | ||
| | | | ||
Line 141: | Line 144: | ||
| 4 | | 4 | ||
| | | | ||
| ''Value factors and extra measurement modes'' | | ''Value factors and extra measurement modes.'' | ||
|- | |- | ||
| | | | ||
| 0 | | 0 | ||
| µ (Micro) | | µ (Micro). | ||
|- | |- | ||
| | | | ||
| 1 | | 1 | ||
| m (Milli) | | m (Milli). | ||
|- | |- | ||
| | | | ||
| 2 | | 2 | ||
| k (Kilo) | | k (Kilo). | ||
|- | |- | ||
| | | | ||
| 3 | | 3 | ||
| M (Mega) | | M (Mega). | ||
|- | |- | ||
| | | | ||
| 4 | | 4 | ||
| Continuity (in combination with resistance mode in byte 3) | | Continuity (in combination with resistance mode in byte 3). | ||
|- | |- | ||
| | | | ||
| 5 | | 5 | ||
| Diode (in combination with voltage mode in byte 3) | | Diode (in combination with voltage mode in byte 3). | ||
|- | |- | ||
| | | | ||
Line 173: | Line 176: | ||
| | | | ||
| 7 | | 7 | ||
| | | Unused. | ||
|- | |- | ||
| 5 | | 5 | ||
| | | | ||
| ''Extra flags and value factors'' | | ''Extra flags and value factors.'' | ||
|- | |- | ||
| | | | ||
| 0 | | 0 | ||
| | | Unused. | ||
|- | |- | ||
| | | | ||
| 1 | | 1 | ||
| | | Unused. | ||
|- | |- | ||
| | | | ||
Line 198: | Line 201: | ||
| | | | ||
| 4 | | 4 | ||
| | | Unused. | ||
|- | |- | ||
| | | | ||
| 5 | | 5 | ||
| | | Unused. | ||
|- | |- | ||
| | | | ||
| 6 | | 6 | ||
| n (Nano) | | n (Nano). | ||
|- | |- | ||
| | | | ||
| 7 | | 7 | ||
| | | Unused. | ||
|- | |- | ||
| 6 | | 6 | ||
| | | | ||
| ''Flags'' | | ''Flags.'' | ||
|- | |- | ||
| | | | ||
| 0 | | 0 | ||
| | | Unused. | ||
|- | |- | ||
| | | | ||
| 1 | | 1 | ||
| | | Unused. | ||
|- | |- | ||
| | | | ||
Line 247: | Line 250: | ||
| | | | ||
| 7 | | 7 | ||
| | | Unused. | ||
|- | |- | ||
| 7 | | 7 | ||
| | | | ||
| ''Decimal point position'' | | ''Decimal point position.'' | ||
|- | |- | ||
| | | | ||
| 0 | | 0 | ||
| No decimal point | | No decimal point. | ||
|- | |- | ||
| | | | ||
| 1 | | 1 | ||
| Rightmost (1 digit after point) | | Rightmost (1 digit after point). | ||
|- | |- | ||
| | | | ||
| 2 | | 2 | ||
| Middle (2 digits after point) | | Middle (2 digits after point). | ||
|- | |- | ||
| | | | ||
| 3 | | 3 | ||
| Leftmost (3 digits after point) | | Leftmost (3 digits after point). | ||
|- | |- | ||
| | | | ||
| 4 | | 4 | ||
| | | Unused. | ||
|- | |- | ||
| | | | ||
| 5 | | 5 | ||
| | | Unused. | ||
|- | |- | ||
| | | | ||
| 6 | | 6 | ||
| | | Unused. | ||
|- | |- | ||
| | | | ||
| 7 | | 7 | ||
| | | Unused. | ||
|- | |- | ||
| 8 | | 8 | ||
| | | | ||
| ''Unused (always contains 0x04)'' | | ''Unused (always contains 0x04).'' | ||
|- | |- | ||
Line 314: | Line 317: | ||
| 13 | | 13 | ||
| | | | ||
| ''Unused (always contains 0xd4)'' | | ''Unused (always contains 0xd4).'' | ||
|} | |} |
Revision as of 23:32, 10 September 2012
The Victor 70C is a 4000 counts, CAT II handheld digital multimeter with USB connectivity. It is also sold as the EZA EZ-735.
See Victor 70C/Info for more details (such as lsusb -vvv output) about the device.
Hardware
- Fortune Semiconductor FS9922-DMM4 multimeter chip
- NXP HEF4066BT quadruple bilateral switches
- Microchip TC7660E charge pump DC-to-DC voltage converter
- Texas Instruments 27L2C precision dual op-amp
- Unknown USB interface chip (HID)
Photos
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). |
Resources
- RoastLogger: Input Devices (Victor Victor 86B/86C support)
- Dave Ansell Science Communication: Victor 86C multimeter USB encoding for linux (PHP)
- victor86b-usb-interface: USB interface for Victor 86B Digital Multimeter using HIDAPI (see also here)
- Sparkfun: Victor 70C (manual, software)
- Github: victor70c (HIDAPI)
- Random review / photos