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.

Reply via email to