Getting BeagleBone working on Mac OSX 10.7 Lion 64-Bit

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:

BeagleBone XDS100v2 JTAG

CFBundleIdentifier
com.FTDI.driver.FTDIUSBSerialDriver
IOClass
FTDIUSBSerialDriver
IOProviderClass
IOUSBInterface
bConfigurationValue
1
bInterfaceNumber
0
idProduct
42704
idVendor
1027

BeagleBone XDS100v2 Serial

CFBundleIdentifier
com.FTDI.driver.FTDIUSBSerialDriver
IOClass
FTDIUSBSerialDriver
IOProviderClass
IOUSBInterface
bConfigurationValue
1
bInterfaceNumber
1
idProduct
42704
idVendor
1027

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

FT2232H_A

CFBundleIdentifier
com.FTDI.driver.FTDIUSBSerialDriver
IOClass
FTDIUSBSerialDriver
IOProviderClass
IOUSBInterface
bConfigurationValue
1
bInterfaceNumber
0
bcdDevice
1792
idProduct
24592
idVendor
1027

FT2232H_B

CFBundleIdentifier
com.FTDI.driver.FTDIUSBSerialDriver
IOClass
FTDIUSBSerialDriver
IOProviderClass
IOUSBInterface
bConfigurationValue
1
bInterfaceNumber
1
bcdDevice
1792
idProduct
24592
idVendor
1027

  1. 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.

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

FYI, to poke around inside the *.pkg in the FTDI driver installers I used Pacifist from http://www.charlessoft.com/

Sorry, that should be "sudo port install minicom" instead of "apt-get"... too much time in Linux...

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

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.

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).

is there a fix yet that doesn't require changing the PID?

any fix for this that doesn't require windows or a PID fix?

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?

BeagleBone XDS100v2 JTAG

CFBundleIdentifier
com.FTDI.driver.
FTDIUSBSerialDriver
IOClass
FTDIUSBSerialDriver
IOProviderClass
IOUSBInterface
bConfigurationValue
1
bInterfaceNumber
0
bcdDevice
1792
idProduct
42704
idVendor
1027

BeagleBone XDS100v2 Serial

CFBundleIdentifier
com.FTDI.driver.FTDIUSBSerialDriver
IOClass
FTDIUSBSerialDriver
IOProviderClass
IOUSBInterface
bConfigurationValue
1
bInterfaceNumber
1
bcdDevice
1792
idProduct
42704
idVendor
1027

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

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…

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!

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…

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.

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

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

Cool, thanks for the feedback, glad it helped,

Ed

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

Sorry for the delay. I think I finally have an updated set of FTDI drivers for OSX:
http://beagleboard.org/static/beaglebone/latest/Drivers/MacOSX/FTDI/FTDI_Ser.dmg

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

Also, sorry for the extra noise, but the beagleboard.org web server doesn’t list files, so you likely wouldn’t find:
http://beagleboard.org/static/beaglebone/latest/Drivers/MacOSX/FTDI/README.txt
http://beagleboard.org/static/beaglebone/latest/Drivers/MacOSX/FTDI/do_patch.sh

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!