This is an implementation of the data protocol used by the UNI-T UT8803E (or UT8803) bench multimeter.
The software provides all functionality of the original vendor software (but without a GUI) plus a few things that are not available in the windows program. However, there are still a few status flags that seem to exist but I haven't figured out their meaning, yet.
It has been tested successfully with a UT8803E on LINUX (Debian 12).
I think it should also work on MacOS or Windows, but that is untested. If you have successfully tested it on those systems, please let me know and I'll update this statement.
I no longer own the multimeter so if you find a bug I will need your help for testing.
Start logging data
ut8803e log
Log to file
ut8803e log > mydata.csv
Log for 30 seconds in JSON format
ut8803e -f json -p 0:0:30 log
Log for 1.5 hours
ut8803e -p 1:30:00 log
Get device-ID
ut8803e get_ID
Toggle hold
ut8803e hold
Change display brightness
ut8803e brightness
From the latest release file, download an installable file (ut8803e*.tar.gz
or
ut8803e*.whl
) and install it with pip
or pipx
.
First, you need to install the hidapi
library. On a Debian system it is provided by two
different libraries, so you can do:
apt install libhidapi-hidraw0
or
apt install libhidapi-libusb0
If you are on Windows, you need to download the zip file from the latest release on the hidapi repository on github and the following permission discussion does not apply. For MacOS, I have no clue. Please let me know if you do.
When plugging in the device, it will show up as /dev/usbhidraw*
, be
owned by root and not accessible to regular users:
$ ls -la /dev/hid*
crw------- 1 root root 241, 0 Okt 12 17:15 /dev/hidraw0
So running the program as a regular user will fail. For initial testing, you can run as root:
sudo ut8803e
But it is not recommended to do that for productive use. Instead, you need to install
a udev
rule file that makes the device user accessible. Create a file
/etc/udev/rules.d/50-CP2110-hid.rules
and put this into it:
# Make CP2110 usb hid devices user read/writeable
KERNEL=="hidraw*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea80", MODE="0666“
Or just copy the file provided in this repository.
After re-plugging the multimeter, it should appear like this:
$ ls -la /dev/hid*
crw-rw-rw- 1 root root 241, 0 Okt 12 17:15 /dev/hidraw0
So now, regular users can read from and write to it.
The recommended way of installing is pipx
. If you don't already have that,
you need to install it, too:
apt install pipx
Now, you can run
pipx install ut8803e-*.tar.gz
or
pipx install ut8803e-*.whl
If you use pip
, instead, you will most likely need to create a venv, first:
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install ut8803e-*.tar.gz
You will need to repeat the source
part to activate the venv whenever you
coma back and want to run the program.
This is a simple command line tool that takes exactly on argument and supports a few options:
Usage: ut8803e [OPTIONS] CMD
Commands:
log start logging data
get_ID get instrument id
brightness change display brightness (3 steps)
select press `select` button
range_manual switch to next manual range
range_auto set auto range
minmax set/toggle min/max mode
exitminmax exit min/max mode
rel set relative mode
d_val capacitor D value
q_val inductance Q value
r_val inductance/capacitor resistance
exit_dqr exit DQR mode
Options:
-p, --period TEXT Length of logging period [HH:MM:SS]. Max period: 23:59:59
-i, --interval INTEGER Logging interval [s]
-f, --format TEXT Logging data format (csv/json/reversing)
--full show value even if ERR or OL app
Most commands act the exact same way as pressing the respective button on the instrument.
Logging data is printed in to STDOUT
in csv
format, by default. You can
also get JSON records with --format json
. Finally, there is --format reversing
which will log binary and hex data of the status record. This is
intended for reverse engineering additional features or adding support for other
models.
and can be
redirected to a file using the facilities of your operation system or shell.
E.g. ut8803e/py log > data.csv
on LINUX.
Warnings and Debugging information are printed to STDERR
.
If you are interested in how I went about figuring out the communication protocol, have a look at my blog post covering that. Sorry – only in German right now.
If you are interested to contribute, please open an issue that clearly describes the change, feature or bugfix that you would like to suggest. Please do not submit pull requests without discussing the issue first.
The UNI-T programming manual suggests that there are at least two more status flags that haven't been implemented, yet and that I do not understand:
- Series/Parallel (SER/PAL) in capacity and inductance mode. There are corresponding indicators on the LCD but I have no idea what that means.
- Over/underflow – again not sure what exactly that is supposed to be.
So if you know anything about that – get in touch.
The UNI-T documentation suggests that, with some modifications, this may work with other models, too:
- UT8802/UT8802N
- UT632/UT632N
- UT803/UT803N
- UT804/UT804N
Unfortunately, I do not have access to any of those models so I may be wrong. If you have one of them and are willing to help, please get in touch.