All right, testing again.
Comments coming as I'm testing it.
1) Network restart
- So you're asking for allowance, that's good. But we still don't know why. In a modified version of mine, not restarting it gave the exact same result ( yeah, fail. But in the same way)
- you might want to tell him to shut up, it's pretty verbose.
2) Ui. Much better.
- A glitch there : "Alright! Which USBport is your phone connected to? (useally "usb0") " --> usually (yeah, I'm a douche
)
3) IP
[CODE]I found the ip: "192.168.42.129
livebox.home"[CODE]
That's the found IP. I think your method isn't the best, you should find a way to have only the IP. I'll get to that in the code review. (IP alone is the good one though)
4) BlueNMEA port
First time it was already running when I was bitching about not finding it... So my fault. Now it seems clear what the port is, and -for my device- it seems to always be 4352. If this is a pattern, you might want to hardcode it.
5) Socat
It launches in an Xterm, hurra ! There's nothing in the window though.
6) Xterm
Kismet and GPSd still not launching. Heading for fail ?
Things are supposed to be good. I type in clean.
7) Restarting my network again. Dude you like that don't you ? 
8) Failure.
Code:
Now let's finally make the .kml
What's the name of your .netxml file below?
android-sdk-linux Desktop libflashplayer.so test_gps_Folder WDrive_2.0.2.sh yamas.sh
android-sdk_r18-linux.tgz google-chrome-stable_current_amd64.deb readme.txt usr wdrive.sh~
Press "Enter" to use
netxml:
As you can see, no netxml file in the working folder. Nothing surprising though, since kismet never launched.
So, yeah failure 
Now let's review the code.
1) Boot cleaning.
Still need some explanations. And why asking for permission to restart the network if it's not mandatory ? By the way, when you're wardriving, you're I think rarely connected whatsoever.
2)
Code:
/etc/init.d/networking restart >/dev/null ### Not Outputing as I hoped in VMware but works perfectly otherwise on normal laptop...
Nice try, but you might want to use something stronger :
Code:
/etc/init.d/networking restart &> /dev/null
3) Formatting.
When you do indent your code, make sure to align if,else, fi, so that in a glance we see it on the same level. You did it most of the time but missed one in the boot()
4) Checking
Code:
echo -e "${c} Checking for required packages..."
if dpkg -l | grep dhcpcd 1>/dev/null && dpkg -l | grep socat 1>/dev/null;
then
Yes ! That's what I'm talking about.
5) Installing()
Careful with all those nested ifs. Why sleep 5 at the end ?! That's one hell of a wait.
6) Some code
Code:
echo -e "${b} Alright, let's set up some stuff and get this thing running!\n"
echo -e "${b} Session name? Files created later will be named after that"
echo -en "$b Name it: "
read session
sleep 5
Sleep 5, again. I already lost 10 seconds.
7) Airmon
Code:
airmon-ng start $interface >/dev/null
mon=`airmon-ng | grep mon* | sort -rn | awk 'NR==1{print $1}'`
So you did shut him up, that's good. And checking for the actual name after the monitor interface is created is the good move. Still don't need wildcards though.
8)Countinterface
Code:
sleep 2 ### Why the **** did I put all those here?!? Stupid..
sleep 2
sleep 3
sleep 2
See your comment 
9) ifconfig.
This time it showed usb0 without the -a parameter. Go figure...
10) Xterm ifconfig.
I don't think you need to have an xterm, just to show ifconfig. You asked to take all usb out before and all, so there should be just one. And it's only a network interface in usb, and we don't use much of them.
11) IP.
As I said in the first part, your method doen't seem to be the best. I'd use something like
Code:
ip route show | awk '(NR == 1) { print $3}'
12) # Setup GPSD, SOCAT+Kismet
Code:
echo -e "${b} [+] Starting GPSD and Socat+Kismet using the ip=$ip and port=$port... ${ce} \n"
xterm -geom 80x5-0+0 -e socat TCP:$ip:$port PTY,link=/tmp/gps &
sleep 2
pkill gpsd
xterm -geom 80x5-0+85 -e gpsd -N -n -D 3 /tmp/gps &
sleep 2
xterm -geom 80x30-0+170 -e kismet -c $mon &
- first xterm launches. Nothing in it though, so you might just background it.
- other xterm don't launch. For once you might want to use a longer sleep. I'm still not persuaded those xterms are needed though.
- Why kill gpsd when it's not yet launched, and you already did that in the cleaning part.
Code:
else
echo -e "${c} Please type in the port of the BlueNMEA client running!$ce"
echo -en "${c} Port: ${ce}"
read port
sleep 3
echo -e "${b} [+] Starting GPSD and Socat+Kismet using the ip=$ip2 and port=$port... ${ce} \n"
xterm -geometry 60x15-0-0 -e socat TCP:$ip2:$port PTY,link=/tmp/gps &
fi
If the logical test fails and we end up on the "else" part of the code, only socat is launched... Haven't you forgotten something ?
13) kmlmake()
still moves files around, but doesn't make the kml.
14)
Code:
echo -e "${r} Please wait while the temporary files are renamed etc...${ce}\n"
sleep 15
You can't be serious. 15 seconds, when nothing happens meanwhile ?
That seems to be all for now ! Test realised on 2.0.2.