Introduction: Simple PC Oscilliscope

About: Bytesize articles instead of a trilogy in one post.

Sometimes when I build simple ttl (Transistor–transistor logic) circuits I like to see the results of the output. An example would be the pwm (Pulse-width modulation) that might control a robot motor. I do not have the money to buy an oscilloscope. so I am using this project to fulfil those needs.

Note I am assuming you know how to use this set up. If you are not sure, please get a professional to help. If you are unfamiliar with electronics do not do this without help of a professional. Improper probes could destroy your computer, what is connected to your computer, and as well as not be safe.

Step 1: Input Probe.

You may want to build this input probe from the first diagram.$$Search is a good place to go to get equivalent part numbers.  Also included are other probes that are not as system safe.

Quote from linuxquestions
I made a little progress....
I started first with using the line in jack. I made a probe with a 1 meg resistor inline. The tip of the stereo plug is the left channel or channel 1 on Xoscope display. So the ring is the right channel or ch. 2 on the display. I only used one channel to start with. I used the Sleve as ground. I found the line jack seems work a lot better "cleaner" than the mic input.
With xoscope running, trigger off, I opened Kmix and selected the red button under "line" and went over and selected the green button above "IGAIN" and set the gain mid way and it started to work. This was after much knob dicking and fiddling around without a clue.
I seemed to have bleed over from the other channel, but I think its just the setting of the scale I used 1/5 and the noise dropped way down. I think being familure with how it works will make it easier to use.
I think its possible to make a 555 timer oscillator maybe with some clipping diodes to create a voltage reference?

Step 2: Getting the Software for Ubuntu.

You will need two pieces of software. One for the scope software itself and one for the volume control. You can go to the synaptic package manager an get the two files or you can get them via the command line/ (requires an internet connection).

Xoscope - oscilliscope

$ sudo apt-get install xoscope

Fedora 16
$ sudo yum install oscilloscope

Pavucontrol - soundcard control  (older systems may need to use the alsa utilities instead)
sudo apt-get install pavucontrol

Fedora 16 32 bit
sudo yum install gtk+-devel pavucontrol
download and extract the xoscope archive
cd to the xoscope directory
sudo make
sudo make install

Step 3: Xoscope Quickie Manual.

       oscope xoscope - Digital Oscilloscope via Sound Card
                                    or Other Hardware


		oscope [oscope options] [file]
        xoscope [toolkit options] [oscope options] [file]


		Oscope  is  a  digital  real-time oscilloscope. It graphically displays
        signal amplitude or bit logic as a function of time.   Signals  may  be
        displayed,  saved, recalled, and manipulated by math functions.  Signal
        input devices currently include:
             Audio sound recording via /dev/dsp.  Two 8-bit analog channels  at
             8000 S/s to 44100 S/s.  Left and right audio is connected to X and
             Y inputs respectively.  Use an external mixer  program  to  select
             which  sound inputs to record.  AC coupled, voltages unknown, 256K
             sample memory.
             Shared audio sound via the  Enlightened  Sound  Daemon.   This  is
             great  for  watching music but support for it is an option at com
             pile-time.  EsounD is auto-detected and preferred over /dev/dsp.
        ProbeScope / OsziFOX
             Radio Shack ProbeScope, Cat. No. 22-310 is also known as an  oszi
             FOX.   This  handheld  probe sends its data through a serial port.
             It samples one channel at 6-bits up to 20 MS/s with 128 samples of
             memory.  Real voltages are labeled in sample ranges from 1 volt to
             100 volts.  If a ProbeScope is detected, it is connected to the  Z
             Bitscope ( is a mixed-signal capture engine which
             is accessed through a serial port.  It  simultaneously  samples  a
             digital  8-bit port and two analog channels at 8 bit resolution at
             up to 25 MS/s or more.  If detected, Channel A and B are connected
             to  X  and Y while the Logic Analyzer is connected to Z, disabling
             all sound input.  Bitscope support is currently under  development
             and not yet fully functional.
        See  the  -x  and -z options and the ENVIRONMENT section below for more
        details on how the above devices are detected.  Some  of  the  controls
        below apply only to the sound card and are labeled as such.  Oscope has
        no physical control over the ProbeScope/osziFOX which is controlled  by
        its  own  switches and built-in menus.  Please refer to your ProbeScope
        or osziFOX Owner’s Manual for operating  instructions.   Bitscope  will
        eventually be controlled through a separate dialog window.
        Oscope  is an interactive program and can be completely controlled from
        the keyboard at run-time.  In verbose key help mode, each available key
        is shown on the screen in (parentheses).  The following single key com
        mands are available:
        ?    Toggle verbose key help display mode.
             Immediately quit the program.
        @    Load a previously saved file.  You are prompted for the  filename.
        #    Save  current  settings  and  memory buffers to a file that can be
             loaded later.  You are prompted for the  filename  and  asked  for
             confirmation to overwrite if it already exists.
             Clear and refresh the entire screen.
        ^    Toggle  the serial input device on/off.  A serial device is turned
             on only if it is found active on a serial port.  This may be  use
             ful  if  the device was not detected at startup.  See the ENVIRON     
             MENT section below for more details.
        &    Toggle the sound card input device on/off.
        *    Cycle the sound card DMA divisor: 4, 2, 1.  The sound driver  will
             divide  it’s DMA buffer by this factor.  The value 4 usually gives
             the fastest display rate.
             Under EsounD, this value instead determines whether the connection
             to EsounD will block (4) or not (2 or 1).  Blocking mode is nicest
             to CPU usage but the oscope interface will not  respond  when  the
             there  is  no  sound  stream coming from EsounD.  Nonblocking mode
             will let oscope be responsive whether sound is available  or  not,
             but will consume all available CPU cycles.
        (/)  Decrease/increase the sound card sampling rate.
        9/0  Increase/decrease  the  Sec/Div horizontal time scale (zoom out/in
             on time).
        -/=  Decrease/increase the sound card trigger level.
        _    Toggle the sound card trigger channel: X or Y.
        +    Cycle the sound card trigger  type:  automatic,  rising  edge,  or
             falling edge.
             Cycle  the  trigger  mode of the sound card: run, wait, stop.  Run
             mode continuously acquires  and  displays  samples  after  trigger
             events.   Wait mode waits for the first trigger event and displays
             only the first set of samples; this is "single-shot"  mode.   Stop
             mode  suspends  the data acquisition and displays the current sam
        !    Cycle the plotting mode: point, point accumulate,  line,  or  line
             accumulate.   In  the  accumulate  modes,  all samples stay on the
             screen; use Enter to clear them.
        ,    Cycle the graticule style: none, minor divisions  only,  or  minor
             and major divisions.
        .    Toggle  the graticule position: behind or in front of the signals.
          Decrease/increase the graticule color.
                 Toggle the manual cursors on/off.  When manual  cursors  are  dis
             played,  the  measurements between the cursor positions are shown.
             When cursors are not displayed, automatic measurements are  shown.
        "    Reset  both manual cursor positions to the sample just after trig
             The Control key held down in combination with  q/w/e/r  moves  the
             first cursor back or forward by 10 samples or back or forward by 1
             sample respectively.
             The Control key held down in combination with  a/s/d/f  moves  the
             second  cursor back or forward by 10 samples or back or forward by
             1 sample respectively.
        1-8  Select the corresponding display channel.  Measurements  are  dis
             played  for the channel.  Channel 1 and 2 are used as input to the
             math functions so they can’t be used to do math.  By default, they
             are  connected to the X and Y input channels.  Channel 1 and 2 can
             also be used to display memory buffers or the Z  input  for  doing
             math  on  memory  or the alternate input.  Channel 3 through 8 are
             not restricted and can be used for any purpose.  By default, the Z
             input  is  connected  to Channel 3.  The remaining single key com
             mands operate on the currently selected channel:
        Tab  Toggle visibility: Hide or show the selected channel.
        {/}  Decrease/Increase vertical scale of the selected channel.
        [/]  Decrease/Increase vertical position of the selected channel.
             /~  Decrease/Increase number of logic analyzer  bits  displayed.   The
             default  of zero bits plots the signal as one analog line of vary
             ing amplitude.  Any other value plots multiple digital lines  rep
             resenting the least significant bits from bottom to top.
        ;/:  Increase/Decrease the math function of the selected channel.  This
             is not available on channel 1 & 2.
        $    Show the result of an external math command on the selected  chan
             nel.   You  are prompted for the command.  The command must accept
             samples of channel 1 & 2 on stdin and write a new signal  to  std
             out.   See operl, offt.c and xy.c in the distribution for examples
             of external math filter commands.  Not available on channel 1 & 2.
        A-W  Store the currently selected channel into the corresponding memory
             buffer.  Buffer X, Y  and  Z  can  not  be  used  because  they’re
             reserved as the signal inputs.  Memories are stored from time zero
             to the current display update position.  So it is best to STOP the
             display before storing to a memory buffer.
        a-z  Recall the corresponding memory buffer or input device to the cur
             rently selected channel.  Buffer X is the Left or A  input,  Y  is
             the Right or B input, and Z is ProbeScope or Logic Analyzer input.
             The rest of the buffers are available for signal memory.
        Xoscope adds mouse controls to menus or around the edges of  the  scope
        area.   These should be nearly self-explanatory.  They perform the same
        functions as the equivalent keyboard commands  above.   If  built  with
        GTK+,  a context-sensitive pop-up menu is available with right-click to
        select channels, change scale and position, recall  and  store  signals
        and  so  on.   Left  click  decreases  a  variable  while  right  click
        increases.  The manual measurement cursors can also be positioned  with
        the mouse.
        The  command-line  options  define the startup state of oscope and have
        reasonable defaults.  All options may be capitalized in case they  con
        flict  with  an  X  toolkit option.  These options are also recorded in
        text files saved by oscope.
        -h   Help usage  message  showing  these  startup  options  with  their
             default values, then exit.
             Startup  conditions of each channel.  # is a channel number from 1
             to 8.  Code can have up to  three  fields,  separated  by  colons:
             position[.bits][:scale[:function  #,  memory  letter,  or external
             command]].  Position is the number of pixels above  (positive)  or
             below (negative) the center of the display.  Bits is the number of
             logic analyzer bits to display.  Scale is a valid  scaling  factor
             from  1/50  to  50,  expressed as a fraction.  The third field may
             contain a built-in math function number, memory letter, or  exter
             nal math command to run on the channel.  Using these options makes
             the channel visible unless position begins with a  ’+’,  in  which
             case the channel is hidden.
             Active, or selected, channel.
             Sound  card  sampling  Rate  in samples per second.  Current valid
             values are 8000, 11025, 22050, or 44100.
             Time Scale factor from 1/20 to 1000 expressed as a fraction  where
             1/1 is 1 ms/div.
             Sound  card  Trigger  conditions.   Trigger  can  have up to three
             fields, separated by colons: position[:type[:channel]].   Position
             is  the  number of pixels above (positive) or below (negative) the
             center of the display.  Type is a number indicating  the  kind  of
             trigger,  0 = automatic, 1 = rising edge, 2 = falling edge.  Chan
             nel should be x or y.
             Manual cursor Line  positions.   Cursors  can  have  up  to  three
             fields,  separated  by colons: first[:second[:on?]].  First is the
             sample position of the first cursor.  Second is the  sample  posi
             tion  of the second cursor.  The final field is weather the manual
             cursors are displayed (1) or the not displayed (0).
             Graticule Color, 0 - 15.
             Divisor for sound card DMA: 1, 2, or 4.   The  sound  driver  will
             divide  it’s DMA buffer by this factor.  The value 4 usually gives
             the fastest display rate.
             Graphics Mode to use.  For xoscope, use the more flexible  -geome
             try instead.  0 = 640x480x16, 1 = 800x600x16, 2 = 1024x768x16, 3 =
             1280x1024x16.  WARNING: not all modes are supported by  all  video
             cards; don’t use unsupported modes!
        -f   Font  to  use.   For oscope, these are listed in /usr/lib/kbd/con
             solefonts.  For xoscope, they’re  the  output  of  xlsfonts.   The
             default should work best.
             Plot  type.   0  = point, 1 = point accumulate, 2 = line, 3 = line
             accumulate, 4 = step, 5 = step accumulate.

Step 4: Additional Sources

Mostly for MSWindows users: