aboutsummaryrefslogtreecommitdiff
path: root/comms/uarduno
diff options
context:
space:
mode:
authorWesley Shields <wxs@FreeBSD.org>2011-02-22 02:10:51 +0000
committerWesley Shields <wxs@FreeBSD.org>2011-02-22 02:10:51 +0000
commitc41e06d64846d54d811f54bcbc429f4e90b536ee (patch)
treecedf7136ffd8949e6b12c4404117efb7b4575900 /comms/uarduno
parent700ae1f2e078a7e72f3037648bb5e18765fecd72 (diff)
downloadports-c41e06d64846d54d811f54bcbc429f4e90b536ee.tar.gz
ports-c41e06d64846d54d811f54bcbc429f4e90b536ee.zip
controller designed primarily for prototyping and experimentation. Although the devel/arduino port already exists for programming the device, it will not work properly with the newest Arduino hardware. Previous versions of the Arduino used an FTDI USB to Serial interface. The newest Arduino (beginning with the Uno) uses an on-board ATMel 8U2 controller to emulate a USB to Serial interface with its own custom Vendor ID and Hardware ID. As a result, NONE of the existing FreeBSD USB to serial drivers can work with it. This kernel driver supplies the necessary kernel support for the Arduino Uno on FreeBSD. Additionally, some 'ACM' USB Serial devices may work with this driver by manually adding their Vendor ID and Product ID combination to files/ids.txt Official web site WWW: http://www.mrp3.com/uarduno.html PR: ports/153963 Submitted by: Bob Frazier <bobf@mrp3.com>
Notes
Notes: svn path=/head/; revision=269474
Diffstat (limited to 'comms/uarduno')
-rw-r--r--comms/uarduno/Makefile91
-rw-r--r--comms/uarduno/distinfo2
-rw-r--r--comms/uarduno/files/ids.txt34
-rw-r--r--comms/uarduno/pkg-descr16
-rw-r--r--comms/uarduno/pkg-message18
5 files changed, 161 insertions, 0 deletions
diff --git a/comms/uarduno/Makefile b/comms/uarduno/Makefile
new file mode 100644
index 000000000000..fe8ddd64334c
--- /dev/null
+++ b/comms/uarduno/Makefile
@@ -0,0 +1,91 @@
+# Ports collection makefile for: uarduno
+# Date created: 11-19-2010
+# Whom: 'Big Bad Bob' Frazier <bobf@mrp3.com>
+#
+# $FreeBSD$
+#
+
+PORTNAME= uarduno
+PORTVERSION= 1.0
+CATEGORIES= comms kld
+MASTER_SITES= http://mrp3.com/
+
+MAINTAINER= bobf@mrp3.com
+COMMENT= FreeBSD Kernel Driver for the Arduino Uno USB interface
+
+NO_PACKAGE= You must (re)build this port with your kernel source
+
+# need to enforce installation into kernel module directory
+MAKE_ENV+= KMODDIR=${KMODDIR}
+LOCALBASE= ${KMODDIR}
+
+SRCPREFIX?= ${SRC_BASE}
+
+# some test targets need a predictable source directory
+WRKSRC= ${WRKDIR}/uarduno
+
+PLIST_FILES= uarduno.ko
+MAKE_JOBS_SAFE= yes
+
+# no license required
+LICENSE= BSD
+NO_LICENSES_INSTALL= yes
+NO_LICENSES_DIALOGS= yes
+
+#
+# version 7xxxx and 8xxxx are very different
+# so make sure I correctly identify them
+#
+CFLAGS+= -DKERNELVER=${OSVERSION}
+
+.include <bsd.port.pre.mk>
+
+.if ${OSVERSION} < 700000
+BROKEN= not tested for earlier than 7.x, probably won't build
+.endif
+
+.if ${OSVERSION} < 800000
+# Simple check for 7.x kernel source (find usb.c)
+.if ! exists(${SRCPREFIX}/sys/dev/usb/usb.c)
+IGNORE= this port will not build without the latest 7.x kernel source
+.endif
+.else
+# 8.x and later kernels (not tested in 9.x yet, mabye add to kernel?)
+# simple check for 8.x and later kernel source (find usb_core.c)
+.if ! exists(${SRCPREFIX}/sys/dev/usb/usb_core.c)
+IGNORE= this port will not build without the latest kernel source
+.endif
+.endif
+
+# post-patch target, copy 'ids.txt' as 'ids.h' (user-modifiable file)
+post-patch:
+ @${CP} ${FILESDIR}/ids.txt ${WRKSRC}/ids.h
+
+# post-install target, make sure kernel module is unloaded
+post-install:
+ @if kldstat -q -m uhub/uarduno ; then \
+ echo "" ; echo " +++ Unloading uarduno.ko (related devices will need to be re-attached)" ; kldunload uarduno ; fi
+ @${ECHO_MSG}
+ @${CAT} ${PKGMESSAGE}
+ @${ECHO_MSG}
+
+#
+# these next 2 targets are for developer use
+#
+# building a source tarball and related files
+uarduno-src-tarball:
+ ${MAKE} patch
+ ${MAKE} -C ${WRKSRC} my-clean
+ tar -c -f ${PORTSDIR}/distfiles/${DISTNAME}${EXTRACT_SUFX} -C ${WRKDIR} uarduno
+ ${MAKE} makesum
+
+# partial clean for incremental build and test
+uarduno-part-clean:
+ -${RM} ${WRKDIR}/.patch_done.uarduno._boot_kernel
+ -${RM} ${WRKDIR}/.configure_done.uarduno._boot_kernel
+ -${RM} ${WRKDIR}/.build_done.uarduno._boot_kernel
+ -${RM} ${WRKDIR}/.install_done.uarduno._boot_kernel
+ ${MAKE} -C ${WRKSRC} my-clean
+ ${MAKE} patch
+
+.include <bsd.port.post.mk>
diff --git a/comms/uarduno/distinfo b/comms/uarduno/distinfo
new file mode 100644
index 000000000000..e75d1301abb3
--- /dev/null
+++ b/comms/uarduno/distinfo
@@ -0,0 +1,2 @@
+SHA256 (uarduno-1.0.tar.gz) = 0deb0b39b4af3c159ce8f9311fc33fe802c1220d964d26bcbd709786aa687f58
+SIZE (uarduno-1.0.tar.gz) = 62976
diff --git a/comms/uarduno/files/ids.txt b/comms/uarduno/files/ids.txt
new file mode 100644
index 000000000000..f05153f0d8ec
--- /dev/null
+++ b/comms/uarduno/files/ids.txt
@@ -0,0 +1,34 @@
+// Arduino UNO USB Serial Port Kernel Driver for FreeBSD
+//
+// This is a user-modifiable file that can be used to add extra
+// USB Vendor ID / Product ID combinations to the list of existing
+// combinations that the driver recognizes as an Arduino Uno.
+//
+// If you modify your Arduino Uno (or obtain a similar unit with a different
+// Vendor/Product combination) you can simply modify this file to include
+// the new Vendor/Product information.
+//
+// Place your NEW Vendor ID / Product ID combinations below in the form of
+// a C-language structure initializer entry, as follows
+//
+// { 0xaaaa, 0xbbbb },
+//
+// Where '0xaaaa' is the vendor ID, and '0xbbbb' is the product ID that you
+// want the driver to recognize as an Arduino UNO. It must end with a ','
+//
+// The default value of { 0x2341, 0x0001 } is already included as a reference.
+// NOTE: do not remove or modify this entry unless you really really mean it.
+//
+// If you change this file, you will need to update it each
+// time you obtain a fresh copy of the ports tree.
+//
+//
+
+ { 0x2341, 0x0001 }, // Arduino UNO, vendor 2341H, product 0001H
+
+// place your entries below this line
+
+
+
+// end of file
+
diff --git a/comms/uarduno/pkg-descr b/comms/uarduno/pkg-descr
new file mode 100644
index 000000000000..d6a4bb82d5ca
--- /dev/null
+++ b/comms/uarduno/pkg-descr
@@ -0,0 +1,16 @@
+The Arduino Uno (http://arduino.cc/) is an open source hardware micro-
+controller designed primarily for prototyping and experimentation.
+Although the devel/arduino port already exists for programming the device,
+it will not work properly with the newest Arduino hardware. Previous
+versions of the Arduino used an FTDI USB to Serial interface. The newest
+Arduino (beginning with the Uno) uses an on-board ATMel 8U2 controller
+to emulate a USB to Serial interface with its own custom Vendor ID and
+Hardware ID. As a result, NONE of the existing FreeBSD USB to serial
+drivers can work with it. This kernel driver supplies the necessary
+kernel support for the Arduino Uno on FreeBSD.
+
+Additionally, some 'ACM' USB Serial devices may work with this driver by
+manually adding their Vendor ID and Product ID combination to files/ids.txt
+
+Official web site
+WWW: http://www.mrp3.com/uarduno.html
diff --git a/comms/uarduno/pkg-message b/comms/uarduno/pkg-message
new file mode 100644
index 000000000000..bbe5f3e5a711
--- /dev/null
+++ b/comms/uarduno/pkg-message
@@ -0,0 +1,18 @@
+The Arduino Uno uses a specific vendor ID of 0x2341 and product ID of 0x0001
+
+If you modify your Arduino Uno to use a DIFFERENT vendor ID or product ID, you
+can add your vendor/product combination to the files/ids.txt text file
+according to the example shown. Additionally, this driver MAY work with
+generic ACM USB Serial Devices. You would need to manually add the
+vendor ID and product ID for these devices as well. For ACM devices that
+are modems, consider using or modifyig the 'umodem' driver.
+
+You will need to load the uarduno kernel module before connecting the Arduino UNO
+via USB to your computer. The command to manually load the driver is:
+
+ kldload uarduno.ko
+
+To automatically load the driver on startup, add the following line to
+your /boot/loader.conf file:
+
+ uarduno_load="YES"