OpenWrt에서 MediaTek 무선 장치의 txpower가 예상보다 낮게 보일 때 가장 흔한 실수는 서로 다른 네 가지 값을 하나로 취급하는 것입니다. /etc/config/wireless의 요청값, iw가 보여주는 런타임값, 국가·채널별 규제 상한, 클라이언트에서 측정한 RSSI는 같은 값이 아닙니다.
설정의 option txpower는 하드웨어에 그 출력으로 송신하라고 강제하는 명령이 아니라 사용자가 요청하는 상한입니다. 실제 출력은 규제 도메인, 채널과 폭, EEPROM·보정 데이터, 드라이버와 펌웨어가 허용하는 범위보다 높아질 수 없습니다. 따라서 숫자가 낮다는 이유만으로 mt76 회귀라고 결론 내리거나 다른 국가 코드를 넣어 상한을 우회해서는 안 됩니다.
먼저 네 가지 값을 분리합니다
| 값 | 어디서 확인하는가 | 의미 |
|---|---|---|
| 설정 요청값 | uci -q get wireless.radio0.txpower |
사용자가 지정한 최대 요청값. 비어 있어도 제한이 없다는 뜻은 아님 |
| 런타임 표시값 | iw dev wlan0 info |
현재 인터페이스에 표시되는 값. 장치에 따라 보고 기능이 제한될 수 있음 |
| 규제 상한 | iw reg get, iw phy phy0 info |
국가, 주파수, 채널 폭, DFS 조건에 따라 적용되는 허용 범위 |
| 링크 품질 | iw dev wlan0 station dump와 같은 위치의 반복 측정 |
RSSI, 재시도, 비트레이트, 처리량. AP txpower만으로 결정되지 않음 |
OpenWrt 문서는 올바른 설치 국가를 설정해야 하며, 규제 범위가 하드웨어가 낼 수 있는 출력보다 낮으면 그 범위로 제한된다고 설명합니다. Linux wireless의 cfg80211 규제 처리도 장치가 등록한 원래 한계를 최대치로 보존하고, 현재 규제 도메인과 드라이버·EEPROM 힌트를 함께 적용합니다.
radio, PHY, 인터페이스 이름부터 연결합니다
radio0, phy0, wlan0이 항상 같은 물리 장치를 뜻한다고 가정하면 다른 대역의 값을 비교할 수 있습니다. 먼저 장치와 OpenWrt 버전, UCI radio, 실제 인터페이스를 한 번에 기록합니다.
ubus call system board
uci show wireless | grep '=wifi-device'
iw dev
iw reg get
ubus call system board의 release와 target, iw dev의 wiphy 번호를 함께 저장합니다. 이후 예시의 radio0, phy0, wlan0은 방금 확인한 이름으로 바꿉니다.
uci -q get wireless.radio0.country
uci -q get wireless.radio0.txpower
iw phy phy0 info
iw dev wlan0 info
logread | grep -iE 'mt76|firmware|eeprom|calib|regulatory|txpower'
dmesg | grep -iE 'mt76|firmware|eeprom|calib|regulatory|txpower'
iw reg get이 country 00으로 시작하면 보수적인 world regulatory domain이 적용됐을 수 있습니다. 다만 country를 고쳐도 EEPROM·보정 데이터나 펌웨어가 더 낮은 상한을 적용할 수 있으므로, country 변경만으로 드라이버 이상 여부를 판단하지 않습니다.
안전하게 수정할 수 있는 것은 두 가지입니다
수정 전에는 무선 설정을 백업합니다. 무선 reload는 연결 중인 클라이언트를 끊을 수 있으므로 SSH를 Wi-Fi로 접속 중이라면 유선 관리 경로나 복구 계획을 먼저 마련합니다.
cp /etc/config/wireless /root/wireless.before-txpower
ls -l /root/wireless.before-txpower
1. 실제 설치 국가를 설정합니다
아래는 대한민국에서 운용하는 radio0의 예시입니다. 다른 지역에서는 반드시 실제 설치 국가의 ISO 3166-1 alpha-2 코드를 사용합니다.
uci set wireless.radio0.country='KR'
uci commit wireless
wifi reload
iw reg get
DFS 채널은 규정에 따른 채널 가용성 검사가 끝나기 전까지 바로 올라오지 않을 수 있습니다. reload 직후의 짧은 Wi-Fi 중단을 곧바로 출력 문제로 오인하지 않습니다.
2. 과거 테스트의 낮은 override를 제거합니다
명시적 txpower 값이 있고 그 값을 제거해 드라이버 기본과 규제 상한으로 돌아가려는 경우에만 실행합니다.
uci -q delete wireless.radio0.txpower
uci commit wireless
wifi reload
uci -q get wireless.radio0.txpower
마지막 명령이 아무것도 출력하지 않으면 명시적 override가 없다는 뜻입니다. 무제한 출력이나 하드웨어 최대 출력이 보장된다는 뜻은 아닙니다.
수정 뒤에는 숫자보다 조건을 맞춰 비교합니다
- 같은 radio, 채널, 채널 폭과 국가 코드를 사용합니다.
- 같은 위치와 같은 클라이언트에서 RSSI, tx bitrate, 재시도와 처리량을 비교합니다.
- 2.4GHz 결과를 5GHz의 정상 기준으로 사용하지 않습니다.
- 펌웨어 업데이트 전후를 비교할 때는 전체 설정 백업을 통째로 복원하지 말고 비교에 필요한 항목만 맞춥니다.
firmware,EEPROM,calibration오류가 남아 있으면 요청값을 높이지 않습니다.
| 관찰 결과 | 다음 판단 |
|---|---|
| 낮은 UCI override를 제거하자 런타임값이 정상 범위로 변함 | 설정 상한이 원인이었음 |
| country가 실제 설치 국가와 달랐고 수정 후 채널·상한이 변함 | 규제 도메인 설정 문제였음 |
| country와 설정이 같아도 특정 이미지에서만 비정상적으로 낮음 | release, target, mt76 로그를 묶어 회귀 가능성을 조사 |
| 표시값은 낮지만 같은 위치의 링크 품질은 이전과 같음 | 보고값과 실제 RF 성능을 분리해 추가 측정 |
| EEPROM·calibration 오류가 반복됨 | 규제 우회가 아니라 보드 데이터와 펌웨어 문제를 우선 해결 |
이렇게 설정하지 않습니다
- 출력을 높이기 위해 실제 위치와 다른 country를 설정하지 않습니다.
iw숫자 하나만으로 안테나 출력이나 법적 EIRP를 단정하지 않습니다.- RSSI가 낮다는 이유만으로 AP txpower 문제로 확정하지 않습니다. 클라이언트 출력, 거리, 간섭과 안테나 조건도 영향을 줍니다.
- 인터넷의 임의 regulatory database 패치나 EEPROM 우회 절차를 적용하지 않습니다.
이슈를 보고할 때 필요한 묶음
설정과 규제 범위가 정상인데 특정 OpenWrt 이미지에서만 문제가 반복된다면 ubus call system board, iw reg get, 해당 PHY 정보, mt76 로그, 보드 이름, 이미지 파일명, 채널과 폭을 함께 제공합니다. “txpower가 낮다”는 한 문장보다 이 묶음이 있어야 표시 문제, 보드 보정 데이터, 실제 회귀를 구분할 수 있습니다.
공식 문서
- OpenWrt 무선 장치 스키마 — 국가 코드, 사용 가능 채널과 규제 출력 제한
- OpenWrt mac80211 radio 설정 — radio 출력과 장치 설정 처리
- Linux wireless regulatory rules processing — cfg80211, EEPROM 힌트와 채널별 상한 처리