diff --git a/include/Makefile.am b/include/Makefile.am
index aceb6d373..9a79596e1 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -1,4 +1,4 @@
-noinst_HEADERS = config.h
+noinst_HEADERS = config.h bandplan.h
 
 includedir = @includedir@/hamlib
 
diff --git a/include/bandplan.h b/include/bandplan.h
new file mode 100644
index 000000000..f2e18fec9
--- /dev/null
+++ b/include/bandplan.h
@@ -0,0 +1,229 @@
+/*
+ *  Hamlib Interface - definition of radioamateur frequency band plan.
+ *  Copyright (c) 2002 by Stephane Fillod
+ *
+ *	$Id: bandplan.h,v 1.1 2002-11-16 14:05:16 fillods Exp $
+ *
+ *   This library is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU Library General Public License as
+ *   published by the Free Software Foundation; either version 2 of
+ *   the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU Library General Public License for more details.
+ *
+ *   You should have received a copy of the GNU Library General Public
+ *   License along with this library; if not, write to the Free Software
+ *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#ifndef _BANDPLAN_H
+#define _BANDPLAN_H 1
+
+#include <hamlib/rig.h>
+
+/* 
+ * This header file is internal to Hamlib and its backends, 
+ * thus not part of the API.
+ *
+ * Note: don't change this file if ITU band plan changes. A lot of existing 
+ * rigs are built this way, so leave them alone.
+ *
+ * As a reminder:
+ *  struct freq_range_list {
+ *  	freq_t start;
+ *  	freq_t end;
+ *  	rmode_t modes;
+ *  	int low_power;
+ *  	int high_power;
+ *	vfo_t vfo;
+ *	ant_t ant;
+ *  };
+ */
+
+
+/* 
+ * ITU Region 1: Europe, Africa and Northern Asia
+ */
+
+/* MF: 300 kHz - 3 MHz */
+#define FRQ_RNG_160m_REGION1(md,lp,hp,v,a) \
+			{ kHz(1810), MHz(2), (md), (lp), (hp), (v), (a) } 
+
+/* HF: 3 MHz - 30 MHz */
+#define FRQ_RNG_80m_REGION1(md,lp,hp,v,a) \
+			{ kHz(3500),kHz(3800), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_40m_REGION1(md,lp,hp,v,a) \
+			{ MHz(7),kHz(7100), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_30m_REGION1(md,lp,hp,v,a) \
+			{ kHz(10100),kHz(10150), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_20m_REGION1(md,lp,hp,v,a) \
+			{ MHz(14),kHz(14350), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_17m_REGION1(md,lp,hp,v,a) \
+			{ kHz(18068),kHz(18168), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_15m_REGION1(md,lp,hp,v,a) \
+			{ MHz(21),kHz(21450), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_12m_REGION1(md,lp,hp,v,a) \
+			{ kHz(24890),kHz(24990), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_10m_REGION1(md,lp,hp,v,a) \
+			{ MHz(28),kHz(29700), (md), (lp), (hp), (v), (a) } 
+
+/* VHF: 30 MHz - 300 MHz */
+#define FRQ_RNG_6m_REGION1(md,lp,hp,v,a) \
+			{ kHz(50200),kHz(51200), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_2m_REGION1(md,lp,hp,v,a) \
+			{ MHz(144),MHz(146), (md), (lp), (hp), (v), (a) } 
+
+/* UHF: 300 MHz - 3 GHz */
+#define FRQ_RNG_70cm_REGION1(md,lp,hp,v,a) \
+			{ MHz(430),MHz(440), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_23cm_REGION1(md,lp,hp,v,a) \
+			{ MHz(1240),MHz(1300), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_13cm_REGION1(md,lp,hp,v,a) \
+			{ MHz(2300),MHz(2450), (md), (lp), (hp), (v), (a) } 
+
+
+/*
+ * ITU Region 2: North America, South America and Greenland
+ */
+
+/* MF: 300 kHz - 3 MHz */
+#define FRQ_RNG_160m_REGION2(md,lp,hp,v,a) \
+			{ kHz(1800),MHz(2), (md), (lp), (hp), (v), (a) } 
+
+/* HF: 3 MHz - 30 MHz */
+#define FRQ_RNG_80m_REGION2(md,lp,hp,v,a) \
+			{ kHz(3500),MHz(4), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_40m_REGION2(md,lp,hp,v,a) \
+			{ MHz(7),kHz(7300), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_30m_REGION2(md,lp,hp,v,a) \
+			{ kHz(10100),kHz(10150), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_20m_REGION2(md,lp,hp,v,a) \
+			{ MHz(14),kHz(14350), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_17m_REGION2(md,lp,hp,v,a) \
+			{ kHz(18068),kHz(18168), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_15m_REGION2(md,lp,hp,v,a) \
+			{ MHz(21),kHz(21450), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_12m_REGION2(md,lp,hp,v,a) \
+			{ kHz(24890),kHz(24990), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_10m_REGION2(md,lp,hp,v,a) \
+			{ MHz(28),kHz(29700), (md), (lp), (hp), (v), (a) } 
+
+/* VHF: 30 MHz - 300 MHz */
+#define FRQ_RNG_6m_REGION2(md,lp,hp,v,a) \
+			{ MHz(50),MHz(54), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_2m_REGION2(md,lp,hp,v,a) \
+			{ MHz(144),MHz(148), (md), (lp), (hp), (v), (a) } 
+
+/* UHF: 300 MHz - 3 GHz */
+#define FRQ_RNG_70cm_REGION2(md,lp,hp,v,a) \
+			{ MHz(430),MHz(440), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_23cm_REGION2(md,lp,hp,v,a) \
+			{ MHz(1240),MHz(1300), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_13cm_REGION2(md,lp,hp,v,a) \
+			{ MHz(2320),MHz(2450), (md), (lp), (hp), (v), (a) } 
+
+/*
+ * ITU Region 3: South Pacific and Southern Asia
+ */
+
+/* MF: 300 kHz - 3 MHz */
+#define FRQ_RNG_160m_REGION3(md,lp,hp,v,a) \
+			{ kHz(1810),MHz(2), (md), (lp), (hp), (v), (a) } 
+
+/* HF: 3 MHz - 30 MHz */
+#define FRQ_RNG_80m_REGION3(md,lp,hp,v,a) \
+			{ kHz(3500),kHz(3900), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_40m_REGION3(md,lp,hp,v,a) \
+			{ MHz(7),kHz(7100), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_30m_REGION3(md,lp,hp,v,a) \
+			{ kHz(10100),kHz(10150), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_20m_REGION3(md,lp,hp,v,a) \
+			{ MHz(14),kHz(14350), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_17m_REGION3(md,lp,hp,v,a) \
+			{ kHz(18068),kHz(18168), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_15m_REGION3(md,lp,hp,v,a) \
+			{ MHz(21),kHz(21450), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_12m_REGION3(md,lp,hp,v,a) \
+			{ kHz(24890),kHz(24990), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_10m_REGION3(md,lp,hp,v,a) \
+			{ MHz(28),kHz(29700), (md), (lp), (hp), (v), (a) } 
+
+/* VHF: 30 MHz - 300 MHz */
+#define FRQ_RNG_6m_REGION3(md,lp,hp,v,a) \
+			{ MHz(50),MHz(54), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_2m_REGION3(md,lp,hp,v,a) \
+			{ MHz(144),MHz(148), (md), (lp), (hp), (v), (a) } 
+
+/* UHF: 300 MHz - 3 GHz */
+#define FRQ_RNG_70cm_REGION3(md,lp,hp,v,a) \
+			{ MHz(430),MHz(440), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_23cm_REGION3(md,lp,hp,v,a) \
+			{ MHz(1240),MHz(1300), (md), (lp), (hp), (v), (a) } 
+
+#define FRQ_RNG_13cm_REGION3(md,lp,hp,v,a) \
+			{ MHz(2320),MHz(2450), (md), (lp), (hp), (v), (a) } 
+
+
+/*
+ * Now we're done with boring definition
+ * Let's define FRQ_RNG_HF for REGION1, FRQ_RNG_HF_REGION2,
+ * and FRQ_RNG_HF_REGION3 all at once!
+ * NB: FRQ_RNG_HF defines non-AM/AM freq_range for all HF bands,
+ * 		plus 160m which is not an HF band strictly speaking.
+ */
+
+#define FRQ_RNG_HF(r,m,lp,hp,v,a) \
+	FRQ_RNG_160m_REGION##r((m), (lp), (hp), (v), (a)), \
+	FRQ_RNG_80m_REGION##r((m), (lp), (hp), (v), (a)), \
+	FRQ_RNG_40m_REGION##r((m), (lp), (hp), (v), (a)), \
+	FRQ_RNG_30m_REGION##r((m), (lp), (hp), (v), (a)), \
+	FRQ_RNG_20m_REGION##r((m), (lp), (hp), (v), (a)), \
+	FRQ_RNG_17m_REGION##r((m), (lp), (hp), (v), (a)), \
+	FRQ_RNG_15m_REGION##r((m), (lp), (hp), (v), (a)), \
+	FRQ_RNG_12m_REGION##r((m), (lp), (hp), (v), (a)), \
+	FRQ_RNG_10m_REGION##r((m), (lp), (hp), (v), (a))  \
+
+#define FRQ_RNG_6m(r,m,lp,hp,v,a) \
+	FRQ_RNG_6m_REGION##r((m), (lp), (hp), (v), (a)) \
+
+#define FRQ_RNG_2m(r,m,lp,hp,v,a) \
+	FRQ_RNG_2m_REGION##r((m), (lp), (hp), (v), (a)) \
+
+#define FRQ_RNG_70cm(r,m,lp,hp,v,a) \
+	FRQ_RNG_70cm_REGION##r((m), (lp), (hp), (v), (a)) \
+
+
+#endif	/* _BANDPLAN_H */