I use a layered approach.........an external device and a piece of software on the machine.

Depends on the environment

MLF