--------
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 device is connected to the PC (usually via USB), before it can be used.
The default location where libsigrok expects the firmware files is:
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. Additionally Metrahit
- 2x devices must be configured for the respective interface type.
+ - 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:
- The device must be configured for the respective interface type.
+ - '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.
const struct sr_probe_group *probe_group)
{
int ret;
+ struct dev_context *devc;
(void)sdi;
(void)data;
(void)probe_group;
ret = SR_OK;
- struct dev_context *devc;
(void)probe_group;
SR_PRIV struct sr_dev_driver gmc_mh_2x_bd232_driver_info = {
.name = "gmc-mh-2x-bd232",
- .longname = "Gossen Metrawatt Metrahit 2x, 'BD232' interface",
+ .longname = "Gossen Metrawatt Metrahit 2x, 'BD232'/'SI232-II' interface",
.api_version = 1,
.init = init_2x_bd232,
.cleanup = cleanup_2x_bd232,
if (power_on) {
sr_info("Write some data and wait 3s to turn on powered off device...");
- if ((serial_write(serial, msg, sizeof(msg)) == -1) ||
- (serial_write(serial, msg, sizeof(msg)) == -1) ||
- (serial_write(serial, msg, sizeof(msg)) == -1))
+ if (serial_write(serial, msg, sizeof(msg)) < 0)
return SR_ERR;
- g_usleep(3*1000*1000);
+ g_usleep(1*1000*1000);
+ if (serial_write(serial, msg, sizeof(msg)) < 0)
+ return SR_ERR;
+ g_usleep(1*1000*1000);
+ if (serial_write(serial, msg, sizeof(msg)) < 0)
+ return SR_ERR;
+ g_usleep(1*1000*1000);
serial_flush(serial);
}