무선 카메라에서의 Wi-Fi 시나리오와 관련 기능에 대한 루틴에 대해 기술한다.

Wi-Fi 기능의 용도

크게 환경설정과 동영상 스트리밍의 용도로 사용한다. 이에 따른 모드는 Soft AP 와 Station 모드가 있다.
Wi-Fi 모듈은 SDIO Bulit-in 과 USB 동글 타입으로 나뉘어 진다.

USB 동글 모델(VA 카메라)은 Soft AP 기능만 대응한다(동영상 스트리밍 제외).

시나리오

카메라를 처음 설치할 때, 별도의 공유기 없이 핸드폰에서 카메라를 검색하여 접속한 후, 관리 페이지에 접근하기 위한 목적으로 사용한다. 이때 카메라의 각도나 화질등을 조절한다.

  1. 처음 구입해서 전원을 인가해서 부팅 시(Factory 리셋 후), 자동으로 Soft AP 로 동작한다. 이때 SSID 는 Unique 한 것으로(S1-IPCAM-eth0 의 MAC주소) 하고, 암호는 없다. eth1 인터페이스는 고정된 IP(10.10.10.1)로 지정하고, DHCP 서버(udhcpd) 데몬이 실행된다.
  2. 핸드폰에서 AP 스캔을 하고, 선택한 카메라에 접속한다. 접속 후 IP 주소를 할당 받는다.
  3. 관리 페이지(http://10.10.10.1)에 접속하여 설정을 변경한다. 적용 버튼을 누르면, AP 정보(SSID, 비밀번호등)가 DB 파일에 저장된다. 특히 네트워크 설정의 경우(여기서 이 후 사용할 인터페이스를 지정할 수 있는데, 유선 또는 무선으로 지정하면 리부팅 후 해당 인터페이스를 활성화 한다), 저장 후 재부팅 한다.
  4. 유선으로 지정했을 경우, 재부팅 후 Eth0 인터페이스가 활성화 되며, eth1 인터페이스는 UP 되지만, 별다른 동작을 하지 않는다.
  5. 무선으로 지정했을 경우, 재부팅 후 접속할 AP 의 정보(SSID, 인증방식, 비밀번호)를 적는다. 재부팅후 eth1 인터페이스가 활성화 되며, eth0 인터페이스도 down 된다. 앞서 적은 접속 정보를 가지고, 자동으로 접속한다.

AP 에 접속하여 무선으로 동영상을 스트리밍하여 보여준다.

  1. 관리 페이지의 네트워크 항목에서 무선 네트워크를 설정하면 WiFi 관련 메뉴들이 나타난다.
  2. Scan 버튼을 누르면, AP 리스트가 출력된다.
  3. 접속할 AP의 SSID 를 클릭하면, 인증방식이 자동 선택되고, 암호를 입력하고, 저장한다.
  4. 리부팅이 되고, Wlan0 인터페이스가 활성화되고, 접속시도를 한다.

wps pbc 세부 동작 명세는 다음과 같다.

  1. wpa_supplicant 가 실행하고 있는 도중에 pbc 버튼을 감지하면, wps api 가 실행됨.
  2. ap 와 통신을 통해 SSID 와 암호화 종류, 비밀번호 값을 받아옴.
  3. 여기서 module 을 rmmod / insmod 실행
  4. 앞서 받아온 값으로, wpa_supplicant 실행

pbc 버튼 눌렀을 때, wps(환경 db 에 있는) 변수값을 1로 설정한 후, 재부팅한다. 재부팅하면서, wps 변수값을 체크하여, 1로 설정되어있을 시, wps pbc 시도한다.

pbc 버튼 눌렀을 때, 바로 wps pbc 시도함.

  1. 무선으로 선택해서 부팅했을 경우, ethernet 인터페이스를 up 시키고 admin tool 에서 detect 되도록 한다.
  2. WPS 의 경우, 버튼이 눌리면, 언제든지 WPS 모드로 동작하게끔 한다. 심지어 soft ap 모드에서도 동작해야한다(시스템 리부팅이 되어도 된다).
  1. AP 접속에 실패했을 경우에 대한 시나리오 추가

Action List

위의 시나리오 적용을 위해 진행되어야 할 사항은 다음과 같다.

내용 진행여부
Soft AP 대신에 Adhoc 모드로 동작하여 핸드폰에서 카메라로 접속하여 DHCP 로 IP 를 받아오는지 확인 동작 확인함
Wpa_supplicant 로부터 Scan 값 받아오기
Wpa_supplicant 로부터 접속상태 값 받아오기
WPS PBC 를 위한 버튼 매핑하기
  1. Wi-Fi 관련 설정 후 시스템 리셋을 해야 하는가?
    1. Soft AP 모드의 경우 : AP 스캔 후, 접속하려는 공유기 설정을 입력하고 접속한다. 이때 드라이버는 rmmod / insmod 되어야 하고, 기존의 dhcp server 프로세스는 kill 되고, dhcp client 프로세스가 시작되어야 한다. 동시에 설정된 정보로 AP 접속을 시도해야 한다. 우려되는 점은 각 모드에서 드라이버가 안정적으로 동작되는지 여부다.
    2. Station 모드의 경우 : 설정된 정보를 가지고 AP 접속을 시도한다. IP 주소까지 받고, 접속 여부를 웹 상에 뿌려준다.
  2. 유선과 무선 인터페이스는 어떻게 할 것인가?
    1. 유선은 항상 초기화(up)시킨다. 마지막의 유선 설정대로 동작하도록 한다.
    2. 무선 또한 항상 초기화(up) 시킨다. 무선 사용 설정이 ON 되어 있으면, 마지막 접속했던 AP 로 접속시도한다(이때, 이전에 저장된 DB 를 이용한다). 접속이 되었으면 DHCP 로 IP 등을 받고, 설정한다. 이때 default gateway 까지 설정된다. 만일 유선이 연결되어 있다면, 유무선 각각의 default gateway 가 생기게 된다. 이때 랜선을 뽑고, eth0 를 down 시키면, 자동으로 eth1 인터페이스를 사용하여 통신하게 된다. 무선 사용 설정이 OFF 되어 있다고 해도, 드라이버 모듈은 insmod 한다. 부팅 이후, wifi 드라이버 모듈을 올리고 내릴때 시스템 부하가 우려되므로, 올린 채로 동작하는 것으로 한다.
  3. WPS
    1. 키를 수초 눌렀을 때, PBC 로 동작을 하도록 한다. 접속이후 여부를 알기위해 LED 로 성공여부를 나타내도록 한다.

nmdhost 혹은 web 에서 필요한 정보들은 무엇이 있고, 어떻게 전달되어야 하는지 정의 한다.

  1. 접속 명령
  2. Scan 명령
  3. 접속 여부 상태 명령

실제 Wi-Fi 에 대한 정보는 wpa_supplicant 에서 관장한다. 위의 명령들은 wpa_cli 명령어의 스크립트 형태로 실행될 것이다.
메인 프로그램에서 위의 명령을 내렸다면, 이를 받아 wpa_supplicant 가 실행한다.

실행된 결과 여부를 프로그램 쪽에 전달해주어야 한다.

  1. 접속 명령이 제대로 수행되었는지에 대한 여부
  2. Scan 결과 AP 리스트 목록
  3. 접속 성공 여부에 대한 정보

현재는 IPC 또는 소켓통신을 염두해두고 있다.

  • computer/itx/무선_카메라_시나리오.txt
  • Last modified: 4 years ago
  • by likewind