I'll dump everything I know about Probus here. There are bits and pieces of information scattered around the Internet but I think this will be the most complete and accurate repository on the topic.
Let's start with the basics: Probus is LeCroy's 6-pin header for active probes and probe adapters. It has +/-12V power, an I2C interface, ground, and a connection to the probe ring.
Images of the connector, the pinout, and probe ring:
In case the image links go bad, the pinout when looking at the face of the scope is:
1 3 5
2 4 6
1 = +12V
2 = -12V
3 = I2C_SDA
4 = I2C_SCL
5 = Probe Ring
6 = GND
The Probe Ring connector forms a voltage divider that is sampled by an ADC and used to determine what type of probe is attached. For Probus probes this should be type "Bus" which is identified by a 270 Ohm resistor between Ring and GND. Passive probes use a spring pin to the ring around the BNC connector whereas Probus probes use pin 5 of the Probus header which is tied to the ring.
As an aside, I painstakingly compiled a list of the ADC decision points and associated resistor values as well as the mid-point (maximum margin between decision points) and best selection of E24 resistor.
Setup: I used a Keithley Sourcemeter to simulate a resistor between the probe ring and ground. The sourcemeter regulated the current through the circuit which I adjusted to find the scope's decision points. By measuring the corresponding voltage at the probe ring I could then back-calculate the equivalent resistance between the probe ring and ground.
The ADC column is the number reported by the scope when it first changed from the previous point as reported by service diagnostics. The current column is the driving current from the sourcemeter and the voltage column is the measured voltage at the probe ring node. The equivalent resistor values is voltage divided by the current.
The midpoint resistance is the exact middle between two decision points and the E24 column is the nearest 5% tolerance resistor to the midpoint value. Note that LeCroy uses a 10k resistor in their 10x probes which is fine, though not perfectly centered, and Tek uses 11k in their 10x probes.
ADC counts (hex) | Probe Type | Current (mA) | Volts (V) | Rmax (Ohm) | Rmid (Ohm) | Rmin (Ohm) | E24 (Ohms) | LeCroy Value (Ohms) |
0x3ff | None | 0 | 3.000 | Open | -- | 33046 | -- | |
0x3da | 1x | .087 | 2.875 | 33046 | 25160 | 17275 | 24000 | |
0x3ae | 10x | .160 | 2.764 | 17275 | 12889 | 8503 | 13000 | 10000 |
0x35c | 100x | .3 | 2.551 | 8503 | 6224 | 3945 | 6200 | |
0x2e5 | 1xa | .55 | 2.170 | 3945 | 3426 | 2907 | 3300 | |
0x2a5 | 2x | .68 | 1.977 | 2907 | 2548 | 2188 | 2400 | |
0x262 | 5x | .812 | 1.777 | 2188 | 1930 | 1672 | 2000 | |
0x220 | 20x | .943 | 1.577 | 1672 | 1471 | 1271 | 1500 | |
0x1dc | 50x | 1.079 | 1.371 | 1271 | 1110 | 949 | 1100 | |
0x195 | 200x | 1.219 | 1.157 | 949 | 831 | 713 | 820 | |
0x153 | 500x | 1.348 | 0.962 | 713 | 660 | 606 | 680 | |
0x130 | 1000x | 1.416 | 0.858 | 606 | 510 | 415 | 510 | |
0x0e8 | 10xa | 1.556 | 0.645 | 415 | 376 | 337 | 390 | |
0x0c7 | Bus | 1.621 | 0.547 | 337 | 256 | 176 | 270 | 270 |
0x077 | BusInt | 1.776 | 0.312 | 176 | 112 | 48 | 110 | |
0x031 | Short | 1.921 | 0.091 | 48 | 24 | 0 | -- | |
0x000 | Short | 1.96 | 0.000 | 0 | 0 | 0 | -- |
The I2C interface is connected at minimum to (inside the probe) a 24C series I2C EEPROM, usually a 24LC02, and optionally one or more I2C IO expanders (PFC8574). The EEPROM write-protect is pulled high and must be shorted to ground to enable erase/write. Typically there is a 2-pin 100mil header inside the probe for this purpose. The address lines are all tied low.
The contents of the EEPROM are arranged into order-independent packets with a two-byte header. The first byte is the packet type and the second byte is the packet size (including the two header bytes). Although firmware can read and parse packets that are out of order, it is best practice to store them in ascending order by the packet type byte.
At a bare minimum the probe needs to implement the
model name packet or else the probe will not be identified.
The list of recognized probes and adapters is hard-coded in firmware as are some of the default probe parameters. For example probe input capacitance and bandwidth typically (maybe always?) come from hard-coded values in firmware rather than from the EEPROM data. So if you are making your own probe you most likely need to fake an existing model or else be faced with this:
Let's look at a simple example for the AP100 probe. EEPROM contents are very short:
01 08 00 41 50 31 30 30 11 06 00 00 A0 40 12 06 AE 47 81 3F 36 03 00 38 07 31 30 30 EA 0A
Begin parsing by looking at the first two bytes, 01 08. This is type 01 (model name) and size 08:
01 08 00 41 50 31 30 30 11 06 00 00 A0 40 12 06 AE 47 81 3F 36 03 00 38 07 31 30 30 EA 0A
So the first packet consists of the first 0x08 bytes:
01 08 00 41 50 31 30 30
The next packet is type 0x011, 0x06 bytes:
11 06 00 00 A0 40
Then type 0x12, also 0x06 bytes:
12 06 AE 47 81 3F
Then type 0x36, 0x03 bytes long:
36 03 00
And finally it ends with type 0x38, 0x07 bytes:
38 07 31 30 30 EA 0A
As mentioned before, packet type 0x01 is the probe model name. It begins with a null byte for some reason (all values of this byte seem to be ignored) and then comes the name in ASCII. (41 50 31 30 30 = AP100)
Type 0x04 is the probe serial number. Sometimes it is in ASCII (AP022) and other times the hex values of the data are displayed (AP021).
Type 0x38 is an ASCII string for the coupling label, though it appears to be overridden by hard-coded firmware values (you can change the value in the EEPROM but it doesn't reflect in the GUI). It seems to always be terminated with a line feed (0x0A).
There are many other packet types but I am so far unable to determine what their significance is.
Type Code | Meaning | Storage Type |
0x01 | Probe model name | ASCII with a leading null |
0x04 | Serial number | ASCII or sometimes decimal |
0x11 | Attenuation attribute | Single point precision float, reversed bytes |
0x38 | Coupling | ASCII with line feed terminator |
0x41 | Delay attribute | Single point precision float, reversed bytes |
0x62 | BW in GHz (newer probes like ZD200) | Single point precision float, reversed bytes |
Attached is a zip of EEPROM data for 139 different probe types. Maybe somebody will join me in trying to decode the many other packet types.