I'm trying to work through the I2C examples in the Molloy book. But I'm using a Honeywell HMC6352 compass since I had one lying around. It can work from 2.7V to 5V and operates at a bus frequency of 100KHz. I verified that it works by hooking it up to a 5V microcontroller. I can query its registers. But I haven't had any luck communicating with it on a BeagleBone Black.
I'm using 3.9V pull-up resistors for SDA and SCL. Here is info about my kernel version, cape slots, and the I2C pins:
debian@beaglebone:~$ uname -a
Linux beaglebone 4.4.54-bone16 #1 Fri Mar 17 04:56:31 UTC 2017 armv7l GNU/Linux
debian@beaglebone:~$ sudo cat $SLOTS
0: PF---- -1
1: PF---- -1
2: PF---- -1
3: PF---- -1
4: P-O-L- 0 Override Board Name,00A0,Override Manuf,cape-universaln
debian@beaglebone:~$ config-pin -i P9.19
Pin is not modifyable: P9_19 i2c2_scl
debian@beaglebone:~$ config-pin -i P9.20
Pin is not modifyable: P9_20 i2c2_sda
It looks like everything is okay. Am I missing any steps? I saw some info about adding an I2C overlay. Is that still necessary with the universal cape?
BTW, I also tried the 4.4.54-ti-r93 kernel without success.
Thanks for any advice. This noob is stumped. :-)