Si470x tuner occasionally stuck at 189.8 MHz
Occasionally the tuner appears to be stuck at 189.8 MHz and does not deliver any data.
With the frequency band starting at 87.5 and a channel raster of 0.1, 189.8 corresponds to 0xCFF, the highest value which the corresponding register can hold, and an out-of-range frequency for any band/channel raster combination. Probes of other registers have also shown all bits to be reported as high, suggesting the same is true for all other registers.
The native Si470x driver included in RDS Surveyor, after which the Android driver was modeled, has also been observed to suffer from this issue. In both cases, the device used a Si4701 chip.
In Qz, unplugging the dongle and plugging it back in had no effect. However, in one instance, unplugging the dongle, killing Qz and plugging the dongle back in got the device to respond normally again.
Similar issues have previously been observed when unplugging the tuner and plugging it back in: the device would remain stuck at 87.5 MHz and not respond to any commands, the only workaround being to kill and restart the process prior to plugging the tuner back in. This was apparently caused by an improperly synchronized shutdown, and the issue went away after properly synchronizing all access methods for the group reader class.
Similar concurrency issues may also be the issue here, which needs to be verified. With all access methods being synchronized, leaking the object from within the constructor may be causing this.