#!/bin/sh
## 
## RJP 7.7.2025
## Wlan configurator for FreeBSD
## Packages yad, xterm, nano and inxi are needed
## Free to use and modify
# 8.7.2025 useful links added to README file
touch ~/.Xresources
echo ' ! Use a truetype font and size.
xterm*faceName: Monospace ' | grep -xFv -f $HOME/.Xresources >> $HOME/.Xresources
echo 'xterm*faceSize: 14 ' | grep -xFv -f $HOME/.Xresources >> $HOME/.Xresources
xrdb -merge ~/.Xresources

echo '

List all network devices

pciconf -lv | grep -A1 -B3 network

===============================

An example from /etc/wpa_supplicant.conf file.

network={
ssid="rjpownnetwork"
proto=RSN
key_mgmt=WPA-EAP
eap=TLS
identity="loader"
ca_cert="/etc/certs/cacert.pem"
private:key="/etc/certs/clientkey.pem"
private:key_passwd="verysceredpassword"
}

================================

Check loaded drivers

kldstat

================================

Check if wlan is configured

ifconfig

===============================

If not, find the device as root

su root -c lsusb ## for usb wifi

===============================

List wlan devices

sysctl -h net.wlan.devices

==============================

Create wlan interface manually

ifconfig wlan1 create wlandev <device here>

An example:

    root@:/home/rjp # ifconfig wlan1 create wlandev run0

==============================

Scan created wlan as root

su root -c ifconfig wlan1 up list scan

==============================

Edit /etc/rc.conf file adding wlan section

An example:

	wlans_run0="wlan1"
	ifconfig_wlan1="WPA DHCP"

==============================

Restart network as root

su root -c "service netif restart && service routing restart"

==============================

All wifi devices probably are not incuded in this script, so if you know some new, edit the script.

=============================
Useful links

https://freebsdfoundation.org/resource/networking-basics-wifi-and-bluetooth/

https://docs.freebsd.org/en/books/handbook/advanced-networking/#network-wireless

https://www.freebsd.org/releases/14.3R/hardware/#wlan

https://wiki.freebsd.org/dev

https://wiki.freebsd.org/WiFi/Iwlwifi/Chipsets

==============================
' > /tmp/readme-wifi-connector.txt

yad --form --columns=5 --width=500 --text-align=center --title="WIFI CONFIGURATOR" --text="

With this script you can see available wifi devices and you can configure wifi connections. More settings and and tutorials can find from sites 

https://freebsdfoundation.org/resource/networking-basics-wifi-and-bluetooth/

https://docs.freebsd.org/en/books/handbook/advanced-networking/#network-wireless

https://www.freebsd.org/releases/14.3R/hardware/#wlan

https://wiki.freebsd.org/dev

https://wiki.freebsd.org/WiFi/Iwlwifi/Chipsets

" \
\
--field="README FIRST":fbtn "sh -c 'xdg-open /tmp/readme-wifi-connector.txt ; exec sh' & " \
--field="Detect available Wlan devices":fbtn "xterm -hold -e sysctl -h net.wlan.devices  " \
--field="See your current wpa_supplicant.conf":fbtn "xterm -e su root -c 'xterm -hold -e cat /etc/wpa_supplicant.conf ' " \
--field="Backup your current wpa_supplicant.conf":fbtn "xterm -e su root -c 'cp /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.bak' " \
--field="Edit your current wpa_supplicant.conf ":fbtn "xterm -e su root -c 'xterm -e nano /etc/wpa_supplicant.conf ' " \
--field="Backup your current /etc/rc.conf ":fbtn "xterm -e su root -c 'cp /etc/rc.conf /etc/rc.conf.bak' " \
--field="Edit your current /etc/rc.conf file":fbtn "xterm -e su root -c 'xterm -e nano /etc/rc.conf ' " \
--field="Turn Wlan0 off":fbtn "xterm -e su root -c 'xterm -e ifconfig wlan0 down' " \
--field="Turn Wlan0 on":fbtn "xterm -e su root -c 'xterm  -e ifconfig wlan0 up' " \
--field="Turn Wlan1 off":fbtn "xterm -e su root -c 'xterm -e ifconfig wlan1 down' " \
--field="Turn Wlan1 on":fbtn "xterm -e su root -c 'xterm -e ifconfig wlan1 up' " \
--field="Scan created wlan0 interface":fbtn "xterm -e su root -c 'xterm -hold -e ifconfig wlan0 up list scan ' " \
--field="See ifconfig":fbtn "xterm -hold -e ifconfig " \
--field="See network with inxi":fbtn "xterm -hold -e inxi -Nn " \
--field="Restart network":fbtn "xterm -e su root -c 'service netif restart && service routing restart ' " \
--button=EXIT:1
sleep 2
rm /tmp/readme-wifi-connector.txt
