명령 설정 와 이 파이 국가 코드
4731 단어 상용 명령&도구
1. wpa_cli -i wlan0 set country [country_code]
2. service call wifi [setCountryCode_CODE] s16 [country_code]
setCountryCode_CODE IWifiManager.aidl interface IWifiManager setCountryCode ( 1 )。
3. iw reg set [country_code]
와 이 파이 신호 테스트 를 할 때 채널 연결 fail 문 제 를 자주 보고 합 니 다.
일반적으로 국가 코드 로 인해 발생 하 는데, 현재 테스트 채널 은 이 국가 코드 가 지원 되 지 않 기 때문이다.
안 드 로 이 드 폰 에서 country code 는 sim 카드 에 따라 설정 되 어 있 으 며, sim 카드 를 사용 하지 않 았 다 면 소프트웨어 의 기본 국가 코드 는 US, 즉 1 ~ 11 채널 만 지원 합 니 다.
이 럴 때 는 해당 국가 코드 를 설정 할 수 있 는 소프트웨어 지원 이 필요 하 다.물론 소프트웨어 를 쉽게 수정 하고 코드 를 컴 파일 해 국가 코드 를 지원 하 는 버 전 을 제시 할 수 있다.그러나 이런 방식 은 융통성 이 없다.
명령 을 통 해 수정 하면 매우 편리 하 다.
A. 현재 국가 번 호 를 어떻게 확인 합 니까?
1. dmesg | grep country. 예 를 들 어 Qcom 플랫폼 에는 다음 과 같은 log 가 있 습 니 다.
wlan: [591:I :HDD] hdd_reg_notifier: 722: country: US, initiator 2, dfs_region: 1
cfg80211: Regulatory domain changed to country: US
2. wpa_cli - i wlan 0 get country. 이런 방식 으로 검색 에 실패 할 수도 있 습 니 다.
# wpa_cli -i wlan0 get country
FAIL //
# wpa_cli -i wlan0 get country
US //
3. wlan 드라이버 country 보기코드 노드
cat /sys/module/wlan/parameters/country_code
설정 되 지 않 았 을 때 이 값 은 null 입 니 다.
4. 서비스 호출 명령
4.1 와 이 파이 관련 서비스 보기
# service list | grep wifi
66 wifip2p: [android.net.wifi.p2p.IWifiP2pManager]
67 rttmanager: [android.net.wifi.IRttManager]
68 wifiscanner: [android.net.wifi.IWifiScanner]
69 wifi: [android.net.wifi.IWifiManager]
133 wificond: [android.net.wifi.IWificond]
4.2 와 이 파이 서비스 에 대응 하 는 인터페이스 설명 보기
IWifiManager.aidl
./frameworks/base/wifi/java/android/net/wifi/IWifiManager.aidl
interface IWifiManager
{
int getSupportedFeatures(); //
... ...
boolean setWifiEnabled(String packageName, boolean enable);
int getWifiEnabledState();
void setCountryCode(String country, boolean persist);
String getCountryCode(); // 27
boolean isDualBandSupported();
... ...
}
IWifiManager.java
./out/soong/.intermediates/frameworks/base/framework/android_common/gen/aidl/frameworks/base/wifi/java/android/net/wifi/IWifiManager.java
static final int TRANSACTION_getSupportedFeatures = (android.os.IBinder.FIRST_CALL_TRANSACTION + 0);
... ...
static final int TRANSACTION_setCountryCode = (android.os.IBinder.FIRST_CALL_TRANSACTION + 25);
static final int TRANSACTION_getCountryCode = (android.os.IBinder.FIRST_CALL_TRANSACTION + 26);
... ...
getCountry Code 는 27 번 째 방법 으로 services call 을 사용 하여 국가 코드 를 가 져 옵 니 다.
# service call wifi 27
Result: Parcel(00000000 00000002 004e0043 00000000 '........U.S.....')
국가 번 호 를 가 져 오 는 것 은 US 입 니 다.
B. 어떻게 명령 을 통 해 국가 코드 를 수정 합 니까?예 를 들 어 국가 코드 를 CN (중국) 으로 설정 합 니 다.
1. wpa_cli
wpa_cli -i wlan0 set country CN
2. service call
setCountry Code 는 와 이 파이 서비스 27 번 째 방법 입 니 다.
# service call wifi 27
Result: Parcel(00000000 00000002 00530055 00000000 '........U.S.....')
# service call wifi 26 s16 CN
Result: Parcel(00000000 '....')
# service call wifi 27
Result: Parcel(00000000 00000002 00530055 00000000 '........C.N.....')
3.
wpa_cli Driver country [CountryCode]
4.
iw reg set [CountryCode]
C. 수정 성공 여 부 를 어떻게 확인 합 니까?
1. dmesg | grep country. 예 를 들 어 Qcom 플랫폼 에는 다음 과 같은 log 가 있 습 니 다.
wlan: [42:I :HDD] hdd_reg_notifier: 722: country: CN, initiator 1, dfs_region: 1
cfg80211: Regulatory domain changed to country: CN
2. wpa_cli - i wlan 0 get country. 이런 방식 으로 검색 에 실패 할 수도 있 습 니 다.
# wpa_cli -i wlan0 get country
CN
3. iw reg get
장치 에서 국가 코드 가 지원 하 는 채널 목록 입 니 다. 코드 에서: kernel / msm - 4.4 / net / wireless / db. txt