So has anyone figured out how to get the MPU6050 to respond?
I dont know too much about how all this works but all I've done is
root@beaglebone:~# i2cdetect -y -r 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@beaglebone:~# i2cdump -y 1 0x68
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 81 7d 00 1d 3c cd fc ae 05 44 08 5c 28 8f 6e 90 ?}.?<????D?\(?n?
10: d4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ?...............
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
60: 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 00 ...........@....
70: 00 00 00 00 00 68 00 00 00 00 00 00 00 00 00 00 .....h..........
80: 81 7d 00 1d 3c cd fc ae 05 44 08 5c 28 8f 6e 90 ?}.?<????D?\(?n?
90: d4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ?...............
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
e0: 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 00 ...........@....
f0: 00 00 00 00 00 68 00 00 00 00 00 00 00 00 00 00 .....h..........
I cant get my board (sparkfun breakout board) to respond to anything...
i2cset doesn't affect the board... did I wire something wrong?
VDD to Pin 3 (3.3V)
Gnd to Pin 1
SCL to Pin 19
SDA to Pin 20
VIO to Pin 3 (3.3) <-- I'm not quite sure what this does but I get nothing
back when I disconnect it.
Any help will be greatly appreciated!
Thanks,
Andrew
On Saturday, November 16, 2013 10:27:19 PM UTC-5, [email protected]
wrote:
>
> Mark,
> I poked briefly at the reference you provided. The write up looks very
> much the same as the Invensense MPU6050 driver in the Angstrom on the
> Black. This seems reasonable. The Invensense author has done a good job
> of getting it into the Linux tree and the various distributions have picked
> it up. Apparently, the MPU 60x0 family of MEMS IMUs is widely used and
> popular.
> The Anstrom driver reads nice. No one here has yet to get it to load and
> respond.
> Clark
> On Thursday, November 14, 2013 1:40:35 PM UTC-8, Mark A. Yoder wrote:
>
>> It looks like someone has done a nice port to Andriod[1]. How hard would
>> it be to port it to Angstrom?
>>
>> --Mark
>>
>> [1]
>> https://android.googlesource.com/kernel/tegra/+/74f15aa73e1d999368e3a8287cdb85718e987d48/drivers/staging/iio/imu/mpu/README
>>
>> On Wednesday, November 13, 2013 10:30:07 PM UTC-5, [email protected]:
>>>
>>> Mark,
>>> Near as I can tell, no one has done better than just file i/o via
>>> /dev/i2c/... This works, but doesn't seem to expose or take advantage of
>>> the Invensense kernel driver functionality. Plus it seems to be very
>>> slow. Jason Kridner was tackling it a couple weeks ago, but didn't report
>>> any success. I haven't made any progress either.
>>> Seems we are stuck. I wish someone could figure out how to ping the
>>> author at Invensense. I tried writing via thier support web page but didn't
>>> get a reply.
>>> Clark
>>> On Tuesday, November 12, 2013 12:57:54 PM UTC-8, Mark A. Yoder wrote:
>>>
>>>> Did anyone every get the inv-mpu6050 kernel driver to work? I have the
>>>> device on the i2c bus and I can read and write registers using
>>>> *i2cset/i2cget*, but *modprobe inv-mpu605* doesn't make anything
>>>> appear.
>>>>
>>>> --Mark
>>>>
>>>> On Saturday, November 2, 2013 11:51:04 AM UTC-4, [email protected]:
>>>>>
>>>>> Jason,
>>>>> I apologize for taking so long to answer. It wasn't quick to figure
>>>>> out which breakout board we had with the MPU6050 on it. It is apparently
>>>>> a Kootek®
>>>>> Arduino GY-521 MPU-6050 Module from Amazon.
>>>>> Itis wired:
>>>>>
>>>>> P9_1->Gnd
>>>>>
>>>>> P9_3->VCC
>>>>>
>>>>> P9_19 ->SCL
>>>>>
>>>>> P9_20 -> SDA
>>>>>
>>>>> Your P9_19 SCL and P9_20 SDA should be fine.
>>>>>
>>>>> Later posts suggest you can talk to you device and have shown us via W
>>>>> Smith the way to straighten out which bus is which.
>>>>>
>>>>> Clark
>>>>> On Thursday, October 31, 2013 1:32:46 PM UTC-7, Jason Kridner wrote:
>>>>>
>>>>>> On Tue, Oct 29, 2013 at 2:19 PM, Jason Kridner <
>>>>>> [email protected]> wrote:
>>>>>> >
>>>>>> > On Thu, Oct 17, 2013 at 6:12 PM, <[email protected]> wrote:
>>>>>> > > AIW:
>>>>>> > > I went back thru the adafruit library and didn't find anything
>>>>>> specific on
>>>>>> > > I2C, although it is listed as a topic. I have been looking at
>>>>>> their github
>>>>>> > > adafruit-beaglebone-io-python library. I also found and looked
>>>>>> thru PyBBIO.
>>>>>> > > Even tho I'm not using Python, I can see the access mechanisms
>>>>>> that they
>>>>>> > > use.
>>>>>> > > I can use the MPU6050 device ok enough just reading via
>>>>>> /dev/i2c/i2c-x, but
>>>>>> > > that is too slow.
>>>>>> > > I'm trying to figure out how to invoke and use the inv-mpu6050
>>>>>> driver and
>>>>>> > > adafruit doesn't use that.
>>>>>> > > Thx -- Clark
>>>>>> > >
>>>>>> > > On Thursday, October 17, 2013 9:47:44 AM UTC-7, AIW wrote:
>>>>>> > >>
>>>>>> > >> Some good info on I2C tools at http://www.acmesystems.it/i2c.
>>>>>> > >>
>>>>>> > >> Python and the adafruit BBIO I2C library makes it very easy to
>>>>>> use I2C on
>>>>>> > >> Beaglebone Black as well. Python import smbus is fairly easy to
>>>>>> use too.
>>>>>> > >> Some examples of use is available in the code I provide for my
>>>>>> radio project
>>>>>> > >> here....www.aiwindustries.com.
>>>>>> > >>
>>>>>> > >> Not trying to sell the product, but I know that the I2C function
>>>>>> was
>>>>>> > >> giving me some issues so I'm just trying to help the community.
>>>>>> Python code
>>>>>> > >> is available to download and look at usage so feel free.
>>>>>> > >>
>>>>>> > >> On Tuesday, October 15, 2013 5:02:59 PM UTC-5,
>>>>>> [email protected] wrote:
>>>>>> > >>>
>>>>>> > >>> We are using the Invensense MPU6050 IMU on I2C with Beaglebone
>>>>>> Black
>>>>>> > >>> (Angstrom 3.8.13). We can use I2C-tools and file I/O thru
>>>>>> /dev/i2c but the
>>>>>> > >>> read speed is disappointingly slow. We only read the 3x gyros
>>>>>> and 3x accels
>>>>>> > >>> (each one byte at a time plus the 2 byte temperature reading)
>>>>>> and it takes
>>>>>> > >>> ~2msecs. My estimate of the I2C bus cycles for a block read
>>>>>> suggests this
>>>>>> > >>> should take ~160 bus cycles or .38msec on a 400MHz I2C bus.
>>>>>> >
>>>>>> > You are running at 400kHz, not 400MHz, right? I2C doesn't do
>>>>>> 400MHz.
>>>>>> >
>>>>>> > >>>
>>>>>> > >>> The distribution includes the Invensense driver inv-mpu6050.ko
>>>>>> but there
>>>>>> > >>> is no indication that reading through /dev/i2c invokes it.
>>>>>> This is a very
>>>>>> > >>> popular IMU and Invensense widely distributes the driver over
>>>>>> many Linux
>>>>>> > >>> platforms. The driver source includes “successful installation
>>>>>> will create
>>>>>> > >>> two directories under /sys/bus/iio/devices” and lists the files
>>>>>> there (aka
>>>>>> > >>> functions). I can never get these to show up.
>>>>>> > >>>
>>>>>> > >>> I can “insmod
>>>>>> > >>>
>>>>>> /lib/modules/3.8.13/kernel/drivers/iio/imu/inv_mpu6050/inv-mpu6050.ko”
>>>>>> and
>>>>>> > >>> “echo inv-mpu6050 0x68 >
>>>>>> /sys/class/i2c-adapter/i2c-1/new_device”. This
>>>>>> > >>> causes a new directory named 1-0068 to show in
>>>>>> > >>> /sys/class/i2c-adapter/i2c-1with entries like name and modalias
>>>>>> but no
>>>>>> > >>> functions. It never shows in /sys/bus/iio/devices.
>>>>>> >
>>>>>> > I don't have an MPU6050, but I just ordered a couple on express
>>>>>> > overnight from Sparkfun.
>>>>>>
>>>>>> I bought https://www.sparkfun.com/products/11028 and played with it
>>>>>> briefly before being distracted and again today, but I don't
>>>>>> understand why I'm not able to get it to reply to me.
>>>>>>
>>>>>> I have the following connections:
>>>>>> VCC: P9_4 (VDD_3V3)
>>>>>> GNC: P9_1 (GND)
>>>>>> INT: P9_11 (GPIO)
>>>>>> FSYNC: -
>>>>>> SCL: P9_19 (I2C2_SCL)
>>>>>> SDA: P9_20 (I2C2_SDA)
>>>>>> VIO: P9_3 (VDD_3V3)
>>>>>> CLK: -
>>>>>> ASCL: -
>>>>>> ASDA: -
>>>>>>
>>>>>> I then perform:
>>>>>>
>>>>>> root@beaglebone:~# i2cdetect -y -r 1
>>>>>> 0 1 2 3 4 5 6 7 8 9 a b c d e f
>>>>>> 00: -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>> 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>> 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>> 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>> 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>> 50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
>>>>>> 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>> 70: -- -- -- -- -- -- -- --
>>>>>>
>>>>>> Very confused why it doesn't show up.
>>>>>>
>>>>>> Since you have it responding to you, how do you have it wired?
>>>>>>
>>>>>> >
>>>>>> > Here's the behavior I'm seeing without the board connected:
>>>>>> >
>>>>>> >
>>>>>> root@beaglebone:/lib/modules/3.8.13/kernel/drivers/iio/imu/inv_mpu6050#
>>>>>> ls
>>>>>> > inv-mpu6050.ko
>>>>>> >
>>>>>> root@beaglebone:/lib/modules/3.8.13/kernel/drivers/iio/imu/inv_mpu6050#
>>>>>> > dmesg | tail -1
>>>>>> > [ 2992.799594] i2c i2c-1: new_device: Instantiated device
>>>>>> inv-mpu6050 at 0x68
>>>>>> >
>>>>>> root@beaglebone:/lib/modules/3.8.13/kernel/drivers/iio/imu/inv_mpu6050#
>>>>>> lsmod
>>>>>> > Module Size Used by
>>>>>> > ip_tables 8294 0
>>>>>> > x_tables 15072 1 ip_tables
>>>>>> > g_multi 55905 2
>>>>>> > libcomposite 15228 1 g_multi
>>>>>> > rfcomm 25106 0
>>>>>> > ircomm_tty 14503 0
>>>>>> > ircomm 8846 1 ircomm_tty
>>>>>> > irda 89974 2 ircomm_tty,ircomm
>>>>>> > ipv6 229989 14
>>>>>> > hidp 10112 0
>>>>>> > bluetooth 146100 4 hidp,rfcomm
>>>>>> > rfkill 16510 2 bluetooth
>>>>>> > autofs4 17432 2
>>>>>> >
>>>>>> > I looked for the installed device:
>>>>>> >
>>>>>> >
>>>>>> root@beaglebone:/lib/modules/3.8.13/kernel/drivers/iio/imu/inv_mpu6050#
>>>>>> > cat /sys/bus/iio/devices/iio*/name
>>>>>> > tiadc
>>>>>> >
>>>>>> root@beaglebone:/lib/modules/3.8.13/kernel/drivers/iio/imu/inv_mpu6050#
>>>>>> > ls /sys/bus/iio/devices/iio* -d
>>>>>> > /sys/bus/iio/devices/iio:device0
>>>>>> >
>>>>>> > It is clearly missing per the documentation
>>>>>> > (
>>>>>> https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-iio-mpu6050)
>>>>>>
>>>>>>
>>>>>> > that says there should be a sysfs entry there.
>>>>>> >
>>>>>> > Just in case I could get it to show up, I did try manually doing a
>>>>>> modprobe.
>>>>>> >
>>>>>> >
>>>>>> root@beaglebone:/lib/modules/3.8.13/kernel/drivers/iio/imu/inv_mpu6050#
>>>>>> > modprobe inv-mpu6050
>>>>>> >
>>>>>> root@beaglebone:/lib/modules/3.8.13/kernel/drivers/iio/imu/inv_mpu6050#
>>>>>> lsmod
>>>>>> > Module Size Used by
>>>>>> > inv_mpu6050 7190 0
>>>>>> > ip_tables 8294 0
>>>>>> > x_tables 15072 1 ip_tables
>>>>>> > g_multi 55905 2
>>>>>> > libcomposite 15228 1 g_multi
>>>>>> > rfcomm 25106 0
>>>>>> > ircomm_tty 14503 0
>>>>>> > ircomm 8846 1 ircomm_tty
>>>>>> > irda 89974 2 ircomm_tty,ircomm
>>>>>> > ipv6 229989 14
>>>>>> > hidp 10112 0
>>>>>> > bluetooth 146100 4 hidp,rfcomm
>>>>>> > rfkill 16510 2 bluetooth
>>>>>> > autofs4 17432 2
>>>>>> >
>>>>>> root@beaglebone:/lib/modules/3.8.13/kernel/drivers/iio/imu/inv_mpu6050#
>>>>>> > ls /sys/bus/iio/devices/iio* -d
>>>>>> > /sys/bus/iio/devices/iio:device0
>>>>>> >
>>>>>> > Of course, this all makes perfect sense since the driver should
>>>>>> exit
>>>>>> > upon failing the 'probe':
>>>>>> >
>>>>>> https://github.com/beagleboard/linux/blob/3.8/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c#L658
>>>>>>
>>>>>> >
>>>>>> > I'd have to look up how to turn on more debugging statements. I
>>>>>> tried
>>>>>> > the hints at http://elinux.org/Debugging_by_printing, but I'm
>>>>>> > surprised the 'dmesg' log didn't show any extra errors.
>>>>>> >
>>>>>> >
>>>>>> > >>>
>>>>>> > >>> What constitutes “successful installation”?
>>>>>> > >>>
>>>>>> > >>> What else is needed to get the inv-mpu6050 to expose functions
>>>>>> in
>>>>>> > >>> /sys/bus/iio/devices like the driver sources says?
>>>>>> >
>>>>>> > I don't think anything else should be required. To build the kernel
>>>>>> > properly, there are a few things that need to be enabled
>>>>>> > (
>>>>>> https://github.com/beagleboard/linux/blob/3.8/drivers/iio/imu/inv_mpu6050/Kconfig):
>>>>>>
>>>>>>
>>>>>> >
>>>>>> > INV_MPU6050_IIO, I2C, SYSFS, IIO_BUFFER, IIO_TRIGGERED_BUFFER
>>>>>> >
>>>>>> > And they are all there:
>>>>>> >
>>>>>> https://github.com/beagleboard/kernel/blob/3.8/configs/beaglebone#L3676
>>>>>> >
>>>>>> > >>>
>>>>>> > >>> Beaglebone Black uses bone_capemgr for exposing driver
>>>>>> functions for many
>>>>>> > >>> devices. “echo inv-mpu6050 0x68 >
>>>>>> /sys/devices/bone_capmgr.9/slots” raises
>>>>>> > >>> the gripe “write error: no such file or directory”. (I can
>>>>>> successfully
>>>>>> > >>> load the am33xx_pwm driver this way.) Is this because there is
>>>>>> no matching
>>>>>> > >>> DT fragment in /lib/firmware?
>>>>>> >
>>>>>> > Yes.
>>>>>> >
>>>>>> > >>> Is the inv-mpu6050 driver supposed to be
>>>>>> > >>> invoked thru cape manager?
>>>>>> >
>>>>>> > No, because the I2C bus software provides another mechanism. I
>>>>>> believe
>>>>>> > you could create a DT fragment, but I think it is pointless.
>>>>>> >
>>>>>> > >>>
>>>>>> > >>> Then, most importantly, if I did read and write through the
>>>>>> /sys tree
>>>>>> > >>> using the Invensense driver would it be faster than /dev/i2c?
>>>>>> > >>> Help on sorting this out would be much appreciated.
>>>>>> >
>>>>>> > Yes, because the driver running in kernel mode is going to be
>>>>>> higher
>>>>>> > performance than your pokes from userspace.
>>>>>> >
>>>>>> > >
>>>>>> > > --
>>>>>> > > For more options, visit http://beagleboard.org/discuss
>>>>>> > > ---
>>>>>> > > You received this message because you are subscribed to the
>>>>>> Google Groups
>>>>>> > > "BeagleBoard" group.
>>>>>> > > To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an
>>>>>> > > email to [email protected].
>>>>>> > > For more options, visit https://groups.google.com/groups/opt_out.
>>>>>>
>>>>>>
>>>>>
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.