The 'uarduno' FreeBSD kernel driver was primarily designed for use with the i386 and AMD64 platforms on FreeBSD 7.x and 8.x (and, reportedly, 9.x). Use on other platforms and other versions of FreeBSD has not been verified, but is likely to work.
LICENSE: This code has been published under a BSD-like license, similar to that of the existing FreeBSD source, with appropriate licenses for the NetBSD® code on which the FreeBSD drivers were based. Both of the stated NetBSD and FreeBSD licenses apply. No additional restrictions apply, other than those that are similar to the BSD license. Therefore, free use has been granted, provided that existing licenses and copyright notices are included in any distributed version of the code. A copy of the actual license has been included in each of the applicable source files ('.c' and '.h'). Additional files (such as 'Makefile') may be used under the same license as the source.
2010-12-03 | Initial release | ||
2010-12-17 | Resolved compile and coding issues for 8.x | ||
2011-01-06 | Tested on x86 platform for 7.3-STABLE with up-to-date ports tree | ||
2011-01-13 | Submitted to FreeBSD ports, ports/153963 | ||
2011-02-22 | Added to FreeBSD ports, comms/uarduno | ||
2011-05-02 | Revision 1.01, minor update to build on 9.0-CURRENT | ||
2011-05-08 | Update to FreeBSD port submitted for Rev 1.01 | ||
2011-07-05 | Additional update to FreeBSD port submitted for Rev 1.02 | ||
Arduino IDE 1.0 and avrdude version 5.11
The Version 1.0 IDE for Arduino has had a port available on FreeBSD for some time, and
it works well in versions of FreeBSD since 7-STABLE. Unfortunately in 8-STABLE, there
is STILL a problem with avrdude, but the problem is VERY easy to correct.
I wrote a simple patch that simply increases the time delay during the RTS/DTR reset process
from 50msec to 250msec. For more information, see
the avrdude web site
bug report (now resolved in the latest version), and
the FreeBSD bug tracker
report, which still appears to be active according to freshports.org . The port maintainer is
most likely waiting to release the newest version rather than patching (and thoroughly testing)
the old one. Note that the patch at the END of the FreeBSD bug report is the most correct one
(the previous patch 'sort of' worked until I tested the problem further and came up with the better solution).
And, for your convenience, you can download THE SECOND patch from
HERE.
You will need to save it as
/usr/ports/devel/avrdude/files/patch-arduino.c
Then 'make clean' and re-build/re-install avrdude to apply the patch (applies to
version 5.11 only, dated 12/14/2011, expected to be fixed in the next version).
Arduino Uno and Mega Rev 3 - vendor and product ID
It has been reported to me by 2 different people that the newest (rev 3) Arduino uses a
DIFFERENT product ID than its predecessor. Additionally, I have recently obtained an
Arduino 'Mega' (rev 3) and it also uses a different product ID (but uses the same vendor ID).
After some testing I have verified that the Mega appears to work with FreeBSD 8.0's 'umodem'
driver, and it has been reported that the Uno (rev 3) works with FreeBSD 9.0's 'umodem'
driver (so uarduno may not be needed for Rev 3 models). In the mean time I will continue
to maintain the uarduno port for earlier Arduino Uno models, and will add the corresponding
model numbers for any new devices that I become aware of.
Until the port is updated, you can add the following definitions to the
/usr/ports/comms/uarduono/files/ids.txt file (at the point where it says to):
{ 0x2341, 0x0042 }, // Arduino MEGA (rev 3), vendor 2341H, product 0042H
{ 0x2341, 0x0043 }, // Arduino UNO (rev 3), vendor 2341H, product 0043H
{ 0x2341, 0x0010 }, // Arduino MEGA 2560 R3, vendor 2341H, product 0010H
{ 0x2341, 0x8037 }, // Arduino Micro
Then clean and re-build the port normally. You may have to re-add this new line if you
update your ports tree. (The next revision of uarduno will include these two new lines in 'ids.txt').
Initially I was having some issues with respect to getting the Arduino IDE to work properly with FreeBSD. Even though the kernel module appears to be working properly, the Arduino IDE was crashing whenever I attempted to open the serial console. Additionally, whenever I attempted to program the device with the most recent 'avrdude' application, the board's ID wasn't being recognized. The bugs in the comms/rxtx library have ALREADY been corrected in the most recent port (as of 1/5/2011), and I have contacted the port maintainer for devel/avrdude and the developers of the rxtx library, so in time these issues should be completely resolved. As of this writing, the issues with rxtx have been corrected, and the Arduino port NOW uses an updated version of this library.
In the mean time, a temporary solution to the PREVIOUS avrdude problem can be found in a patch file that I am making available here, as a tarball (see below). The patch applies to the devel/avrdude port as of 1/6/2011. In the meain time, you might want to check the update history for devel/avrdude on freshports.org . Additionally, for the Arduino Uno, the arduino-0021 IDE version is required (available from the Arduino web site), and the most recent port (at the time of this writing) is only at 0019 (the port maintainer is working on it). Still, you should be able to build the newer version from source, and with a little creativity you should be able to install the new 0021 version over the top of the 0019 version without much difficulty. Some hacking may be required, however, to get it to work. In my case I had to delete a couple of symbolic links that were in the installed (-0019) version (/usr/local/arduino/lib/RXTXComm.jar and /usr/local/lib/librxtxSerial.so).
You can download the OBSOLETE patch for the PREVIOUS devel/avrdude port (prior to Dec 2011) as a tarball. Better still, update it to the latest version (and apply the OTHER patch, see above).
DISCLAIMER: These were recommended by me to ports maintainers, are NOT officially
sanctioned, are provided as-is and without any kind of warrantee, and should ONLY be used at your
own risk. Additionally, if you apply either of the patches, you should make backup copies of the
existing port(s) first, and make sure the port versions and patch files match one another. If
anything gets damaged as a result of using any of these patches it's not my fault. If you agree,
and want to take the risk, you may download and use the patch file(s) as you see fit.
Affected port and version: devel/avrdude 5.10 (available from freshports.org via cvsweb as a tarball).
Download the uarduno driver (source tarball) |