I am curious about how often the code is polling for the temperature. I found that with a CCD attached and a cooler running, that there was a TON of traffic from your code, and it was so heavy to the point of causing interrupt challenges with a Surface Touchpad literally stopping to function (also a USB bus device). That would only be possible on a dual-core Skylake if you were flooding the bus with requests.
Can you look at this interval and drop it down a bit? The only software that causes this problem is SGP.