What Do You Have in Your Walls?

Alex describes how to find out, using only the sound card in your Linux computer and some wire loops.
Building the Binary

You can quickly try the current project software by building a bootable floppy, as shown here:

$ mkdir candetect.sf.net
$ cd candetect.sf.net
$ cvs -d :pserver:anonymous@cvs.candetect.sf.net:
/cvsroot/candetect login
$ cvs -d :pserver:anonymous@cvs.candetect.sf.net:
/cvsroot/candetect co .
$ make /dev/fd0

This leaves you with all the source code ready for modifications. The project top-level Makefile:

  • compiles the library and the main program,

  • downloads a specific CVS version of xoscope,

  • patches it and configures it for non-X11 use,

  • compiles oscope (the binary for svgalib),

  • downloads and unpacks a 2.4 series Linux kernel,

  • configures and builds it with several sound cards,

  • assembles a filesystem, including BusyBox,

  • combines everything and adds syslinux for boot and

  • copies it to a floppy in the drive.

This process will prompt you for the root password when it needs root rights; be sure to review the proposed command line. Note that this will create a directory called xoscope next to the one containing all the CanDetect modules (to avoid confusing CVS).

The Makefiles will detect missing utilities and automatically try to install them on a Debian-based system. On other distributions, you either need to resolve dependencies first or modify the Makefiles.

Linux Benefits/Challenges

The kernel is truly multiplatform. Development was done using desktop and lab workstations, targeting laptop and embedded computers for field use. These share exactly the same kernel API. The driver architecture is multidevice, with standard support for up to eight installed sound cards. A computer can make many simultaneous measurements using different sound cards, all sharing a simple code API.

Audio is accessed as a simple character device using the same file descriptors as for open network links. No special calls are needed to control remote sound cards. This situation is especially valuable for simple computer platforms where screen size or processor resources would require adaptation of the software.

Possibly the most time-consuming part of developing nondestructive testing systems is validating them. This involves running the electronics and processing software against a broad range of samples in a variety of operating environments to demonstrate that the algorithms are robust. The Open Sound System, when integrated with other Linux kernel functionality, provides a common execution environment for the software across a wide range of computer hardware. This allows software validation results to be applicable because no source changes were made.

The latency associated with kernel buffering limits the adaptability of the algorithms, thereby requiring the measurement of potentially extraneous values and leading to a lower useful rate for the aviation user. Ongoing kernel development is mitigating this inefficiency, and in any case, it isn't relevant for wall inspection use.

Future Work

CanDetect is not ready to be certified for aviation use. Interpretation of the results remains extremely challenging. We also wish to support sound cards with many more channels and apply the same software to measurements, such as:

  • component resistance, capacitance, inductance;

  • bridges for humidity, wetness and chemicals;

  • coil coupling for magnetic position sensing;

  • eddy currents for nondestructive testing;

  • Hall/magnetoresistor readout as a compass;

  • acoustic absorption profiling for materials;

  • audio time of flight, mobile position recording;

  • sonar and similar target detection by reflection;

  • mechanical strain gauges; structure deformation; and

  • beam resonators, as used in most MEMS sensors.


The NIC unit was donated to the project when it was selected as a finalist in the Embedded Linux Journal contest in 2001. More information about our winning entry can be found in the May/June 2001 issue of Embedded Linux Journal (embedded.linuxjournal.com/advertising/press/nic_winners.php) and on our web site (candetect.sourceforge.net). The inductive probe, after assembly by Brian Whitecotton, was photographed by Keith Ostrom.

Alex Perry (alex.perry@ieee.org) holds a PhD in Electronic Engineering from Cambridge (England), is a senior member of the IEEE, a commercially rated pilot and ground instructor, an Aviation Safety Counselor for the San Diego, California area and one of the developers for the open-source flight simulator FlightGear (www.flightgear.org).