본문 바로가기
Development/Xilinx

HostApd 컴파일 및 설정 방법 (Xilinx)

by qWooWp 2019. 11. 11.
반응형

Purpose

Xilinx Board 에서 WiFi SoftAP 모드를 동작

 

Target Environment

  • armv7l, 32bit

 

Reference Sites

 

hostapd ver 2.6 을 준비

소스 코드 다운로드 위치 : https://w1.fi/releases/

 

컴파일 하기 위한 필수 패키지

libnl : library netlink 의 약자 , Ntlink Protocol library - 리눅스 커너ㄹ 모듈과 사용자 프로세스 사이 정보를 전달하는 Netlink 프로토콜 기반 인터페이스 API 를 제공하는 라이브러리 모음.

openssl : ssl 보안을 처리 하기 위한 암호화 모듈

 

 

Petalinux Project 를 빌드하면 기본적으로 libnl  / openssl 이 빌드가 됩니다.

 

위치 검색

$ find /home/joon -name "libnl" -type f

:검색 위치는 사용자가 생성한 bsp 및 빌드 위치에 따라 달라질 수 있습니다.

 

Hostapd 컴파일 환경 설정

 

다운로드한 hostapd source 를 압축 해제 하고

cd hostapd 이동하여 .config 파일을 기존 defconfig 베이스로 만들어 줍니다.

$ cp defconfig .config

$ vi .config

 

 

libnl / openssl 관련 CFLAGS 와 LIBS 를 설정

 

CFLAGS += -I/home/joon/src/avnet-digilent-zedboard-2019.1/build/tmp/sysroots-components/cortexa9t2hf-neon/libnl/usr/include/linnl3

CFLAGS += -I/home/joon/src/avnet-digilent-zedboard-2019.1/build/tmp/sysroots-components/cortexa9t2hf-neon/openssl/usr/include

LIBS += -L/home/joon/src/avnet-digilent-zedboard-2019.1/build/tmp/sysroots-components/cortexa9t2hf-neon/libnl/usr/lib

LIBS += -L/home/joon/src/avnet-digilent-zedboard-2019.1/build/tmp/sysroots-components/cortexa9t2hf-neon/openssl/usr/lib

 

CONFIG_LIBNL32=y

 

저장합니다.

 

HostApd 컴파일

make CC=/tools/Xilinx/SDK/2019.1/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-gcc

 

SDK 컴파일러 또는 BSP Project 에서 찾아서 해당 컴파일러 경로를 설정하여도 됩니다.

/tools/Xilinx/SDK/2019.1/gnu/aarch32/lin/gcc-arm-linux-gnueabi

 

빌드가 완료 되면 hostapd, hostapd_cli 2개의 파일이 생성됩니다.

 

hostapd.conf 파일 수정

 

interface=wlan0

driver=nl80211

ssid=<보일 AP 이름>

hw_mode=g : 동작 무선 랜타입.

channel=1 : 동작 채널

ctrl_interface=/var/run/hostapd1 : 임시로 만들 인터페이스 위치로 현재 xilinx 에서 /var/run/hostapd 가 실행파일로 존재하므로 1을 더 붙여서 중복되지 않도록 처리

max_num_sta=255 : 최대 연결 장치 수로 디폴트 값.


WPA-PSK  설정 시

auth_algs=1    : default 는 3으로 되어 있음.

wmm_enabled=0    : default 는 1로 되어 있음

wpa=2

wpa_passphrase=a123456789a

wpa_key_mgmt=WPA-PSK

wpa_pairwise=TKIP

rsn_pairwise=CCMP

 

파일 복사

hostapd, hostapd_cli -> /var/run

hostapd.conf -> /etc/hostapd/hostapd.conf

 

 

네트워크 인터페이스 환경 설정

 

$ vi /etc/network/interfaces

 

auto wlan0

# iface wlan0 init manual

# wpa-roam /etc/wpa_supplicant/wpa_supplicant/conf

iface wlan0 inet static

address 192.168.2.1

netmask 255.255.255.0

 

default hostapd 파일 생성

vi /etc/hostapd/hostapd

 

DAEMON_CONF="/etc/hostapd/hostapd.conf"

 

dnsmasq 설정

/etc/dnsmasq.conf 파일을 열어서 다음과 같이 설정합니다.

 

interface=wlan0

dhcp-range=192.168.2.2,192.168.2.50,255.255.255.0,12h

 

service 명령이 존재하지 않기 때문에 아래와 같이 재시작 또는 프로세스를 죽이고 다시 시작함.

ipconfig wlan0 up 또는 시스템 재시작

killall -9 dnsmasq

dnsmasq

hostapd 실행  (디버깅을 하고 싶다면 -d 옵션을 추가 하면 메시지가 인쇄가 됨)

./hostapd /etc/hostapd/hostapd.conf

 

반응형

댓글