Getting BeagleBone working on Mac OSX 10.7 Lion 64-Bit

6,871 views
Skip to first unread message

Christopher Wilson

unread,
Dec 4, 2011, 1:48:58 AM12/4/11
to beagl...@googlegroups.com
I'm not sure if I'm the only one, but I had some issues getting the BeagleBone working on Lion today and wanted to share how I got things working (happy to report everything appears to be working correctly, including the RNDIS/Ethernet Gadget support!)

First I tried installing the FTDI_Ser.dmg installer from http://beagleboard.org/static/beaglebone/a3/Drivers/MacOSX/FTDI/FTDI_Ser.dmg

This did not work.  I plugged the BeagleBone into my Macbook Pro and nothing showed up in /dev (although the mass storage driver was working out of the box).

There appears to be a couple things wrong with FTDI_Ser.dmg.

1.  Why is FTDI_Ser.dmg 10MB? (see https://groups.google.com/d/msg/beagleboard/Kwadxf64VKk/uuI3db50D3EJ)

2.  The Info.plist that gets installed by this installer (in /System/Library/Extensions/FTDIUSBSerialDriver.kext) includes an IOKitPersonality derived from the FT2232C entry, instead of the FT2232H that's installed on the BeagleBone (I'm not sure if this makes a difference or not...)

Here's what's installed by FTDI_Ser.dmg package from beagleboard.org:

<key>BeagleBone XDS100v2 JTAG</key>
<dict>
    <key>CFBundleIdentifier</key>
    <string>com.FTDI.driver.FTDIUSBSerialDriver</string>
    <key>IOClass</key>
    <string>FTDIUSBSerialDriver</string>
    <key>IOProviderClass</key>
    <string>IOUSBInterface</string>
    <key>bConfigurationValue</key>
    <integer>1</integer>
    <key>bInterfaceNumber</key>
    <integer>0</integer>
    <key>idProduct</key>
    <integer>42704</integer>
    <key>idVendor</key>
    <integer>1027</integer>
</dict>
<key>BeagleBone XDS100v2 Serial</key>
<dict>
    <key>CFBundleIdentifier</key>
    <string>com.FTDI.driver.FTDIUSBSerialDriver</string>
    <key>IOClass</key>
    <string>FTDIUSBSerialDriver</string>
    <key>IOProviderClass</key>
    <string>IOUSBInterface</string>
    <key>bConfigurationValue</key>
    <integer>1</integer>
    <key>bInterfaceNumber</key>
    <integer>1</integer>
    <key>idProduct</key>
    <integer>42704</integer>
    <key>idVendor</key>
    <integer>1027</integer>
</dict>

Here's the entry for the FT2232H chip that's actually on the board (notice "bcdDevice" device key is missing from the above entries):

<key>FT2232H_A</key>
<dict>
    <key>CFBundleIdentifier</key>
    <string>com.FTDI.driver.FTDIUSBSerialDriver</string>
    <key>IOClass</key>
    <string>FTDIUSBSerialDriver</string>
    <key>IOProviderClass</key>
    <string>IOUSBInterface</string>
    <key>bConfigurationValue</key>
    <integer>1</integer>
    <key>bInterfaceNumber</key>
    <integer>0</integer>
    <key>bcdDevice</key>
    <integer>1792</integer>
    <key>idProduct</key>
    <integer>24592</integer>
    <key>idVendor</key>
    <integer>1027</integer>
</dict>
<key>FT2232H_B</key>
<dict>
    <key>CFBundleIdentifier</key>
    <string>com.FTDI.driver.FTDIUSBSerialDriver</string>
    <key>IOClass</key>
    <string>FTDIUSBSerialDriver</string>
    <key>IOProviderClass</key>
    <string>IOUSBInterface</string>
    <key>bConfigurationValue</key>
    <integer>1</integer>
    <key>bInterfaceNumber</key>
    <integer>1</integer>
    <key>bcdDevice</key>
    <integer>1792</integer>
    <key>idProduct</key>
    <integer>24592</integer>
    <key>idVendor</key>
    <integer>1027</integer>
</dict>

3.  The FTDI_Ser.dmg package only includes a single kext, but the FTDIUSBSerialDriver_v2_2_16.dmg from the www.ftdichip.com includes two kexts (one for 32 bit and one for 64 bit?)  The one included in the FTDI_Ser.dmg was the wrong one for my 64-bit Lion system.

---

So, I uninstalled the FTDI drivers from the FTDI_Ser.dmg and installed the latest drivers from http://www.ftdichip.com/Drivers/VCP/MacOSX/FTDIUSBSerialDriver_v2_2_16.dmg

Then, I opened up /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist and added the following entry (based upon the FT2232H entries):

<key>BeagleBone XDS100v2 JTAG</key>
<dict>
    <key>CFBundleIdentifier</key>
    <string>com.FTDI.driver.FTDIUSBSerialDriver</string>
    <key>IOClass</key>
    <string>FTDIUSBSerialDriver</string>
    <key>IOProviderClass</key>
    <string>IOUSBInterface</string>
    <key>bConfigurationValue</key>
    <integer>1</integer>
    <key>bInterfaceNumber</key>
    <integer>0</integer>
    <key>bcdDevice</key>
    <integer>1792</integer>
    <key>idProduct</key>
    <integer>42704</integer>
    <key>idVendor</key>
    <integer>1027</integer>
</dict>
<key>BeagleBone XDS100v2 Serial</key>
<dict>
    <key>CFBundleIdentifier</key>
    <string>com.FTDI.driver.FTDIUSBSerialDriver</string>
    <key>IOClass</key>
    <string>FTDIUSBSerialDriver</string>
    <key>IOProviderClass</key>
    <string>IOUSBInterface</string>
    <key>bConfigurationValue</key>
    <integer>1</integer>
    <key>bInterfaceNumber</key>
    <integer>1</integer>
    <key>bcdDevice</key>
    <integer>1792</integer>
    <key>idProduct</key>
    <integer>42704</integer>
    <key>idVendor</key>
    <integer>1027</integer>
</dict>

After rebooting, I plugged the BeagleBone into my Macbook Pro and I STILL didn't get any devices to show up in /dev.  I have no idea why this doesn't work (any suggestions welcomed)

Finally, I installed the BONE_DRV.exe drivers from http://beagleboard.org/static/beaglebone/a3/Drivers/Windows/BONE_DRV.exe onto my Windows XP laptop.  I plugged the BeagleBone into the laptop and it didn't recognize the FT2232H.  After following the directions from this post https://groups.google.com/d/msg/beagleboard/FlFYX3XPbO4/XdiTtv5J2fcJ I was able to get Windows to recognize the FT2232H!!! YAY!!!

I used FT_PROG from http://www.ftdichip.com/Support/Utilities/FT_Prog_v2.4.2.zip to change the FTDI PID from 0xa6d0 to the default 0x6010 PID.

I plugged the BeagleBone back into my Macbook Pro and I got the following 2 devices in /dev:

$ ls /dev/tty.usbserial-001013FD
tty.usbserial-001013FDA  tty.usbserial-001013FDB

I have no idea why modifying the Info.plist with the custom entries doesn't work... but changing the PID back to 0x6010 gets things working.

To start actually talking to the device, I used minicom (sudo apt-get install minicom).  After installing minicom, put the following into /opt/local/etc/minirc.beagleboard:

pu port             /dev/tty.usbserial-<YOUR DEVICE SERIAL HERE>B
pu baudrate         115200
pu bits             8
pu parity           N
pu stopbits         1
pu rtscts           No
pu minit
pu mreset
pu mhangup

Then, run "minicom beaglebone" to bring up the console.

I was also able to get RNDIS/Ethernet Gadget working.  Make sure to eject "BEAGLE_BONE" using the Finder window, and then wait a few seconds for the device to switch over to RNDIS/Ethernet Gadget.  Then open up Network preferences and set IP Address: 192.168.7.1 and Subnet Mask: 255.255.255.0.

Open up a browser window on your Mac and visit 192.168.7.2 and you should see the default BeagleBone page.

Christopher Wilson

unread,
Dec 4, 2011, 1:55:29 AM12/4/11
to beagl...@googlegroups.com
To clarify RNDIS/Ethernet Gadget setup, make sure to select "RNDIS/Ethernet Gadget" in the left nav bar, then set "Configure IPv4:" to "Manually", then set IP Address: 192.168.7.1 and Subnet Mask: 255.255.255.0

Christopher Wilson

unread,
Dec 4, 2011, 2:00:57 AM12/4/11
to beagl...@googlegroups.com
FYI, to poke around inside the *.pkg in the FTDI driver installers I used Pacifist from http://www.charlessoft.com/

Christopher Wilson

unread,
Dec 4, 2011, 2:54:33 AM12/4/11
to beagl...@googlegroups.com
Sorry, that should be "sudo port install minicom" instead of "apt-get"... too much time in Linux...

Jason Kridner

unread,
Dec 4, 2011, 7:40:13 AM12/4/11
to beagl...@googlegroups.com

Thanks for all the feedback. I will fix the serial installers based
on all the feedback.

Can you try leaving it setup for DHCP? I think that it might make the
install slightly simpler and it should be working.

>
> --
> You received this message because you are subscribed to the Google Groups
> "Beagle Board" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/beagleboard/-/hpZV8JeeRpsJ.
>
> To post to this group, send email to beagl...@googlegroups.com.
> To unsubscribe from this group, send email to
> beagleboard...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/beagleboard?hl=en.

Christopher Wilson

unread,
Dec 4, 2011, 11:25:35 AM12/4/11
to beagl...@googlegroups.com
Whoops! you're right, DHCP works fine after a few seconds, I didn't realize that would work (I just assumed you had to set it to manual).

tehn

unread,
Dec 8, 2011, 6:11:33 PM12/8/11
to Beagle Board
is there a fix yet that doesn't require changing the PID?

tehn

unread,
Dec 8, 2011, 6:33:22 PM12/8/11
to Beagle Board
any fix for this that doesn't require windows or a PID fix?

On Dec 4, 8:25 am, Christopher Wilson <cwil...@cdwilson.us> wrote:

Christopher Wilson

unread,
Dec 9, 2011, 8:16:47 PM12/9/11
to beagl...@googlegroups.com
I'm by no means an expert in Mac drivers, but I would think this *should* work by adding the correct entries into /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist.  I tried adding the following entries based on the FT2232H entries, but I coudn't get it working... maybe you can figure out what I'm doing wrong?


<key>BeagleBone XDS100v2 JTAG</key>
<dict>
    <key>CFBundleIdentifier</key>
    <string>com.FTDI.driver.

Dave N6NZ

unread,
Dec 10, 2011, 5:57:02 PM12/10/11
to beagl...@googlegroups.com
What is it that didn't work? The JTAG? I haven't tried JTAG, but serial console using 'screen' was plug and play for me on Mac OS 10.6.8 after installing the FTDI drivers from the Bone.

-dave

> --
> You received this message because you are subscribed to the Google Groups "Beagle Board" group.

> To view this discussion on the web visit https://groups.google.com/d/msg/beagleboard/-/jzWShZz8bvwJ.

Edouard Lafargue

unread,
Dec 11, 2011, 1:24:28 PM12/11/11
to beagl...@googlegroups.com
I'm actually getting the same behaviour: on the latest Angstrom system image, the Mac drivers (with the correct Info.plist entries) are included, but somehow the FTDI driver does not pick up the board at all, even though it is listed on the USB bus. MacOS 10.6.8 too. Still investigating...

Edouard Lafargue

unread,
Dec 11, 2011, 1:36:30 PM12/11/11
to beagl...@googlegroups.com
ok, following up on this thread: it seems that the default MacOS driver which ships with Angstrom is not x64 compliant (according to the system log on my mac anyway). If you keep a copy of the Info.plist that is shipped in the BeagleBone FTDI driver, uninstall it, then install the OEM FTDI driver and copy info.plist, then the serial ports will be recognized immediately - even without a reboot

Let me know whether this fixes things for you!

rrgeorge

unread,
Dec 12, 2011, 7:33:25 PM12/12/11
to beagl...@googlegroups.com
I am curious how you managed to get the RNDIS/Ethernet Gadget to work under Mac OS X 10.7. Are you using any particular driver, or did it just show up as a new network interface on your system?
I have had no luck with my attempts, and I can't seem to find any success stories past 10.5.

I am using a BeagleBoard-xM, not a Beagle Bone, but it shouldn't be any different since the RNDIS/Ethernet Gadget is configured by the Linux kernel, not the hardware...

jbuehl

unread,
Dec 12, 2011, 8:14:40 PM12/12/11
to Beagle Board
I have it working on 10.7. I installed the FTDI serial driver, but it
didn't work and I haven't tried to fix it because I'm using ethernet.
I'm not sure if that had something to do with the RNDIS/Ethernet
gadget or not.

Scott Harris

unread,
Dec 12, 2011, 9:10:23 PM12/12/11
to beagl...@googlegroups.com
I just ejected the BEAGLE_BONE drive and a few seconds later OS X popped up a dialog saying that a new network device was connected. I did install the beaglebone FTDI drivers. I had it more or less working once, but I deleted the RNDIS/Ethernet Gadget from my network devices list in the network control panel. Now I can't get it to happen again. I see the same dialog every time I plug an Arduino into my Mac.

The only reason I tried this was because I could not get eth0 to connect to my network. Is eth0 supposed to set itself up with DHCP at boot time? I was assuming that it would just join my network so I could run opkg.

It worked really well, except for my opkg troubles. The console session dies now when I eject BEAGLE_BONE and the Mac hasn't popped up the dialog to configure the new network device again. When I get a moment, I'm going to see if I can find out more about the Mac side and get a fresh image.

-Scott

--
You received this message because you are subscribed to the Google Groups "Beagle Board" group.
To view this discussion on the web visit https://groups.google.com/d/msg/beagleboard/-/Ljm9WUWbg7EJ.

skip

unread,
Dec 24, 2011, 10:46:25 AM12/24/11
to Beagle Board
Edouard,

I just gave your solution a shot and it worked for me. Here are
the steps I used to get it to work;

1. I used Pacifist to extract the Info.plist file from the BeagleBone
FTDI_Ser.dmg package.
2. Made a backup copy of the existing Info.plist file in /System/
Library/Extensions/FTDIUSBSerialDriver.kext/Contents/ for safe keeping
3. Replaced the existing Info.plist in /System/Library/Extensions/
FTDIUSBSerialDriver.kext/Contents/ with the one extracted from the
BeagleBone FTDI_Ser.dmg package
4. Ran a "chmod 644 /System/Library/Extensions/
FTDIUSBSerialDriver.kext/Contents/Info.plist" to get the permissions
to a state that OS X likes
5. Ran "kextutil FTDIUSBSerialDriver.kext" to load the new
personalities for the FTDI driver (restart would prob work too)
6. ...and Bam! Getting a list of /dev revealed 2 new tty.usbserial
entries.
7. Ran "screen /dev/tty.usbserial-<numbers>B 115200", hit return and I
was presented with the Angstrom login!

Thanks again for the info Edouard.

-Skip
TVHeadedRobots

Edouard Lafargue

unread,
Dec 26, 2011, 1:08:01 PM12/26/11
to beagl...@googlegroups.com
  Cool, thanks for the feedback, glad it helped,

Ed

--
You received this message because you are subscribed to the Google Groups "Beagle Board" group.
Message has been deleted

jbru...@gmail.com

unread,
Jan 25, 2012, 3:15:38 PM1/25/12
to beagl...@googlegroups.com
Hey Skip,

First off sorry for the random post, wasn't expecting that when I hit TAB then ENTER it would post my reply.

Anyway just wanted to say I used the steps you outlined to get my board recognized and working but it seems that after a restart of my laptop it won't recognize the new personalities unless I run the 'kextutil' command again on the FTDIUSBSerialDriver.kext file. Was wondering if you had any issue with this? And if you did what you did if anything to change it.

I should also mention I didn't replace the Info.plist file, Instead I used the program TextWrangler to edit the existing file and adding the BeagleBone personalities to it.

~JB

Jason Kridner

unread,
Feb 7, 2012, 11:19:58 PM2/7/12
to beagl...@googlegroups.com
Sorry for the delay.  I think I finally have an updated set of FTDI drivers for OSX:

I think most people have noticed that OSX already includes the RNDIS drivers in updated versions, so that shouldn't be necessary to provide.

Jason Kridner

unread,
Feb 7, 2012, 11:23:15 PM2/7/12
to beagl...@googlegroups.com
Also, sorry for the extra noise, but the beagleboard.org web server doesn't list files, so you likely wouldn't find:
 
Those show how the updated archive was made and hopefully reduces the likelihood I'd make an error that wouldn't be noticed and fixed quickly.

As always, patches welcome! 

jan.sz...@uts.edu.au

unread,
Feb 26, 2012, 4:47:25 PM2/26/12
to beagl...@googlegroups.com

jan.sz...@uts.edu.au

unread,
Feb 26, 2012, 4:49:16 PM2/26/12
to beagl...@googlegroups.com
Hi Scott,

 I have the same problem as you (RNDIS driver not working on my MacBook Pro)
Were you able to resolve it.
Do you know, where to find a driver?

Jan


On Sunday, 4 December 2011 17:48:58 UTC+11, Christopher Wilson wrote:

Jason Kridner

unread,
Sep 10, 2012, 3:53:43 PM9/10/12
to beagl...@googlegroups.com
On Fri, Aug 17, 2012 at 5:30 PM, Thomas Igoe <t...@nyu.edu> wrote:
> (Sorry if this is a double post, my first didn't appear)
>
> I was able to fix serial on Mountain Lion with this new driver, but not
> RNDIS. Even the fix posted here
> (https://groups.google.com/forum/?fromgroups#!topic/beagleboard/nWjvhJKiuLc%5B1-25%5D)
> did no good.
>
> I can get in serially fine, but no RNDIS as of yet. My workaround is to log
> in serially, change eth0 to a public address, and use that address to access
> the web and ssh interfaces.

I have finally updated my machine to Mountain Lion and confirmed the
issue. I haven't yet figured out why Mountain Lion doesn't create an
"eject" event to the BeagleBone, but that is the issue. Without the
"eject" event, the BeagleBone doesn't know to start the RNDIS driver.

Eventually this will be worked-around by using g_multi, but currently
some folks are seeing CPU consumption go to unreasonable levels when
g_multi is used.

Here's a temporary work-around using USB-to-serial:

root@beaglebone:~# systemctl stop storage-gadget-init.service
root@beaglebone:~# systemctl start network-gadget-init.service

At this point, you should see the network connection come up.

I've further confirmed that enabling Internet Sharing followed by
performing a 'udhcpc -i usb0' on the board works, enabling me to 'cd
/var/lib/cloud9; git pull' to update to the latest Bonescript.

>
>
>
> On Tuesday, February 7, 2012 11:19:58 PM UTC-5, Jason Kridner wrote:
>>
> -- To join: http://beagleboard.org/discuss
> To unsubscribe from this group, send email to:
> beagleboard...@googlegroups.com
> Frequently asked questions: http://beagleboard.org/faq
Reply all
Reply to author
Forward
0 new messages