CuBox-iシリーズでは、CuBox-i4ProだけがWiFi内蔵となっていて、CuBox-i1,CuBox-i2やCuBox-i2eXでは内蔵されていません。CuBox-i4Proの内蔵WiFiはAndroidやUbuntuなどではGUIのセッティングから容易にWiFiが利用できるようになっています。
ただし日本においては、電波法と電通法(TELEC/JATE)の認証を受けたものでないと電波を出したり、通信インフラにつなぐことができません。市販のパソコンやWiFiルーターなどをよく見るとTの字をデザインした認証マークがついているのが確認できます。
日本国内の電波や通信インフラを守る趣旨ではありますが、この認証をとるには大きな費用がかかります。ロット数の大きな量産品では単価への影響は小さくなりますが、少量しか製作(輸入)しないものでは、値段にするともとの値段の倍以上になりかねません。高くつくからといっても、認証をとっていないデバイスではWiFi を内蔵していても日本国内では法的には使えないことになります。
そこで今回の企画です。認証済みのドングルタイプのUSBアダプタを利用すればWiFi環境が使えるようになります。CuBox-i2/i2eXなどではもともとWiFiが内蔵されていないので無駄もありません。今回の検証では、CuBox-i4Proに導入しても、WiFiが2つ見えるようになることが確認できました。CuBox-i1では、Ubuntu11自体が動作しませんでした(Androidにドライバ移植ができたらまたここで報告します)。
今回のテーマは、WiFiのUSBドングルを使ってWiFiの使える端末にすることです。この際に、電波法・電通法の認証済みであることと、Linuxのドライバが利用可能であることが条件となります。(本記事ではAndroidへの対応を記述していませんが、2014.08時点でAndroid4.4対応をしました)
その条件のもとで今回使用したのはReUdo RE-UW100です。
USB 2.0/1.1、IEEE802.11b/g/n対応で、チップセットはRealtek RTL8188CUSを使用しています。
Linuxのカーネル・コンフィグレーションでは”Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter”として認識されるものです。
それでは、ポーティングを始めましょう。
ここからは、このアダプタを認識させるCuBox-i用のLinuxカーネルとモジュールを作成する手順について説明します。
Ubuntuが動作するPCを用意してください。以下は、Ubuntu PC上のターミナルでの作業が続きます。
1. まず、準備として必要なパッケージをインストールします。
$ sudo apt-get install git
$ sudo apt-get install libncurses5-dev
$ sudo apt-get install u-boot-tools
$ sudo apt-get install lzop
2) 環境変数をセットしておきます。
$ export ARCH=arm
$ export CROSS_COMPILE=arm-linux-gnueabi-
ここまでが準備作業です。
3. カーネルのソースファイルの取得と作成
1) カーネルのソースをダウンロードしましょう。
$ cd
$ mkdir kernel
$ cd kernel
$ git clone https://github.com/SolidRun/linux-imx6.git
2) カーネルのパラメータの設定をしましょう。
$ cd linux-imx6
$ make mrproper
$ make imx6_cubox-i_hummingboard_defconfig
$ make menuconfig
GUI画面でアダプタをモジュールとして取り込むように指定しましょう。
トップメニューから下のように”Generic IEEE 802.11 Networking Stack (mac80211) ”をモジュールとして組み込むように指定します。
[*] Networking support --->
-*- Wireless --->
<M> Generic IEEE 802.11 Networking Stack (mac80211)
を2回選択して、トップ・レベルに戻ります。
トップメニューから下のように”Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter”をモジュールとして組み込むように指定します。
Device Drivers --->
[*] Network device support --->
[*] Wireless LAN --->
<M> Ralink driver support --->
<M> Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter
を何回か選択して、最後にこの設定を保存するか質問してきますまでを選択してGUIメニューを終了します。
(操作の説明が難しいのですが、最終的にセットされているかを確認してみてください)
3) カーネルの生成です。
$ make uImage
$ make modules
$ mkdir ../modules
$ export INSTALL_MOD_PATH=../modules/
$ make modules_install
4. CuBox-i起動SDカードの生成
ここで、CuBox-i用のUbuntuを書き込んだSDカードを用意してください。
SDカードの生成については「CuBox-iにUbuntu12.04をインストールする」を参照してください。
上で作成したカーネル、モジュール、ファームウェアをSDカードに書き込みましょう。
SDカードをUbuntu PCに挿入してください。
自動的に /media/foo/sd01 にマウントされたものとします。
(自動マウントしない場合は、ご自身でマウントしてください。)
1) カーネルの書き込み
$ sudo cp arch/arm/boot/uImage /media/foo/sd01/boot
2) モジュールの書き込み
$ sudo cp -rf ../modules/lib/* /media/foo/sd01/lib
$ sudo cp -rf /lib/firmware/rtlwifi /media/foo/sd01/lib/firmware
$ dmesg
rtl8192cu: MAC address: 80:1f:02:68:a5:2b
rtl8192cu: Board Type 0
init: plymouth-splash main process (2488) terminated with status 2
init: plymouth main process (1393) killed by SEGV signal
init: failsafe main process (2569) killed by TERM signal
rtl8192cu: rx_max_size 15360, rx_urb_num 8, in_ep 1
ieee80211 phy0: Selected rate control algorithm 'rtl_rc'
usbcore: registered new interface driver rtl8192cu
eth0: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=1:04, irq=-1)
rtl8192cu: MAC auto ON okay!
rtl8192cu: Tx queue select: 0x05
rtl8192c: Loading firmware file rtlwifi/rtl8192cufw.bin
このようにMAC addressが正しく表示され、firmware fileのロードができていたらOKです。
もし、ファームウエアがなかったり、正しくないときには
rtl8192cu:rtl92cu_init_sw_vars():<0-0> Failed to request firmware!
rtlwifi:rtl_usb_probe():<0-0> Can’t init_sw_vars.
のように表示されます。
2) 次にlsmodコマンドでモジュールが組み込まれているか確認します。
$ lsmod
Module Size Used by
rtl8192cu 91575 0
rtlwifi 67976 1 rtl8192cu
rtl8192c_common 54770 1 rtl8192cu
mac80211 163149 3 rtl8192cu,rtlwifi,rtl8192c_common
このようにWirelessが表示されれば成功です。
あとは、通常のWiFiの設定をすればネットワークに接続できます。
コメントをお書きください