togotoday
2014年12月1日 12時15分
いつも大変お世話になっております。
坂本と申します
Armadillo-840でPlanex社製GW-450Dを使用したいのですが、
以下のサイトの手順で作業を行いましが、ドングル挿入時に
http://armadillo.atmark-techno.com/howto/a800-ieee80211ac-gw-450d
エラーが発生し、通信できない状況です。
usb 1-1: new high-speed USB device number 4 using rmobile-ehci-driver rtusb init rt2870 ---> <-- RTMPAllocTxRxRingMemory, Status=0 <-- RTMPAllocAdapterBlock, Status=0 usbcore: registered new interface driver rt2870 -->RTUSBVenderReset <--RTUSBVenderReset Key1Str is Invalid key length(0) or Type(0) Key2Str is Invalid key length(0) or Type(0) Key3Str is Invalid key length(0) or Type(0) Key4Str is Invalid key length(0) or Type(0) NVM is Efuse and its size =1d[1e0-1fc] /home/atmark/kernel/gw-450d_driver_linux_v3002/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/../../chips/mt76x0.c:2114 assert (pAd->TxPower[choffset].Channel == 36)failed ERROR!!! E2PROM: WRONG VERSION 0x2, should be 1 Temperature Tx ALC not enabled RTMPSetPhyMode: channel is out of range, use first channel=1 <==== rt28xx_init, Status=0
Kernelのバージョンは3.4-at10です。
「ERROR!!! E2PROM: WRONG VERSION 0x2, should be 1」
のエラーメッセージが気になっておりますが、
何かこのエラーを切り抜ける方法等ございませんでしょうか。
何卒宜しくお願い申し上げます。
コメント
at_takashi.sasayama
togotoday
at_takashi.sasayama
笹山です。
> RT2870STA.datの値を確認しましたところ、
> 以下のようになっておりました。
>
> #The word of "Default" must not be removed
> Default
> CountryRegion=5
> CountryRegionABand=1
> CountryCode=JP
>
> これは期待値と異なっていますでしょうか。
期待通りの値ですね。
パッチは正常に適用されていると考えます。
>「ERROR!!! E2PROM: WRONG VERSION 0x2, should be 1」
> のエラーメッセージが気になっておりますが、
> 何かこのエラーを切り抜ける方法等ございませんでしょうか。
改めてエラーメッセージを見ますと、
init のステータスは 0(成功)となっていますね。
<==== rt28xx_init, Status=0
またHowtoの手順で動作確認を行いますと、
wpa_supplicantによるAPへの接続時に、
同様のログが出力されていることを確認しました。
エラーメッセージは気になりますが、
ifconfig ra0 up はエラーにはなっていないので、
通信は確認できると思います。
以下、エラーメッセージを基にしたGW-450Dドライバの解析結果です。
> /home/atmark/kernel/gw-450d_driver_linux_v3002/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/../../chips/mt76x0.c:2114 assert (pAd->TxPower[choffset].Channel == 36)failed
>
assertのメッセージは、chips/mt76x0.c 2114行目で出力されています。
2115行目で choffset を設定後、2116行目の assert には引っかかっていません。
後続処理の設定値としては、問題ない値が使われているようです。
2114: ASSERT((pAd->TxPower[choffset].Channel == 36)); 2115: choffset = 14; 2116: ASSERT((pAd->TxPower[choffset].Channel == 36));
> ERROR!!! E2PROM: WRONG VERSION 0x2, should be 1
>
E2PROMのversionは1のはずだけど、2になっていると警告しています。
このエラーメッセージは、common/rtmp_init.c 451行目で出力されています。
このメッセージが出力されても、後続の処理は実行されます。
449 if (Version.field.Version > VALID_EEPROM_VERSION) 450 { 451 DBGPRINT_ERR(("E2PROM: WRONG VERSION 0x%x, should be %d\n", Version.field.Version, VALID_EEPROM_VERSION)); 452 }
なお、上記コードの付近には、
「E2PROMのversionが違っていたら、処理を中止しエラーを通知してください」
という旨の記述がありました。
443 /* if E2PROM version mismatch with driver's expectation, then skip*/ 444 /* all subsequent E2RPOM retieval and set a system error bit to notify GUI*/
残念ながらE2PROM version 1 と 2 の差分情報が見つからなかったので、
version不一致による影響は調査しきれていません。
何かわかりましたら、追記したいと思います。
togotoday
togotoday
笹山様
いつもお世話になります。坂本です。
ドングルエラーの件ですが、おかげさまで、いまだエラー表示はあるものの通信ができるようになりました。
ただし、以下のようなメッセージが/var/log/syslogに頻繁に出力され、ディスク容量を圧迫するので、困っています。
Dec 2 06:25:30 debian kernel: Err;FC.ToDs
Dec 2 06:25:33 debian kernel: ===>rt_ioctl_giwscan. 64(64) BSS returned, data->length = 8859
Dec 2 06:25:37 debian kernel: Err;FC.ToDs
Dec 2 06:25:40 debian kernel: Err;FC.ToDs
Dec 2 06:25:42 debian kernel: ===>rt_ioctl_giwscan. 65(65) BSS returned, data->length = 9046
Dec 2 06:25:46 debian kernel: Err;FC.ToDs
Dec 2 06:25:46 debian kernel: Err;FC.ToDs
Dec 2 06:25:51 debian kernel: ===>rt_ioctl_giwscan. 65(65) BSS returned, data->length = 8825
Dec 2 06:25:56 debian kernel: Err;FC.ToDs
Dec 2 06:26:00 debian kernel: ===>rt_ioctl_giwscan. 66(66) BSS returned, data->length = 9027
Dec 2 06:26:01 debian kernel: Err;FC.ToDs
Dec 2 06:26:06 debian kernel: Err;FC.ToDs
Dec 2 06:26:06 debian kernel: Err;FC.ToDs
Dec 2 06:26:09 debian kernel: ===>rt_ioctl_giwscan. 65(65) BSS returned, data->length = 9007
Dec 2 06:26:11 debian kernel: Err;FC.ToDs
Dec 2 06:26:11 debian kernel: Err;FC.ToDs
Dec 2 06:26:16 debian kernel: Err;FC.ToDs
Dec 2 06:26:19 debian kernel: ===>rt_ioctl_giwscan. 66(66) BSS returned, data->length = 8935
Dec 2 06:26:21 debian kernel: Err;FC.ToDs
Dec 2 06:26:21 debian kernel: Err;FC.ToDs
Dec 2 06:26:21 debian kernel: Err;FC.ToDs
Dec 2 06:26:28 debian kernel: ===>rt_ioctl_giwscan. 66(66) BSS returned, data->length = 9004
Dec 2 06:26:30 debian kernel: Err;FC.ToDs
Dec 2 06:26:37 debian kernel: ===>rt_ioctl_giwscan. 66(66) BSS returned, data->length = 8898
Dec 2 06:26:37 debian kernel: Err;FC.ToDs
Dec 2 06:26:40 debian kernel: Err;FC.ToDs
Dec 2 06:26:46 debian kernel: ===>rt_ioctl_giwscan. 66(66) BSS returned, data->length = 8974
Dec 2 06:26:46 debian kernel: Err;FC.ToDs
Dec 2 06:26:47 debian kernel: Err;FC.ToDs
Dec 2 06:26:52 debian dhclient: DHCPDISCOVER on ra0 to 255.255.255.255 port 67 interval 8
Dec 2 06:26:55 debian kernel: ===>rt_ioctl_giwscan. 66(66) BSS returned, data->length = 9069
Dec 2 06:26:58 debian kernel: Err;FC.ToDs
Dec 2 06:27:00 debian dhclient: DHCPDISCOVER on ra0 to 255.255.255.255 port 67 interval 13
Dec 2 06:27:02 debian kernel: Err;FC.ToDs
これを抑止する方法についてお知恵を借りたくて投稿いたしました。
宜しくお願いします。
at_takashi.sasayama
笹山です。
> ただし、以下のようなメッセージが/var/log/syslogに頻繁に出力され、ディスク容量を圧迫するので、困っています。
> Dec 2 06:25:30 debian kernel: Err;FC.ToDs
> Dec 2 06:25:33 debian kernel: ===>rt_ioctl_giwscan. 64(64) BSS returned, data->length = 8859
> Dec 2 06:25:37 debian kernel: Err;FC.ToDs
> Dec 2 06:25:40 debian kernel: Err;FC.ToDs
> Dec 2 06:25:42 debian kernel: ===>rt_ioctl_giwscan. 65(65) BSS returned, data->length = 9046
> : 以下省略
>
> これを抑止する方法についてお知恵を借りたくて投稿いたしました。
抑止する方法ですが、2種類考えられます。
1.エラーログを一切出力しないように変更する
2.エラーログの原因を取り除く
まず、エラーログを一切出力しない変更方法です。
添付のパッチを適用してドライバを再ビルドするとログが出力されなくなります。
デバッグログを有効にするには、 DEBUG_LOG=y を指定して、再ビルドを行ってください。
パッチ名: armadillo-8x0-mt7610u_wifi_sta_v3002_dpo_20130916-DebugLog-Select.patch
パッチはHowto内の パッチの適用を行った環境に対して使用してください。
パッチは以下のコマンドで適用ができます。
patch -p0 < armadillo-8x0-mt7610u_wifi_sta_v3002_dpo_20130916-DebugLog-Select.patch
ログ出力を無効にしてビルド
make clean;make KSRC=~/atmark-dist/linux-3.x or make clean;make KSRC=~/atmark-dist/linux-3.x DEBUG_LOG=n
ログ出力を有効にしてビルド
make clean;make KSRC=~/atmark-dist/linux-3.x DEBUG_LOG=y
次に、エラーログの原因を取り除くですが、
2種のログが大半を占めていましたので、それらを解析をしてみました。
1つ目の頻発しているログ
> Dec 2 06:25:40 debian kernel: Err;FC.ToDs
出力個所は以下です。
mt7610u_wifi_sta_v3002_dpo_20130916/common/cmm_data_usb.c:1350行目
1346 #ifndef CLIENT_WDS 1347 if (pHeader->FC.ToDs 1348 ) 1349 { 1350 DBGPRINT_RAW(RT_DEBUG_ERROR, ("Err;FC.ToDs\n")); 1351 return NDIS_STATUS_FAILURE; 1352 } 1353 #endif /* CLIENT_WDS */
WDSクライアント機能に対応していないにも関わらず、
間連する値が有効になっている為、エラーとなっています。
Howtoのパッチを適用した状態では、WDSクライアント機能は無効です。
しかし有効/無効に関わらず、FC.ToDs を 1 にする処理が、ドライバ内に数か所ありました。
何れかの処理が適切ではない為に、エラーになっていると推測しています。
以下の様に RT_DEBUG_ERROR を RT_DEBUG_INFO にすると、ログを抑制することができます。
(もしくは1350行目をコメントアウトしてしまうのも、一つの方法かと思います。)
1350 DBGPRINT_RAW(RT_DEBUG_INFO, ("Err;FC.ToDs\n"));
2つ目の頻発しているログです。
> Dec 2 06:25:33 debian kernel: ===>rt_ioctl_giwscan. 64(64) BSS returned, data->length = 8859
出力個所は以下です。
mt7610u_wifi_sta_v3002_dpo_20130916/sta/sta_cfg.c:7948行目
7948 DBGPRINT(RT_DEBUG_ERROR ,("===>rt_ioctl_giwscan. %d(%d) BSS returned, data->length = %ld\n", pAd->ScanTab.BssNr , pAd->ScanTab.BssNr, Data));
前後の処理を見ると、エラーが"発生しなかった時"に、このログは出力されます。
その為、エラーログとして出力するものでは無いように思えます。
先と同様に、RT_DEBUG_ERROR を RT_DEBUG_INFO に変更して、ログを抑制してしまうのが良いかと思います。
7948 DBGPRINT(RT_DEBUG_INFO ,("===>rt_ioctl_giwscan. %d(%d) BSS returned, data->length = %ld\n", pAd->ScanTab.BssNr , pAd->ScanTab.BssNr, Data));
また以下の RT_DEBUG_ERROR を 1 から 5 に変えると、
まとめて抑制することもできます。
mt7610u_wifi_sta_v3002_dpo_20130916/include/rtmp_comm.h:88行目
83 /* ======================== Debug =========================================== */ 84 /* */ 85 /* Debug information verbosity: lower values indicate higher urgency */ 86 /* */ 87 #define RT_DEBUG_OFF 5 88 #define RT_DEBUG_ERROR 1 # 1 から 5 に変更する 89 #define RT_DEBUG_WARN 2 90 #define RT_DEBUG_TRACE 5 91 #define RT_DEBUG_INFO 5 92 #define RT_DEBUG_LOUD 5
本件、Howtoの内容へフィードバックをしたく思います。
ご報告有難うございました。
ファイル | ファイルの説明 |
---|---|
armadillo-8x0-mt7610u_wifi_sta_v3002_dpo_20130916-DebugLog-Select.patch | mt7610u_wifi_sta_v3002_dpo_20130916デバッグログパッチ |
togotoday
at_takashi.sasayama
2014年12月1日 13時25分
笹山です。
> Kernelのバージョンは3.4-at10です。
> 「ERROR!!! E2PROM: WRONG VERSION 0x2, should be 1」
> のエラーメッセージが気になっておりますが、
> 何かこのエラーを切り抜ける方法等ございませんでしょうか。
エラーログを見る限りですと、
RT2870STA.dat の設定値が原因でエラーが発生していると考えられます。
まずArmadillo上で、RT2870STA.dat の設定値が、
以下の値になっているかを確認してみてください。
ファイルパス : /etc/Wireless/RT2870STA/RT2870STA.dat
仮に、CountryRegion=7 CountryCode=(値無し)
と設定されている場合は、RT2870STA.dat にパッチが適用されていません。
この際、同様のエラーが発生します。
RT2870STA.dat の設定値が異なっていた場合は、Howtoのパッチの適用とビルドの作業を
見直してみてください。
Howto : Armadillo-810/840で IEEE802.11ac USB無線LANアダプタ GW-450Dを動作させる
GW-450D Linux用ドライバー パッチの適用とビルド
http://armadillo.atmark-techno.com/howto/a800-ieee80211ac-gw-450d#step2…