Some users have reported a problem with the Raspberry Pi-3 not recognizing the CODEC on the UDRC. We have duplicated the problem in the lab and have a simple fix, but first some background.
The CODEC is controlled over the I2C Bus which is specified at a 400kHz max data transfer. This value is contained in the driver. Upon initialization, the system chooses the highest available clock rate less than the specified maximum. Unfortunately the firmware on the Pi, which is not part of the Linux distribution, changes the processor clock rate on it's own, causing the I2C clock to exceed 400kHz. In fact greater than 600kHz!
This problem exists on the Pi 2 as well, but doesn't cause a malfunction due to the Pi-2's lower clock rate.
The solution is to tell the firmware to lock down the clock rate at boot:
Edit /boot/config.txt and add to the end of the file:
This causes a slight increase in power consumption when the CPU is lightly loaded; less than a quarter watt. There is no difference when the CPU is heavily loaded.
Future Compass Linux images will contain this modification of the config.txt file. It is not possible to do an update and upgrade on an existing install, so the file must be edited on current systems.