以下說明如何透過 USB Wi-Fi adapter 以及 hostapd/wpa_supplicant, 達到 Wi-Fi 連線能力.
NT98515 的核心預設沒有支援 USB Host 及 Wireless. 因此需要設定核心.
核心的設定
[*] Networking support ---> [CONFIG_NET]
[*] Wireless ---> [CONFIG_WIRELESS]
<*/M> cfg80211 - wireless configuration API [CONFIG_CFG80211]
[*] cfg80211 wireless extensions compatibility [CONFIG_CFG80211_WEXT]
<*/M> Generic IEEE 802.11 Networking Stack (mac80211) [CONFIG_MAC80211]
Device Drivers --->
[*] Network device support ---> [CONFIG_NETDEVICES]
[*] Wireless LAN ---> [CONFIG_WLAN]
相依檔案
hostapd/wpa_supplicant 相依於 libcrypto, libnl, libssl , 其中 libcrypto, libssl 來自 OpenSSL. 而 hostapd, wpa_supplicant 都是來自於 hostapd 套件.
編譯 libnl
$ wget https://www.infradead.org/~tgr/libnl/files/libnl-3.2ˊ.25.tar.gz
$ tar -zxvf libnl-3.2.25.tar.gz
$ cd libnl-3.2.25
* libnl 需要設置環境變數 CPP, 否則 configure 會失敗 sainty check failed
$ export CPP="$CC -E"
$ ./configure –prefix=/home/novatek/NA51023_BSP/OpenSource/build/libnl –host=mips-linux –target=mips-linux –disable-maintainer-mode
$ make
編譯 OpenSSL
* OpenSSL 變更 configuration 時, 會出現要求 make depend, 但是真的 make depend 時, 又會遇到 makedepend. 解決方法是安cd 裝 xutils-dev
$ sudo apt install xutils-dev
$ make depend
參考連結
編譯 wpa_supplicant
$ wget https://w1.fi/releases/wpa_supplicant-2.6.tar.gz
$ tar -zxvf wpa_supplicant-2.6.tar.gz
$ cd wpa_supplicant-2.6/wpa_supplicant
$ cp defconfig .config
對 .config 作如下修改
# Uncomment following two lines and fix the paths if you have installed OpenSSL
# or GnuTLS in non-default location
#CFLAGS += -I/usr/local/openssl/include
#LIBS += -L/usr/local/openssl/lib
CFLAGS += -I/home/novatek/NA51023_BSP/OpenSource/build/openssl/include
CFLAGS += -I/home/novatek/NA51023_BSP/OpenSource/build/libnl/include/libnl3
LIBS += -L/home/novatek/NA51023_BSP/OpenSource/build/openssl/lib
LIBS += -L/home/novatek/NA51023_BSP/OpenSource/build/libnl/lib -lnl-3 -lnl-genl-3
LIBS += -L/home/novatek/NA51023_BSP/OpenSource/build/openssl/lib -lcrypto
LIBS_p += -L/home/novatek/NA51023_BSP/OpenSource/build/openssl/lib -lcrypto
以及
# Use libnl 3.2 libraries (if this is selected, CONFIG_LIBNL20 is ignored)
CONFIG_LIBNL32=y
修改 Makefile
CC=$(CROSS_COMPILE)gcc
然後 make
啟動
$ modprobe cfg80211
$ insmod 8188eu.ko
$ ifconfig wlan0 up
$ ./wpa_supplicant -iwlan0 -c/mnt/sd2/wpa_supplicant.conf -B
$ udhcpc -i wlan0
$ ifconfig
* 因為 udhcpc 連線後會嘗試去更新 DNS, 但是我們的 file system 是 read only. 這裡會卡住. 解決方法是 mark 掉 /usr/share/udhcpc/default.script
# rootfs is readonly, overwrite always failed, ignore it
# mv $RESOLV_CONF-$$ $RESOLV_CONF
編譯 hostapd
$ wget https://w1.fi/releases/hostapd-2.6.tar.gz
$ tar -zxvf hostapd-2.6.tar.gz
$ cd hostapd-2.6/hostapd
$ cp defconfig .config
以及
# Use libnl 3.2 libraries (if this is selected, CONFIG_LIBNL20 is ignored)
CONFIG_LIBNL32=y
修改 Makefile
CC=$(CROSS_COMPILE)gcc
然後 make
啟動
ifconfig lo 127.0.0.1
ifconfig wlan0 up
ifconfig wlan0 192.168.1.3
./hostapd -B -dd /mnt/sd2/hostapd.conf
udhcpd -S /mnt/sd2/udhcpdw.conf
hostapd.conf : 複製 hostapd-2.6/hostapd/hostapd.conf, 修改
ssid=IoT-Camera
udhcpdw.conf: 複製 /etc/udhcpdw.conf