Sound level monitoring via USB Benetech GM1356.
Go to file
Rob Pearce 42124a22e2 Now works. 2022-05-30 22:46:58 +10:00
Makefile now actually works 2022-05-29 22:28:22 +10:00
Makefile.osx Made compiling work in termux 2021-11-28 20:00:32 +11:00
Makefile.termux Made compiling work in termux 2021-11-28 20:00:32 +11:00
README.md Now works. 2022-05-30 22:46:58 +10:00
TODO now actually works 2022-05-29 22:28:22 +10:00
howard.c Now works. 2022-05-30 22:46:58 +10:00
howard.h Now works. 2022-05-30 22:46:58 +10:00
lsusb.c initial commit 2021-11-27 16:58:52 +11:00
usbtools.c initial commit 2021-11-27 16:58:52 +11:00

README.md

Overview

Performs sound level monitoring using a USB Benetech GM1356 sonometer.

Named after Loud Howard.

Big thanks to Maciej Ciemborowicz for his work documenting the USB protocol this device uses.

Requirements

  • hidapi
  • An OS which recognises the GM1356 as a USB device (ie. not OSX Big Sur).
  • A GM1356 sonometer (obviously)

Usage

bash$ ./howard -h
usage:  howard [OPTIONS] outputmode1 [ outputmode2 ... ]

Reads maximum noise level from a Benestar GM1356 sonometer
over a given interval, and optionally stores result in an
influxdb database.

Valid output modes are:
  short (single line to stdout)
  long  (multiple lines to stdout)
  db    (HTTP POST to influxdb, must also provide INFLUXDB OPTIONS - see below)

OPTIONS:
   -c           Run endlessly (also see -i and -w)
   -h           Show this usage text then exit.
   -i secs      Define time over which to get max decibels
   -t           Test mode - just probe for sononeter then exit
   -T           Influxdb test mode - just test influxdb connectivity then exit
   -w secs      Define period to wait between noise level checks
                insert will just be written to stdout.

INFLUXDB OPTIONS:
   -d dbname    Define influxdb database name
   -H hostname  Define influxdb hostname
   -p password  Define influxdb password
   -u username  Define influxdb password
   -y           Actually write to influxdb.  Without this,

Screenshots

TBC

Implementation Notes

  • The device seems to 'hang' periodically and cause all subsequent reads to timeout. To work around this, after two concurrent timeouts I send an IOCTL_USBDEVFS_RESET.

  • I don't yet have configuration commands working, so the following need to be manually configured on the physical device:

  • slow/fast exponential time averaging

  • MAX mode

  • dBA vs dBC units