Hatena::ブログ(Diary)

STUDIO-K PONTAの日記

2012年10月7日にサイト移転しました。
新しいアドレス: http://blog.studiok-i.net/

2011年05月28日

[]BeagleBoard-xM + Ubuntu無線LAN 18:32

BeagleBoard xM rev.C + Ubuntu10.10に無線LAN子機「Planex GW-USValue-EZ」を導入し、ようやく(WPAで)接続ができました。

なお、無線親機にはBuffalo WZR-HP-G300NHを使用しています。


f:id:studio_k:20110529190549j:image

BeagleBoard xM にGW-USValue-EZを取り付けたところ。小さい!!!


GW-USValue-EZのドライバはUbuntu10.10には含まれていないため、USBに挿しただけでは認識しませんでした。

GW-USValue-EZにはRTL8192CUが使われており、メーカー(realtek)のサイトからLinux用のドライバーがダウンロードできます。ただし、ソースなので、コンパイルが必要です。

以下に手順メモを記載します。


(2012/6/9追記 Ubuntu11.04以降にはドライバが含まれていましたので、コンパイルは不要です。)


【ドライバーのインストール】

  • ドライバーソースをダウンロード

http://www.realtek.com/downloads/downloadsView.aspx?Langid=4&PNid=21&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true

今回はRTL8192CU_linux_v2.0.1502.20110402.zip をダウンロードしたが、5/28時点で新しいドライバが公開されている。


  • ソースを解凍するためUNZIPをインストール

$ sudo apt-get install unzip

  • ソースの解凍

$ unzip RTL8192CU_linux_v2.0.1502.20110402.zip

  • ドライバーのビルドとインストール

$ cd RTL8192CU_8188CUS_8188CE-VAU_linux_v2.0.1502.20110402
$ sudo sh install.sh

以下のエラーで止まった。

/lib/modules/2.6.38.4-x3/build: No such file or directory.  Stop.

/lib/modules/2.6.38.4-x3

build -> /build/buildd/linux-2.6.38 へハードリンクが張られているが、リンク先が存在しない。

カーネルのビルドを行った。


★カーネルのビルド

$ sudo apt-get install bzr
$ cd
$ sudo bzr branch lp:~beagleboard-kernel/+junk/2.6-stable
$ cd 2.6-stable/
$ cp system.sh.sample system.sh
$ sudo ./build_kernel.sh

なんか聞いてくるが、デフォルトで。

(ビルドするのに8時間ほどかかった。)


※今回はカーネルをビルドしたが、以下でよかったかも。

$ sudo apt-get install kernel-devel



以上で、カーネルのビルドができたので、ドライバーのビルドに戻って、、、

$ cd /lib/modules/2.6.38.4-x3
$ sudo rm build
$ sudo ln -s /home/ubuntu/2.6-stable/KERNEL build

なぜかアーキテクチャ(arm)がうまく取れないので、セットするように修正

$ sudo vi /home/ubuntu/2.6-stable/KERNEL/Makefile

SRCARCH         := $(ARCH)  の下に
SRCARCH         := arm      を追加

$ sudo sh install.sh

コンパイルが進むが、usb_intf.cでエラー

http://blog.livedoor.jp/mtk_sugi/ を参考に、以下のように修正

$ sudo vi driver/rtl8192CU_linux_v2.0.1502.20110402/os_dep/linux/usb_intf.c

コメントアウト://pdvobjpriv->pusbdev->autosuspend_delay = 0 * HZ;//15 * HZ; idle-delay time
追加:pm_runtime_set_autosuspend_delay(&pdvobjpriv->pusbdev->dev, 0 * HZ);

install.shがdriverディレクトリを解凍してusb_intf.cを上書きしないように、tarしているところをコメントアウト

$ sudo vi install.sh

#tar zxvf $Drvfoulder

$ sudo sh install.sh

無線子機(GW-USValue-EZ)をUSBに指して、

$ lsmod

で、8192cuができていればOK。また、

$ ifconfig

で、wlan0ができていればOK

ここまでできれば、後はBeagleBoardというよりはUbuntuでの無線LANの設定の問題となる。



【無線LAN親機の設定】

今回使用した、Buffalo WZR-HP-G300NHでは無線の認証方式が「WPA/WPA2 mixedmode - PSK」となっており、この設定だとうまくいかないとの書き込みがネット上にあったので、「WPA-PSK」の固定に変更した。(この設定を変更するとつながらなくなるかは当方では未確認です。)


★設定手順

  • WEB設定画面にログインし、「無線設定」-「基本(11n/g/b)」を開く

無線の認証を「WPA-PSK」、無線の暗号化を「AES」に変更

  • 「無線設定」-「AOSS」を開く

暗号化レベル拡張機能を「無効」に変更


【無線LAN設定】

  • network-managerが動いているとうまくいかないので、停止させる。

デフォルトでは入っていないかも。入っていない場合は不要。

$ sudo stop network-manager

  • アクセスポイントのスキャン

$ iwlist wlan0 scan

で、無線親機のSSID等が表示されれば無線のドライバやハードは動いていると判断できる。(無線親機のSSIDがステルスモードの場合は表示されないと思われる。)

  • /etc/network/interfacesを以下のようにする

auto lo
iface lo inet loopback

auto wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
broadcast 192.168.0.255
wpa-driver wext
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

※なお、有線LANの設定は消しています。

※IPはDHCPではなく、固定としています。IPアドレスはネットワークに合うように適当に変更してください。

  • 暗号キーをwpa_passphraseコマンドで暗号化する

$ wpa_passphrase SSIDを記入 暗号化キーを記入

以下のような結果が表示される。

network={
        ssid="指定したSSID"
        #psk="指定した暗号キー"
        psk=暗号化された暗号キー
}

  • /etc/wpa_supplicant/wpa_supplicant.confを編集

network={
  ssid="無線親機のSSIDを書く"
  proto=WPA WPA2
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP
  psk=wpa_passphraseの暗号化された暗号キーを指定
}

  • confファイルの確認

$ sudo wpa_supplicant -iwlan1 -c /etc/wpa_supplicant/wpa_supplicant.conf -Dwext

  • 無線設定確認

$ iwconfig

で、ESSID等が表示されていればうまくいっている。

wlan0     IEEE 802.11bgn  ESSID:"指定したSSID"  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency:2.422 GHz  Access Point: XX:XX:XX:XX:XX:XX
          Bit Rate:150 Mb/s   Sensitivity:45/0
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=99/100  Signal level=-45 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

  • 設定を変更した時は以下でインタフェースを再起動させる。

$ sudo ifdown wlan0
$ sudo ifup wlan0

  • NetworkManagerをOS起動時に起動しないようにする

NetworkManagerが起動していると、うまくいかないため、停止させる。

※NetworkManagerはもともとは入っていなかったかも。

ランレベル毎に起動設定ができるはずだが、sysv-rc-confやupdate-rc.dを試してみたがうまくいかない(良く分からない)ので、/etc/init以下のファイルの拡張子を.conf以外にしてすべてのランレベルで起動しなくなるようにする。

redhat系のchkconfigとは設定方法が違っていて良く分からない

$ cd /etc/init
$ sudo mv network-manager.conf network-manager.conf.bak

OSを再起動して、ping等で通信できればOK。

TCTTCT 2011/09/08 17:09 んにちわ。現在、BeagleBoard Ubuntuで、無線LAN環境を整えようと、試みています。
本ブログの記事通りに進めておりましたら、
"$sudo wpa_supplicant (以下省略)"の部分で、"time out"となり、接続が確立できません。原因もわからず、困っています。もし、お心当たりありましたら、ご指導よろしくお願いいたします。

PONTAPONTA 2011/09/18 22:54 返事が遅くなりました。
iwlist wlan0 scan までは問題ないでしょうか?

別人TCT別人TCT 2013/11/29 20:06 TCTさんとは違う者ですが、全く同じエラーで止まりました。
iwlist wlan0 sacanを行った結果、
Interface doesn't support scanningとでました。

lsmodで、rtl8192cu とは出るのですが、8192cu単独では出ません。
これが原因で、デバイスが正しく認識できていないのでしょうか?

PONTAPONTA 2013/11/30 08:25 lsmodでrtl8192cuで出るのは問題ないと思いますが、デバイスが正常に動作していないようです。
子機はGW-USValue-EZをお使いでしょうか?GW-USValue-EZをお使いの場合、上ではUbuntuのバージョンが古いため、ドライバのビルドからの手順を記載していますが、追記で記載しているように、新しいUbuntuでは接続するだけで認識されます。Ubuntuのバージョンが古い場合はバージョンを上げると良いかもしれません。

TMCITTMCIT 2013/12/03 12:42 29日と同じ者です。早速お返事を下さり、ありがとうございます。
子機はGW-USNanoを使っています。GW-USValue-EZが入手できなかったため、同じPANEX社のGW-USNanoを用いました。

ubuntuのバージョンは13.04、カーネルのバージョンは3.7.10です。
試しにデスクトップPCのUbuntu(同じバージョン)でUSNano起動させたところ、挿入した瞬間に動作しました。子機が壊れているということはなさそうです。
ubuntuのバージョンが新しいので、ドライバも原因ではなさそうです。

現在原因が、設定ファイルのミスか使用してる子機がBeagleboardでは動かない、くらい0しかないのですが他に考えられる原因はありませんでしょうか?