칩의 성능 중에서 신호세기는 가장 중요한 성분이라고 할 수 있다. 신호세기가 높다는 것은 다시말해 멀리까지 데이터를 전송할 수 있다는 얘기로 해석할 수 있기 때문이다.

하지만, 각 국가가 정한 무선 신호 규격이 있기 때문에 인증을 통과하기 위해서는 기준 범위를 만족시켜야 한다.

그렇다면, 신호세기는 무엇으로 어떻게 측정할 수 있을까?

준비운동 하기

먼저 타겟이 있어야 하고, 펌웨어, 그리고 신호세기를 조절하는 설정파일이 필요하다. 마지막으로 신호세기를 측정하는 장비가 필요하다.

H/W 8887 이 실장된 타겟보드(삼성 갤럭시 그랜드 네오)
MT8869C(측정장비)
S/W Firmware sd8777_uapsta-official.bin sd8777_uapsta.bin
설정파일 txpwr_limit_conf_files.7z
ETC 측정 장비 사용을 위한 프로그램(IOLibSuite_15_5_13009_1.exe, LANLookv12.0)

측정 장비 프로그램 설치

위의 표에 나온 2개의 파일을 순서대로 설치한다. 설치 후에는 바탕화면에 'LANLook' 이라는 아이콘이 보일 것이다. 자세한 사용법은 mt8860c.pdf 를 참고한다.

타겟보드 연결하기

USB 케이블로 타겟과 PC 를 연결하여 adb 로 접속한다.

펌웨어 준비하기

위의 표에 나와있는 파일을 모두 다운로드하여 한곳에 압축을 푼다.
여기서는 2개의 펌웨어와 5개의 설정파일을 가지고 신호세기를 측정할 것이다.

#apt-get install p7zip
#7zr x txpwr_limit_conf_files.7z

압축을 풀면, 16 ~ 20 까지의 디렉토리가 보일 것이다. 이 각각의 디렉토리에는 txpwrlimit_cfg_delos.conf 라는 파일이 들어있다. 16 부터 20 까지의 디렉토리는 dBm 을 뜻한다. 예를 들어, 16 디렉토리 아래에 있는 설정파일은 칩에서 신호세기가 16dBm 으로 출력하도록 만든 파일이다.

장비 연결하기

MT8860C 를 켜고, 장비에서 나온 랜선을 Host PC 에 직접(direct) 연결한다. 그리고 PC 의 IP 주소 설정을 아래와 같이 한다.

IP Address 192.168.168.1
Subnet 255.255.255.0

타겟보드와 장비를 연결하고, 타겟보드는 USB 로 PC 와 연결한다.

LANLook 프로그램을 실행하고, 바로 보이는 설정 창에서 'System Utilities → Remote Interface' 항목을 'LAN' 으로 선택하고, 아래 IP 주소창에 '192.168.168.2' 를 적고 Connect 를 누른다.
참고로 '192.168.168.2' 는 장비의 IP 주소다.

연결되었다는 메세지가 나오면, 'Wireless Test' 항목을 선택한다. 여기서는 테스트할 조건을 설정할 수 있는데, 여기서는 다음과 같이 세팅한다.

Standard 802.11b
Channel# 6(2437 MHz)
Data Rate 11 Mbps

아래 'Network Setup' 항목에서는 'Infrastructure(AP)' 를 선택한다. 이렇게 설정하면, 장비 측에서 AP 역할을 하게 된다.
SSID 는 'MT8860C' 로 적는다.
맨 아래 'Path Loss Setting' 를 누른다. 패킷 로스값을 적는 데, 케이블에 적힌 숫자를 적어주면 된다. 만일 2.4G 에서 1.4 라면, 채널 6 번을 선택하고 Tx/Rx Loss 에 각각 '1.4' 를 입력한다.
이제 'Create Network' 를 누르고, 타겟에서 WiFi 기능을 켠다. 그리고 SSID 가 'MT8860C' 인 AP 에 접속한다.

해당 SSID 에 접속한 후에 설정 페이지에 가서 접속 설정을 'static' 으로 변경하고, IP 주소를 '12.168.1.100' 으로 설정해야 한다.

접속되었으면, PC로 돌아와서, 'Get MAC Addresses' 를 누른다.
버튼이 비활성화되면, 옆의 'Connect' 버튼을 누른다.

만일 MAC 주소를 가져오지 못했다면, 타겟의 Wi-Fi 기능을 껏다가 다시 켜서 접속해본다.

측정하기

여기까지 왔다면, 신호세기 측정을 위한 모든 준비가 완료된 것이다. 이제
'Tx Testing' 항목으로 가서, 왼쪽 하단의 'Run Once' 를 누른다.
몇 초 후에 오른쪽 'Power Profile' 창에 결과가 출력된다. 하단에 보면, 수치가 적힌 테이블이 나오는데, Avg(dBm) 항목의 값을 보면 된다.

이제부터는 앞서 받은 펌웨어와 설정파일을 사용하여 측정해보자.
먼저 펌웨어를 타겟으로 올리고 설정파일을 다음과 같이 올린다.

#adb push sd8777_uapsta.bin /system/etc/firmware/mrvl/
#adb push txpwrlimit_cfg_delos.conf /system/etc/labtool/

이제 새로 올린 펌웨어와 설정파일을 적용하기 위해서 타겟에서 Wi-Fi 기능을 껏다가 다시 켠다. 이렇게 하면, rmmod → insmod 가 실행된다. 다시 장비가 만든 AP 에 접속된다.

예를 들어 앞서 올린 설정 파일이 17 디렉토리 아래에 있는 것이라면, 신호 세기가 19로 설정된 것이라고 앞서 설명했다. 설정 파일이 제대로 적용되었는지 확인해보려면 다음과 같이 실행한다.

root@android:/ # mlanutl wlan0 txpowercfg                                      
Tx Power Configurations:
    Power Group 0: 
        first rate index:   0                   // data rate 0 번에서 (1 Mbps)
        last rate index:    3                  // data rate 3 번까지 (11 Mbps)
        minimum power:     17 dBm
        maximum power:     17 dBm
        power step:         0
 
    Power Group 1: 
        first rate index:   4
        last rate index:    7
        minimum power:     15 dBm
        maximum power:     15 dBm
        power step:         0
 
    Power Group 2: 
        first rate index:   8
        last rate index:    9
        minimum power:     15 dBm
        maximum power:     15 dBm
        power step:         0
 
    Power Group 3: 
        first rate index:  10
        last rate index:   11
        minimum power:     15 dBm
        maximum power:     15 dBm
        power step:         0
 
    Power Group 4: 
        first rate index:  12
        last rate index:   14
        minimum power:     13 dBm
        maximum power:     13 dBm
        power step:         0
 
    Power Group 5: 
        first rate index:  15
        last rate index:   16
        minimum power:     13 dBm
        maximum power:     13 dBm
        power step:         0
 
    Power Group 6: 
        first rate index:  17
        last rate index:   19
        minimum power:     13 dBm
        maximum power:     13 dBm
        power step:         0
 
    Power Group 7: 
        first rate index: 140
        last rate index:  142
        minimum power:     13 dBm
        maximum power:     13 dBm
        power step:         0
 
    Power Group 8: 
        first rate index: 143
        last rate index:  144
        minimum power:     13 dBm
        maximum power:     13 dBm
        power step:         0
 
    Power Group 9: 
        first rate index: 145
        last rate index:  147
        minimum power:     13 dBm
        maximum power:     13 dBm
        power step:         0
 
root@android:/ # 

테스트 조건의 data rate 를 11 Mbps 로 했기 때문에 위의 결과에서 'Power Group 0' 항목을 보면 된다. 최대/최소 파워가 17 dBm 이 나왔다. 이것은 펌웨어 자체내에서 세팅한 값이고, 실제 나오는 값은 선을 전달되기 때문에 어느 정도의 packet loss 는 발생한다.
설정 파일 뿐만아니라 펌웨어가 제대로 올라갔는지도 확인 가능하다. 아래와 같이 실행한다.

root@android:/ # mlanutl wlan0 version                                         
Version string received: SD8777-14.66.33.p62-M3X14453-GPL-(FP66) 

앞서 설명한 것은 삼성 폰을 기준으로 한 것이다. Marvell 레퍼런스 보드의 경우, 명령어가 조금 다르다.

#adb root         // 유저모드($)를 root 권한으로 변경
#adb remount       
#adb push sd8777_uapsta.bin /system/etc/firmware/mrvl/
#adb shell
#ifconfig wlan0               // 안드로이드에서 무선 네트워크 인터페이스 이름을 확인하기 위해 실행 
wlan0: Cannot assign requested address           // 존재함
#ifconfig mlan0               // 안드로이드에서 무선 네트워크 인터페이스 이름을 확인하기 위해 실행
mlan0: No such device                         // 존재하지 않음. 따라서 이후 명령에서는 wlan0 를 사용함
#mkdir -p /system/etc/labtool
#exit
#adb push txpwrlimit_cfg_delos.conf /system/etc/labtool/
#adb shell
#mlanutl wlan0 hostcmd /system/etc/labtool/txpwrlimit_cfg_delos.conf txpwrlimit_2g_cfg_set
 
HOSTCMD_RESP: CmdCode=0xfb, Size=0x194, SeqNum=0x5c, Result=0000
payload: len=396
01 00 00 00 89 01 18 00 67 09 14 01 00 14 01 0f 
02 0f 03 0f 04 0d 05 0d 06 0d 07 0d 08 0d 09 0d 
89 01 18 00 67 09 14 02 00 14 01 0f 02 0f 03 0f 
04 0d 05 0d 06 0d 07 0d 08 0d 09 0d 89 01 18 00 
67 09 14 03 00 14 01 0f 02 0f 03 0f 04 0d 05 0d 
06 0d 07 0d 08 0d 09 0d 89 01 18 00 67 09 14 04 
00 14 01 0f 02 0f 03 0f 04 0d 05 0d 06 0d 07 0d 
08 0d 09 0d 89 01 18 00 67 09 14 05 00 14 01 0f 
02 0f 03 0f 04 0d 05 0d 06 0d 07 0d 08 0d 09 0d 
89 01 18 00 67 09 14 06 00 14 01 0f 02 0f 03 0f 
04 0d 05 0d 06 0d 07 0d 08 0d 09 0d 89 01 18 00 
67 09 14 07 00 14 01 0f 02 0f 03 0f 04 0d 05 0d 
06 0d 07 0d 08 0d 09 0d 89 01 18 00 67 09 14 08 
00 14 01 0f 02 0f 03 0f 04 0d 05 0d 06 0d 07 0d 
08 0d 09 0d 89 01 18 00 67 09 14 09 00 14 01 0f 
02 0f 03 0f 04 0d 05 0d 06 0d 07 0d 08 0d 09 0d 
89 01 18 00 67 09 14 0a 00 14 01 0f 02 0f 03 0f 
04 0d 05 0d 06 0d 07 0d 08 0d 09 0d 89 01 18 00 
67 09 14 0b 00 14 01 0f 02 0f 03 0f 04 0d 05 0d 
06 0d 07 0d 08 0d 09 0d 89 01 18 00 67 09 14 0c 
00 14 01 0f 02 0f 03 0f 04 0d 05 0d 06 0d 07 0d 
08 0d 09 0d 89 01 18 00 67 09 14 0d 00 14 01 0f 
02 0f 03 0f 04 0d 05 0d 06 0d 07 0d 08 0d 09 0d 
89 01 18 00 6e 09 14 0e 00 0c 01 0c 02 0c 03 0c 
04 0c 05 0c 06 0c 07 0c 08 0c 09 0c
 
root@android:/ # mlanutl wlan0 txpowercfg                                      
Tx Power Configurations:
    Power Group 0: 
        first rate index:   0
        last rate index:    3
        minimum power:     20 dBm
        maximum power:     20 dBm
        power step:         0
 
    Power Group 1: 
        first rate index:   4
        last rate index:    7
        minimum power:     15 dBm
        maximum power:     15 dBm
        power step:         0
 
    Power Group 2: 
        first rate index:   8
        last rate index:    9
        minimum power:     15 dBm
        maximum power:     15 dBm
        power step:         0
 
    Power Group 3: 
        first rate index:  10
        last rate index:   11
        minimum power:     15 dBm
        maximum power:     15 dBm
        power step:         0
 
    Power Group 4: 
        first rate index:  12
        last rate index:   14
        minimum power:     13 dBm
        maximum power:     13 dBm
        power step:         0
 
    Power Group 5: 
        first rate index:  15
        last rate index:   16
        minimum power:     13 dBm
        maximum power:     13 dBm
        power step:         0
 
    Power Group 6: 
        first rate index:  17
        last rate index:   19
        minimum power:     13 dBm
        maximum power:     13 dBm
        power step:         0
 
    Power Group 7: 
        first rate index: 140
        last rate index:  142
        minimum power:     13 dBm
        maximum power:     13 dBm
        power step:         0
 
    Power Group 8: 
        first rate index: 143
        last rate index:  144
        minimum power:     13 dBm
        maximum power:     13 dBm
        power step:         0
 
    Power Group 9: 
        first rate index: 145
        last rate index:  147
        minimum power:     13 dBm
        maximum power:     13 dBm
        power step:         0
 
root@android:/ # 

신호세기를 변화시키기 위해 Caldata 를 사용할 수도 있다. 파일명은 WlanCalData_ext.conf 이다.

#unzip XTAL_0x54_FEloss_0x07\ 0x08\ 0x0A.zip
#cd XTAL_0x54_FEloss_0x0A
#adb push WlanCalData_ext.conf /system/etc/firmware/mrvl/
#./iw reg get                                      
country US:
	(2402 - 2472 @ 40), (3, 27)
	(5170 - 5250 @ 40), (3, 17)
	(5250 - 5330 @ 40), (3, 20), DFS
	(5490 - 5600 @ 40), (3, 20), DFS
	(5650 - 5710 @ 40), (3, 20), DFS
	(5735 - 5835 @ 40), (3, 30)
 
#./iw reg set US        // 국가코드를 미국으로 설정

FAQ

이런 경우 다음을 확인한다.

  1. 펌웨어와 설정파일을 push 하기 전에 WiFi 기능을 off 시킨 후, 진행한다. push 이후에는 다시 on 시켜 AP 에 접속한다.
  2. 현재 push 한 디바이스가 어떤 것인지 확인한다. 참고로 예전에 엉뚱한 디바이스에 push 를 해놓고 되서 삽질한 적이 있다.

MFG 펌웨어를 사용하여 신호세기와 EVM 을 측정한다.
여기서 EVM 은 모듈레이션 방식에서 일정한 영역에 점을 찍어 얼마나 균일하고 정확하게 원하는 곳에 찍히는지 여부의 정도를 나타낸다.

다시말해 무선 성능이 좋다는 것은 신호세기(rssi)가 높으면서도 EVM 값이 높은 상태를 말한다. 일반적으로 전송방식이 높을 수록 한 영역에 찍는 점의 갯수가 많아 진다(예를 들면, 64 → 256 QAM 이다).
일반적으로 속도가 높을 수록 신호세기는 낮아진다.

보드의 무선 성능을 측정하기 위해서는 802.11 a/b/g/n 으로 각각 채널을 바꿔가면서, 신호세기와 EVM 값을 측정하여 기록한다. 이 값이 이전의 보드로 측정했을 때보다 수치가 더 좋아졌는지 확인한다.
참고로 2.4GHz 에서는 CH 1,6,13 번으로 사용하고, cable loss 는 1.7 로 설정한다. 5GHz 는 CH 36,100,161 번을 사용하고, 2.7 로 설정한다.

  • computer/marvell/신호세기_측정하기.txt
  • Last modified: 3 years ago
  • by likewind