-------------------------------------------------------------------------------
README.devices
-------------------------------------------------------------------------------

This README contains various notes for users of libsigrok (or frontends
that are based on libsigrok) about device- and/or driver-specific issues.


Firmware
--------

Some devices supported by libsigrok need a firmware to be uploaded every time
the device is connected to the PC (usually via USB), before it can be used.

The default location where libsigrok expects the firmware files is:

  $prefix/share/sigrok-firmware

($prefix is usually /usr/local or /usr, depending on your ./configure options)

For further information see the section below and also:

  http://sigrok.org/wiki/Firmware


Per-driver firmware requirements
--------------------------------

The following drivers/devices require a firmware upload upon connection:

 - asix-sigma: The ASIX SIGMA and SIGMA2 require various firmware files,
   depending on the settings used. These files are available from our
   'sigrok-firmware' repository/project under a license which allows us
   to redistribute them.

 - fx2lafw: Logic analyzers based on the Cypress FX2(LP) chip need the
   firmware files from the 'sigrok-firmware-fx2lafw' repository/project.
   The firmware is written from scratch and licensed under the GNU GPLv2+.

 - hantek-dso: The Hantek DSO-2090 (and other supported models of the same
   series of Hantek PC oscilloscopes) need firmware files.
   These can be extracted from the vendor's Windows drivers using a tool
   from our 'sigrok-util' repository/project.

 - saleae-logic16: The Saleae Logic16 needs a firmware file for the
   Cypress FX2 chip in the device, as well as two FPGA bitstream files.
   These can be extracted from the vendor's Linux application using a tool
   from our 'sigrok-util' repository/project.

 - sysclk-lwla: The Sysclk LWLA1034 requires various bitstream files.
   These files are available from our 'sigrok-firmware' repository/project
   under a license which allows us to redistribute them.

The following drivers/devices do not need any firmware upload:

 - agilent-dmm
 - appa-55ii
 - atten-pps3xxx
 - brymen-bm86x
 - brymen-dmm
 - cem-dt-885x
 - center-3xx (including all subdrivers)
 - chronovu-la
 - colead-slm
 - conrad-digi-35-cpu
 - demo
 - fluke-dmm
 - gmc-mh-1x-2x (including all subdrivers)
 - hameg-hmo
 - ikalogic-scanalogic2
 - ikalogic-scanaplus
 - kecheng-kc-330b
 - lascar-el-usb
 - link-mso19
 - mic-985xx (including all subdrivers)
 - norma-dmm
 - openbench-logic-sniffer
 - pipistrello-ols
 - rigol-ds
 - serial-dmm (including all subdrivers)
 - teleinfo
 - tondaj-sl-814
 - uni-t-dmm (including all subdrivers)
 - uni-t-ut32x
 - victor-dmm
 - yokogawa-dlm
 - zeroplus-logic-cube


Specifying serial ports
-----------------------

Many devices supported by libsigrok use serial port based cables (real RS232
or USB-to-serial ones) to connect to a PC.

For all these devices, you need to specify the serial port they are connected
to (e.g. using the 'conn' option in sigrok-cli). It is not possible to scan
for such devices without specifying a serial port.

Example:

 $ sigrok-cli --driver <somedriver>:conn=/dev/ttyUSB0 ...

The following drivers/devices require a serial port specification:

 - agilent-dmm
 - appa-55ii
 - atten-pps3xxx
 - brymen-dmm
 - cem-dt-885x
 - center-3xx (including all subdrivers)
 - colead-slm
 - conrad-digi-35-cpu
 - fluke-dmm
 - gmc-mh-1x-2x (including all subdrivers)
 - hameg-hmo
 - link-mso19
 - mic-985xx (including all subdrivers)
 - norma-dmm
 - openbench-logic-sniffer
 - rigol-ds (for RS232; not required for USBTMC or TCP)
 - serial-dmm (including all subdrivers)
 - teleinfo
 - tondaj-sl-814

The following drivers/devices do not require a serial port specification:

 - asix-sigma
 - brymen-bm86x
 - chronovu-la
 - demo
 - fx2lafw
 - hantek-dso
 - ikalogic-scanalogic2
 - ikalogic-scanaplus
 - kecheng-kc-330b
 - lascar-el-usb
 - pipistrello-ols
 - rigol-ds (USBTMC or TCP)
 - saleae-logic16
 - sysclk-lwla
 - uni-t-dmm (including all subdrivers)
 - uni-t-ut32x
 - victor-dmm
 - yokogawa-dlm (USBTMC or TCP)
 - zeroplus-logic-cube


Specifiying serial port parameters
----------------------------------

Every serial device's driver has default serial port parameters like baud
rate, number of data bits, stop bits and handshake status. If a device requires
different parameters, pass them as option "serialcomm" with the driver name.
See libsigrok docs for the function serial_set_paramstr() for complete specs.

Example:

 $ sigrok-cli --driver <somedriver>:conn=<someconn>:serialcomm=9600/7n1/dtr=1


Permissions of serial port based devices
----------------------------------------

When using devices supported by libsigrok that use serial port based cables
(real RS232 or USB-to-serial ones) to connect to a PC, you need to ensure
that the user running the libsigrok frontend has (read/write) permissions to
access the serial port device (e.g. /dev/ttyS0, /dev/ttyUSB0, and so on).

You can use 'chmod' to apply permissions as you see fit, and/or 'chown' to
change the owner of the serial port device to a certain user or group.

For USB-to-serial based devices, we recommended using our udev rules file
(see below for details).


Permissions for USB devices (udev rules file)
---------------------------------------------

When using USB-based devices supported by libsigrok, the user running the
libsigrok frontend (e.g. sigrok-cli) has to have (read/write) permissions
for the respective USB device.

On Linux, this is accomplished using either 'chmod' (not recommended) or
using the udev rules file shipped with libsigrok (recommended).

The file is available in contrib/z60_libsigrok.rules. It contains entries
for all libsigrok-supported (USB-based) devices and changes their group
to 'plugdev' and the permissions to '664'.

When using a libsigrok package from your favorite Linux distribution, the
packager will have already taken care of properly installing the udev file
in the correct (distro-specific) place, and you don't have to do anything.
The packager might also have adapted 'plugdev' and '664' as needed.

If you're building from source, you need to copy the file to the place
where your distro expects such files. This is beyond the scope of this README,
but generally the location could be e.g. /etc/udev/rules.d, or maybe
/lib/udev/rules.d, or something else. Afterwards you might have to restart
udev, e.g. via '/etc/init.d/udev restart' or similar, and you'll have to
re-attach your device via USB.

Please consult the udev docs of your distro for details.


Cypress FX2 based devices
-------------------------

Devices using the Cypress FX2(LP) chip without any specific USB VID/PID will
be enumerated with VID/PID 04b4:8613 (the default for "unconfigured FX2").
These are usually "FX2 eval boards" (that can also be used as LAs, though).

On Linux, the 'usbtest' driver will usually grab such devices, and they will
thus not be usable by libsigrok (and frontends).

You can fix this by running 'rmmod usbtest' as root before using the device.


UNI-T DMM (and rebranded models) cables
---------------------------------------

UNI-T multimeters (and rebranded devices, e.g. some Voltcraft models) can
ship with different PC connectivity cables:

 - UT-D04 (USB/HID cable with Hoitek HE2325U chip, USB VID/PID 04fa:2490)
 - UT-D04 (USB/HID cable with WCH CH9325 chip, USB VID/PID 1a86:e008)
 - UT-D02 (RS232 cable)

The above cables are all physically compatible (same IR connector shape)
with all/most currently known UNI-T multimeters. For example, you can
use either of the UT-D04 USB/HID cables or the UT-D02 RS232 cable with
the UNI-T UT61D multimeter.

When using the UT-D02 RS232 cable with any of the supported UNI-T DMMs,
you have to use the respective driver with a '-ser' drivername suffix
(internally all of these models are handled by the 'serial-dmm' driver).

You also need to specify the serial port via the 'conn' option, e.g.
/dev/ttyUSB0 (attached via a USB-to-serial cable) or /dev/ttyS0 (actual
RS232 port) on Linux (see above).

Finally, the user running the frontend (e.g. sigrok-cli) also needs
permissions to access the respective serial port (see above).

Examples (sigrok-cli):

 $ sigrok-cli --driver uni-t-ut61e-ser:conn=/dev/ttyUSB0 ...
 $ sigrok-cli --driver voltcraft-vc820-ser:conn=/dev/ttyS0 ...

When using any of the UT-D04 USB/HID cables you have to use the respective
driver _without_ the '-ser' drivername suffix (internally all of these models
are handled by the 'uni-t-dmm' driver).

You also need to specify the USB vendor/device IDs of the cable.
Autodetection is not possible here, since various other products use the
USB VID/PID of those cables too, and there is no way to distinguish them.

Since the UT-D04 cables are USB based (but don't use a USB-to-serial chip)
there is no need to specify a serial port via 'conn', of course.
However, the user running the frontend does also need to have permissions
to access the respective USB device (see above).

Examples (sigrok-cli):

 $ sigrok-cli --driver uni-t-ut61e:conn=1a86.e008 ...
 $ sigrok-cli --driver voltcraft-vc820:conn=04fa.2490 ...


UNI-T UT-D04 cable issue on Linux
---------------------------------

The UNI-T UT-D04 cable with Hoitek HE2325U (or WCH CH9325) chip seems to have
a very specific problem on Linux. Apparently it requires to be put into
suspend (and woken up again) before it is usable. This seems to be a
Linux-only issue, Windows is not affected by this since apparently the
Windows kernel does this for every USB device, always.

Thus, if you want to use any of the UNI-T DMMs with this specific cable,
you'll have to run the following script (as root) once, every time you attach
the cable via USB. The script was written by Ralf Burger.

See also: http://erste.de/UT61/index.html

  #!/bin/bash
  for dat in /sys/bus/usb/devices/*; do
    if test -e $dat/manufacturer; then
      grep "WCH.CN" $dat/manufacturer > /dev/null && echo auto > ${dat}/power/level && echo 0 > ${dat}/power/autosuspend
    fi
  done


Enabling multimeter / data logger measurement output
----------------------------------------------------

Some multimeters or data loggers will not start outputting measurement data
unless a certain action has been performed by the user beforehand. This is
usually mentioned in the vendor manual of the respective device, but here's
a short list for convenience:

 - BBC Goertz Metrawatt M2110: Briefly press the "Start/Reset" button on the
   interface panel on top.
 - Digitek DT4000ZC: Briefly press the "RS232" button.
 - Gossen Metrawatt Metrahit 1x/2x devices, driver gmc-mh-1x-2x-rs232:
   - Power on the device with the "DATA" button pressed.
   - Metrahit 2x devices must be configured for the respective interface type.
 - Gossen Metrawatt Metrahit 2x devices, driver gmc-mh-2x-bd232:
   - 'BD232' interface:
      The multimeter must be configured for the respective interface type.
   - 'SI232-II' interface ("PC Mode"):
      The multimeter must be configured for interface type 'BD232' (all),
      'SI232 online' (28-29S) or 'SI232 store' (22-26x). The interface must
      be configured to the same baud rate as the host (default 9600).
      Multimeter and interface must be configured to the same address.
 - Norma DM950: If the interface doesn't work (e.g. USB-RS232 converter), power
   on the device with "FUNC" pressed (to power the interface from the DMM).
 - PCE PCE-DM32: Briefly press the "RS232" button.
 - RadioShack 22-812: Press and hold "SELECT" and "RANGE" together.
 - TekPower TP4000ZC: Briefly press the "RS232" button.
 - Tenma 72-7750: Briefly press the "RS232C" button.
 - UNI-T UT60G: Briefly press the "RS232C" button.
 - UNI-T UT61B/C/D: Press the "REL/RS232/USB" button for roughly 1 second.
 - UNI-T UT325: Briefly press the "SEND" button (as per manual). However, it
   appears that in practice you don't have to press the button (at least on
   some versions of the device), simply connect the device via USB.
 - V&A VA18B/VA40B: Keep the "Hz/DUTY" key pressed while powering on the DMM.
 - Victor 70C/86C: Press the "REL/RS232" button for roughly 1 second.
 - Voltcraft VC-830: Press the "REL/PC" button for roughly 2 seconds.


ChronoVu LA8/LA16 USB VID/PIDs
------------------------------

The ChronoVu LA8/LA16 logic analyzer is available in two revisions. Previously,
the device shipped with a USB VID/PID of 0403:6001, which is the standard ID
for FTDI FT232 USB chips.

Since this made it hard to distinguish the LA8/LA16 from any other device
with this FTDI chip connected to the PC, the vendor later shipped the
device with a USB VID/PID of 0403:8867.

The 'chronovu-la' driver in libsigrok supports both VID/PID pairs and
automatically finds devices with either VID/PID pair.


OLS
---

The Dangerous Prototypes Openbench Logic Sniffer (OLS) logic analyzer
driver in libsigrok assumes a somewhat recent firmware has been flashed onto
the OLS (it doesn't need a firmware upload every time it's attached via USB,
since the firmware is stored in the device permanently).

The most recent firmware version that is tested is 3.07.

If you use any older firmware and your OLS is not found or is not working
properly, please upgrade to at least this firmware version. Check the
Dangerous Prototypes wiki for firmware upgrade instructions:

 http://dangerousprototypes.com/docs/Logic_Sniffer_upgrade_procedure

Also, you need to specify a serial port for the OLS in the frontends, e.g.
using the 'conn' option in sigrok-cli, and you also need to have the
permissions to access the serial port (see above).

Example:

 $ sigrok-cli --driver ols:conn=/dev/ttyACM0 ...

