http://www.ftdichip.com/Support/Documen ... Driver.pdf
Basically, each hardware device gets a unique Vendor ID (VID) and Product ID (PID). When you connect a USB device, the system looks through the /System/Library/Extensions/FTDIUSBSerialDriver.kext/Contents/Info.plist file to locate the correct settings to use based on the VID/PID combination. For example, plug in your 3D printer and go to About This Mac > More Info. Click USB on the list to the left and you can locate the VID and PID for your device (see screenshot). Now, in my case, this VID/PID pair is not present in my Info.plist file (note that you have to convert the hex characters to decimal first). In that case, I'm not 100% sure what settings are used. Maybe there is a default fallback entry somewhere, but I have a feeling that all we need to do is add a custom dictionary entry into this file and that will allow us to change the baud rate settings for our 3D printers.
On page 6 of the PDF I linked to, it says "the standard baud rates are as follows: B300, B600, B1200, B2400, B4800, B9600, B19200, B38400, B57600, B115200 and B230400". And as you probably noticed, the 250000 baud rate is not on that list! Fortunately for us, the FTDI drivers allow for something called baud rate aliasing. This means that we can essentially replace one of those rarely used standard baud rates with a custom rate that we define. For example,
Code: Select all
<key>BaudRates</key> <dict> <key>B300</key> <integer>250000</integer> ￼￼</dict>
After reading this document, things make a lot more sense to me. My particular 3D printer did not have an entry in the Info.plist file, so how could the program use any baud rate other than the standard rates I listed earlier? But most importantly, I think the fix for this is fairly easy. Edit the Info.plist file to include a VID/PID entry for your 3D printer and then use baud rate aliasing to allow for any non-standard rates that you want. After you make the change, you would need to unplug your USB device and run the following commands:
sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver
That will reload the newly modified driver settings.
Has anyone else tried this before? Do you see any problems with this idea?
Edit: Here's another useful link that I found:
http://spin.atomicobject.com/2013/06/23 ... river-mac/