
Ubuntu日本語フォーラム

ログインしていません。
この投稿は、RT2860チップを搭載した無線LANアダプタ(PCIカード)が使えましたのセルフフォローも兼ねています。
私はコレガ社のCG-WLCB144GNL(商品情報@corega.jp)をずっと使い続けています。Nattyはアルファからずっとテストに参加してきたのですが、ベータになって使えなくなったことに気づきました。
またつい最近、Buffalo社のWLI-UC-GN(商品情報@buffalo.jp)を使う機会があったのですが、やはりNattyでは使えませんでした。
原因は、これらのデバイスには2種類のカーネルモジュールが対応しており、理由はわかりませんが特定の片方でなければ適切に動作しないということのようです。設定を少し変更することでちゃんと使えるようになりました。
以下詳細です。先に無線LANデバイスに関する情報を調べるには@wiki.ubuntulinux.jpも参照しておくとよいでしょう。
まずコマンド「ifconfig」でネットワーク・インターフェイスを調べました。リストに無線LAN由来のインターフェイスが表示されなかったので、もっと低いレベルの問題と考えました。具体的にはカーネルモジュールが怪しいかなと。
コレガ社の製品のデバイス情報
$ lspci; (中略) 06:00.0 Network controller: Ralink corp. RT2800 802.11n PCI
$ lspci -vnns 06:00.0;
06:00.0 Network controller [0280]: Ralink corp. RT2800 802.11n PCI [1814:0601]
Subsystem: Allied Telesyn International Device [1259:c129]
Flags: bus master, slow devsel, latency 64, IRQ 16
Memory at c0000000 (32-bit, non-prefetchable) [size=64K]
Capabilities: <access denied>
Kernel driver in use: rt2800pci
Kernel modules: rt2860sta, rt2800pciこのデバイスはRaLink社のRT2800チップが内蔵されているようで、2種類のカーネルモジュール、「rt2800pci」または「rt2860sta」が対応しているようです。前者はオープンソースコミュニティが開発しているもの、後者はRaLink社謹製のもののようです。現在はrt2800pciの方で動作しています。
Buffalo社の製品のデバイス情報の場合は
$ lsusb; (中略) Bus 001 Device 008: ID 0411:015d MelCo., Inc. Buffalo WLI-UC-GN Wireless LAN Adapter [Ralink RT2870]
$ lsusb -t;
/: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/4p, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/4p, 480M
|__ Port 3: Dev 10, If 0, Class=vend., Driver=rt2800usb, 480Mこちらも同じくRaLink社のRT2870チップを内蔵しているようです。カーネルモジュールはオープンソースコミュニティが開発したrt2800usbを使っているようです。ひょっとしてコレガ社のものと同じ展開かなと思い調べてみると、rt2870staというカーネルモジュールがUbuntuのLinuxカーネルに組み込まれていました。
ここで、rt2800pciやrt2800usb(オープンソース)の代わりにrt2860staやrt2870sta(プロプライエタリ)を使うように設定を変更したところ、ちゃんと動作するようになりました。
手順は、まずロードされているカーネルモジュールの一覧を表示します。コレガ社のデバイスの方を例とします。
$ lsmod; Module Size Used by (中略) rt2860sta 488097 0 rt2800lib 38835 1 rt2800pci crc_ccitt 12331 2 rt2860sta,rt2800lib rt2x00pci 12721 1 rt2800pci rt2x00lib 32825 3 rt2800pci,rt2800lib,rt2x00pci mac80211 239384 3 rt2800lib,rt2x00pci,rt2x00lib cfg80211 136681 2 rt2x00lib,mac80211 eeprom_93cx6 12344 1 rt2800pci (省略)
「rt2800pci」と「rt2860sta」のどちらもロードされています。そのため、以下のコマンドで「rt2800pci」を無効にします。この際、デバイスを外しておかないと「カーネルモジュールが仕様中だよん」というエラーが出ます。
$ sudo modprobe -r rt2800pci;
再びlsmodで確認すると、rt2860staのみロードされていることがわかります。
$ lsmod; rt2860sta 488097 1 crc_ccitt 12331 1 rt2860sta
ここでデバイスを接続すると、ちゃんと動作するようになりました。lspciの出力は以下です。rt2860staが使われていることがわかります。
$ lspci -vnns 06:00.0;
06:00.0 Network controller [0280]: Ralink corp. RT2800 802.11n PCI [1814:0601]
Subsystem: Allied Telesyn International Device [1259:c129]
Flags: bus master, slow devsel, latency 64, IRQ 16
Memory at c0000000 (32-bit, non-prefetchable) [size=64K]
Capabilities: <access denied>
Kernel driver in use: rt2860sta
Kernel modules: rt2860sta, rt2800pci最後に、起動の度にmodprobeを実行するのは面倒ですので、rt2800pciとrt2800usbをblacklistに登録しました。
$ sudo gedit /etc/modprobe.d/blacklist-rt2800pci.conf;
テキストエディタが開くので「blacklist rt2800pci(改行)blacklist rt2800usb」を追記して保存、終了。
以降、rt2800pci/rt2800usbがロードされることはなくなりました。
なお、オープンソース・コミュニティの提供するカーネルモジュールが優先して適用されてしまうのは、どうやら/lib/modules/(使っているカーネル)/以下にあるファイル「modules.pcimap」と「modules.usbmap」にあるのかなと思います。オープンソース・コミュニティの提供するカーネルモジュールに関するエントリーが、プロプライエタリなカーネルモジュールに関するエントリーよりも上にあったためです。
何故オープンソースコミュニティが開発したカーネルモジュールだとうまく使えないのかというところはわかっていませんが、まず動作するようになりましたので、ワークアラウンドということでご紹介します。
オフライン
はじめまして。この投稿通りに設定して
COREGA社のPCIカードバス接続型無線LANアダプタ「CG-WLCB300GNM(ralink:rt2760チップ)」を
UBUNTU11.04で使用しようとしましたが、認識はするものの、アクセスポイントに接続できませんでした。
ですが、Mocchi氏が最後に書かれたblacklistの内容に一行追加し、RALINK社の公式ドライバを適用することで使用可能になりました。
blacklist-rt2800pci.confの内容
blacklist rt2800pci
blacklist rt2800usb
から、以下のように変更
blacklist rt2800pci
blacklist rt2800usb
blacklist rt2860sta
RALINK社ホームページより公式ドライバ(2011/05/21現座の最新版は2.4.0.0)をダウンロード
http://www.ralinktech.com/
Software→Linuxと辿り、「RT2860PCI/mPCI/CB/PCIe(RT2760/RT2790/RT2860/RT2890)」と書かれたリンク先で
Acceptボタンをクリックしてダウンロード
ダウンロードしたものを適当な場所に展開する。(今回はホームフォルダ)
展開したフォルダの中を「os→linux」と辿り、「config.mk」ファイルを次のように編集
11行目
HAS_WPA_SUPPLICANT=n
を
HAS_WPA_SUPPLICANT=y
に
14行目
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
を
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
に変更して保存
ドライバのルートフォルダ(2010_07_16_RT2860_Linux_STA_v2.4.0.0)に戻る。
ここで
$sudo make
$sudo make install
を実行します。
終了後に「/etc/Wireless/RT2860STA」フォルダが作成され、その中に「RT2860STA.dat」があることを確認。
最後に、「/etc/modules」をルート権限で開き、最終行に以下を追加
rt2860sta
すべてを実行後に再起動すると、無事アクセスポイントに接続できました。
電波状況が最良なら、270Mb/s で接続できます。
以上長文失礼いたしました。
オフライン