Zaurus and the DSO-101
For a while now, I've been working on a port to the Zaurus of
the driver software for the DSO-101 oscilloscope. The DSO-101
is manufactured by
Syscomp Electronic Design Ltd.
To show the state of the project, here are a few screen shots
and descriptions.

The above shot from my SL-C3000 shows the scope
in normal operation. The input
to channel B (blue trace) is a 16.8Hz sine wave. Channel A (red) has the same
waveform, but phase-shifted and reduced by a series C-R combination.

The next shot shows the same waveforms, but this time in
high-resolution mode (Hi-Res button checked at the bottom of
the controls). In high-resolution mode, the input signals are
sampled at a rate in the range 20M samples per second to 4.9k
samples per second, selectable as powers of two.
In the screen shot, the selected rate is 312kS/s. In each
hi-res scan, 32768 samples
are collected from each input, and the lower part of the display
shows all 32k samples. The upper part of the display shows
a magnified view of a subset of these samples. The size of
the subset is dictated by the timebase setting, and the blue
horizontal scroll bar lets you pan across the sample set. The
ends of the scroll bar thumb (and the vertical cursor lines
dropping down from them) show which portion of the sample
set is in view on the main display.

The third screenshot shows the Zaurus in portrait mode. It took
some doing to get the controls to rearrange themselves
so that everything still fitted...
Display Features
On the main display, there are various draggable cursors:
- A pair of time cursors, T1 and T2. These can be dragged
horizontally to measure time intervals. In the examples, the
timebase setting is 2ms/div and the cursors are one division
apart, so their time interval is 2ms and the corresponding
frequency is 500Hz. Those measurements are shown as the TT entry
in the control panel.
- There is an X cursor, visible in the first screen shot. This
can be dragged horizontally to control the amount of pre- and post-trigger
samples on the display. If it's at the left of the display,
samples are collected after the trigger condition fires. If
it's at the right, samples are collected until the
trigger fires. In hi-res mode, there are always 16k samples
collected before the trigger event and 16k afterwards, so this
cursor then becomes a non-draggable marker.
- The cursors VA1 and VA2 can be dragged vertically, to
measure voltage differences in the waveform. The voltage level
of VA1 is shown as the red item in the V1 entry, that of VA2 as
the red item in the V2 entry, and their difference as the
red item in the dV entry. The cursors VB1 and VB2 operate
in the same way, with respect to the B channel.
- The T cursor can be dragged vertically, and controls
the voltage at which triggering occurs.
- The A and B cursors can be dragged vertically, to shift
the corresponding channel waveforms up and down on the display.
Control Panel
The control panel has pretty much the controls you'd expect:
- Three menus: File, View and AF. The File menu has options
to save/reload the current waveform, and to save/reload
the current control settings. Don't get excited here: the
code for these options has yet to be written. The View menu
lets you reduce display clutter by removing the time and/or
voltage cursors. The AF menu affects the auto-frequency
measurement display, which in the screen shots means the
measurement entry labelled A. If you look at the first screen
shot, it's saying that the channel A waveform is measured
at 16.8Hz, and its period is 59.5ms. In the hi-res shots,
the main display contains less than a full cycle so the
auto measurement does not take place.
- The channel controls A and B let you turn a channel off
altogether, or adjust its sensitivity with the left
and right arrow buttons. Sensitivity ranges are in 1:2:5 ratios
from 50mV/div to 5V/div.
- Trigger mode can be selected as Auto, Normal, Single-Shot
or Manual. The trigger source can be selected as channel A or B,
and triggering can be done on a rising (+) or falling (-) edge.
The trigger voltage level (set with the T cursor) is also
displayed.
- The Single-Shot Reset and Manual Trigger buttons do
what you'd expect.
- The timebase speed is shown in the examples as 2ms/div.
It can be varied from 200ms/div to 50ns/div with the arrow
buttons, in the traditional 1:2:5 sequence.
- The Hi-Res button selects high-resolution mode, as already
described. In hi-res mode, the button which is showing
312kS/s is actually a menu button, letting you set the
hi-res sampling rate.
Download
If you've made it this far, you might want to try out
the software, so here's
dso101_0.3.0_arm.ipk.
There won't be much to see without a scope connected,
but you'll get an idea of whether it runs at all on your ROM
and kernel. PLEASE be sure to back up your Z before
trying it - this is a work in progress, and if it crashes
and destroys all your data, I will refuse all responsibility.
Installation is not quite as straightforward as usual with the
Zaurus, because there are also two USB drivers to install.
Those are ftdi_sio.o
and usbserial.o. You can download
them through the links.
There is also a PDF document article.pdf.
This contains a few background notes on the project,
together with detailed installation instructions and a list
of known bugs.
Also please note: the software writes a file called dso101.trace,
which is the usual idea of debugging output: it reports what
happens, in case it's useful when something goes wrong. So
don't leave the program running overnight, or your disc partition will
overflow. But if you find the software doesn't work for you,
I'd appreciate a copy of the trace file with your report.
Vapourware
These items are on my wish list, and one day they may happen - but
don't count on it!
- Make the entries in the File menu do something.
- Syscomp manufacture a waveform generator as a companion
item to the scope. It's controlled in the same way by host
software, and I'd like to add a control panel for it to this
project. I've made a start, but there's some way to go yet.
Acknowledgements
For getting the project this far, I'd like to thank:
- The members of the OE Forums, who have helped me to get
to grips with the Zaurus both by direct answers to my questions
and by the answers they have provided to others
- Syscomp, who have actively supported the project with
advice, information and donated hardware. And who, of course,
made the project possible in the first place by open-sourcing their
software and being happy for me to mangle it.