User:Trickygnome/wifi low level configuration

From Gentoo Wiki
Jump to:navigation Jump to:search

Steps:

 - down: iw dev wlan0/mon0 del (optional), stop and kill wpa_supplicant
 - rfkill unblock wlan
 - iw phy interface add wlan0 type managed (optional)
 - restart dhcpcd, restart wpa_supplicant
 - wpa_cli set_network $nid bssid/ssid $SSID
 - wpa_cli set_network $nid key_mgmt/psk NONE/$PSK
 - wpa_cli enable $nid

Note: Well, maybe it will easier to use sed commands at /etc/wpa_supplicant.conf instead of wpa_cli.


FILE /root/.bash_aliases
downsimple() { # for rtl8822bu
    if [ -z "$1" ] ; then
	driver=/sys/bus/usb/drivers/mt7601u/*/ieee80211/
    else
	driver=$1
    fi
    echo downsimple driver: $driver

    ifs1=$(ls $driver 2>/dev/null)
    echo downsimple ifs1: $ifs1

    echo ip link set $ifs1 down 2>/dev/null
    ip link set $ifs1 down 2>/dev/null
    sleep 0.3

    echo ip link set mon0 down 2>/dev/null
    ip link set mon0 down 2>/dev/null
    iw dev mon0 del &>/dev/null

    # rm /var/run/dhcpcd/pid &>/dev/null
    echo rc-service dhcpcd restart
    rc-service dhcpcd restart
    echo rc-service wpa_supplicant stop
    rc-service wpa_supplicant stop
    echo killall wpa_supplicant
    killall wpa_supplicant &>/dev/null
    sleep 0.3
}

upwpartl88() { # intel by default
    if [ -z "$1" ] ; then
	driver='/sys/bus/pci/drivers/iwlwifi/*/net/' # /sys/bus/usb/drivers/mt7601u/*/net/
    else
	driver=$1
    fi # driver
    if [ -z "$2" ] ; then
	phy=/sys/bus/pci/drivers/iwlwifi/*/ieee80211/ # /sys/bus/usb/drivers/mt7601u/*/ieee80211/
    else
	phy=$2
    fi # phy
    echo -- upwpartl88 $driver $phy --

    echo rfkill unblock wlan
    rfkill unblock wlan

    sleep 1
    # echo wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf -f/var/log/wpa_supplicant.log
    # wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf -f/var/log/wpa_supplicant.log>/dev/null &
    echo rc-service wpa_supplicant start
    rc-service wpa_supplicant start
    sleep 0.5
}

upsimple() {
    if [ -z "$1" ] ; then echo no SSID ; return 1 ; fi # SSID

    SSID=$1
    PSK=$2
    echo SSID="$SSID"
    echo PSK # ="$PSK"
    BSSID=$(echo ${SSID^^} | grep -oE "^[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}:[A-F0-9]{2}")
    echo BSSID=$BSSID

    echo wpa_cli add_network
    nid=$(wpa_cli add_network | grep -o ^[0-9]*)
    if [ -z "$BSSID" ]; then
	echo wpa_cli set_network $nid ssid \"$SSID\"
	wpa_cli set_network $nid ssid \"$SSID\"
    else
	echo wpa_cli set_network $nid bssid $BSSID
	wpa_cli set_network $nid bssid $BSSID
    fi

    if [ -z "$PSK" ] ; then
	echo wpa_cli set_network $nid key_mgmt NONE
	wpa_cli set_network $nid key_mgmt NONE
    else
	echo wpa_cli set_network $nid # psk \"$PSK\"
	wpa_cli set_network $nid psk \"$PSK\"
    fi # password

    sleep 0.5

    echo wpa_cli enable $nid
    wpa_cli enable $nid
    # wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf &
    # wpa_cli
    while [ -z "$(wpa_cli status | grep COMPLETED)" ] ; do sleep 0.3 ; done
    echo "Association completed"
    while [ -z "$(ip -o -f inet a | grep wlan0)" ] ; do sleep 0.3 ; done
    echo "IP retrived"
    # sleep 5
    wpa_cli status
    wpa_cli status | grep CONNECTED || echo Failed
}

upwlanrtl88() {
    driver="/sys/bus/usb/drivers/rtl88x2bu/*/net/"
    phy='/sys/bus/usb/drivers/rtl88x2bu/*/ieee80211/'
    downsimple "$driver"
    upwpartl88 "$driver" "$phy"
    upsimple "$1" "$2"
}

uphome() { upwlanrtl88 'TP-Link_223Df' 'password' ; }

upfreewifi() { upwlanrtl88 'Caffee' ; }
root #upfreewifi

See also