{"id":48391741,"url":"https://github.com/philpagel/ut8803e","last_synced_at":"2026-04-06T00:15:26.428Z","repository":{"id":184643836,"uuid":"670953977","full_name":"philpagel/ut8803e","owner":"philpagel","description":"Talking to a UNI-T UT8803 / UT8803E bench multimeter","archived":false,"fork":false,"pushed_at":"2025-07-04T15:45:27.000Z","size":57,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-04T16:51:46.531Z","etag":null,"topics":["data-logging","multimeter"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/philpagel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-07-26T07:59:03.000Z","updated_at":"2025-07-04T15:45:30.000Z","dependencies_parsed_at":"2025-07-04T16:48:45.942Z","dependency_job_id":null,"html_url":"https://github.com/philpagel/ut8803e","commit_stats":null,"previous_names":["philpagel/ut8803e"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/philpagel/ut8803e","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philpagel%2Fut8803e","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philpagel%2Fut8803e/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philpagel%2Fut8803e/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philpagel%2Fut8803e/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/philpagel","download_url":"https://codeload.github.com/philpagel/ut8803e/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philpagel%2Fut8803e/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31454275,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"ssl_error","status_checked_at":"2026-04-05T21:22:51.943Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-logging","multimeter"],"created_at":"2026-04-06T00:15:25.483Z","updated_at":"2026-04-06T00:15:26.414Z","avatar_url":"https://github.com/philpagel.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Talking to a UNI-T UT8803E bench multimeter \n\nThis is an implementation of the data protocol used by the UNI-T UT8803E\n(or UT8803) bench multimeter.\n\n\n# Status \n\nThe software provides all functionality of the original vendor software (but\nwithout a GUI) plus a few things that are not available in the windows program.\nHowever, there are still a few status flags that seem to exist but I haven't\nfigured out their meaning, yet.\n\nIt has been tested successfully with a UT8803E on LINUX (Debian 12).\n\nI think it should also work on MacOS or Windows, but that is untested.  If you\nhave successfully tested it on those systems, please let me know and I'll update\nthis statement.\n\n\n# In a nutshell\n\nStart logging data\n\n    ut8803e log\n\nLog to file\n    \n    ut8803e log \u003e mydata.csv\n\nLog for 30 seconds in JSON format\n\n    ut8803e -f json -p 0:0:30 log\n\nLog for 1.5 hours\n\n    ut8803e -p 1:30:00 log\n\nGet device-ID\n\n    ut8803e get_ID\n\nToggle `hold`\n\n    ut8803e hold\n\nChange display brightness \n\n    ut8803e brightness\n\n\n\n# Installation\n\nFrom the latest release file, download an installable file (`ut8803e*.tar.gz` or \n`ut8803e*.whl`) and install it with `pip` or `pipx`.\n\n\n## Prerequisites\n\nFirst, you need to install the `hidapi` library. On a Debian system it is provided by two\ndifferent libraries, so you can do:\n\n    apt install libhidapi-hidraw0\n    \nor\n\n    apt install libhidapi-libusb0\n\n\nIf you are on Windows, you need to download the zip file from the latest\nrelease on the [hidapi repository](https://github.com/libusb/hidapi) on github\nand the following permission discussion does not apply. For MacOS, I have no\nclue. Please let me know if you do.\n\nWhen plugging in the device, it will show up as `/dev/usbhidraw*`, be \nowned by root and not accessible to regular users:\n\n    $ ls -la /dev/hid*\n    crw------- 1 root root 241, 0 Okt 12 17:15 /dev/hidraw0\n\nSo running the program as a regular user will fail. For initial testing, you can\nrun as root:\n\n    sudo ut8803e\n\nBut it is not recommended to do that for productive use. Instead, you need to install \na `udev` rule file that makes the device user accessible. Create a file \n[`/etc/udev/rules.d/50-CP2110-hid.rules`](50-CP2110-hid.rules) and put this into it:\n\n    # Make CP2110 usb hid devices user read/writeable\n    KERNEL==\"hidraw*\", ATTRS{idVendor}==\"10c4\", ATTRS{idProduct}==\"ea80\", MODE=\"0666“\n\nOr just copy the file provided in this repository.\n\nAfter re-plugging the multimeter, it should appear like this:\n\n    $ ls -la /dev/hid*\n    crw-rw-rw- 1 root root 241, 0 Okt 12 17:15 /dev/hidraw0\n\nSo now, regular users can read from and write to it.\n\n## Install using `pipx` (recommended)\n\nThe recommended way of installing is `pipx`. If you don't already have that,\nyou need to install it, too:\n\n    apt install pipx\n\nNow, you can run\n    \n    pipx install ut8803e-*.tar.gz \n\nor\n    \n    pipx install ut8803e-*.whl \n\n\n## Install using `pip` and `venv` (more involved)\n\nIf you use `pip`, instead, you will most likely need to create a venv, first:\n\n    python3 -m venv .venv\n    source .venv/bin/activate\n    python3 -m pip install ut8803e-*.tar.gz \n\nYou will need to repeat the `source` part to activate the venv whenever you \ncoma back and want to run the program.\n\n\n# Usage\n\nThis is a simple command line tool that takes exactly on argument and supports a\nfew options:\n\n    Usage: ut8803e [OPTIONS] CMD\n\n      Commands:\n\n          log             start logging data\n\n          get_ID          get instrument id\n\n          brightness      change display brightness (3 steps)\n\n          select          press `select` button\n\n          range_manual    switch to next manual range\n\n          range_auto      set auto range\n\n          minmax          set/toggle min/max mode\n\n          exitminmax      exit min/max mode\n\n          rel             set relative mode\n\n          d_val           capacitor D value\n\n          q_val           inductance Q value\n\n          r_val           inductance/capacitor resistance\n\n          exit_dqr        exit DQR mode\n\n    Options:\n      -p, --period TEXT       Length of logging period [HH:MM:SS]. Max period: 23:59:59\n      -i, --interval INTEGER  Logging interval [s]\n      -f, --format TEXT       Logging data format (csv/json/reversing)\n      --full                  show value even if ERR or OL app\n\nMost commands act the exact same way as pressing the respective button\non the instrument. \n\nLogging data is printed in to `STDOUT` in `csv` format, by default.  You can\nalso get JSON records with `--format json`. Finally, there is `--format\nreversing` which will log binary and hex data of the status record. This is\nintended for reverse engineering additional features or adding support for other\nmodels.\n\nand can be\nredirected to a file using the facilities of your operation system or shell.\nE.g. `ut8803e/py log \u003e data.csv` on LINUX.\n\nWarnings and Debugging information are printed to `STDERR`.\n\n\n# Protocol reverse engineering\n\nIf you are interested in how I went about figuring out the communication\nprotocol, have a look at my [blog\npost](https://techbotch.org/blog/ut8803e-bench-meter/index.html#ut8803e-bench-meter)\ncovering that. Sorry – only in German right now.\n\n# Contributing\n\nIf you are interested to contribute, please open an issue that clearly\ndescribes the change, feature or bugfix that you would like to suggest. Please do not\nsubmit pull requests without discussing the issue first.\n\nThe UNI-T programming manual suggests that there are at least two more status flags that\nhaven't been implemented, yet and that I do not understand:\n\n* Series/Parallel (SER/PAL) in capacity and inductance mode. There are\n  corresponding indicators on the LCD but I have no idea what that means.\n* Over/underflow – again not sure what exactly that is supposed to be.\n  \nSo if you know anything about that – get in touch.\n\nThe UNI-T documentation suggests that, with some modifications, this *may* work\nwith other models, too:\n\n* UT8802/UT8802N\n* UT632/UT632N\n* UT803/UT803N\n* UT804/UT804N\n\nUnfortunately, I do not have access to any of those models so I may be wrong.\nIf you have one of them and are willing to help, please get in touch.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilpagel%2Fut8803e","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphilpagel%2Fut8803e","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilpagel%2Fut8803e/lists"}