• Hello Guest, welcome to the initial stages of our new platform!
    You can find some additional information about where we are in the process of migrating the board and setting up our new software here

    Thank you for being a part of our community!

Automotive Diagnostics with a Cheap Handheld Oscilloscope


Board Member
Aug 29, 2014
Boulder CO
Over the last few years, simple handheld battery-powered oscilloscopes have become available for less than $40. This thread is about the FNIRSI DSO152 oscilloscope, and how it can be used for automotive diagnostics. The examples here are from a Volvo Redblock Engine with a Bosch LH2.4 Fuel Injection System (pre OBD-II). Many other cars of the same era, late 1980s and early 1990s, have similar systems.

The information is split up over several posts:
- Overview and What to Buy
- Basic Oscilloscope Configuration and Adjusting Probe Compensation
- Ignition Waveforms: Crankshaft Position Sensor (CPS), Ignition Powerstage, Coil Primary and Secondary
- Fueling Waveforms: Mass AirFlow sensor (MAF), Injectors and Narrowband Oxygen Sensor
- Miscellaneous Waveforms: Battery, Alternator, VSS, CAN, MegaSquirt, etc.
- Summary and Links for Additional Information

TLDR: for less than $40, the DSO152 works well for many basic engine diagnostics. It lacks the storage and triggering capabilities needed for detailed waveform analysis but is fine for a simple check that a waveform is present and the sensor/circuit isn't completely dead.

What to Buy
The FNIRSI DSO152 is currently #1 on the Amazon Oscilloscope Best Seller List:

You want to get the Deluxe version that includes a 1x/10x oscilloscope probe with a BNC-to-MCX adapter:

A few test leads and some sewing pins (size 20 straight pins 1 1/4" ball point) or 1 1/4" T-pins will make probing easier. These aren't essential - you can just hold the scope probe on the back of the connector pin, but it's easier to use the T-pins and test leads so that your hands are free for other tasks.

When probing the connectors, the T-pin, or sewing pin, is inserted from the back side of the connector next to the crimp on the connector pin. Resting the head of the pin on the rubber connector boot provides enough side force to make a good electrical contact. Do NOT drive the pin into the wire or into the connector pin, or else damage may occur.


An Altoids box works well to store the pins and other small parts.

Before getting started, plug the scope into a USB-C charger. A tiny red LED next to the USB connector will light up, and will change to green once the battery is fully charged. The battery should be good for a couple hours of usage.
Last edited:
Basic Oscilloscope Configuration
If you're familiar with how oscilloscopes work, read the manual, play around with it for a few minutes, and skip to the next post.

Otherwise, skim the manual, get a cool refreshing beverage, take a seat on the couch, and follow along here.

I'm sure there are lots of introductory oscilloscope tutorials on YouTube - if you run across a good one, please add a comment and I'll include it in the links.

Once the battery is charged, hold down the power button until the scope turns on, then plug in the alligator probe cable. The scope uses a mini "MCX" probe connector instead of the more common BNC connector. The Deluxe kit includes a standard BNC 1x/10x probe and a BNC-to-MCX adapter.

The scope has a 3.3volt 1KHz square wave calibration output on the top. Connect the red alligator clip to the calibration terminal, and leave the black alligator clip unconnected. Press the "AUTO" configure button and the scope should automatically adjust to show the 1KHz calibration square wave.

The Up and Down arrow buttons on the scope are used to modify the selected parameter. The left/right trackwheel on the top selects which scope parameter to modify. The currently selected parameter is shown with a blue background.

Using the trackwheel, select the baseline 0volt position, shown by the little arrow on the left side of the display, and move the baseline up or down until it matches this picture:

The vertical size of the waveform, in volts per division, is controlled by the vertical sensitivity, which is the leftmost parameter on the bottom of the screen. The horizontal size of the waveform, in seconds (or milliseconds/microseconds) per division, is controlled by the time base setting, which is the middle parameter on the bottom of the screen.

Using the trackwheel, select the vertical sensitivity and change it up and down to modify the waveform height. Also try changing the time base up and down to view a longer or shorter time duration. With a few trackwheel and button clicks, you should be able to match this picture. Note: press the RUN button to stop updates, then press it again to run or continue updates.

On the far right of the screen is a little arrow which shows the trigger level. In Auto trigger mode, shown as "AUTO" in the upper left corner of the display, the scope will wait briefly until the signal voltage crosses the trigger level before updating the display. If the voltage does not cross the trigger level within a short time, the scope will automatically update the display. This may result in a rolling or unstable display.

To see how the trigger level works, change the settings to 5V per division vertical sensitivity and 500us per division time base. This should have a rolling or unstable display because the trigger level is not within the waveform:

Now, use the trackwheel to select the trigger level arrow on the right side of the display and move it down until it's within the voltage range of the waveform. This should be a stable display:

The scope defaults to AUTO trigger mode, which means the display will continue to be updated even if the trigger threshold is not crossed. Pushing the MODE button changes the trigger mode from Auto to Normal or to Single trigger modes. Normal mode will wait as long as needed for the trigger threshold to be crossed before updating the display. Single mode is like Normal mode, but will Stop after updating the display - press the RUN button to re-arm for another update. Holding down on the MODE button changes the trigger between rising and falling edge threshold crossing.

At this point, you should be comfortable adjusting the scope to zoom in and out, both vertically (voltage) and horizontally (time), when probing the calibration signal.

By default, the scope automatically measures a few key waveform voltage and timing parameters, and displays them on the upper half of the screen. The voltage parameters seem to be pretty accurate, but the timing parameters only seem to work well with a very stable and clean waveform. To turn the measurement display off, hold down on the RUN button.

For long duration measurements, the scope will change to a rolling display when a horizontal time base of 20ms or bigger is selected. To see this, change to a 2S [2seconds per division] time base and tap the alligator clip briefly on the calibration output - the 2S time base is too slow to see the details of the 1KHz signal, but you should see some high/low changes from every tap:

1x/10x Probe Attenuation
The alligator probe cable directly connects to the oscilloscope. It's called a 1x or 1:1 probe since the voltage isn't attenuated. The deluxe DSO152 kit includes a standard 1x/10x oscilloscope probe. This probe has a small slide switch on it that selects 1x (1:1) or 10x (10:1) voltage attenuation. In the 10x position, the probe attenuates the signal by 10-to-1. For example, a 10volt signal with a 10x probe, results in only a 1volt signal at the oscilloscope connector. With the DSO152, this allows voltages up to +/- 400volts at the probe tip in 10x mode. In 1x mode, or with the alligator probe, the scope is limited to +/- 40volt signals without causing damage.

When using a 10x probe, the scope configuration needs to be changed to match. Select the X1 button, bottom of the screen second from the left, and change it to X10. If you don't do this, the scope will still work but the displayed voltages will all be 1/10th of the actual signal voltage.

Probe Compensation
Before using a new 1x/10x probe, the probe compensation needs to be adjusted to give an accurate waveform. The probe kit includes a small adjustment tool to fit the adjustment hole at the base (scope end) of the probe. While connected to the 1KHz 3.3v calibration signal, in the 10x position, turn the adjustment control left or right until the square wave is clean with minimal overshoot or undershoot. Note: the AUTO configure button doesn't work with the calibration signal and a 10x probe - you'll need to configure the scope yourself.

under compensated / over compensated / just right:

The DSO152 includes a self-calibration capability. If you notice that the ground level has an offset, try running the self-calibration. First, unplug the probe from the scope, then press down and hold the trackwheel until the calibration message pops up.
Last edited:
General Probing Notes
Each of the below sections includes which connector and pin to probe, plus the wire color. The pin number/position doesn't change year-to-year, but the wire color may differ year-to-year. For the scope ground wire, you can use any convenient chassis or engine block ground. If you're getting a poor waveform, scrape/clean the ground connection and try again. If the poor waveform persists, you may have a bad sensor/component ground connection instead.

When using T-pins or sewing pins to probe a connector, the pin is inserted from the back side of the connector next to the metal portion of the connector pin and is lightly wedged over to make a good electrical contact. On the Volvo LH connectors, resting the head of the pin on the rubber boot usually provides enough side force to make a good electrical contact and to prevent the T-pin from falling out. Do NOT drive the pin into the wire or into the connector pin itself, or else damage may occur.

All the lower voltage signals, i.e. anything less than 40volts, can be probed with either the 1X alligator probe or the 1X/10X scope probe - just make sure the scope probe 1X/10X switch matches the scope 1X/10X setting. For higher voltage signals, specifically the ignition coil primary "-" and the injectors, the 1X/10X scope probe must be used and set to the 10X position to prevent damaging the scope input.

For each waveform, the scope setup is documented immediately above the picture - the pictures show these same setup details, but some are a bit fuzzy and hard to read.

Ignition Waveforms
Most Volvo 240s, 740s, and 940s use a Bosch LH-Jetronic electronic fuel injection system. In the USA, LH versions 2.0, 2.1 and 2.2 were used from ~1983 through 1988, with LH2.4 being used 1989 and after. All the LH versions use separate fueling control and ignition control boxes.

The LH 2.0, 2.1, and 2.2 ignition systems used in the early 1980s use either a Chrysler ignition box (240s) or a Bosch EZ117K ignition box (740s), and a distributor with a one-pulse-per-cylinder Hall-type position sensor. The ignition box adjusts the spark timing based on the crankshaft position, the engine RPM, and either the intake manifold vacuum (Chrysler box) or a load signal from the fueling ECU (EZ117K box).

The LH 2.4 ignition system, used from 1989 on, uses a Bosch EZ116K ignition box, with a VR-type sensor and a 60-2 "sixty minus two" toothed flywheel/flexplate to determine the crankshaft position. The distributor does not include a position sensor - it only steers the spark to the correct tower. The EZK box adjusts the spark timing based on the crankshaft position, the engine RPM, and a load signal from the fueling ECU.

Ignition - Distributor Position Sensor LH2.2
The LH2.0, 2.1, and 2.2 distributors include a Hall-type position sensor with a rotating 4-flag shutter wheel. This generates a square wave pulse per cylinder. Rotating the body of the distributor in the block adjusts the idle timing.

The distributor connector has 3 pins: "-" ground, "O" output signal, and "+" 12volts.
Probe pin "O" (center pin), yellow wire

[I don't have waveforms for a LH2.2 distributor position sensor. If someone else has them, please add them to this thread. The waveform should roughly be a 0volt to 10volt square wave with two pulses per rev and a ~40% duty cycle. Idle should be ~30Hz and 2000rpm should be ~70Hz.]

Ignition - Crankshaft Position Sensor (CPS) LH2.4
The LH2.4 EZ116K ignition system uses a VR-type sensor. A VR-type sensor is simply a coil of wire, a magnet, and an iron core. When each flywheel/flexplate tooth rotates by the VR sensor, the magnetic field sweeps in and out, generating an alternating +/- voltage as the magnetic field sweeps through the coil. This voltage is proportional to the engine RPM -- low RPMs, like cranking, only generate a small voltage, while high RPMs generate a large voltage.

If the VR sensor is damaged, such as the windings partially shorting out internally from corrosion, or if it is too far away from the flywheel/flexplate, it may not generate enough voltage to be correctly sensed by the EZK box. This results in a no-start condition.

The CPS connector has 3 pins: ground, signal, and shield (which is tied to ground at the EZK connector).
Probe pin 2 (center pin), red-yellow wire

idle - zoomed-out view showing ~1.5 engine revs with a couple missing tooth sections
setup: AUTO trigger mode, 1V/div, X1, 10mS/div, DC coupling

idle - zoomed-in on 60-2 missing tooth section (you may need to hit the RUN button a bunch of times until it captures a missing tooth section)
setup: Single rising-edge trigger mode, 1V/div, X1, 2mS/div, DC coupling, trigger level mid-waveform

2000 rpm - VR details
setup: Single rising-edge trigger mode, 2V/div, X1, 1mS/div, DC coupling, trigger level mid-waveform

Notice that the Vpp peak-to-peak VR voltage at idle is ~3.6v, and goes up to ~8.5v at 2000rpm. Cranking @200rpm should be ~0.9v.

Once the ignition control box detects that the engine (LH2.4) or distributor (LH2.2) is rotating properly, it starts generating the spark signal to the powerstage and also generates a tach signal to the fuel control box. For safety reasons, the fuel control box will not turn on the fuel pump continuously until it sees a good tach signal. The LH2.4 fueling system will also briefly run the fuel pump at key on to build pressure in the fuel rail.

Ignition - Powerstage (also called an Ignition Amplifier or an Igniter)
For the LH 2.0, 2.1, and 2.2 ignition systems with a Chrysler ignition box, the coil is driven directly from the ignition box. For the LH2.2 ignition systems with an EZ117K box, and for all the LH2.4 ignition systems, a separate powerstage module, also called an ignition amplifier or igniter, is used. The powerstage converts a low-current "logic level" spark signal from the EZK ignition control box to the high current signal needed to drive the ignition coil. One side of the coil, the "+" tab, is connected to +12v. The other side of the coil, the "-" tab, is connected to the powerstage.

When the EZK box drives the powerstage spark input high (~5volts), the coil starts to charge. When the EZK box drops the powerstage spark input low (~0volts), the coil discharges and the spark fires. The width of the EZK spark pulse is the dwell time.

It's easiest to unplug the powerstage connector, backprobe the EZK input pin, pin 5, with a T-pin then re-install the connector. Alternately, a spare powerstage can be used and left floating on the harness, it doesn't need to be screwed to the fender.

probe: pin 5, gray wire

setup: AUTO trigger mode, 2V/div, X1, 20mS/div, DC coupling

setup: AUTO trigger mode, 2V/div, X1, 20mS/div, DC coupling

Ignition - Coil Primary
The coil primary voltage, the "-" coil tab, is easily probed. To prevent damage to the DSO152 scope, a 1X/10X probe in the 10X position must be used. Also make sure to set the scope to X10 so that the reported voltage levels are correct.

There's a whole art to interpreting coil primary voltage waveforms -- see the references a few posts down. I'm not going to explain any of it here.

For basic diagnostics, you just want to see that the coil is firing for each cylinder. The DSO152 is OK for this, but not for more detailed waveform analysis. Due to the DSO152's single screen of storage, and limited screen resolution, it's hard to get a completely consistent display of all 4 cylinders on a single screen. You can see all 4 cylinders, but there will be significant variation in the spark waveforms. This is an artifact of the scope, and not a true difference in the cylinders.

probe: coil "-" tab, red-white wire

setup: Single rising-edge trigger mode, 10V/div, X10 probe, 10mS/div, DC coupling, trigger level at about 25v

setup: AUTO (or Single) rising-edge trigger mode, 10V/div, X10 probe, 5mS/div, DC coupling, trigger level at about 25v

single pulse
setup: Normal (or Single) falling-edge trigger mode, 10V/div, X10 probe, 1mS/div, DC coupling, trigger level at about 5v

Notice the hint of the falling edge of the waveform at the extreme left of the display. The low time of ~5.8ms is the dwell time, and the spark duration is 2.2ms. The sparkline, aka flyback, voltage is off the screen, so at least 70v. Note, I turned off the measurements on this capture to make the display cleaner (hold down the RUN button).

Ignition - Coil Secondary
Coil secondary voltage waveforms are good for isolating ignition issues to a single spark plug. With a special high-voltage ignition probe, ~$20 from Hantek, the secondary or spark voltage (up to 40KV or so) can be probed safely. The coil primary voltage waveform contains similar information, but you need to figure out which of the cylinders lines up with the bad cylinder in the primary waveforms.


I tried using a Hantek HT-25 probe with the DSO152 but failed completely - I couldn't get the scope to trigger properly and never saw anything that resembled a good secondary waveform. See the links for a secondary ignition waveform analysis article.
Last edited:
Fueling Waveforms
The LH fueling controller uses a hot-wire MAF Mass AirFlow sensor (also called an AMM Air Mass Meter) to measure the incoming airflow in grams per second. Based on this airflow measurement and the coolant temperature, with adjustments for load and O2, the fueling ECU pulses the fuel injectors to provide the desired air-fuel mixture. When the engine is cold, gasoline vaporizes poorly and extra fuel (in the 30% range) is needed for proper combustion. As the engine warms up, vaporization improves and the extra fuel is tapered off.

Fueling - Mass AirFlow Sensor (MAF)
probe: pin 3, red-white wire (in this picture, I happened to use pin 2 as the scope ground but any more convenient ground is fine)

The MAF sensor has a quasi-exponential transfer curve of output voltage versus measured airflow (from link)

Typical MAF voltages after warmup on my B21FT at 5000' elevation are ~2.4v @ idle, ~3.1v @ cruise and ~4.2v accelerating - YVMV your voltages may vary. There are not any simple tests for the LH MAFs other than swapping in a known good MAF. If the MAF response is slow (e.g. dirty hot wire), or the voltage is off a bit, it can cause assorted running problems but generally won't be noticeable in the waveforms.

scrolling display of: key off, key on, cranking, idle, up to 2000rpm, and back to idle
setup: AUTO trigger mode, 1V/div, X1, 2S/div, DC coupling

Fueling - Injectors
For safety reasons, the LH fueling controller will not turn on the fuel pump and will not start to pulse the injectors until it sees a good tach signal from the ignition control box. The tach signal is a ~0v to ~10v square wave, but the wiring is buried in the cabin harnesses and is not easy to probe.

The LH fueling system uses batch-fire injection, which means that all 4 injectors are wired together and fire at the same time. (Newer fuel injection systems use sequential injection, where each injector is wired separately and fired at the optimum time for each cylinder.) During cranking, LH 2.4 fires the injectors twice per engine rev. Once running, LH switches to firing the injectors once per engine rev (but I've also seen it run with twice per rev - I don't know what determines this).

Electrically, one side of each injector is connected to +12v. On the factory turbo engines, the +12v injector connections go through a 4x 6.2ohm resistor pack. The resistor pack is located on the driver's side fender near the battery. NA engines do not have the resistor pack. The other side of each injector is wired together and driven low by the LH ECU to energize the injectors.

To prevent damage to the DSO152 scope, a 1X/10X probe in the 10X position must be used. Also make sure to set the scope to X10 so that the reported voltage levels are correct.

probe: pin 2, green-white wire (all 4 injectors are wired the same)

setup: Normal falling-edge trigger mode, 10V/div, X10, 10mS/div, DC coupling, trigger level at about 8 volts

For basic diagnostics, you just want to see that the injectors are firing every engine cycle. The DSO152 is OK for this, but not for more detailed waveform analysis. Due to the DSO152's single screen of storage, and limited screen resolution, it's hard to get a completely consistent display of multiple injector firing pulses. At lower RPM, when the injector pulse width is narrowest, there will be significant variation in the displayed injector pulses. This is an artifact of the scope, and not a true difference in the fuel injection.

setup: Normal falling-edge trigger mode, 10V/div, X10, 10mS/div, DC coupling, trigger level at about 8 volts

single pulse
setup: Normal falling-edge trigger mode, 10V/div, X10, 500uS/div, DC coupling, trigger level at about 8 volts

Notice the hint of the falling edge of the waveform at the extreme left of the display. You may need to hit the RUN/stop button multiple times to get a clean single pulse capture that starts when the injectors are first energized.

This waveform shows an injection time of 2ms, followed by a ~60volt inductive kickback pulse as the injector closes. On a higher resolution scope, it's possible to see the slight voltage disturbances from the injectors starting to open, and from the injectors starting to close. I'll include a link below.

For comparison to using a scope, an incandescent test light can be used to see if there's an injector pulse. Connect the test light to the battery +12v post, then probe the injector green/white wire. An LED noid light is another option instead of using a scope.

Fueling - Narrowband Oxygen Sensor
The LH fuel injection system use a narrowband oxygen (O2) sensor adjust the fuel-air mixture to achieve best combustion. For emissions control with a 3-way catalytic converter, the air-fuel mixture must be slowly cycled between slightly rich and slightly lean. While lean, the CAT oxidizes any excess HC or CO; while rich, the CAT reduces excess NOx. This rich-lean cycling shows up in the O2 sensor waveform at a rate of between 1 and 2 seconds per cycle. I don't know how the LH ECU picks the exact cycle rate, but it does seem to vary some with RPM. At idle, you can sometimes hear/feel this cycling as the engine runs a bit rougher during the lean portion of the cycle.

Note, it may take a couple minutes for the O2 sensor and engine to warm up enough to start cycling normally. Reving the engine will warm up the sensor faster. Make sure you give it enough time, or else the sensor may not cycle. If the engine is running continuously lean, or continuously rich, the O2 sensor will peg low ~0v (lean) or high at ~1v (rich).

probe: wire in center of big green shielded cable

setup: AUTO trigger mode, 200mV/div, X1, 1S/div, DC coupling, trigger level mid-waveform

setup: AUTO trigger mode, 200mV/div, X1, 1S/div, DC coupling, trigger level mid-waveform
Last edited:
Miscellaneous Waveforms: Battery Voltage
When the time base on the DSO152 is set slower than 20ms/div, the scope goes into a continuous scrolling mode. This can be used to monitor slowly changing signals, like the battery voltage, or if you have the patience, the coolant temperature sensor voltage during warm up (not measured here). The slowest available setting is 500seconds/division, or ~1.6 hours across the whole display.

To probe the battery voltage, the "+" tab on the coil (blue wire) is convenient. I used a 10x probe because it was already setup, but the 1x alligator probe would be fine too. Just make sure the scope X1/X10 setting matches or else the displayed voltages will be wrong.

scrolling trace showing: key off, key on, drop in voltage during cranking, then normal charging voltage while idling
setup: AUTO trigger mode, 5V/div, X10, 1S/div, DC coupling

Miscellaneous Waveforms: Alternator Ripple
To view the alternator ripple, simply change the scope to "AC" probe coupling (instead of DC) and adjust the scales.

setup: AUTO trigger mode, 500 mV/div, X10, 50mS/div, AC coupling

For a basic alternator test, you want to see that it's charging at ~13.5volts (maybe a bit less at idle if it's an older small alternator), and that the ripple is uniform. If there's a damaged alternator diode, the ripple waveform will be uneven, usually with a repeating pattern every 6 pulses. Additional load can be put on the alternator by turning on the headlights and running the HVAC fan at max. See the link section below for further information on alternator and ripple analysis.

Miscellaneous Waveforms: VSS Vehicle Speed Sensor
The LH2.4 fueling ECU needs a VSS Vehicle Speed Sensor signal or else the idle rpm can stick high until power-cycled. The VSS signal is also used for cruise control and ABS (if present). The VSS signal is generated by a VR sensor in the rear differential and a conditioning circuit in the speedometer. There are two variations - the earlier pre-ABS cars use a 12-tooth tone ring in the differential, the later ABS cars use a 48-tooth tone ring. For ABS, the 48-tooth VR signal goes to both the ABS module and to the speedometer. The conditioned VSS signal from the speedometer is always 12 pulses per rear axle revolution (ABS or non-ABS).

The "Kxxxx" number on the bottom of the speedometer dial is the number of VR sensor pulses per mile (USA) or per kilometer (Europe). The non-ABS cars have 12 pulses per axle rev; ABS has 48 per rev. For example, common USA non-ABS and ABS speedometers are K9800/K10042 and K39200/K40168.

On my '85 Volvo GLT Wagon (originally K-Jet) I've retrofitted a LH2.4 system with some non-conventional VSS circuits. I don't have a VR sensor in the rear differential, but instead use the cruise control VR sensor out the back of the '85 mechanical cable-driven speedometer. Below are some example waveforms from my wagon - they'll be similar to standard LH2.4 waveforms, but have a ~3x slower pulse rate, and lower peak-to-peak VR amplitude.

setup: AUTO trigger mode, CH2 VR 200mV/div / CH3 VSS 5V/div, 20mS/div, DC coupling
~15 MPH (spinning with drill on benchtop)

Miscellaneous Waveforms: CAN Bus
While not used by the LH systems, CAN Bus has become very common and being able to do some simple diagnostics would be nice. Unfortunately, the DSO152 really isn't up to this task. For 500 Kb/s and slower CAN Bus data rates, the DSO152 can sort of capture the CAN H/L signals, but the scope's triggering is so intermittent that it makes the CAN bus seem flakey. This is a scope problem, not a CAN bus problem.

setup: Normal trigger mode, 1V/div, X1, 10uS/div, DC coupling, trigger level mid-waveform (start in AUTO trigger mode to figure out trigger levels)

Notice that the CANH signal swings from ~3.4v to ~2.4v, and the CANL signal swings from ~1.4v to ~2.4v.

Miscellaneous Waveforms: MegaSquirt and DSM CAS
See: https://turbobricks.com/index.php?t...tion-and-injector-setups.354095/#post-6059769
Last edited:
Summary and Links for Additional Information
As can be seen in the previous posts, even a simple cheap oscilloscope provides much better diagnostic information than a just a testlight or multimeter. When known good waveforms are available for comparison, major component failures can be easily identified. If you've never used an oscilloscope before, the DSO152 is a great introductory scope and is about as simple to use as possible.

While the DSO152 is good for basic waveform checks, it lacks the storage and triggering capabilities needed for intermittent failures and for detailed waveform analysis. The next step up in oscilloscopes, in the $150 range, would be a 2-channel scope with a higher sample rate, better triggering and a few K samples of storage. A few K samples of storage is enough to cover several engine revolutions with reasonable detail. Beyond this, a full featured scope with deep storage (millions of samples) is needed. As usual, with added capabilities comes additional setup complexity and learning.

The bandwidth of the DSO152 is only 200KHz. This is nice in that it eliminates most electrical noise from the waveforms, and allows the probe ground connection to be most anywhere convenient. The downside is that fast waveforms are not displayed consistently, e.g. sometimes the initial voltage spike on coil primary and the injectors is shown, and sometimes it's missed. Most of the more expensive oscilloscopes will have a bandwidth of 40MHz or higher, which is 200 times faster than the DSO152.

FNIRSI DSO152 Quirks
- AUTO configure key often doesn't work with 10x probe or low voltage signals.
- Can't adjust trigger level to greater than 4 divisions above ground level.
- Triggering is often intermittent. Even if the trigger level is properly set to the middle of a repeating waveform, it can still take a few seconds to trigger. This should be nearly instant.
- Need to be in AUTO trigger mode before being able set time base slower than 10ms/div.
- Sometimes holding down the RUN key doesn't toggle the measurements display on/off - try STOPing first, or just powercycle to fix.

- Built in battery is great for convenience.
- Hanging a scope probe with the BNC-to-MCX adapter off the DSO152 is awkward, and seems like it will break off eventually.
- For the basic tests, the probe ground location doesn't really matter - just use something convenient.
- For diagnosing voltage noise problems, the DSO152 is way too slow (200KHz), and needs better triggering. (OWON HDS242 may be usable)
- Most of the engine harness connectors used in the old Volvos are Amp Jr Timer series, and have a male blade pin thickness of 0.031" (0.8mm). Common 1 1/4" sewing pins or T-pins have a diameter of ~0.030" (use a caliper to verify your pins). This allows the T-pins to be used for front probing (harness unconnected), and for drag testing, of the female connector pins.

- Allen Institute - The Scope Book (1988) Ignition Systems https://cody.inlandgps.com/pub/Scope Book 35115.pdf
- Motor Magazine back issues from 1990s and early 2000s https://www.motor.com/magazine-summary/
(Note: to see articles with pictures, scroll to the bottom and download the pdf)
--- Understanding Ignition Waveforms https://www.motor.com/wp-content/uploads/FireInTheHoleUnderstandingIgnitionWaveforms-May2005.pdf
--- Diagnosing Wasted Spark Ignition https://www.motor.com/magazinepdfs/071999_06.pdf
--- Mastering The Basics: Ignition Systems - https://www.motor.com/magazine/pdfs/071999_07.pdf
--- Mastering the Basics: Primary Ignition Analysis - https://www.motor.com/wp-content/uploads/Masteringthebasics_03.2001.pdf
--- Mastering the Basics: Secondary Ignition Analysis - https://www.motor.com/magazine/pdfs/052001_04.pdf
--- Fuel Injector Waveforms - https://www.motor.com/wp-content/uploads/FuelInjectorWaveformsSlicedExtraThin_January2005-2.pdf
--- Alternator Ripple https://www.motor.com/magazine-summary/alternator-ripple-effect/

Feel free to post any questions, suggestions, or other waveforms of interest.

Last edited:
Open Waveform Requests
If you have any of the below waveforms, regardless of what scope they came from, please post them and I'll add them to the main sections above and to my imgbb album https://ibb.co/album/V0PHsr .
- LH2.2 distributor hall sensor, at idle and 2000rpm
- Secondary spark waveforms, using a high-voltage ignition probe [Bob: I'll try to do this on a better scope]
- Differential VR speed sensor, at 15MPH (please note if it's a 12-tooth non-ABS or 48-tooth ABS tone ring)
Last edited:
Very good! Big thanks for doing this!!
I wonder if there is an inductive clamp that can be used with this scope to go around the coil wire to look at the secondary ignition.
This is awesome, thanks for putting this together. Been meaning to pick up one of these newfangled oscopes for a while and your thread made me finally pull the trigger.
Excellent work.
As a teacher who has struggled to get kids to care about waveforms over the years, i really appreciate the effort and detail here.
I saw my first ignition waveform in 1975, and had no idea what i was seeing.
Your primary waveform gave me a flashback to the Allen Smartscope class i took in 1985.
Look at how huge those and the old sun scopes were.
We have come a long way.
Awesome guide and article!

If you have time, could you please add in the VSS signals to and from the speedo - like the VSS input to the cruise control module?
@mikep - it's pretty amazing that a $40 handheld scope can do many of the same things that a behemoth sun engine analyzer did in the 1980s (except for the vacuum and exhaust gas analysis)

@bgpzfm142 - I have a weird setup where I'm using a '85 cable driven speedometer, with a cruise control VR sensor on the back, to generate a VSS signal for LH2.4. I should be able to find some waveforms for this setup (VR signal and generated VSS signal), but they won't match the normal LH2.4 differential and ABS signals.
This is phenomenal information...Was debating about getting an oscilloscope a few months ago but decided against it because of the challenges of how to use it so bought a MaxxEcu Sport instead which has a Built-IN Oscilloscope...May pick one up now just to get familiar with it...Thanks for the write-up...
I think I'm now done proofreading and updating the main posts. I tried using the high-voltage ignition probe on the spark plug wires to capture the secondary coil waveforms, but this was beyond the capabilities of the cheap scope.

If you buy one of these scopes and use it for diagnosis, please post some feedback on the main instructions. If anything isn't clear, or needs more details, I'll see what I can do.

Next for me is to try a slightly better scope for ignition/injector/CANbus waveforms. I'll add another post below when done.
I think I'm now done proofreading and updating the main posts. I tried using the high-voltage ignition probe on the spark plug wires to capture the secondary coil waveforms, but this was beyond the capabilities of the cheap scope.

If you buy one of these scopes and use it for diagnosis, please post some feedback on the main instructions. If anything isn't clear, or needs more details, I'll see what I can do.

Next for me is to try a slightly better scope for ignition/injector/CANbus waveforms. I'll add another post below when done.

I saw a couple multichannel ones that were sub $100. A write up on the uses and benefits of multiple channels would be good, especially with the quality of your writing.
Finally got to read some of this thread, I'll definitely take a closer look later and see about probing around my Volvos with the scope. Awesome to see this topic come up on here as scope diagnostics are a quite overlooked topic (and my current obsession).

On a related note the pico 2204a is a quite good entry level scope imo, I had good luck getting injector and canbus waveforms with it, although secondary ignition left a lot to be desired.
I've got a hold of an Owon HDS242 2-channel scope/meter and should be able to try it out this weekend. ~$120, 2 channel, 40MHz, 8K samples, with a 5-digit multimeter mode.
Owon HDS242 picture.jpg

I've always like the Picoscopes, and their software is top notch. The entry-level 2204A $165 is a great deal (but needs a Windows laptop to use it). While it doesn't have much memory (8K samples), it does have a "USB Streaming Mode" 1MS/s, which should work fine to provide deep memory for automotive use.
Quick review of Owon HDS242
The Owon HDS242 is an over-sized multimeter with a built in 2-channel oscilloscope. It's ~$120 for the 40MHz version, with 8K of sample storage, and no waveform generator. It works fine for automotive diags, including CAN bus. Due to the added features, setup is more involved than the FNIRSI DSO152.

Looking at the injectors, the HDS242 triggers consistently and has less waveform display variation than the DSO152. Here are the injectors at idle over 8 revs, and the details for a single injection pulse:


Here is a 2-channel CANbus capture in HOR Refresh=High and Refresh=Low modes. In High mode, multiple waveform captures are overlapped on the display. In Low mode, only the most recent capture is displayed. Triggering is fast and works as expected.

The HDS242 can save up to 4 screen captures in a .bmp format. The .bmp files can then be copied to a PC over USB. It would be nice if it used the more efficient .png format, and stored more than 4 captures. The above 2 CAN waveforms are examples of screen captures.

The HDS242 includes a 5-digit multimeter mode. Continuity mode beeps immediately, but standard resistance mode takes a little while for the reading to stabilize. It would be nice if it supported voltage min/max measurements too, but it doesn't. I didn't try the current measurements.

I tried using my high-voltage Hantek HT-25 secondary ignition probe with the HDS242, but still couldn't get anything usable. I don't know if it's over driving the input stage or if the probe is broken.
Last edited:
I have several HT-25 probes but haven't gotten a good waveform out of them on the 2204a, I'll try them with my other scope and report back if they get useable squiglies.