padelt/temper-python

Temperature gets "stuck" or skips values

Closed this issue · 3 comments

So I've had this for years and it's always had this problem, but your "Reported working devices" includes this VID/PID? So maybe there's a bug that's been fixed that you know about?

Here are the USB descriptors:

Bus 002 Device 002: ID 0c45:7401 Microdia TEMPer Temperature Sensor
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x0c45 Microdia
  idProduct          0x7401 TEMPer Temperature Sensor
  bcdDevice            0.01
  iManufacturer           1 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           59
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      65
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      41
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10

and here is the log from several years:

obviously not correct

As you can see, it goes up and down with the seasons, but avoids certain temperature ranges and gets "stuck" at certain temperatures. If I do diff(unique(data)), though, it seems like it actually has 0.0625 °C resolution across the entire range:

it does actually reach all values though

It just strongly prefers certain temperatures over others. I don't know if this is a bug in the hardware, firmware, or software that reads it, but I'm posting here in case you know. It's been logging using cba5bf4 since that date. If you know this has nothing to do with your software, feel free to close it.

Got my TEMPer 1.4 and after a few polls it gets stuck at 22.7, even after rebooting it reports 22.7. I need to unplug it and wait a minute.
When the device works this project works perfectly

@endolith If #59 (comment) is correct then we should expect increments of 0.125°C as that would be the reported resultion. The "preferring" of some temperature I cannot explain, sorry. My guess would be an issue with the sensor or the way it works. This driver does not seem to be a likely cause.

@cooljimy84 Your device (or this driver) reporting the same value over and over is likely a USB problem. We have had problems with the USB interactions initiated by this driver leading to "stuck" or resetting TEMPer devices. The root cause seems to be that we don't know for sure what we are doing in that regard. There are several different device revisions and the original source of the USB intercation was a more-or-less unmaintained C source. We have (or at least I have) no clear idea what exactly happens inside each TEMPer when this driver does its job. You could try to look in old issues for likely sources. But I guess we cannot help here, as it stands. sorry!