diff -urN kismet.dev/Makefile.in kismet.dev2/Makefile.in
--- kismet.dev/Makefile.in	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/Makefile.in	2005-08-23 01:59:25.643220248 +0200
@@ -39,26 +39,25 @@
 DEPEND	= .depend
 
 # Objects
-PSO	= util.o ringbuf.o configfile.o speech.o ifcontrol.o iwcontrol.o packet.o \
-		pcapsource.o prism2source.o wtapfilesource.o wsp100source.o \
-		dronesource.o vihasource.o packetsourcetracker.o kis_packsources.o \
-		wtapdump.o wtaplocaldump.o gpsdump.o airsnortdump.o fifodump.o \
-		gpsd.o manuf.o \
+PSO	= util.o ringbuf.o configfile.o ifcontrol.o iwcontrol.o packet.o \
+		pcapsource.o manuf.o \
+		dronesource.o packetsourcetracker.o kis_packsources.o \
+		wtapdump.o wtaplocaldump.o airsnortdump.o fifodump.o \
 		packetracker.o timetracker.o alertracker.o finitestate.o \
 		getopt.o \
 		tcpserver.o server_protocols.o server_globals.o kismet_server.o 
 PS	= kismet_server
 
 DRONEO = util.o ringbuf.o configfile.o getopt.o ifcontrol.o iwcontrol.o packet.o \
-		tcpstreamer.o prism2source.o pcapsource.o wtapfilesource.o wsp100source.o \
-		dronesource.o vihasource.o packetsourcetracker.o kis_packsources.o \
-		timetracker.o gpsd.o server_globals.o kismet_drone.o
+		tcpstreamer.o pcapsource.o \
+		dronesource.o packetsourcetracker.o kis_packsources.o \
+		timetracker.o server_globals.o kismet_drone.o
 DRONE = kismet_drone
 
-NCO	= util.o configfile.o speech.o manuf.o tcpclient.o \
+NCO	= util.o configfile.o manuf.o tcpclient.o \
 		frontend.o cursesfront.o \
 		panelfront.o panelfront_display.o panelfront_input.o \
-		gpsd.o getopt.o kismet_client.o 
+		getopt.o kismet_client.o 
 NC	= kismet_client
 
 GPSLO = getopt.o util.o configfile.o expat.o manuf.o \
diff -urN kismet.dev/cursesfront.cc kismet.dev2/cursesfront.cc
--- kismet.dev/cursesfront.cc	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/cursesfront.cc	2005-08-23 01:59:25.643220248 +0200
@@ -30,7 +30,6 @@
 // Enable the protocols we can use
 void NCurseFront::AddClient(TcpClient *in_client) {
     client = in_client;
-    client->EnableProtocol("GPS");
     client->EnableProtocol("INFO");
     client->EnableProtocol("REMOVE");
     client->EnableProtocol("NETWORK");
@@ -88,32 +87,8 @@
         mvwaddstr(netborder, 1, 2, "  SSID                        T W Ch  Data   LLC  Crypt  Wk Flags");
     }
 
-    char gpsdata[1024];
-    float lat, lon, alt, spd, heading;
     int mode;
 
-    client->FetchLoc(&lat, &lon, &alt, &spd, &heading, &mode);
-
-    if (!(lat == 0 && lon == 0 && alt == 0 && spd == 0 && mode == 0)) {
-
-        char fix[16];
-
-        if (mode == -1)
-            snprintf(fix, 16, "No signal");
-        else if (mode == 2)
-            snprintf(fix, 5, "2D");
-        else if (mode == 3)
-            snprintf(fix, 5, "3D");
-        else
-            snprintf(fix, 5, "NONE");
-
-        snprintf(gpsdata, 1024, "Lat %.3f Lon %.3f Alt %.3f Spd %.3f Fix %s",
-                 lat, lon, alt, spd, fix);
-
-        mvwaddstr(netborder, LINES-statheight-1, 2, gpsdata);
-
-    }
-
     box(infoborder, '|', '-');
     mvwaddstr(infoborder, 0, 2, "Info");
 
diff -urN kismet.dev/dronesource.cc kismet.dev2/dronesource.cc
--- kismet.dev/dronesource.cc	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/dronesource.cc	2005-08-23 01:59:25.644220096 +0200
@@ -201,9 +201,6 @@
             return -1;
         }
 
-		// Grab the GPS info
-		gps_enabled = vpkt.gps_enabled;
-
         stream_recv_bytes = 0;
 
         // printf("debug - version packet valid\n\n");
@@ -336,25 +333,6 @@
     packet->encoding = (encoding_type) phdr.encoding;
     packet->datarate = (uint32_t) ntohl(phdr.datarate);
 
-	if (gps_enabled) {
-		// If the drone is sending us GPS data, use it
-		packet->gps_lat = Pair2Float((int16_t) ntohs(phdr.gps_lat),
-									 (int64_t) kis_ntoh64(phdr.gps_lat_mant));
-		packet->gps_lon = Pair2Float((int16_t) ntohs(phdr.gps_lon),
-									 (int64_t) kis_ntoh64(phdr.gps_lon_mant));
-		packet->gps_alt = Pair2Float((int16_t) ntohs(phdr.gps_alt),
-									 (int64_t) kis_ntoh64(phdr.gps_alt_mant));
-		packet->gps_spd = Pair2Float((int16_t) ntohs(phdr.gps_spd),
-									 (int64_t) kis_ntoh64(phdr.gps_spd_mant));
-		packet->gps_heading = Pair2Float((int16_t) ntohs(phdr.gps_heading),
-										 (int64_t) kis_ntoh64(phdr.gps_heading_mant));
-		packet->gps_fix = phdr.gps_fix;
-	} else if (gpsd != NULL) {
-		// Otherwise, no
-		gpsd->FetchLoc(&packet->gps_lat, &packet->gps_lon, &packet->gps_alt,
-					   &packet->gps_spd, &packet->gps_heading, &packet->gps_fix);
-	}
-
     packet->data = data;
     packet->moddata = moddata;
     packet->modified = 0;
diff -urN kismet.dev/dronesource.h kismet.dev2/dronesource.h
--- kismet.dev/dronesource.h	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/dronesource.h	2005-08-23 01:59:25.644220096 +0200
@@ -79,9 +79,6 @@
     uint8_t databuf[MAX_PACKET_LEN];
 
     unsigned int resyncing;
-
-	// Is the drone pushing GPS data to us?
-	int gps_enabled;
 };
 
 // Nothing but a registrant for us
diff -urN kismet.dev/frontend.cc kismet.dev2/frontend.cc
--- kismet.dev/frontend.cc	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/frontend.cc	2005-08-23 01:59:25.645219944 +0200
@@ -248,33 +248,6 @@
 
             }
 
-            // Aggregate the GPS data
-            if (wnet->aggregate_points > 0) {
-                dnet->virtnet->aggregate_lat += wnet->aggregate_lat;
-                dnet->virtnet->aggregate_lon += wnet->aggregate_lon;
-                dnet->virtnet->aggregate_alt += wnet->aggregate_alt;
-                dnet->virtnet->aggregate_points += wnet->aggregate_points;
-            }
-
-            if (wnet->gps_fixed > dnet->virtnet->gps_fixed)
-                dnet->virtnet->gps_fixed = wnet->gps_fixed;
-            if (wnet->min_lat < dnet->virtnet->min_lat || dnet->virtnet->min_lat == 0)
-                dnet->virtnet->min_lat = wnet->min_lat;
-            if (wnet->min_lon < dnet->virtnet->min_lon || dnet->virtnet->min_lon == 0)
-                dnet->virtnet->min_lon = wnet->min_lon;
-            if (wnet->min_alt < dnet->virtnet->min_alt || dnet->virtnet->min_alt == 0)
-                dnet->virtnet->min_alt = wnet->min_alt;
-            if (wnet->min_spd < dnet->virtnet->min_spd || dnet->virtnet->min_spd == 0)
-                dnet->virtnet->min_spd = wnet->min_spd;
-            if (wnet->max_lat > dnet->virtnet->max_lat || dnet->virtnet->max_lat == 0)
-                dnet->virtnet->max_lat = wnet->max_lat;
-            if (wnet->max_lon > dnet->virtnet->max_lon || dnet->virtnet->max_lon == 0)
-                dnet->virtnet->max_lon = wnet->max_lon;
-            if (wnet->max_alt > dnet->virtnet->max_alt || dnet->virtnet->max_alt == 0)
-                dnet->virtnet->max_alt = wnet->max_alt;
-            if (wnet->max_spd > dnet->virtnet->max_spd || dnet->virtnet->max_spd == 0)
-                dnet->virtnet->max_spd = wnet->max_spd;
-
             // Aggregate the carriers and encodings
             dnet->virtnet->carrier_set |= wnet->carrier_set;
             dnet->virtnet->encoding_set |= wnet->encoding_set;
diff -urN kismet.dev/kis_packsources.cc kismet.dev2/kis_packsources.cc
--- kismet.dev/kis_packsources.cc	2005-08-23 00:59:04.465379568 +0200
+++ kismet.dev2/kis_packsources.cc	2005-08-23 02:01:08.585570632 +0200
@@ -60,13 +60,8 @@
 
 #if defined(HAVE_LIBPCAP) && defined(HAVE_LINUX_WIRELESS)
     // Linux wext-driven cards
-    sourcetracker->RegisterPacketsource("cisco", 1, "IEEE80211b", 6,
-                                       pcapsource_wext_registrant,
-                                       monitor_cisco, unmonitor_cisco, 
-                                       chancontrol_wext, 1);
-    sourcetracker->RegisterPacketsource("cisco_wifix", 1, "IEEE80211b", 6,
-                                       pcapsource_ciscowifix_registrant,
-                                       monitor_cisco_wifix, NULL, NULL, 1);
+	REG_EMPTY_CARD(sourcetracker, "cisco");
+	REG_EMPTY_CARD(sourcetracker, "cisco_wifix");
     sourcetracker->RegisterPacketsource("hostap", 1, "IEEE80211b", 6,
                                        pcapsource_wext_registrant,
                                        monitor_hostap, unmonitor_hostap, 
@@ -79,21 +74,9 @@
                                         pcapsource_wext_registrant,
                                         monitor_orinoco, unmonitor_orinoco,
                                         chancontrol_orinoco, 1);
-    sourcetracker->RegisterPacketsource("acx100", 1, "IEEE80211b", 6,
-                                       pcapsource_wextfcs_registrant,
-                                       monitor_acx100, unmonitor_acx100, 
-                                       chancontrol_wext, 1);
-    sourcetracker->RegisterPacketsource("admtek", 1, "IEEE80211b", 6,
-                                        pcapsource_wext_registrant,
-                                        monitor_admtek, unmonitor_admtek,
-                                        chancontrol_wext, 1);
-    sourcetracker->RegisterPacketsource("vtar5k", 1, "IEEE80211a", 36,
-                                       pcapsource_wext_registrant,
-                                       monitor_vtar5k, NULL, chancontrol_wext, 1);
-    sourcetracker->RegisterPacketsource("atmel_usb", 1, "IEEE80211b", 6,
-                                       pcapsource_wext_registrant,
-                                       monitor_wext, unmonitor_wext, 
-                                       chancontrol_wext, 1);
+	REG_EMPTY_CARD(sourcetracker, "acx100");
+	REG_EMPTY_CARD(sourcetracker, "admtek");
+	REG_EMPTY_CARD(sourcetracker, "vtar5k");
 
     sourcetracker->RegisterPacketsource("madwifi_a", 1, "IEEE80211a", 36,
                                         pcapsource_wextfcs_registrant,
@@ -121,38 +104,14 @@
                                         monitor_prism54g, unmonitor_prism54g,
                                         chancontrol_prism54g, 1);
 
-    sourcetracker->RegisterPacketsource("wlanng_wext", 1, "IEEE80211b", 6,
-                                        pcapsource_wlanng_registrant,
-                                        monitor_wlanng_avs, NULL,
-                                        chancontrol_wext, 1);
-
-    sourcetracker->RegisterPacketsource("ipw2100", 1, "IEEE80211b", 6,
-                                        pcapsource_wext_registrant,
-                                        monitor_ipw2100, unmonitor_ipw2100,
-                                        chancontrol_ipw2100, 1);
-
-    sourcetracker->RegisterPacketsource("ipw2200", 1, "IEEE80211g", 6,
-                                        pcapsource_wext_registrant,
-                                        monitor_ipw2200, unmonitor_ipw2200,
-                                        chancontrol_ipw2200, 1);
-
-    sourcetracker->RegisterPacketsource("ipw2915", 1, "IEEE80211ab", 6,
-                                        pcapsource_wext_registrant,
-                                        monitor_ipw2200, unmonitor_ipw2200,
-                                        chancontrol_ipw2200, 1);
+	REG_EMPTY_CARD(sourcetracker, "wlanng_wext");
+	REG_EMPTY_CARD(sourcetracker, "ipw2100");
+	REG_EMPTY_CARD(sourcetracker, "ipw2200");
+	REG_EMPTY_CARD(sourcetracker, "ipw2915");
+    REG_EMPTY_CARD(sourcetracker, "rt2400");
+    REG_EMPTY_CARD(sourcetracker, "rt2500");
+    REG_EMPTY_CARD(sourcetracker, "rt8180");
 
-    sourcetracker->RegisterPacketsource("rt2400", 1, "IEEE80211b", 6,
-                                        pcapsource_wext_registrant,
-                                        monitor_wext, unmonitor_wext,
-                                        chancontrol_wext, 1);
-    sourcetracker->RegisterPacketsource("rt2500", 1, "IEEE80211g", 6,
-                                        pcapsource_11g_registrant,
-                                        monitor_wext, unmonitor_wext,
-                                        chancontrol_wext, 1);
-    sourcetracker->RegisterPacketsource("rt8180", 1, "IEEE80211b", 6,
-                                        pcapsource_wext_registrant,
-                                        monitor_wext, unmonitor_wext,
-                                        chancontrol_wext, 1);
 
 #else
     // Register the linuxwireless pcap stuff as null
@@ -182,31 +141,13 @@
     REG_EMPTY_CARD(sourcetracker, "wlanng_wext");
 #endif
 
-#if defined(HAVE_LIBPCAP) && defined(SYS_LINUX)
-    sourcetracker->RegisterPacketsource("wlanng", 1, "IEEE80211b", 6,
-                                       pcapsource_wlanng_registrant,
-                                       monitor_wlanng, NULL, chancontrol_wlanng, 1);
-    sourcetracker->RegisterPacketsource("wlanng_avs", 1, "IEEE80211b", 6,
-                                       pcapsource_wlanng_registrant,
-                                       monitor_wlanng_avs, NULL,
-                                       chancontrol_wlanng_avs, 1);
     sourcetracker->RegisterPacketsource("wrt54g", 1, "na", 0,
                                         pcapsource_wrt54g_registrant,
-										monitor_wrt54g, unmonitor_wrt54g, chancontrol_wext, 0);
-#else
+                                        monitor_wrt54g, unmonitor_wrt54g, chancontrol_wext, 0);
+
     REG_EMPTY_CARD(sourcetracker, "wlanng");
     REG_EMPTY_CARD(sourcetracker, "wlanng_avs");
-    REG_EMPTY_CARD(sourcetracker, "wrt54g");
-#endif
-
-#if defined(SYS_LINUX) && defined(HAVE_LINUX_NETLINK)
-    sourcetracker->RegisterPacketsource("wlanng_legacy", 1, "IEEE80211b", 6,
-                                        prism2source_registrant,
-                                        monitor_wlanng_legacy, NULL,
-                                        chancontrol_wlanng_legacy, 1);
-#else
     REG_EMPTY_CARD(sourcetracker, "wlanng_legacy");
-#endif
 
 #if defined(HAVE_LIBPCAP) && defined(SYS_OPENBSD)
     sourcetracker->RegisterPacketsource("cisco_openbsd", 1, "IEEE80211b", 6,
@@ -240,29 +181,11 @@
     REG_EMPTY_CARD(sourcetracker, "radiotap_bsd_b");
 #endif
 
-#if defined(HAVE_LIBWIRETAP)
-    sourcetracker->RegisterPacketsource("wtapfile", 0, "na", 0,
-                                       wtapfilesource_registrant,
-                                       NULL, NULL, NULL, 0);
-#else
     REG_EMPTY_CARD(sourcetracker, "wtapfile");
-#endif
 
-#if defined(HAVE_WSP100)
-    sourcetracker->RegisterPacketsource("wsp100", 0, "IEEE80211b", 6,
-                                        wsp100source_registrant,
-                                        monitor_wsp100, NULL, chancontrol_wsp100, 0);
-#else
     REG_EMPTY_CARD(sourcetracker, "wsp100");
-#endif
 
-#if defined(HAVE_VIHAHEADERS)
-    sourcetracker->RegisterPacketsource("viha", 1, "IEEE80211b", 6,
-                                        vihasource_registrant,
-                                        NULL, NULL, chancontrol_viha, 0);
-#else
     REG_EMPTY_CARD(sourcetracker, "viha");
-#endif
 
     return 1;
 }
diff -urN kismet.dev/kis_packsources.h kismet.dev2/kis_packsources.h
--- kismet.dev/kis_packsources.h	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/kis_packsources.h	2005-08-23 01:59:25.646219792 +0200
@@ -22,11 +22,7 @@
 #include "config.h"
 
 #include "packetsource.h"
-#include "prism2source.h"
 #include "pcapsource.h"
-#include "wtapfilesource.h"
-#include "wsp100source.h"
-#include "vihasource.h"
 #include "dronesource.h"
 #include "packetsourcetracker.h"
 
diff -urN kismet.dev/kismet_client.cc kismet.dev2/kismet_client.cc
--- kismet.dev/kismet_client.cc	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/kismet_client.cc	2005-08-23 01:59:25.648219488 +0200
@@ -28,7 +28,6 @@
 #include "cursesfront.h"
 #include "panelfront.h"
 #include "configfile.h"
-#include "speech.h"
 
 #ifndef exec_name
 char *exec_name;
@@ -47,11 +46,7 @@
 char *configfile;
 char *uiconfigfile;
 char *server = NULL;
-int sound = -1;
-int speech = -1;
 int flite = 0;
-int speech_encoding = 0;
-string speech_sentence_encrypted, speech_sentence_unencrypted;
 unsigned int metric = 0;
 unsigned int reconnect = 0;
 
@@ -59,20 +54,9 @@
 string configdir, groupfile;
 FILE *group_file = NULL;
 
-// Pipe file descriptor pairs and fd's
-int soundpair[2];
-int speechpair[2];
-pid_t soundpid = -1, speechpid = -1;
-
 // Catch our interrupt
 void CatchShutdown(int sig) {
 
-    // Kill our sound players
-    if (soundpid > 0)
-        kill(soundpid, 9);
-    if (speechpid > 0)
-        kill(speechpid, 9);
-
     if (group_track) {
         if ((group_file = fopen(groupfile.c_str(), "w")) == NULL) {
             fprintf(stderr, "WARNING: Unable to open '%s' for writing, groups will not be saved.\n",
@@ -116,215 +100,6 @@
     exit(0);
 }
 
-// Subprocess sound handler
-void SoundHandler(int *fds, const char *player, map<string, string> soundmap) {
-    int read_sock = fds[0];
-
-    close(fds[1]);
-
-    signal(SIGPIPE, PipeHandler);
-
-    fd_set rset;
-
-    char data[1024];
-
-    pid_t sndpid = -1;
-    int harvested = 1;
-
-    while (1) {
-        FD_ZERO(&rset);
-        FD_SET(read_sock, &rset);
-        char *end;
-
-        memset(data, 0, 1024);
-
-        if (harvested == 0) {
-            // We consider a wait error to be a sign that the child pid died
-            // so we flag it as harvested and keep on going
-            pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
-            if (harvestpid == -1 || harvestpid == sndpid)
-                harvested = 1;
-        }
-
-        struct timeval tim;
-        tim.tv_sec = 1;
-        tim.tv_usec = 0;
-
-        if (select(read_sock + 1, &rset, NULL, NULL, &tim) < 0) {
-            if (errno != EINTR) {
-                exit(1);
-            }
-        }
-
-        if (FD_ISSET(read_sock, &rset)) {
-            int ret;
-            ret = read(read_sock, data, 1024);
-
-            // We'll die off if we get a read error, and we'll let kismet on the
-            // other side detact that it died
-            if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
-                exit(1);
-
-            if ((end = strstr(data, "\n")) == NULL)
-                continue;
-
-            end[0] = '\0';
-        }
-
-        if (data[0] == '\0')
-            continue;
-
-        // If we've harvested the process, spawn a new one and watch it
-        // instead.  Otherwise, we just let go of the data we read
-        if (harvested == 1) {
-            // Only take the first line
-            char *nl;
-            if ((nl = strchr(data, '\n')) != NULL)
-                *nl = '\0';
-
-            char snd[1024];
-
-            if (soundmap.size() == 0)
-                snprintf(snd, 1024, "%s", data);
-            if (soundmap.find(data) != soundmap.end())
-                snprintf(snd, 1024, "%s", soundmap[data].c_str());
-            else
-                continue;
-
-            char plr[1024];
-            snprintf(plr, 1024, "%s", player);
-
-            harvested = 0;
-            if ((sndpid = fork()) == 0) {
-                // Suppress errors
-                int nulfd = open("/dev/null", O_RDWR);
-                dup2(nulfd, 1);
-                dup2(nulfd, 2);
-
-                char * const echoarg[] = { plr, snd, NULL };
-                execve(echoarg[0], echoarg, NULL);
-            }
-        }
-
-        data[0] = '\0';
-    }
-}
-
-// Subprocess speech handler
-void SpeechHandler(int *fds, const char *player) {
-    int read_sock = fds[0];
-    close(fds[1]);
-
-    fd_set rset;
-
-    char data[1024];
-
-    pid_t sndpid = -1;
-    int harvested = 1;
-
-    while (1) {
-        FD_ZERO(&rset);
-        FD_SET(read_sock, &rset);
-        //char *end;
-
-        memset(data, 0, 1024);
-
-        struct timeval tim;
-        tim.tv_sec = 1;
-        tim.tv_usec = 0;
-
-        if (select(read_sock + 1, &rset, NULL, NULL, &tim) < 0) {
-            if (errno != EINTR) {
-                exit(1);
-            }
-        }
-
-        if (harvested == 0) {
-            // We consider a wait error to be a sign that the child pid died
-            // so we flag it as harvested and keep on going
-            pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
-            if (harvestpid == -1 || harvestpid == sndpid)
-                harvested = 1;
-        }
-
-        if (FD_ISSET(read_sock, &rset)) {
-            int ret;
-            ret = read(read_sock, data, 1024);
-
-            // We'll die off if we get a read error, and we'll let kismet on the
-            // other side detact that it died
-            if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
-                exit(1);
-
-            data[ret] = '\0';
-
-        }
-
-        if (data[0] == '\0')
-            continue;
-
-        // If we've harvested the process, spawn a new one and watch it
-        // instead.  Otherwise, we just let go of the data we read
-        if (harvested == 1) {
-            harvested = 0;
-            if ((sndpid = fork()) == 0) {
-                // Only take the first line
-                char *nl;
-                if ((nl = strchr(data, '\n')) != NULL)
-                    *nl = '\0';
-
-                // Make sure it's shell-clean
-                MungeToShell(data, strlen(data));
-                char spk_call[1024];
-                snprintf(spk_call, 1024, "echo \"(%s\\\"%s\\\")\" | %s "
-						 ">/dev/null 2>/dev/null",
-						 flite ? "": "SayText ", data, player);
-
-                system(spk_call);
-
-                exit(0);
-            }
-        }
-
-        data[0] = '\0';
-    }
-}
-
-
-int PlaySound(string in_sound) {
-
-    char snd[1024];
-
-    snprintf(snd, 1024, "%s\n", in_sound.c_str());
-
-    if (write(soundpair[1], snd, strlen(snd)) < 0) {
-        char status[STATUS_MAX];
-        snprintf(status, STATUS_MAX,
-                 "ERROR: Could not write to sound pipe.  Stopping sound.");
-        gui->WriteStatus(status);
-
-        return 0;
-    }
-
-    return 1;
-}
-
-int SayText(string in_text) {
-    char snd[1024];
-
-    snprintf(snd, 1024, "%s\n", in_text.c_str());
-
-    if (write(speechpair[1], snd, strlen(snd)) < 0) {
-        char status[STATUS_MAX];
-        snprintf(status, STATUS_MAX,
-                 "ERROR: Could not write to speech pipe.  Stopping speech.");
-        gui->WriteStatus(status);
-
-        return 0;
-    }
-
-    return 1;
-}
 
 int main(int argc, char *argv[]) {
     exec_name = argv[0];
@@ -345,8 +120,6 @@
     char guihost[1024];
     int guiport = -1;
 
-    int gpsmode = -1;
-
     configfile = NULL;
     uiconfigfile = NULL;
 
@@ -391,7 +164,6 @@
             fprintf(stderr, "Using alternate UI config file: %s\n", uiconfigfile);
             break;
         case 'q':
-            sound = 0;
             break;
         case 'g':
             reqgui = strdup(optarg);
@@ -515,70 +287,6 @@
         server = strdup(gui_conf->FetchOpt("host").c_str());
     }
 
-    if (gui_conf->FetchOpt("sound") == "true" && sound == -1) {
-        if (gui_conf->FetchOpt("soundplay") != "") {
-            sndplay = gui_conf->FetchOpt("soundplay");
-            sound = 1;
-
-            if (gui_conf->FetchOpt("soundopts") != "")
-                sndplay += " " + gui_conf->FetchOpt("soundopts");
-
-            if (gui_conf->FetchOpt("sound_new") != "")
-                wav_map["new"] = gui_conf->FetchOpt("sound_new");
-            if (gui_conf->FetchOpt("sound_new_wep") != "")
-                wav_map["new_wep"] = gui_conf->FetchOpt("sound_new_wep");
-            if (gui_conf->FetchOpt("sound_traffic") != "")
-                wav_map["traffic"] = gui_conf->FetchOpt("sound_traffic");
-            if (gui_conf->FetchOpt("sound_junktraffic") != "")
-                wav_map["junktraffic"] = gui_conf->FetchOpt("sound_junktraffic");
-            if (gui_conf->FetchOpt("sound_gpslock") != "")
-                wav_map["gpslock"] = gui_conf->FetchOpt("sound_gpslock");
-            if (gui_conf->FetchOpt("sound_gpslost") != "")
-                wav_map["gpslost"] = gui_conf->FetchOpt("sound_gpslost");
-            if (gui_conf->FetchOpt("sound_alert") != "")
-                wav_map["alert"] = gui_conf->FetchOpt("sound_alert");
-
-        } else {
-            fprintf(stderr, "ERROR:  Sound alerts enabled but no sound playing binary specified.\n");
-            sound = 0;
-        }
-    } else if (sound == -1)
-        sound = 0;
-
-    /* Added by Shaw Innes 17/2/02 */
-    if (gui_conf->FetchOpt("speech") == "true" && speech == -1) {
-        if (gui_conf->FetchOpt("festival") != "") {
-            festival = strdup(gui_conf->FetchOpt("festival").c_str());
-            speech = 1;
-
-			if (gui_conf->FetchOpt("flite") == "true")
-				flite = 1;
-
-            string speechtype = gui_conf->FetchOpt("speech_type");
-
-            if (!strcasecmp(speechtype.c_str(), "nato"))
-                speech_encoding = SPEECH_ENCODING_NATO;
-            else if (!strcasecmp(speechtype.c_str(), "spell"))
-                speech_encoding = SPEECH_ENCODING_SPELL;
-            else
-                speech_encoding = SPEECH_ENCODING_NORMAL;
-
-            // Make sure we have encrypted text lines
-            if (gui_conf->FetchOpt("speech_encrypted") == "" || gui_conf->FetchOpt("speech_unencrypted") == "") {
-                fprintf(stderr, "ERROR:  Speech request but speech_encrypted or speech_unencrypted line missing.\n");
-                speech = 0;
-            }
-
-            speech_sentence_encrypted = gui_conf->FetchOpt("speech_encrypted");
-            speech_sentence_unencrypted = gui_conf->FetchOpt("speech_unencrypted");
-
-        } else {
-            fprintf(stderr, "ERROR: Speech alerts enabled but no path to festival has been specified.\n");
-            speech = 0;
-        }
-    } else if (speech == -1)
-        speech = 0;
-
     if (gui_conf->FetchOpt("decay") != "") {
         if (sscanf(gui_conf->FetchOpt("decay").c_str(), "%d", &decay) != 1) {
             fprintf(stderr, "FATAL:  Illegal config file value for decay.\n");
@@ -636,45 +344,6 @@
         }
     }
 
-    // Fork and find the sound options
-    if (sound) {
-        if (pipe(soundpair) == -1) {
-            fprintf(stderr, "WARNING:  Unable to create pipe for audio.  Disabling sound.\n");
-            sound = 0;
-        } else {
-            soundpid = fork();
-
-            if (soundpid < 0) {
-                fprintf(stderr, "WARNING:  Unable to fork for audio.  Disabling sound.\n");
-                sound = 0;
-            } else if (soundpid == 0) {
-                SoundHandler(soundpair, sndplay.c_str(), wav_map);
-                exit(0);
-            }
-
-            close(soundpair[0]);
-        }
-    }
-
-    if (speech) {
-        if (pipe(speechpair) == -1) {
-            fprintf(stderr, "WARNING:  Unable to create pipe for speech.  Disabling speech.\n");
-            speech = 0;
-        } else {
-            speechpid = fork();
-
-            if (speechpid < 0) {
-                fprintf(stderr, "WARNING:  Unable to fork for speech.  Disabling speech.\n");
-                speech = 0;
-            } else if (speechpid == 0) {
-                SpeechHandler(speechpair, festival);
-                exit(0);
-            }
-
-            close(speechpair[0]);
-        }
-    }
-
     if (kismet_serv.Connect(guiport, guihost) < 0) {
         fprintf(stderr, "FATAL:  Could not connect to %s:%d.\n", guihost, guiport);
         CatchShutdown(-1);
@@ -884,53 +553,13 @@
                     }
 
                     if (pollret != 0) {
-                        if (pollret == CLIENT_ALERT)
-                            if (sound == 1)
-                                sound = PlaySound("alert");
-
                         if (strlen(tcpcli->FetchStatus()) != 0) {
                             gui->WriteStatus(tcpcli->FetchStatus());
                             // gui->DrawDisplay();
                         }
 
-                        // The GPS only gets updated for the primary client
-                        if (tcpcli == primary_client) {
-                            if (tcpcli->FetchMode() == 0 && gpsmode != 0) {
-                                if (sound == 1 && gpsmode != -1)
-                                    sound = PlaySound("gpslost");
-                                gpsmode = 0;
-                            } else if (tcpcli->FetchMode() != 0 && gpsmode == 0) {
-                                if (sound == 1 && gpsmode != -1)
-                                    sound = PlaySound("gpslock");
-                                gpsmode = 1;
-                            }
-                        }
-
                         if (tcpcli->FetchDeltaNumNetworks() > 0) {
                             wireless_network *newnet = tcpcli->FetchLastNewNetwork();
-
-                            if (sound == 1 && newnet != lastspoken) {
-                                if (newnet->crypt_set && 
-                                    wav_map.find("new_wep") != wav_map.end())
-                                    sound = PlaySound("new_wep");
-                                else
-                                    sound = PlaySound("new");
-                            }
-
-                            if (speech == 1 && newnet != lastspoken) {
-                                string text;
-
-                                if (newnet != NULL) {
-                                    if (newnet->crypt_set)
-                                        text = ExpandSpeechString(speech_sentence_encrypted, newnet, speech_encoding);
-                                    else
-                                        text = ExpandSpeechString(speech_sentence_unencrypted, newnet, speech_encoding);
-
-                                    speech = SayText(text.c_str());
-                                }
-                            }
-
-                            lastspoken = newnet;
                         }
 
                         num_networks += tcpcli->FetchNumNetworks();
@@ -938,17 +567,7 @@
                         num_noise += tcpcli->FetchNumNoise();
                         num_dropped += tcpcli->FetchNumDropped();
 
-                        if (tcpcli->FetchDeltaNumPackets() != 0) {
-                            if (time(0) - last_click >= decay && sound == 1) {
-                                if (tcpcli->FetchDeltaNumPackets() > tcpcli->FetchDeltaNumDropped()) {
-                                    sound = PlaySound("traffic");
-                                } else {
-                                    sound = PlaySound("junktraffic");
-                                }
-
-                                last_click = time(0);
-                            }
-                        }
+						tcpcli->FetchDeltaNumPackets();
                     }
                 }
             } else {
diff -urN kismet.dev/kismet_drone.cc kismet.dev2/kismet_drone.cc
--- kismet.dev/kismet_drone.cc	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/kismet_drone.cc	2005-08-23 01:59:25.649219336 +0200
@@ -32,16 +32,11 @@
 #include "packet.h"
 
 #include "packetsource.h"
-#include "prism2source.h"
 #include "pcapsource.h"
-#include "wtapfilesource.h"
-#include "wsp100source.h"
-#include "vihasource.h"
 #include "dronesource.h"
 #include "packetsourcetracker.h"
 #include "kis_packsources.h"
 
-#include "gpsd.h"
 #include "tcpstreamer.h"
 #include "configfile.h"
 
@@ -53,10 +48,6 @@
 
 const char *config_base = "kismet_drone.conf";
 
-GPSD *gps = NULL;
-int gpsmode = 0;
-int gps_enable = 0;
-
 // Timetracker
 Timetracker timetracker;
 
@@ -81,26 +72,6 @@
     exit(0);
 }
 
-int GpsEvent(Timetracker::timer_event *evt, void *parm) {
-    // The GPS only provides us a new update once per second we might
-    // as well only update it here once a second
-    if (gps_enable) {
-        int gpsret;
-        gpsret = gps->Scan();
-        if (gpsret < 0) {
-            if (!silent)
-                fprintf(stderr, "GPS error fetching data: %s\n",
-                        gps->FetchError());
-
-            gps_enable = 0;
-        }
-
-    }
-
-    // We want to be rescheduled
-    return 1;
-}
-
 // Handle channel hopping... this is actually really simple.
 int ChannelHopEvent(Timetracker::timer_event *evt, void *parm) {
     sourcetracker.AdvanceChannel();
@@ -148,9 +119,6 @@
 
     TcpStreamer streamer;
 
-    char gpshost[1024];
-    int gpsport = -1;
-
     int channel_hop = -1;
     int channel_velocity = 1;
     int channel_dwell = 0;
@@ -351,46 +319,6 @@
         exit(1);
     }
 
-    if (conf->FetchOpt("gps") == "true") {
-        if (sscanf(conf->FetchOpt("gpshost").c_str(), "%1023[^:]:%d", gpshost, &gpsport) != 2) {
-            fprintf(stderr, "Invalid GPS host in config (host:port required)\n");
-            exit(1);
-        }
-
-        gps_enable = 1;
-    } else {
-            gps_enable = 0;
-    }
-
-    if (gps_enable == 1) {
-        // Open the GPS
-        gps = new GPSD(gpshost, gpsport);
-
-        // Lock GPS position
-        if (conf->FetchOpt("gpsmodelock") == "true") {
-            fprintf(stderr, "Enabling GPS position lock override (broken GPS unit reports 0 always)\n");
-            gps->SetOptions(GPSD_OPT_FORCEMODE);
-        }
-
-        if (gps->OpenGPSD() < 0) {
-            fprintf(stderr, "%s\n", gps->FetchError());
-
-            gps_enable = 0;
-        } else {
-            fprintf(stderr, "Opened GPS connection to %s port %d\n",
-                    gpshost, gpsport);
-
-        }
-    }
-
-    // Update GPS coordinates and handle signal loss if defined
-    timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &GpsEvent, NULL);
-
-	// Add the GPS to the tcpstreamer
-	streamer.AddGpstracker(gps);
-
-    // Register the gps and timetracker with the sourcetracker
-    sourcetracker.AddGpstracker(gps);
     sourcetracker.AddTimetracker(&timetracker);
 
     // Register the sources
diff -urN kismet.dev/kismet_server.cc kismet.dev2/kismet_server.cc
--- kismet.dev/kismet_server.cc	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/kismet_server.cc	2005-08-23 01:59:25.653218728 +0200
@@ -37,11 +37,7 @@
 #include "packet.h"
 
 #include "packetsource.h"
-#include "prism2source.h"
 #include "pcapsource.h"
-#include "wtapfilesource.h"
-#include "wsp100source.h"
-#include "vihasource.h"
 #include "dronesource.h"
 #include "packetsourcetracker.h"
 #include "kis_packsources.h"
@@ -51,15 +47,11 @@
 #include "wtaplocaldump.h"
 #include "airsnortdump.h"
 #include "fifodump.h"
-#include "gpsdump.h"
-
-#include "gpsd.h"
 
 #include "packetracker.h"
 #include "timetracker.h"
 #include "alertracker.h"
 
-#include "speech.h"
 #include "tcpserver.h"
 #include "server_globals.h"
 #include "kismet_server.h"
@@ -89,17 +81,8 @@
 Alertracker alertracker;
 Timetracker timetracker;
 
-GPSD *gps = NULL;
-int gpsmode = 0;
-GPSDump gpsdump;
-
-// Last time we tried to reconnect to the gps
-time_t last_gpsd_reconnect = 0;
-int gpsd_reconnect_attempt = 0;
-
 FifoDumpFile fifodump;
 TcpServer ui_server;
-int sound = -1;
 packet_info last_info;
 int decay;
 channel_power channel_graph[CHANNEL_MAX];
@@ -112,11 +95,8 @@
 // Wep keys
 macmap<wep_key_info *> bssid_wep_map;
 
-// Pipe file descriptor pairs and fd's
-int soundpair[2];
-int speechpair[2];
 int chanpair[2];
-pid_t soundpid = -1, speechpid = -1, chanpid = -1;
+pid_t chanpid = -1;
 
 // Past alerts
 unsigned int max_alerts = 50;
@@ -177,17 +157,6 @@
 int tcpport = -1;
 int tcpmax;
 
-//const char *sndplay = NULL;
-string sndplay;
-
-const char *festival = NULL;
-int speech = -1;
-int flite = 0;
-int speech_encoding = 0;
-string speech_sentence_encrypted, speech_sentence_unencrypted;
-
-map<string, string> wav_map;
-
 int beacon_log = 1;
 int phy_log = 1;
 int mangle_log = 0;
@@ -347,17 +316,6 @@
         // delete cryptfile;
     }
 
-    if (gps_log == 1) {
-        if (gpsdump.CloseDump(1) < 0)
-            fprintf(stderr, "Didn't log any GPS coordinates, unlinking gps file\n");
-    }
-
-    // Kill our sound players
-    if (soundpid > 0)
-        kill(soundpid, 9);
-    if (speechpid > 0)
-        kill(speechpid, 9);
-
     // Shut down the packet sources
     sourcetracker.CloseSources();
 
@@ -368,228 +326,10 @@
     exit(0);
 }
 
-// Subprocess sound handler
-void SoundHandler(int *fds, const char *player, map<string, string> soundmap) {
-    int read_sock = fds[0];
-    close(fds[1]);
-
-    fd_set rset;
-
-    char data[1024];
-
-    pid_t sndpid = -1;
-    int harvested = 1;
-
-    while (1) {
-        FD_ZERO(&rset);
-        FD_SET(read_sock, &rset);
-        char *end;
-
-        memset(data, 0, 1024);
-
-        struct timeval tm;
-        tm.tv_sec = 1;
-        tm.tv_usec = 0;
-
-        if (select(read_sock + 1, &rset, NULL, NULL, &tm) < 0) {
-            if (errno != EINTR) {
-                exit(1);
-            }
-        }
-
-        if (harvested == 0) {
-            // We consider a wait error to be a sign that the child pid died
-            // so we flag it as harvested and keep on going
-            pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
-            if (harvestpid == -1 || harvestpid == sndpid)
-                harvested = 1;
-        }
-
-        if (FD_ISSET(read_sock, &rset)) {
-            int ret;
-            ret = read(read_sock, data, 1024);
-
-            // We'll die off if we get a read error, and we'll let kismet on the
-            // other side detact that it died
-            if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
-                exit(1);
-
-            if ((end = strstr(data, "\n")) == NULL)
-                continue;
-
-            end[0] = '\0';
-        }
-
-        if (data[0] == '\0')
-            continue;
-
-
-        // If we've harvested the process, spawn a new one and watch it
-        // instead.  Otherwise, we just let go of the data we read
-        if (harvested == 1) {
-            // Only take the first line
-            char *nl;
-            if ((nl = strchr(data, '\n')) != NULL)
-                *nl = '\0';
-
-            // Make sure it's shell-clean
-
-            char snd[1024];
-
-            if (soundmap.size() == 0)
-                snprintf(snd, 1024, "%s", data);
-            if (soundmap.find(data) != soundmap.end())
-                snprintf(snd, 1024, "%s", soundmap[data].c_str());
-            else
-                continue;
-
-            char plr[1024];
-            snprintf(plr, 1024, "%s", player);
-
-            harvested = 0;
-            if ((sndpid = fork()) == 0) {
-                // Suppress errors
-                if (silent) {
-                    int nulfd = open("/dev/null", O_RDWR);
-                    dup2(nulfd, 1);
-                    dup2(nulfd, 2);
-                }
-
-                char * const echoarg[] = { plr, snd, NULL };
-                execve(echoarg[0], echoarg, NULL);
-            }
-        }
-        data[0] = '\0';
-    }
-}
-
-// Subprocess speech handler
-void SpeechHandler(int *fds, const char *player) {
-    int read_sock = fds[0];
-    close(fds[1]);
-
-    fd_set rset;
-
-    char data[1024];
-
-    pid_t sndpid = -1;
-    int harvested = 1;
-
-    while (1) {
-        FD_ZERO(&rset);
-        FD_SET(read_sock, &rset);
-        //char *end;
-
-        memset(data, 0, 1024);
-
-        if (harvested == 0) {
-            // We consider a wait error to be a sign that the child pid died
-            // so we flag it as harvested and keep on going
-            pid_t harvestpid = waitpid(sndpid, NULL, WNOHANG);
-            if (harvestpid == -1 || harvestpid == sndpid)
-                harvested = 1;
-        }
-
-        struct timeval tm;
-        tm.tv_sec = 1;
-        tm.tv_usec = 0;
-
-        if (select(read_sock + 1, &rset, NULL, NULL, &tm) < 0) {
-            if (errno != EINTR) {
-                exit(1);
-            }
-        }
-
-        if (FD_ISSET(read_sock, &rset)) {
-            int ret;
-            ret = read(read_sock, data, 1024);
-
-            // We'll die off if we get a read error, and we'll let kismet on the
-            // other side detact that it died
-            if (ret <= 0 && (errno != EAGAIN && errno != EPIPE))
-                exit(1);
-
-            data[ret] = '\0';
-        }
-
-        if (data[0] == '\0')
-            continue;
-
-        // If we've harvested the process, spawn a new one and watch it
-        // instead.  Otherwise, we just let go of the data we read
-        if (harvested == 1) {
-            harvested = 0;
-            if ((sndpid = fork()) == 0) {
-                // Only take the first line
-                char *nl;
-                if ((nl = strchr(data, '\n')) != NULL)
-                    *nl = '\0';
-
-                // Make sure it's shell-clean
-                MungeToShell(data, strlen(data));
-                char spk_call[1024];
-                snprintf(spk_call, 1024, "echo \"(%s\\\"%s\\\")\" | %s "
-						 ">/dev/null 2>/dev/null",
-						 flite ? "" : "SayText ", data, player);
-                system(spk_call);
-
-                exit(0);
-            }
-        }
-
-        data[0] = '\0';
-    }
-}
-
-
-// Fork and run a system call to play a sound
-int PlaySound(string in_sound) {
-
-    char snd[1024];
-
-    snprintf(snd, 1024, "%s\n", in_sound.c_str());
-
-    if (write(soundpair[1], snd, strlen(snd)) < 0) {
-        char status[STATUS_MAX];
-        if (!silent)
-            fprintf(stderr, "ERROR:  Write error, closing sound pipe.\n");
-        snprintf(status, STATUS_MAX, "ERROR:  Write error on sound pipe, closing sound connection");
-        NetWriteStatus(status);
-
-        return 0;
-    }
-
-    return 1;
-}
-
-int SayText(string in_text) {
-
-    char snd[1024];
-
-    snprintf(snd, 1024, "%s\n", in_text.c_str());
-    MungeToShell(snd, 1024);
-
-    if (write(speechpair[1], snd, strlen(snd)) < 0) {
-        char status[STATUS_MAX];
-        if (!silent)
-            fprintf(stderr, "ERROR:  Write error, closing speech pipe.\n");
-        snprintf(status, STATUS_MAX, "ERROR:  Write error on speech pipe, closing speech connection");
-        NetWriteStatus(status);
-
-        return 0;
-    }
-
-    return 1;
-}
-
 void KisLocalAlert(const char *in_text) {
     time_t now = time(0);
     if (!silent)
         fprintf(stderr, "ALERT %.24s %s\n", ctime(&now), in_text);
-
-    if (sound == 1)
-        sound = PlaySound("alert");
-
 }
 
 void KisLocalStatus(const char *in_status) {
@@ -638,37 +378,6 @@
 
     char tmpstr[32];
 
-    GPS_data gdata;
-
-    if (gps_enable) {
-        float lat, lon, alt, spd, hed;
-        int mode;
-
-        gps->FetchLoc(&lat, &lon, &alt, &spd, &hed, &mode);
-
-        snprintf(tmpstr, 32, "%f", lat);
-        gdata.lat = tmpstr;
-        snprintf(tmpstr, 32, "%f", lon);
-        gdata.lon = tmpstr;
-        snprintf(tmpstr, 32, "%f", alt);
-        gdata.alt = tmpstr;
-        snprintf(tmpstr, 32, "%f", spd);
-        gdata.spd = tmpstr;
-        snprintf(tmpstr, 32, "%f", hed);
-        gdata.heading = tmpstr;
-        snprintf(tmpstr, 32, "%d", mode);
-        gdata.mode = tmpstr;
-    } else {
-        gdata.lat = "0.0";
-        gdata.lon = "0.0";
-        gdata.alt = "0.0";
-        gdata.spd = "0.0";
-        gdata.heading = "0.0";
-        gdata.mode = "0";
-    }
-
-    ui_server.SendToAll(gps_ref, (void *) &gdata);
-
     INFO_data idata;
     snprintf(tmpstr, 32, "%d", tracker.FetchNumNetworks());
     idata.networks = tmpstr;
@@ -789,81 +498,6 @@
     }
 }
 
-int GpsEvent(Timetracker::timer_event *evt, void *parm) {
-    char status[STATUS_MAX];
-
-    // The GPS only provides us a new update once per second we might
-    // as well only update it here once a second
-
-    // If we're disconnected, try to reconnect.
-    if (gpsd_reconnect_attempt > 0) {
-        // Increment the time between connection attempts
-        if (last_gpsd_reconnect + ((gpsd_reconnect_attempt - 1) * 2) < time(0)) {
-            if (gps->OpenGPSD() < 0) {
-                last_gpsd_reconnect = time(0);
-
-                if (gpsd_reconnect_attempt < 20)
-                    gpsd_reconnect_attempt++;
-
-                snprintf(status, STATUS_MAX, "Unable to reconnect to GPSD, trying "
-                         "again in %d seconds.", ((gpsd_reconnect_attempt - 1) * 2));
-
-                if (!silent || NetWriteStatus(status) == 0)
-                    fprintf(stderr, "WARNING: %s\n", status);
-
-                return 1;
-            } else {
-                gpsd_reconnect_attempt = 0;
-
-                snprintf(status, STATUS_MAX, "Reopened connection to GPSD");
-                if (!silent || NetWriteStatus(status) == 0)
-                    fprintf(stderr, "NOTICE: %s\n", status);
-            }
-        } else {
-            // Don't process more if we haven't woken up yet
-            return 1;
-        }
-
-    }
-    
-    if (gps_enable) {
-        int gpsret;
-        gpsret = gps->Scan();
-
-        if (gpsret < 0) {
-            snprintf(status, STATUS_MAX, "GPS error requesting data: %s",
-                     gps->FetchError());
-
-            if (!silent || NetWriteStatus(status) == 0)
-                fprintf(stderr, "WARNING: %s\n", status);
-
-            gpsd_reconnect_attempt = 1;
-        }
-
-        if (gpsret == 0 && gpsmode != 0) {
-            if (!silent || NetWriteStatus("Lost GPS signal.") == 0)
-                fprintf(stderr, "Lost GPS signal.\n");
-            if (sound == 1)
-                sound = PlaySound("gpslost");
-
-            gpsmode = 0;
-        } else if (gpsret != 0 && gpsmode == 0) {
-            if (!silent || NetWriteStatus("Acquired GPS signal.") == 0)
-                fprintf(stderr, "Acquired GPS signal.\n");
-            if (sound == 1)
-                sound = PlaySound("gpslock");
-
-            gpsmode = 1;
-        }
-    }
-
-    if (gps_log == 1 && gpsmode != 0 && gps != NULL) {
-        gpsdump.DumpTrack(gps);
-    }
-
-    // We want to be rescheduled
-    return 1;
-}
 
 // Simple redirect to the network info drawer.  We don't want to change netwriteinfo to a
 // timer event since we call it un-timed too
@@ -884,13 +518,6 @@
     return 1;
 }
 
-// Write the waypoints for gpsdrive
-int WaypointSyncEvent(Timetracker::timer_event *evt, void *parm) {
-    tracker.WriteGpsdriveWaypt(waypoint_file);
-
-    return 1;
-}
-
 // Handle tracker maintenance
 int TrackerTickEvent(Timetracker::timer_event *evt, void *parm) {
     tracker.Tick();
@@ -1159,11 +786,9 @@
            "  -c, --capture-source <src>   Packet capture source line (type,interface,name)\n"
            "  -C, --enable-capture-sources Comma separated list of named packet sources to use.\n"
            "  -l, --log-types <types>      Comma separated list of types to log,\n"
-           "                                (ie, dump,cisco,weak,network,gps)\n"
+           "                                (ie, dump,cisco,weak,network)\n"
            "  -d, --dump-type <type>       Dumpfile type (wiretap)\n"
            "  -m, --max-packets <num>      Maximum number of packets before starting new dump\n"
-           "  -q, --quiet                  Don't play sounds\n"
-           "  -g, --gps <host:port>        GPS server (host:port or off)\n"
            "  -p, --port <port>            TCPIP server port for GUI connections\n"
            "  -a, --allowed-hosts <hosts>  Comma separated list of hosts allowed to connect\n"
            "  -b, --bind-address <address>    Bind to this address. Default INADDR_ANY\n."
@@ -1287,23 +912,6 @@
         ip_track = 1;
     }
 
-
-    if (conf->FetchOpt("waypoints") == "true") {
-        if(conf->FetchOpt("waypointdata") == "") {
-            fprintf(stderr, "WARNING:  Waypoint logging requested but no waypoint data file given.\n"
-                    "Waypoint logging will be disabled.\n");
-            waypoint = 0;
-        } else {
-            waypointfile = conf->ExpandLogPath(conf->FetchOpt("waypointdata"), "", "", 0, 1);
-            waypoint = 1;
-        }
-        if(conf->FetchOpt("waypoint_essid") == "true") {
-            waypointformat = 1;
-        } else {
-	    waypointformat = 0;
-        }
-    }
-
     if (conf->FetchOpt("metric") == "true") {
         fprintf(stderr, "Using metric measurements.\n");
         metric = 1;
@@ -1421,26 +1029,6 @@
             }
 
         }
-
-        if (strstr(logtypes, "gps")) {
-            if (gps_log == 0) {
-                fprintf(stderr, "WARNING:  Disabling GPS logging.\n");
-            } else {
-                gps_log = 1;
-
-                if (conf->FetchOpt("logtemplate") == "") {
-                    fprintf(stderr, "FATAL:  Logging (gps coordinates) enabled but no logtemplate given in config.\n");
-                    ErrorShutdown();
-                }
-            }
-
-        }
-
-        if (gps_log == 1 && !net_log) {
-            fprintf(stderr, "WARNING:  Logging (gps coordinates) enabled but XML logging (networks) was not.\n"
-                    "It will be enabled now.\n");
-            xml_log = 1;
-        }
     }
 
     if (conf->FetchOpt("decay") != "") {
@@ -1561,72 +1149,6 @@
         legal_ipblock_vec.push_back(ipb);
     }
 
-    // Process sound stuff
-    if (conf->FetchOpt("sound") == "true" && sound == -1) {
-        if (conf->FetchOpt("soundplay") != "") {
-            sndplay = conf->FetchOpt("soundplay");
-
-            if (conf->FetchOpt("soundopts") != "")
-                sndplay += " " + conf->FetchOpt("soundopts");
-
-            sound = 1;
-
-            if (conf->FetchOpt("sound_new") != "")
-                wav_map["new"] = conf->FetchOpt("sound_new");
-            if (conf->FetchOpt("sound_new_wep") != "")
-                wav_map["new_wep"] = conf->FetchOpt("sound_new_wep");
-            if (conf->FetchOpt("sound_traffic") != "")
-                wav_map["traffic"] = conf->FetchOpt("sound_traffic");
-            if (conf->FetchOpt("sound_junktraffic") != "")
-                wav_map["junktraffic"] = conf->FetchOpt("sound_traffic");
-            if (conf->FetchOpt("sound_gpslock") != "")
-                wav_map["gpslock"] = conf->FetchOpt("sound_gpslock");
-            if (conf->FetchOpt("sound_gpslost") != "")
-                wav_map["gpslost"] = conf->FetchOpt("sound_gpslost");
-            if (conf->FetchOpt("sound_alert") != "")
-                wav_map["alert"] = conf->FetchOpt("sound_alert");
-
-        } else {
-            fprintf(stderr, "ERROR:  Sound alerts enabled but no sound playing binary specified.\n");
-            sound = 0;
-        }
-    } else if (sound == -1)
-        sound = 0;
-
-    /* Added by Shaw Innes 17/2/02 */
-    /* Modified by Andrew Etter 15/9/02 */
-    if (conf->FetchOpt("speech") == "true" && speech == -1) {
-        if (conf->FetchOpt("festival") != "") {
-            festival = strdup(conf->FetchOpt("festival").c_str());
-            speech = 1;
-		
-			if (conf->FetchOpt("flite") == "true")
-				flite = 1;
-
-            string speechtype = conf->FetchOpt("speech_type");
-
-            if (!strcasecmp(speechtype.c_str(), "nato"))
-                speech_encoding = SPEECH_ENCODING_NATO;
-            else if (!strcasecmp(speechtype.c_str(), "spell"))
-                speech_encoding = SPEECH_ENCODING_SPELL;
-            else
-                speech_encoding = SPEECH_ENCODING_NORMAL;
-
-            // Make sure we have encrypted text lines
-            if (conf->FetchOpt("speech_encrypted") == "" || conf->FetchOpt("speech_unencrypted") == "") {
-                fprintf(stderr, "ERROR:  Speech request but speech_encrypted or speech_unencrypted line missing.\n");
-                speech = 0;
-            }
-
-            speech_sentence_encrypted = conf->FetchOpt("speech_encrypted");
-            speech_sentence_unencrypted = conf->FetchOpt("speech_unencrypted");
-        } else {
-            fprintf(stderr, "ERROR: Speech alerts enabled but no path to festival has been specified.\n");
-            speech = 0;
-        }
-    } else if (speech == -1)
-        speech = 0;
-
     if (conf->FetchOpt("writeinterval") != "") {
         if (sscanf(conf->FetchOpt("writeinterval").c_str(), "%d", &datainterval) != 1) {
             fprintf(stderr, "FATAL:  Illegal config file value for data interval.\n");
@@ -1646,45 +1168,6 @@
         fprintf(stderr, "WARNING:  No client_manuf file specified.  Client manufacturers will not be detected.\n");
     }
 
-    // Fork and find the sound options
-    if (sound) {
-        if (pipe(soundpair) == -1) {
-            fprintf(stderr, "WARNING:  Unable to create pipe for audio.  Disabling sound.\n");
-            sound = 0;
-        } else {
-            soundpid = fork();
-
-            if (soundpid < 0) {
-                fprintf(stderr, "WARNING:  Unable to fork for audio.  Disabling sound.\n");
-                sound = 0;
-            } else if (soundpid == 0) {
-                SoundHandler(soundpair, sndplay.c_str(), wav_map);
-                exit(0);
-            }
-
-            close(soundpair[0]);
-        }
-    }
-
-    if (speech) {
-        if (pipe(speechpair) == -1) {
-            fprintf(stderr, "WARNING:  Unable to create pipe for speech.  Disabling speech.\n");
-            speech = 0;
-        } else {
-            speechpid = fork();
-
-            if (speechpid < 0) {
-                fprintf(stderr, "WARNING:  Unable to fork for speech.  Disabling speech.\n");
-                speech = 0;
-            } else if (speechpid == 0) {
-                SpeechHandler(speechpair, festival);
-                exit(0);
-            }
-
-            close(speechpair[0]);
-        }
-    }
-
     // Grab the filtering
     string filter_bit;
 
@@ -1710,7 +1193,7 @@
     }
 
     if ((filter_bit = conf->FetchOpt("filter_export")) != "") {
-        fprintf(stderr, "Enabling filtering on exported (csv, xml, network, gps) files.\n");
+        fprintf(stderr, "Enabling filtering on exported (csv, xml, network) files.\n");
         filter_export = 1;
         if (ConfigFile::ParseFilterLine(filter_bit, &filter_export_bssid, &filter_export_source,
                                         &filter_export_dest, &filter_export_bssid_invert,
@@ -1816,14 +1299,6 @@
 
     }
 
-    if (waypoint) {
-        if ((waypoint_file = fopen(waypointfile.c_str(), "a")) == NULL) {
-            fprintf(stderr, "WARNING:  Could not open waypoint file '%s' for writing: %s\n",
-                    waypointfile.c_str(), strerror(errno));
-            waypoint = 0;
-        }
-    }
-
     // Create all the logs and title/number them appropriately
     // We need to save this for after we toast the conf record
     int logfile_matched = 0;
@@ -1871,13 +1346,6 @@
                 continue;
         }
 
-        if (gps_log == 1) {
-            gpslogfile = conf->ExpandLogPath(conf->FetchOpt("logtemplate"), logname, "gps", run_num);
-
-            if (gpslogfile == "")
-                continue;
-        }
-
         // if we made it this far we're cool -- all the logfiles we're writing to matched
         // this number
         logfile_matched = 1;
@@ -1906,9 +1374,6 @@
     if (cisco_log)
         fprintf(stderr, "Logging cisco product information to %s\n", ciscologfile.c_str());
 
-    if (gps_log == 1)
-        fprintf(stderr, "Logging gps coordinates to %s\n", gpslogfile.c_str());
-
     if (data_log)
         fprintf(stderr, "Logging data to %s\n", dumplogfile.c_str());
 
@@ -2055,7 +1520,6 @@
         { "dump-type", required_argument, 0, 'd' },
         { "max-packets", required_argument, 0, 'm' },
         { "quiet", no_argument, 0, 'q' },
-        { "gps", required_argument, 0, 'g' },
         { "port", required_argument, 0, 'p' },
         { "allowed-hosts", required_argument, 0, 'a' },
         { "bind-address", required_argument, 0, 'b'},
@@ -2136,18 +1600,6 @@
                 Usage(argv[0]);
             }
             break;
-        case 'g':
-            // GPS
-            if (strcmp(optarg, "off") == 0) {
-                gps_enable = 0;
-            }
-            else if (sscanf(optarg, "%1023[^:]:%d", gpshost, &gpsport) < 2) {
-                fprintf(stderr, "Invalid GPS host '%s' (host:port or off required)\n",
-                       optarg);
-                gps_enable = 1;
-                Usage(argv[0]);
-            }
-            break;
         case 'p':
             // Port
             if (sscanf(optarg, "%d", &tcpport) != 1) {
@@ -2169,7 +1621,6 @@
             break;
         case 'q':
             // Quiet
-            sound = 0;
             break;
         case 'v':
             // version
@@ -2323,39 +1774,6 @@
     // And we're done
     fclose(pid_file);
             
-
-    // Set up the GPS object to give to the children
-    if (gpsport == -1 && gps_enable) {
-        if (conf->FetchOpt("gps") == "true") {
-            if (sscanf(conf->FetchOpt("gpshost").c_str(), "%1023[^:]:%d", gpshost, 
-                       &gpsport) != 2) {
-                fprintf(stderr, "Invalid GPS host in config (host:port required)\n");
-                exit(1);
-            }
-
-            gps_enable = 1;
-        } else {
-            gps_enable = 0;
-            gps_log = 0;
-        }
-    }
-
-    if (gps_enable == 1) {
-        gps = new GPSD(gpshost, gpsport);
-
-        // Lock GPS position
-        if (conf->FetchOpt("gpsmodelock") == "true") {
-            fprintf(stderr, "Enabling GPS position lock override (broken GPS unit "
-                    "reports 0 always)\n");
-            gps->SetOptions(GPSD_OPT_FORCEMODE);
-        }
-
-    } else {
-        gps_log = 0;
-    }
-
-    // Register the gps and timetracker with the sourcetracker
-    sourcetracker.AddGpstracker(gps);
     sourcetracker.AddTimetracker(&timetracker);
 
     // Handle errors here maybe in the future
@@ -2522,13 +1940,6 @@
         fprintf(stderr, "Dump file format: %s\n", dumpfile->FetchType());
     }
 
-    if (gps_enable && gps_log == 1) {
-        if (gpsdump.OpenDump(gpslogfile.c_str(), xmllogfile.c_str()) < 0) {
-            fprintf(stderr, "FATAL: GPS dump error: %s\n", gpsdump.FetchError());
-            ErrorShutdown();
-        }
-    }
-
     // Open our files first to make sure we can, we'll unlink the empties later.
     FILE *testfile = NULL;
     if (net_log) {
@@ -2600,14 +2011,13 @@
     */
 
     if (data_log || net_log || crypt_log) {
-        snprintf(status, STATUS_MAX, "Logging%s%s%s%s%s%s%s",
+        snprintf(status, STATUS_MAX, "Logging%s%s%s%s%s%s",
                  data_log ? " data" : "" ,
                  net_log ? " networks" : "" ,
                  csv_log ? " CSV" : "" ,
                  xml_log ? " XML" : "" ,
                  crypt_log ? " weak" : "",
-                 cisco_log ? " cisco" : "",
-                 gps_log == 1 ? " gps" : "");
+                 cisco_log ? " cisco" : "");
         fprintf(stderr, "%s\n", status);
     } else if (no_log) {
         snprintf(status, STATUS_MAX, "Not logging any data.");
@@ -2625,23 +2035,6 @@
         }
     }
 
-    if (gps_enable) {
-        // Open the GPS
-        if (gps->OpenGPSD() < 0) {
-            fprintf(stderr, "%s\n", gps->FetchError());
-
-            gps_enable = 0;
-            gps_log = 0;
-        } else {
-            fprintf(stderr, "Opened GPS connection to %s port %d\n",
-                    gpshost, gpsport);
-
-            gpsmode = gps->FetchMode();
-
-            last_gpsd_reconnect = time(0);
-        }
-    }
-
     fprintf(stderr, "Listening on port %d.\n", tcpport);
     for (unsigned int ipvi = 0; ipvi < legal_ipblock_vec.size(); ipvi++) {
         char *netaddr = strdup(inet_ntoa(legal_ipblock_vec[ipvi]->network));
@@ -2682,8 +2075,6 @@
                                              &Protocol_NETWORK, &ProtocolNetworkEnable);
     client_ref = ui_server.RegisterProtocol("CLIENT", 0, CLIENT_fields_text,
                                             &Protocol_CLIENT, &ProtocolClientEnable);
-    gps_ref = ui_server.RegisterProtocol("GPS", 0, GPS_fields_text,
-                                         &Protocol_GPS, NULL);
     info_ref = ui_server.RegisterProtocol("INFO", 0, INFO_fields_text,
                                           &Protocol_INFO, NULL);
     remove_ref = ui_server.RegisterProtocol("REMOVE", 0, REMOVE_fields_text,
@@ -2738,14 +2129,9 @@
     // Write network info and tick the tracker once per second
     timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &NetWriteEvent, NULL);
     timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &TrackerTickEvent, NULL);
-    // Update GPS coordinates and handle signal loss if defined
-    timetracker.RegisterTimer(SERVER_TIMESLICES_SEC, NULL, 1, &GpsEvent, NULL);
     // Sync the data files if requested
     if (datainterval > 0 && no_log == 0)
         timetracker.RegisterTimer(datainterval * SERVER_TIMESLICES_SEC, NULL, 1, &ExportSyncEvent, NULL);
-    // Write waypoints if requested
-    if (waypoint)
-        timetracker.RegisterTimer(decay * SERVER_TIMESLICES_SEC, NULL, 1, &WaypointSyncEvent, NULL);
     // Channel hop if requested
     if (channel_hop) {
         if (channel_dwell)
@@ -2769,7 +2155,6 @@
     snprintf(status, 1024, "%s", TIMESTAMP);
     kdata.timestamp = status;
 
-    time_t last_click = 0;
     int num_networks = 0, num_packets = 0, num_noise = 0, num_dropped = 0;
 
 
@@ -2918,54 +2303,13 @@
 
                     }
 
-                    if (gps_log == 1 && info.type != packet_noise && 
-                        info.type != packet_unknown && info.type != packet_phy && 
-                        info.corrupt == 0) {
-                        if (gpsdump.DumpPacket(&info) < 0) {
-                            snprintf(status, STATUS_MAX, "%s", gpsdump.FetchError());
-                            if (!silent || NetWriteStatus(status) == 0)
-                                fprintf(stderr, "%s\n", status);
-                        }
-                    }
-
                     // tracker.ProcessPacket(info);
                     tracker.ProcessPacket(&packet, &info, &bssid_wep_map, 
 										  wep_identity);
 
-                    if (tracker.FetchNumNetworks() > num_networks) {
-                        if (sound == 1)
-                            if (info.crypt_set && 
-								wav_map.find("new_wep") != wav_map.end())
-                                sound = PlaySound("new_wep");
-                            else
-                                sound = PlaySound("new");
-                        if (speech == 1) {
-                            string text;
-
-                            if (info.crypt_set)
-                                text = ExpandSpeechString(speech_sentence_encrypted, &info, 
-                                                          speech_encoding);
-                            else
-                                text = ExpandSpeechString(speech_sentence_unencrypted, 
-                                                          &info, speech_encoding);
-
-                            speech = SayText(MungeToShell(text).c_str());
-                        }
-                    }
                     num_networks = tracker.FetchNumNetworks();
 
                     if (tracker.FetchNumPackets() != num_packets) {
-                        if (cur_time - last_click >= decay && sound == 1) {
-                            if (tracker.FetchNumPackets() - num_packets >
-                                tracker.FetchNumDropped() + localdropnum - num_dropped) {
-                                sound = PlaySound("traffic");
-                            } else {
-                                sound = PlaySound("junktraffic");
-                            }
-
-                            last_click = cur_time;
-                        }
-
                         num_packets = tracker.FetchNumPackets();
                         num_noise = tracker.FetchNumNoise();
                         num_dropped = tracker.FetchNumDropped() + localdropnum;
diff -urN kismet.dev/kismet_server.h kismet.dev2/kismet_server.h
--- kismet.dev/kismet_server.h	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/kismet_server.h	2005-08-23 01:59:25.653218728 +0200
@@ -33,10 +33,6 @@
 void handle_command(TcpServer *tcps, client_command *cc);
 int NetWriteStatus(const char *in_status);
 void NetWriteInfo();
-int SayText(string in_text);
-int PlaySound(string in_sound);
-void SpeechHandler(int *fds, const char *player);
-void SoundHandler(int *fds, const char *player, map<string, string> soundmap);
 void ProtocolAlertEnable(int in_fd);
 void ProtocolNetworkEnable(int in_fd);
 void ProtocolClientEnable(int in_fd);
diff -urN kismet.dev/packetracker.cc kismet.dev2/packetracker.cc
--- kismet.dev/packetracker.cc	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/packetracker.cc	2005-08-23 01:59:25.656218272 +0200
@@ -2439,23 +2439,3 @@
 
 }
 
-// Write a gpsdrive compatable waypoint file
-int Packetracker::WriteGpsdriveWaypt(FILE *in_file) {
-    fseek(in_file, 0L, SEEK_SET);
-    ftruncate(fileno(in_file), 0);
-
-    // Convert the map to a vector and sort it
-    for (map<mac_addr, wireless_network *>::const_iterator i = bssid_map.begin();
-         i != bssid_map.end(); ++i) {
-        wireless_network *net = i->second;
-
-        float lat, lon;
-        lat = (net->min_lat + net->max_lat) / 2;
-        lon = (net->min_lon + net->max_lon) / 2;
-        fprintf(in_file, "%s\t%f  %f\n", waypointformat == 1 ? net->ssid.c_str() : net->bssid.Mac2String().c_str(), lat, lon);
-    }
-
-    fflush(in_file);
-
-    return 1;
-}
diff -urN kismet.dev/packetracker.h kismet.dev2/packetracker.h
--- kismet.dev/packetracker.h	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/packetracker.h	2005-08-23 01:59:25.656218272 +0200
@@ -30,7 +30,6 @@
 #include <string>
 
 #include "util.h"
-#include "gpsd.h"
 #include "packet.h"
 #include "tracktypes.h"
 #include "manuf.h"
@@ -85,8 +84,6 @@
     int WriteXMLNetworks(string in_fname);
     int WriteCisco(string in_fname);
 
-    int WriteGpsdriveWaypt(FILE *in_file);
-
     void WriteSSIDMap(FILE *in_file);
     void ReadSSIDMap(FILE *in_file);
 
diff -urN kismet.dev/packetsourcetracker.cc kismet.dev2/packetsourcetracker.cc
--- kismet.dev/packetsourcetracker.cc	2005-08-23 00:59:39.969982048 +0200
+++ kismet.dev2/packetsourcetracker.cc	2005-08-23 01:59:25.657218120 +0200
@@ -24,7 +24,6 @@
 Packetsourcetracker::Packetsourcetracker() {
     next_packsource_id = 0;
     next_meta_id = 0;
-    gpsd = NULL;
     timetracker = NULL;
     chanchild_pid = 0;
     sockpair[0] = sockpair[1] = 0;
@@ -691,7 +690,6 @@
         
         // Register the trackers with it
         meta->capsource->AddTimetracker(timetracker);
-        meta->capsource->AddGpstracker(gpsd);
        
         // Open it
         fprintf(stderr, "Source %d (%s): Opening %s source interface %s...\n",
diff -urN kismet.dev/packetsourcetracker.h kismet.dev2/packetsourcetracker.h
--- kismet.dev/packetsourcetracker.h	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/packetsourcetracker.h	2005-08-23 01:59:25.658217968 +0200
@@ -30,7 +30,6 @@
 #include <string>
 
 #include "timetracker.h"
-#include "gpsd.h"
 #include "packetsource.h"
 
 // Sentinel for starting a new packet
@@ -144,9 +143,6 @@
     // Register a timer event handler for us to use
     void AddTimetracker(Timetracker *in_tracker) { timetracker = in_tracker; }
 
-    // Register the GPS server for us to use
-    void AddGpstracker(GPSD *in_gpsd) { gpsd = in_gpsd; }
-    
     // Register a packet prototype source...  Card type string, root binding requirement,
     // function to generate an instance of the source, and function to change channel 
     // for this card type.  This fills out the prototype. Sources that don't hop 
@@ -221,7 +217,6 @@
         uint16_t channel;
     } chanchild_changepacket;
 
-    GPSD *gpsd;
     Timetracker *timetracker;
     
     char errstr[1024];
diff -urN kismet.dev/panelfront.cc kismet.dev2/panelfront.cc
--- kismet.dev/panelfront.cc	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/panelfront.cc	2005-08-23 01:59:25.659217816 +0200
@@ -37,7 +37,6 @@
     "  Key  Action",
     "   e   List Kismet servers",
     "   z   Toggle fullscreen zoom of network view",
-    "   m   Toggle muting of sound and speech",
     "   t   Tag (or untag) selected network",
     "   g   Group tagged networks",
     "   u   Ungroup current group",
@@ -121,7 +120,6 @@
     "Key Action",
     " e  List Kismet servers",
     " z  Toggle fullscreen net list",
-    " m  Toggle muting",
     " t  Tag (or untag) selected",
     " g  Group tagged networks",
     " u  Ungroup current group",
@@ -237,19 +235,6 @@
 };
 
 
-char *KismetHelpGps[] = {
-    "KISMET NETWORK FOLLOW",
-    "This panel estimates the center of a network, the current",
-    "direction of travel, and the direction of the network center",
-    "and distance relative to the current direction of movement.",
-    " Key   Action",
-    "  s    Follow location of strongest packet",
-    "  c    Follow location of estimated network center",
-    "  q    Close popup",
-    NULL
-};
-
-
 char *KismetHelpStats[] = {
     "KISMET NETWORK STATISTICS",
     "This panel displays overall statistics about the wireless",
@@ -678,7 +663,6 @@
     }
 
     // Enable all the protocols we handle
-    in_client->EnableProtocol("GPS");
     in_client->EnableProtocol("INFO");
     in_client->EnableProtocol("REMOVE");
     in_client->EnableProtocol("NETWORK");
@@ -1282,27 +1266,6 @@
         if (con->client == NULL)
             continue;
 
-        // Update GPS
-        float newlat, newlon, newalt, newspd, newheading;
-        int newfix;
-        con->client->FetchLoc(&newlat, &newlon, &newalt, &newspd, &newheading, &newfix);
-
-        if (GPSD::EarthDistance(newlat, newlon, last_lat, last_lon) > 10) {
-            con->last_lat = con->lat;
-            con->last_lon = con->lon;
-            con->last_spd = con->spd;
-            con->last_alt = con->alt;
-            con->last_fix = con->fix;
-            con->last_heading = con->heading;
-        }
-
-        con->lat = newlat;
-        con->lon = newlon;
-        con->alt = newalt;
-        con->spd = newspd;
-        con->heading = newheading;
-        con->fix = newfix;
-
         // Update quality
         con->quality = con->client->FetchQuality();
         con->power = con->client->FetchPower();
diff -urN kismet.dev/panelfront.h kismet.dev2/panelfront.h
--- kismet.dev/panelfront.h	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/panelfront.h	2005-08-23 01:59:25.660217664 +0200
@@ -65,7 +65,6 @@
 #define SORT_SIZE 10
 extern char *KismetHelpPower[];
 extern char *KismetHelpRate[];
-extern char *KismetHelpGps[];
 extern char *KismetHelpStats[];
 extern char *KismetHelpDump[];
 extern char *KismetHelpPack[];
@@ -269,7 +268,6 @@
     int RatePrinter(void *in_window);
     int StatsPrinter(void *in_window);
     int PackPrinter(void *in_window);
-    int GpsPrinter(void *in_window);
     int AlertPrinter(void *in_window);
 
     int MainClientPrinter(void *in_window);
@@ -298,7 +296,6 @@
     int PackInput(void *in_window, int in_chr);
     // Help has a generic handler
     int TextInput(void *in_window, int in_chr);
-    int GpsInput(void *in_window, int in_chr);
     int AlertInput(void *in_window, int in_chr);
 
     int MainClientInput(void *in_window, int in_chr);
diff -urN kismet.dev/panelfront_display.cc kismet.dev2/panelfront_display.cc
--- kismet.dev/panelfront_display.cc	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/panelfront_display.cc	2005-08-23 01:59:25.663217208 +0200
@@ -727,7 +727,7 @@
         mvwaddstr(netwin, netwin->_maxy, netwin->_maxx - 14, ptxt);
     }
 
-#ifdef HAVE_GPS
+#if 0
 
 
     if (!(lat == 0 && lon == 0 && alt == 0 && spd == 0 && fix == 0)) {
@@ -1496,51 +1496,6 @@
         snprintf(output, print_width, "Networks: %d", (int) details_network->networks.size());
         kwin->text.push_back(output);
 
-        if (details_network->virtnet->gps_fixed != -1) {
-            if ((details_network->virtnet->min_lat == 90) && (details_network->virtnet->min_lon == 180) &&
-                (details_network->virtnet->max_lat == -90) && (details_network->virtnet->max_lon == -180)) {
-                   snprintf(output, print_width, "Min Loc : N/A");
-                   kwin->text.push_back(output);
-                   snprintf(output, print_width, "Max Loc : N/A");
-                   kwin->text.push_back(output);
-                   snprintf(output, print_width, "Range   : N/A");
-                   kwin->text.push_back(output);
-            }
-	    else {
-                snprintf(output, print_width, "Min Loc : Lat %f Lon %f Alt %f Spd %f",
-                         details_network->virtnet->min_lat, details_network->virtnet->min_lon,
-                         metric ? details_network->virtnet->min_alt / 3.3 : details_network->virtnet->min_alt,
-                         metric ? details_network->virtnet->min_spd * 1.6093 : details_network->virtnet->min_spd);
-                kwin->text.push_back(output);
-                snprintf(output, print_width, "Max Loc : Lat %f Lon %f Alt %f Spd %f",
-                         details_network->virtnet->max_lat, details_network->virtnet->max_lon,
-                         metric ? details_network->virtnet->max_alt / 3.3 : details_network->virtnet->max_alt,
-                         metric ? details_network->virtnet->max_spd * 1.6093 : details_network->virtnet->max_spd);
-                kwin->text.push_back(output);
-
-                double diagdist = GPSD::EarthDistance(details_network->virtnet->min_lat,
-                                                      details_network->virtnet->min_lon,
-                                                      details_network->virtnet->max_lat,
-                                                      details_network->virtnet->max_lon);
-
-                if (finite(diagdist)) {
-                    if (metric) {
-                        if (diagdist < 1000)
-                            snprintf(output, print_width, "Range    : %.3f meters", diagdist);
-                        else
-                            snprintf(output, print_width, "Range   : %.3f kilometers", diagdist / 1000);
-                    } else {
-                        diagdist *= 3.3;
-                        if (diagdist < 5280)
-                            snprintf(output, print_width, "Range   : %.3f feet", diagdist);
-                        else
-                            snprintf(output, print_width, "Range   : %.3f miles", diagdist / 5280);
-                    }
-                    kwin->text.push_back(output);
-                }
-	    }
-        }
-
         if (details_network->virtnet->carrier_set & (1 << (int) carrier_80211b)) {
             snprintf(output, print_width, "Carrier : IEEE 802.11b");
             kwin->text.push_back(output);
@@ -1853,49 +1808,6 @@
                      dnet->ipdata.range_ip[2], dnet->ipdata.range_ip[3]);
             kwin->text.push_back(output);
         }
-    
-        if (dnet->gps_fixed != -1) {
-            if ((dnet->min_lat == 90) && (dnet->min_lon == 180) &&
-	        (dnet->max_lat == -90) && (dnet->max_lon == -180)) {
-                   snprintf(output, print_width, "Min Loc : N/A");
-                   kwin->text.push_back(output);
-                   snprintf(output, print_width, "Max Loc : N/A");
-                   kwin->text.push_back(output);
-                   snprintf(output, print_width, "Range   : N/A");
-                   kwin->text.push_back(output);
-	    }
-	    else {
-                snprintf(output, print_width, "Min Loc : Lat %f Lon %f Alt %f Spd %f",
-                         dnet->min_lat, dnet->min_lon,
-                         metric ? dnet->min_alt / 3.3 : dnet->min_alt,
-                         metric ? dnet->min_spd * 1.6093 : dnet->min_spd);
-                kwin->text.push_back(output);
-                snprintf(output, print_width, "Max Loc : Lat %f Lon %f Alt %f Spd %f",
-                         dnet->max_lat, dnet->max_lon,
-                         metric ? dnet->max_alt / 3.3 : dnet->max_alt,
-                         metric ? dnet->max_spd * 1.6093 : dnet->max_spd);
-                kwin->text.push_back(output);
-
-                double diagdist = GPSD::EarthDistance(dnet->min_lat, dnet->min_lon,
-                                                  dnet->max_lat, dnet->max_lon);
-
-                if (finite(diagdist)) {
-                    if (metric) {
-                        if (diagdist < 1000)
-                            snprintf(output, print_width, "Range    : %f meters", diagdist);
-                        else
-                            snprintf(output, print_width, "Range   : %f kilometers", diagdist / 1000);
-                    } else {
-                        diagdist *= 3.3;
-                        if (diagdist < 5280)
-                            snprintf(output, print_width, "Range   : %f feet", diagdist);
-                        else
-                            snprintf(output, print_width, "Range   : %f miles", diagdist / 5280);
-                    }
-                    kwin->text.push_back(output);
-                }
-	    }
-        }
     }
 
     // Now we just use the text printer to handle the rest for us
@@ -1903,184 +1815,6 @@
     return TextPrinter(in_window);
 }
 
-int PanelFront::GpsPrinter(void *in_window) {
-    kis_window *kwin = (kis_window *) in_window;
-
-    char output[1024];
-    kwin->text.clear();
-
-	if (details_network == NULL) {
-		kwin->text.push_back("The network or group being displayed");
-		kwin->text.push_back("has been deleted.  Please select a ");
-		kwin->text.push_back("different network.");
-		return TextPrinter(in_window);
-	}
-
-    wireless_network *dnet = details_network->virtnet;
-
-    int print_width = kwin->print_width;
-    if (print_width > 1024)
-        print_width = 1023;
-
-    if (print_width < 32) {
-        kwin->text.push_back("Display not wide enough");
-        return TextPrinter(in_window);
-    }
-
-    if (dnet->aggregate_points == 0) {
-        kwin->text.push_back("No GPS data.");
-        return TextPrinter(in_window);
-    }
-
-    float center_lat, center_lon;
-
-    // We hijack the "selected" field as a toggle
-    if (kwin->selected == 1) {
-        center_lat = dnet->best_lat;
-        center_lon = dnet->best_lon;
-    } else {
-        center_lat = dnet->aggregate_lat / dnet->aggregate_points;
-        center_lon = dnet->aggregate_lon / dnet->aggregate_points;
-    }
-
-    // Get bearing to the center
-    float center_angle = GPSD::CalcHeading(center_lat, center_lon, lat, lon);
-
-    float difference_angle = heading - center_angle;
-    if (difference_angle < 0)
-        difference_angle += 360;
-
-    double diagdist = GPSD::EarthDistance(lat, lon, center_lat, center_lon);
-
-    // Now we know everything - where we are, where we are headed, where we SHOULD be headed
-    // to get to the supposed center of the network, how far it is, and the orientation on our
-    // compass to get to it.  Time to start drawing our output.
-
-    char compass[5][10];
-    memset(compass, 0, sizeof(char) * 5 * 10);
-
-    // |  41.12345x-74.12345     .-|-/    |
-    // | Bearing:               /  |/ \   |
-    // |  123.23 degrees       |   O   |  |
-    // |                        \   \ /   |
-    // | Estimated center:       '---\    |
-
-
-    // Find the orientation on our compass:
-    if (difference_angle > 330 || difference_angle <= 22) {
-        snprintf(compass[0], 10, "  .-|-.  ");
-        snprintf(compass[1], 10, " /  |  \\ ");
-        snprintf(compass[2], 10, "|   O   |");
-        snprintf(compass[3], 10, " \\     / ");
-        snprintf(compass[4], 10, "  '---'  ");
-    } else if (difference_angle > 22 && difference_angle <= 66) {
-        snprintf(compass[0], 10, "  .---/  ");
-        snprintf(compass[1], 10, " /   / \\ ");
-        snprintf(compass[2], 10, "|   O   |");
-        snprintf(compass[3], 10, " \\     / ");
-        snprintf(compass[4], 10, "  '---'  ");
-    } else if (difference_angle > 66 && difference_angle <= 110) {
-        snprintf(compass[0], 10, "  .---.  ");
-        snprintf(compass[1], 10, " /     \\ ");
-        snprintf(compass[2], 10, "|   O----");
-        snprintf(compass[3], 10, " \\     / ");
-        snprintf(compass[4], 10, "  '---'  ");
-    } else if (difference_angle > 110 && difference_angle <= 154) {
-        snprintf(compass[0], 10, "  .---.  ");
-        snprintf(compass[1], 10, " /     \\ ");
-        snprintf(compass[2], 10, "|   O   |");
-        snprintf(compass[3], 10, " \\   \\ / ");
-        snprintf(compass[4], 10, "  '---\\  ");
-    } else if (difference_angle > 154 && difference_angle <= 198) {
-        snprintf(compass[0], 10, "  .---.  ");
-        snprintf(compass[1], 10, " /     \\ ");
-        snprintf(compass[2], 10, "|   O   |");
-        snprintf(compass[3], 10, " \\  |  / ");
-        snprintf(compass[4], 10, "  '-|-'  ");
-    } else if (difference_angle > 198 && difference_angle <= 242) {
-        snprintf(compass[0], 10, "  .---.  ");
-        snprintf(compass[1], 10, " /     \\ ");
-        snprintf(compass[2], 10, "|   O   |");
-        snprintf(compass[3], 10, " \\ /   / ");
-        snprintf(compass[4], 10, "  /---'  ");
-    } else if (difference_angle > 242 && difference_angle <= 286) {
-        snprintf(compass[0], 10, "  .---.  ");
-        snprintf(compass[1], 10, " /     \\ ");
-        snprintf(compass[2], 10, "----O   |");
-        snprintf(compass[3], 10, " \\     / ");
-        snprintf(compass[4], 10, "  '---'  ");
-    } else if (difference_angle > 286 && difference_angle <= 330) {
-        snprintf(compass[0], 10, "  \\---.  ");
-        snprintf(compass[1], 10, " / \\   \\ ");
-        snprintf(compass[2], 10, "|   O   |");
-        snprintf(compass[3], 10, " \\     / ");
-        snprintf(compass[4], 10, "  '---'  ");
-    } else {
-        snprintf(compass[0], 10, "%f\n", difference_angle);
-    }
-
-
-    // - Network GPS ---------------------|
-    // | Current:                         |
-    // |  41.12345x-74.12345     .-|-.    |
-    // | Bearing:               /  |  \   |
-    // |  123.23 degrees       |   O   |  |
-    // |                        \   \ /   |
-    // | Estimated center:       '---\    |
-    // | -73.12345x43.12345               |
-    // |                        120 feet  |
-    // ------------------------------------
-    char textfrag[23];
-
-    snprintf(output, print_width, "Current:");
-    kwin->text.push_back(output);
-
-    snprintf(textfrag, 23, "%.3f x %.3f", lat, lon);
-    snprintf(output, print_width, "%-22s%s", textfrag, compass[0]);
-    kwin->text.push_back(output);
-
-    snprintf(textfrag, 23, " Bearing:");
-    snprintf(output, print_width, "%-22s%s", textfrag, compass[1]);
-    kwin->text.push_back(output);
-
-    snprintf(textfrag, 23, " %.2f*", heading);
-    snprintf(output, print_width, "%-22s%s", textfrag, compass[2]);
-    kwin->text.push_back(output);
-
-    snprintf(textfrag, 23, " ");
-    snprintf(output, print_width, "%-22s%s", textfrag, compass[3]);
-    kwin->text.push_back(output);
-
-    if (kwin->selected == 1)
-        snprintf(textfrag, 23, "Strongest signal:");
-    else
-        snprintf(textfrag, 23, "Estimated Center:");
-    snprintf(output, print_width, "%-22s%s", textfrag, compass[4]);
-    kwin->text.push_back(output);
-
-    snprintf(textfrag, 23, "%.3f x %.3f", center_lat, center_lon);
-    snprintf(output, print_width, "%-22s%.2f*", textfrag, difference_angle);
-    kwin->text.push_back(output);
-
-    if (metric) {
-        if (diagdist < 1000)
-            snprintf(textfrag, 23, "%.2f m", diagdist);
-        else
-            snprintf(textfrag, 23, "%.2f km", diagdist / 1000);
-    } else {
-        diagdist *= 3.3;
-        if (diagdist < 5280)
-            snprintf(textfrag, 23, "%.2f ft", diagdist);
-        else
-            snprintf(textfrag, 23, "%.2f mi", diagdist / 5280);
-    }
-
-    snprintf(output, print_width, "%-22s%s", "", textfrag);
-    kwin->text.push_back(output);
-
-    return TextPrinter(in_window);
-}
-
 int PanelFront::PackPrinter(void *in_window) {
     kis_window *kwin = (kis_window *) in_window;
 
@@ -3049,53 +2783,6 @@
              details_client->ipdata.ip[2], details_client->ipdata.ip[3]);
     kwin->text.push_back(output);
 
-    if (details_client->gps_fixed != -1) {
-        kwin->text.push_back("");
-
-        if ((details_client->min_lat == 90) && (details_client->min_lon == 180) &&
-            (details_client->max_lat == -90) && (details_client->max_lon == -180)) {
-               snprintf(output, print_width, "Min Loc : N/A");
-               kwin->text.push_back(output);
-               snprintf(output, print_width, "Max Loc : N/A");
-               kwin->text.push_back(output);
-               snprintf(output, print_width, "Range   : N/A");
-               kwin->text.push_back(output);
-        }
-	else {
-            snprintf(output, print_width, "Min Loc : Lat %f Lon %f Alt %f Spd %f",
-                     details_client->min_lat, details_client->min_lon,
-                     metric ? details_client->min_alt / 3.3 : details_client->min_alt,
-                     metric ? details_client->min_spd * 1.6093 : details_client->min_spd);
-            kwin->text.push_back(output);
-            snprintf(output, print_width, "Max Loc : Lat %f Lon %f Alt %f Spd %f",
-                     details_client->max_lat, details_client->max_lon,
-                     metric ? details_client->max_alt / 3.3 : details_client->max_alt,
-                     metric ? details_client->max_spd * 1.6093 : details_client->max_spd);
-            kwin->text.push_back(output);
-
-            double diagdist = GPSD::EarthDistance(details_client->min_lat,
-                                                  details_client->min_lon,
-                                                  details_client->max_lat,
-                                                  details_client->max_lon);
-
-            if (finite(diagdist)) {
-                if (metric) {
-                    if (diagdist < 1000)
-                        snprintf(output, print_width, "Range    : %f meters", diagdist);
-                    else
-                        snprintf(output, print_width, "Range    : %f kilometers", diagdist / 1000);
-                } else {
-                    diagdist *= 3.3;
-                    if (diagdist < 5280)
-                        snprintf(output, print_width, "Range   : %f feet", diagdist);
-                    else
-                        snprintf(output, print_width, "Range   : %f miles", diagdist / 5280);
-                }
-                kwin->text.push_back(output);
-            }
-        }
-        kwin->text.push_back("");
-    }
 
     snprintf(output, print_width, "Packets :");
     kwin->text.push_back(output);
diff -urN kismet.dev/panelfront_input.cc kismet.dev2/panelfront_input.cc
--- kismet.dev/panelfront_input.cc	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/panelfront_input.cc	2005-08-23 01:59:25.665216904 +0200
@@ -300,16 +300,9 @@
         break;
     case 'f':
     case 'F':
-        if (sortby != sort_auto && last_displayed.size() > 0) {
-            details_network = last_displayed[kwin->selected];
-            SpawnWindow("Network Location", &PanelFront::GpsPrinter, &PanelFront::GpsInput, 8, 34);
-        } else {
-            WriteStatus("Cannot view network GPS info in autofit sort mode.  Sort by a different method.");
-        }
         break;
     case 'm':
     case 'M':
-        MuteToggle();
         break;
     case 'e':
     case 'E':
@@ -447,7 +440,6 @@
     switch(in_chr) {
     case 'm':
     case 'M':
-        MuteToggle();
         break;
     case 'p':
     case 'P':
@@ -546,33 +538,6 @@
     return 1;
 }
 
-int PanelFront::GpsInput(void *in_window, int in_chr) {
-    kis_window *kwin = (kis_window *) in_window;
-
-    switch (in_chr) {
-    case 's':
-    case 'S':
-        kwin->selected = 1;
-        break;
-    case 'c':
-    case 'C':
-        kwin->selected = 0;
-        break;
-    case 'h':
-    case 'H':
-        SpawnHelp(KismetHelpGps);
-        break;
-    case 'x':
-    case 'X':
-    case 'q':
-    case 'Q':
-        return 0;
-        break;
-    }
-
-    return 1;
-}
-
 int PanelFront::RateInput(void *in_window, int in_chr) {
     switch (in_chr) {
     case 'h':
@@ -645,24 +610,6 @@
     return 1;
 }
 
-void PanelFront::MuteToggle() {
-    if (muted) {
-        speech = old_speech;
-        sound = old_sound;
-        muted = 0;
-        WriteStatus("Restoring sound");
-    } else if (sound != 0 || speech != 0) {
-        old_speech = speech;
-        old_sound = sound;
-        sound = 0;
-        speech = 0;
-        muted = 1;
-        WriteStatus("Muting sound");
-    } else if (sound == 0 && speech == 0) {
-        WriteStatus("Sound not enabled.");
-    }
-}
-
 int PanelFront::AlertInput(void *in_window, int in_chr) {
     kis_window *kwin = (kis_window *) in_window;
 
diff -urN kismet.dev/pcapsource.cc kismet.dev2/pcapsource.cc
--- kismet.dev/pcapsource.cc	2005-08-23 01:03:45.652632608 +0200
+++ kismet.dev2/pcapsource.cc	2005-08-23 01:59:25.667216600 +0200
@@ -343,11 +343,6 @@
     packet->moddata = moddata;
     packet->modified = 0;
 
-    if (gpsd != NULL) {
-        gpsd->FetchLoc(&packet->gps_lat, &packet->gps_lon, &packet->gps_alt,
-                       &packet->gps_spd, &packet->gps_heading, &packet->gps_fix);
-    }
-
     if (datalink_type == DLT_PRISM_HEADER) {
         ret = Prism2KisPack(packet, data, moddata);
     } else if (datalink_type == KDLT_BSD802_11) {
@@ -1146,133 +1141,6 @@
 
 // Monitor commands
 #ifdef HAVE_LINUX_WIRELESS
-// Cisco uses its own config file in /proc to control modes
-int monitor_cisco(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-    FILE *cisco_config;
-    char cisco_path[128];
-
-    linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
-    (*in_if) = ifparm;
-
-    if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
-        return -1;
-    }
-
-    if (Iwconfig_Get_SSID(in_dev, in_err, ifparm->essid) < 0)
-        return -1;
-
-    if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
-        return -1;
-
-    if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
-        return -1;
-
-    if (Ifconfig_Delta_Flags(in_dev, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
-        return -1;
-
-    // Try the iwpriv
-    if (Iwconfig_Set_IntPriv(in_dev, "setRFMonitor", 1, 0, in_err) >= 0) {
-        return 0;
-    }
-
-    // Zero the ssid - nonfatal
-    Iwconfig_Set_SSID(in_dev, in_err, NULL);
-   
-    // Build the proc control path
-    snprintf(cisco_path, 128, "/proc/driver/aironet/%s/Config", in_dev);
-
-    if ((cisco_config = fopen(cisco_path, "w")) == NULL) {
-        snprintf(in_err, STATUS_MAX, "Unable to open cisco control file '%s' %d:%s",
-                 cisco_path, errno, strerror(errno));
-        return -1;
-    }
-
-    fprintf(cisco_config, "Mode: r\n");
-    fprintf(cisco_config, "Mode: y\n");
-    fprintf(cisco_config, "XmitPower: 1\n");
-
-    fclose(cisco_config);
-
-    // Channel can't be set on cisco with these drivers.
-
-    return 0;
-}
-
-int unmonitor_cisco(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-    linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
-    int ret = -1;
-
-    // Try the iwpriv
-    if (Iwconfig_Set_IntPriv(in_dev, "setRFMonitor", 0, 0, in_err) >= 0) {
-        // If we're the new drivers, unmonitor
-        if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
-            return -1;
-        }
-
-        // Reset the SSID since monitor mode nukes it
-        if (Iwconfig_Set_SSID(in_dev, in_err, ifparm->essid) < 0)
-            return -1;
-
-        if (ifparm->channel > 0) {
-            if (Iwconfig_Set_Channel(in_dev, ifparm->channel, in_err) < 0)
-                return -1;
-        }
-
-        ret = 1;
-    }
-
-    free(ifparm);
-
-    return ret;
-}
-
-// Cisco uses its own config file in /proc to control modes
-//
-// I was doing this with ioctls but that seems to cause lockups while
-// this method doesn't.  I don't think I like these drivers.
-int monitor_cisco_wifix(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-    FILE *cisco_config;
-    char cisco_path[128];
-    vector<string> devbits = StrTokenize(in_dev, ":");
-
-    if (devbits.size() < 2) {
-        snprintf(in_err, STATUS_MAX, "Invalid device pair '%s'.  Proper device "
-				 "for cisco_wifix is eth?:wifi?.", in_dev);
-        return -1;
-    }
-
-    // Bring the device up, zero its ip, and set promisc
-    if (Ifconfig_Delta_Flags(devbits[0].c_str(), in_err, 
-                             IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
-        return -1;
-    if (Ifconfig_Delta_Flags(devbits[1].c_str(), in_err, 
-                             IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
-        return -1;
-
-    // Zero the ssid, nonfatally
-    Iwconfig_Set_SSID(devbits[0].c_str(), in_err, NULL);
-    Iwconfig_Set_SSID(devbits[1].c_str(), in_err, NULL);
-    
-    // Build the proc control path
-    snprintf(cisco_path, 128, "/proc/driver/aironet/%s/Config", devbits[0].c_str());
-
-    if ((cisco_config = fopen(cisco_path, "w")) == NULL) {
-        snprintf(in_err, STATUS_MAX, "Unable to open cisco control file '%s' %d:%s",
-                 cisco_path, errno, strerror(errno));
-        return -1;
-    }
-
-    fprintf(cisco_config, "Mode: r\n");
-    fprintf(cisco_config, "Mode: y\n");
-    fprintf(cisco_config, "XmitPower: 1\n");
-
-    fclose(cisco_config);
-
-    // Channel can't be set on cisco with these drivers.
-
-    return 0;
-}
-
 // Hostap uses iwpriv and iwcontrol settings to control monitor mode
 int monitor_hostap(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
     int ret;
@@ -1421,134 +1289,6 @@
     return 1;
 
 }
-
-// Acx100 uses the packhdr iwpriv control to set link state, rest is normal
-int monitor_acx100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-    int ret;
-
-    // Allocate a tracking record for the interface settings and remember our
-    // setup
-    linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
-    (*in_if) = ifparm;
-
-    if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
-        return -1;
-    }
-
-    if (Iwconfig_Get_SSID(in_dev, in_err, ifparm->essid) < 0)
-        return -1;
-
-    if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
-        return -1;
-
-    if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
-        return -1;
-
-    // it looks like an orinoco now, apparently
-    if ((ret = Iwconfig_Set_IntPriv(in_dev, "monitor", 1, initch, in_err)) < 0) {
-        if (ret == -2)
-            snprintf(in_err, 1024, "Could not find 'monitor' private ioctl "
-                     "Make sure you have the latest ACX100 development release.");
-        return -1;
-    }
-
-    if (chancontrol_wext(in_dev, initch, in_err, NULL) < 0)
-        return -1;
-
-    return 0;
-}
-
-int unmonitor_acx100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-    // Restore the IP settings
-    linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
-
-    if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
-        return -1;
-    }
-
-    Iwconfig_Set_IntPriv(in_dev, "monitor", 0, ifparm->channel, in_err);
-    Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode);
-
-    if (Iwconfig_Set_SSID(in_dev, in_err, ifparm->essid) < 0)
-        return -1;
-    
-    free(ifparm);
-
-    return 1;
-}
-
-int monitor_admtek(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-    // Allocate a tracking record for the interface settings and remember our
-    // setup
-    linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
-    (*in_if) = ifparm;
-
-    // Try to figure out the name so we know if we have fcs bytes or not
-    char iwname[IFNAMSIZ+1];
-    if (Iwconfig_Get_Name(in_dev, in_err, iwname) < 0)
-        return -1;
-
-    if (strncmp(iwname, "IEEE 802.11b", IFNAMSIZ) == 0) {
-        // Looks like the GPL driver, we need to adjust the fcsbytes
-        PcapSource *psrc = (PcapSource *) in_ext;
-        psrc->fcsbytes = 4;
-    }
-
-    if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
-        return -1;
-    }
-
-    if ((ifparm->flags & IFF_UP)) {
-        if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
-            return -1;
-
-        if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
-            return -1;
-
-        if (Iwconfig_Get_SSID(in_dev, in_err, ifparm->essid) < 0)
-            return -1;
-    
-    } else {
-        ifparm->channel = -1;
-        ifparm->mode = -1;
-    }
-
-    int ret = monitor_wext(in_dev, initch, in_err, in_if, in_ext);
-
-    if (ret < 0 && ret != -2)
-        return ret;
-
-    if (Iwconfig_Set_SSID(in_dev, in_err, "") < 0)
-        return -1;
-    
-    return 0;
-}
-
-int unmonitor_admtek(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-    linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
-
-    if (unmonitor_wext(in_dev, initch, in_err, in_if, in_ext))
-        return -1;
-
-    if (Iwconfig_Set_SSID(in_dev, in_err, ifparm->essid) < 0)
-        return -1;
-   
-    return 1;
-}
-// vtar5k iwpriv control to set link state, rest is normal
-int monitor_vtar5k(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-    // Set the prism iwpriv control to 1
-    if (Iwconfig_Set_IntPriv(in_dev, "prism", 1, 0, in_err) < 0) {
-        return -1;
-    }
-    
-    // The rest is standard wireless extensions
-    if (monitor_wext(in_dev, initch, in_err, in_if, in_ext) < 0)
-        return -1;
-
-    return 0;
-}
-
 // Madwifi stuff uses iwpriv mode
 int monitor_madwifi_a(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
     // Allocate a tracking record for the interface settings and remember our
@@ -1726,89 +1466,6 @@
 
     return unmonitor_wext(in_dev, initch, in_err, in_if, in_ext);
 }
-
-int monitor_ipw2100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-    // Allocate a tracking record for the interface settings and remember our
-    // setup
-    linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
-    (*in_if) = ifparm;
-
-    if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
-        return -1;
-    }
-
-    if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
-        return -1;
-
-    if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
-        return -1;
-
-    // Call the normal monitor mode
-    return (monitor_wext(in_dev, initch, in_err, in_if, in_ext));
-}
-
-int unmonitor_ipw2100(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-    // Restore initial monitor header
-    // linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
-
-    linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
-
-    if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
-        return -1;
-    }
-
-    if (Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode) < 0)
-        return -1;
-
-    free(ifparm);
-
-    return 1;
-}
-
-int monitor_ipw2200(const char *in_dev, int initch, char *in_err, 
-					void **in_if, void *in_ext) {
-    // Allocate a tracking record for the interface settings and remember our
-    // setup
-    linux_ifparm *ifparm = (linux_ifparm *) malloc(sizeof(linux_ifparm));
-    (*in_if) = ifparm;
-
-    if (Ifconfig_Get_Flags(in_dev, in_err, &ifparm->flags) < 0) {
-        return -1;
-    }
-
-    if ((ifparm->channel = Iwconfig_Get_Channel(in_dev, in_err)) < 0)
-        return -1;
-
-    if (Iwconfig_Get_Mode(in_dev, in_err, &ifparm->mode) < 0)
-        return -1;
-
-    // Call the normal monitor mode
-    return (monitor_wext(in_dev, initch, in_err, in_if, in_ext));
-}
-
-int unmonitor_ipw2200(const char *in_dev, int initch, char *in_err, 
-					  void **in_if, void *in_ext) {
-    // Restore initial monitor header
-    // linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
-
-    linux_ifparm *ifparm = (linux_ifparm *) (*in_if);
-
-    if (Ifconfig_Set_Flags(in_dev, in_err, ifparm->flags) < 0) {
-        return -1;
-    }
-
-    if (Iwconfig_Set_Mode(in_dev, in_err, ifparm->mode) < 0)
-        return -1;
-
-	// James says this wants to be set to channel 0 for proper scanning operation
-	if (Iwconfig_Set_Channel(in_dev, 0, in_err) < 0)
-		return -1;
-
-    free(ifparm);
-
-    return 1;
-}
-
 // "standard" wireless extension monitor mode
 int monitor_wext(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
     int mode;
@@ -1870,108 +1527,6 @@
 #endif
 
 #ifdef SYS_LINUX
-// wlan-ng modern standard
-int monitor_wlanng(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-    // I really didn't want to do this...
-    char cmdline[2048];
-
-    // Sanitize the device just to be safe.  The ifconfig should fail if
-    // the device is invalid, but why take risks
-    for (unsigned int x = 0; x < strlen(in_dev); x++) {
-        if (!isalnum(in_dev[x])) {
-            snprintf(in_err, STATUS_MAX, "Invalid device '%s'", in_dev);
-            return -1;
-        }
-    }
-    
-    if (Ifconfig_Delta_Flags(in_dev, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
-        return -1;
-
-    // Enable the interface
-    snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_ifstate ifstate=enable >/dev/null 2>/dev/null", in_dev);
-    if (RunSysCmd(cmdline) < 0) {
-        snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-        return -1;
-    }
-
-    // Turn off WEP
-    snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset "
-             "mibattribute=dot11PrivacyInvoked=false >/dev/null 2>/dev/null", in_dev);
-    if (RunSysCmd(cmdline) < 0) {
-        snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-        return -1;
-    }
-
-    // Don't exclude packets
-    snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset "
-             "mibattribute=dot11ExcludeUnencrypted=false >/dev/null 2>/dev/null", in_dev);
-    if (RunSysCmd(cmdline) < 0) {
-        snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-        return -1;
-    }
-
-    // Turn on rfmon on the initial channel
-    snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d "
-             "enable=true prismheader=true >/dev/null 2>/dev/null", in_dev, initch);
-    if (RunSysCmd(cmdline) < 0) {
-        snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-        return -1;
-    }
-    
-    return 0;
-}
-
-// wlan-ng avs
-int monitor_wlanng_avs(const char *in_dev, int initch, char *in_err, void **in_if, void *in_ext) {
-    // I really didn't want to do this...
-    char cmdline[2048];
-
-    // Sanitize the device just to be safe.  The ifconfig should fail if
-    // the device is invalid, but why take risks
-    for (unsigned int x = 0; x < strlen(in_dev); x++) {
-        if (!isalnum(in_dev[x])) {
-            snprintf(in_err, STATUS_MAX, "Invalid device '%s'", in_dev);
-            return -1;
-        }
-    }
-
-    if (Ifconfig_Delta_Flags(in_dev, in_err, IFF_UP | IFF_RUNNING | IFF_PROMISC) < 0)
-        return -1;
-
-    // Enable the interface
-    snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_ifstate ifstate=enable >/dev/null 2>/dev/null", in_dev);
-    if (RunSysCmd(cmdline) < 0) {
-        snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-        return -1;
-    }
-
-    // Turn off WEP
-    snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset "
-             "mibattribute=dot11PrivacyInvoked=false >/dev/null 2>/dev/null", in_dev);
-    if (RunSysCmd(cmdline) < 0) {
-        snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-        return -1;
-    }
-
-    // Don't exclude packets
-    snprintf(cmdline, 2048, "wlanctl-ng %s dot11req_mibset "
-             "mibattribute=dot11ExcludeUnencrypted=false >/dev/null 2>/dev/null", in_dev);
-    if (RunSysCmd(cmdline) < 0) {
-        snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-        return -1;
-    }
-
-    // Turn on rfmon on the initial channel
-    snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d prismheader=false "
-             "wlanheader=true stripfcs=false keepwepflags=false enable=true >/dev/null 2>/dev/null", in_dev, initch);
-    if (RunSysCmd(cmdline) < 0) {
-        snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-        return -1;
-    }
-    
-    return 0;
-}
-
 int monitor_wrt54g(const char *in_dev, int initch, char *in_err, void **in_if, 
 				   void *in_ext) {
     char cmdline[2048];
@@ -1981,7 +1536,7 @@
 			snprintf(in_err, 1024, "Unable to set mode using 'iwpriv %s set_monitor 1'. "
 					 "Some custom firmware images require you to specify the origial "
 					 "device and a new dynamic device and use the iwconfig controls. "
-					 "see the README for how to configure your capture source.");
+					 "see the README for how to configure your capture source.", in_dev);
 			return -1;
 		}
 
@@ -1998,7 +1553,7 @@
 			snprintf(in_err, 1024, "Unable to set mode using 'iwpriv %s set_monitor 0'. "
 					 "Some custom firmware images require you to specify the origial "
 					 "device and a new dynamic device and use the iwconfig controls. "
-					 "see the README for how to configure your capture source.");
+					 "see the README for how to configure your capture source.", in_dev);
 			return -1;
 		}
 
@@ -2244,75 +1799,6 @@
     return 0;
 }
 
-int chancontrol_ipw2100(const char *in_dev, int in_ch, char *in_err, void *in_ext) {
-    // Introduce a slight delay to let the driver settle, a la orinoco.  I don't
-    // like doing this at all since it introduces hiccups into the channel control
-    // process, but....
-
-    int ret = 0;
-
-    ret = chancontrol_wext(in_dev, in_ch, in_err, in_ext);
-    usleep(5000);
-
-    return ret;
-}
-
-int chancontrol_ipw2200(const char *in_dev, int in_ch, char *in_err, void *in_ext) {
-	// Lets see if this really needs the channel change delay like the 2100 did
-    int ret = 0;
-
-    ret = chancontrol_wext(in_dev, in_ch, in_err, in_ext);
-	// Drop a tiny sleep in here to let the channel set settle, otherwise we
-	// run the risk of the card freaking out
-	usleep(7000);
-
-    return ret;
-}
-
-#endif
-
-#ifdef SYS_LINUX
-int chancontrol_wlanng(const char *in_dev, int in_ch, char *in_err, void *in_ext) {
-    // I really didn't want to do this...
-    char cmdline[2048];
-
-    // Turn on rfmon on the initial channel
-    snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d enable=true "
-             "prismheader=true >/dev/null 2>&1", in_dev, in_ch);
-    if (RunSysCmd(cmdline) < 0) {
-        snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-        return -1;
-    }
-
-    if (in_ext != NULL) {
-        PcapSourceWlanng *src = (PcapSourceWlanng *) in_ext;
-        src->last_channel = in_ch;
-    }
-    
-    return 0;
-}
-
-int chancontrol_wlanng_avs(const char *in_dev, int in_ch, char *in_err, void *in_ext) {
-    // I really didn't want to do this...
-    char cmdline[2048];
-
-    // Turn on rfmon on the initial channel
-    snprintf(cmdline, 2048, "wlanctl-ng %s lnxreq_wlansniff channel=%d "
-             "prismheader=false wlanheader=true stripfcs=false keepwepflags=false "
-             "enable=true >/dev/null 2>&1", in_dev, in_ch);
-
-    if (RunSysCmd(cmdline) < 0) {
-        snprintf(in_err, 1024, "Unable to execute '%s'", cmdline);
-        return -1;
-    }
-
-    if (in_ext != NULL) {
-        PcapSourceWlanng *src = (PcapSourceWlanng *) in_ext;
-        src->last_channel = in_ch;
-    }
-    
-    return 0;
-}
 #endif
 
 #ifdef SYS_OPENBSD
diff -urN kismet.dev/tcpstreamer.cc kismet.dev2/tcpstreamer.cc
--- kismet.dev/tcpstreamer.cc	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/tcpstreamer.cc	2005-08-23 01:59:25.668216448 +0200
@@ -30,8 +30,6 @@
     serv_fd = 0;
 
     max_fd = 0;
-
-	gpsd = NULL;
 }
 
 TcpStreamer::~TcpStreamer()
@@ -287,10 +285,6 @@
     hdr.frame_len = (uint32_t) htonl(sizeof(struct stream_version_packet));
 
     vpkt.drone_version = (uint16_t) htons(STREAM_DRONE_VERSION);
-	if (gpsd != NULL)
-		vpkt.gps_enabled = 1;
-	else
-		vpkt.gps_enabled = 0;
 
     if (!FD_ISSET(in_fd, &client_fds))
         return -1;
diff -urN kismet.dev/tcpstreamer.h kismet.dev2/tcpstreamer.h
--- kismet.dev/tcpstreamer.h	2005-08-16 03:22:51.000000000 +0200
+++ kismet.dev2/tcpstreamer.h	2005-08-23 01:59:25.669216296 +0200
@@ -42,7 +42,6 @@
 #include "ringbuf.h"
 #include "packet.h"
 #include "packetstream.h"
-#include "gpsd.h"
 
 // Global in kismet_drone.cc
 extern int silent;
@@ -76,9 +75,6 @@
 
     int FetchDescriptor() { return serv_fd; }
 
-    // Register the GPS server for us to use
-    void AddGpstracker(GPSD *in_gpsd) { gpsd = in_gpsd; }
-
     void Kill(int in_fd);
 
     int Poll(fd_set& in_rset, fd_set& in_wset);
@@ -124,8 +120,6 @@
     fd_set client_fds;
 
     unsigned int max_fd;
-
-	GPSD *gpsd;
 };
 
 #endif