LoginSignup
6
7

More than 5 years have passed since last update.

Raspberry Pi 3 で BUFFALO WI-U2-433DM 動かして無線LANルータにする

Last updated at Posted at 2017-11-10

Raspberry Pi で 無線ルータを作ります。
Raspberry Pi 3 や Raspberry Pi Zero W の場合は内蔵で Wi-Fi 機能が入ってますが今回はその機能を使いません。
こちらを使います。

IMG_20170419_191034 (1).jpg

BUFFALO WI-U2-433DM。802.11acのUSBドングルです。
RaspberryPiにWi-Fiドングルを刺して使おうとしても、不安定なことが多いのですが、これはいろいろ検証の結果、安定して使えるものです。

参考にしたサイト

環境

$ cat /etc/issue
Raspbian GNU/Linux 8 \n \l

$ uname -a
Linux raspberrypi 4.9.24-v7+ #993 SMP Wed Apr 26 18:01:23 BST 2017 armv7l GNU/Linux

ちょっと前のRaspbian

作業

まずは、オンボードのWi-Fiを切る。


sudo iwconfig wlan0 txpower off
sudo reboot

再起動してから確認。


 ifconfig
eth0      Link encap:イーサネット  ハードウェアアドレス b8:27:eb:4e:68:13 
          inetアドレス:192.168.42.1 ブロードキャスト:192.168.42.255  マスク:255.255.255.0
          inet6アドレス: fe80::8c27:2c04:1750:9b0c/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:2942 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:2993 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000 
          RXバイト:452726 (442.1 KiB)  TXバイト:2100986 (2.0 MiB)

eth0:1    Link encap:イーサネット  ハードウェアアドレス b8:27:eb:4e:68:13 
          inetアドレス:169.254.12.25 ブロードキャスト:169.254.255.255  マスク:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1

eth1      Link encap:イーサネット  ハードウェアアドレス 98:f1:99:7f:9d:79 
          inetアドレス:192.168.179.2 ブロードキャスト:192.168.179.255  マスク:255.255.255.0
          inet6アドレス: fe80::e3d2:ef35:8418:f30/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:3075 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:2881 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000 
          RXバイト:2052042 (1.9 MiB)  TXバイト:608318 (594.0 KiB)

切れてます。では8821AUのドライバをインストールしていきます。


$ git clone https://github.com/abperiasamy/rtl8812AU_8821AU_linux.git
Cloning into 'rtl8812AU_8821AU_linux'...
remote: Counting objects: 1557, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 1557 (delta 4), reused 4 (delta 4), pack-reused 1544
Receiving objects: 100% (1557/1557), 3.56 MiB | 629.00 KiB/s, done.
Resolving deltas: 100% (958/958), done.
Checking connectivity... done.
pi@raspberrypi:~/433DM $ ls
rtl8812AU_8821AU_linux
pi@raspberrypi:~/433DM $ cd rtl8812AU_8821AU_linux/
pi@raspberrypi:~/433DM/rtl8812AU_8821AU_linux $ vim Makefile

architecture を i386をnにして、arm_rpiをyにする。


make するけどエラー。


$ make
make ARCH=arm CROSS_COMPILE= -C /lib/modules/4.9.24-v7+/build M=/home/pi/433DM/rtl8812AU_8821AU_linux  modules
make[1]: *** /lib/modules/4.9.24-v7+/build: そのようなファイルやディレクトリはありません.  中止.
Makefile:1584: recipe for target 'modules' failed
make: *** [modules] Error 2

real    0m0.078s
user    0m0.020s
sys 0m0.000s

kernel source をインストール


pi@raspberrypi:~/433DM $ sudo wget "https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source" -O /usr/bin/rpi-source
--2017-11-10 09:43:04--  https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source
raw.githubusercontent.com (raw.githubusercontent.com) をDNSに問いあわせています... 151.101.88.133
raw.githubusercontent.com (raw.githubusercontent.com)|151.101.88.133|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 12672 (12K) [text/plain]
`/usr/bin/rpi-source' に保存中

/usr/bin/rpi-source 100%[=====================>]  12.38K  --.-KB/s 時間 0.01s  

2017-11-10 09:43:05 (830 KB/s) - `/usr/bin/rpi-source' へ保存完了 [12672/12672]

pi@raspberrypi:~/433DM $ sudo chmod 755 /usr/bin/rpi-source 
pi@raspberrypi:~/433DM $ rpi-source

 *** Updating rpi-source
--2017-11-10 09:43:45--  https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source
raw.githubusercontent.com (raw.githubusercontent.com) をDNSに問いあわせています... 151.101.88.133
raw.githubusercontent.com (raw.githubusercontent.com)|151.101.88.133|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 12672 (12K) [text/plain]
`/usr/bin/rpi-source' に保存中

/usr/bin/rpi-source 100%[=====================>]  12.38K  --.-KB/s 時間 0.08s  

2017-11-10 09:43:46 (161 KB/s) - `/usr/bin/rpi-source' へ保存完了 [12672/12672]


 *** Set update tag: 0981c097215848b068a2d7ede5c348d68a8d486b

 *** Restarting rpi-source

 *** gcc version check: OK
ERROR:
bc is NOT installed. Needed by 'make modules_prepare'. On Raspbian, run 'sudo apt-get install bc' to install it.

Help: https://github.com/notro/rpi-source/wiki
pi@raspberrypi:~/433DM $ cd rtl8812AU_8821AU_linux/
pi@raspberrypi:~/433DM/rtl8812AU_8821AU_linux $ make
make ARCH=arm CROSS_COMPILE= -C /lib/modules/4.9.24-v7+/build M=/home/pi/433DM/rtl8812AU_8821AU_linux  modules
make[1]: *** /lib/modules/4.9.24-v7+/build: そのようなファイルやディレクトリはありません.  中止.
Makefile:1584: recipe for target 'modules' failed
make: *** [modules] Error 2

bcが無くてえら


pi@raspberrypi:~/433DM/rtl8812AU_8821AU_linux $ sudo apt-get install bc
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  bc
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
96.3 kB のアーカイブを取得する必要があります。
この操作後に追加で 195 kB のディスク容量が消費されます。
取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main bc armhf 1.06.95-9 [96.3 kB]
96.3 kB を 2秒 で取得しました (45.1 kB/s)
以前に未選択のパッケージ bc を選択しています。
(データベースを読み込んでいます ... 現在 38306 個のファイルとディレクトリがインストールされています。)
.../bc_1.06.95-9_armhf.deb を展開する準備をしています ...
bc (1.06.95-9) を展開しています...

もう一度


$ rpi-source

 *** gcc version check: OK

 *** Using: /usr/share/doc/raspberrypi-bootloader/changelog.Debian.gz

 *** Latest firmware revision: cb0b0ad6d11ddd251327303a97ba26a43e6b5b4b

 *** Linux source commit: ef3b440e0e4d9ca70060483aa33d5b1201ceceb8

 *** Download kernel source
--2017-11-10 09:45:21--  https://github.com/raspberrypi/linux/archive/ef3b440e0e4d9ca70060483aa33d5b1201ceceb8.tar.gz
・
・
・
  HOSTCC  scripts/conmakehash
  HOSTCC  scripts/recordmcount
  HOSTCC  scripts/sortextable

 *** ncurses-devel is NOT installed. Needed by 'make menuconfig'. On Raspbian sudo apt-get install libncurses5-dev

 *** Help: https://github.com/notro/rpi-source/wiki

makeする


pi@raspberrypi:~/433DM/rtl8812AU_8821AU_linux $ make
make ARCH=arm CROSS_COMPILE= -C /lib/modules/4.9.24-v7+/build M=/home/pi/433DM/rtl8812AU_8821AU_linux  modules
make[1]: Entering directory '/home/pi/linux-ef3b440e0e4d9ca70060483aa33d5b1201ceceb8'
  CC [M]  /home/pi/433DM/rtl8812AU_8821AU_linux/core/rtw_cmd.o
  CC [M]  /home/pi/433DM/rtl8812AU_8821AU_linux/core/rtw_security.o
  CC [M]  /home/pi/433DM/rtl8812AU_8821AU_linux/core/rtw_debug.o
  CC [M]  /home/pi/433DM/rtl8812AU_8821AU_linux/core/rtw_io.o
  CC [M]  /home/pi/433DM/rtl8812AU_8821AU_linux/core/rtw_ioctl_query.o
  CC [M]  /home/pi/433DM/rtl8812AU_8821AU_linux/core/rtw_ioctl_set.o
・
・
・
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/pi/433DM/rtl8812AU_8821AU_linux/rtl8812au.mod.o
  LD [M]  /home/pi/433DM/rtl8812AU_8821AU_linux/rtl8812au.ko
make[1]: Leaving directory '/home/pi/linux-ef3b440e0e4d9ca70060483aa33d5b1201ceceb8'

数分で終わった


pi@raspberrypi:~/433DM/rtl8812AU_8821AU_linux $ ls -alh *.ko
-rw-r--r-- 1 pi pi 1.8M 11月 10 09:55 rtl8812au.ko
pi@raspberrypi:~/433DM/rtl8812AU_8821AU_linux $ sudo make install
install -p -m 644 rtl8812au.ko  /lib/modules/4.9.24-v7+/kernel/drivers/net/wireless/
/sbin/depmod -a 4.9.24-v7+


インストールできたみたい


pi@raspberrypi:~/433DM/rtl8812AU_8821AU_linux $ lsmod | grep 8812
rtl8812au            1282312  0 
cfg80211              543027  2 rtl8812au,brcmfmac
pi@raspberrypi:~/433DM/rtl8812AU_8821AU_linux $ iwconfig
eth0      no wireless extensions.

wlan0     IEEE 802.11  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

eth1      no wireless extensions.

lo        no wireless extensions.

wlan1     unassociated  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency=2.412 GHz  Access Point: Not-Associated   
          Sensitivity:0/0  
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

hostapd

Raspberry Pi の Raspbianにはhostapdがパッケージとして用意されているが、


$ sudo apt-cache policy hostapd
hostapd:
  インストールされているバージョン: (なし)
  候補:               1:2.3-1+deb8u5
  バージョンテーブル:
     1:2.3-1+deb8u5 0
        500 http://mirrordirector.raspbian.org/raspbian/ jessie/main armhf Packages

バージョンが古いので

これに基づいて設定する
「Raspberry Pi / Banana Pi / Orange Pi / NanoPi などの Pi 系ボードでつくるニセアクセスポイント」
https://qiita.com/nanbuwks/items/c75f5ff8608e2060416a

なお、固定アドレスにするには記事とは異なり、以下のようにした。

IPアドレスの設定

「Raspberry Pi / Banana Pi / Orange Pi / NanoPi などの Pi 系ボードでつくるニセアクセスポイント」
https://qiita.com/nanbuwks/items/c75f5ff8608e2060416a

では /etc/network/interfaces を使って設定したが、
いまどきのRaspbianでは/etc/dhcpcd.confを使って設定する。


interface eth0
static ip_address=192.168.42.1/24
interface wlan1
static ip_address=192.168.42.254/24

としてみた。


sudo  hostapd /etc/hostapd/hostapd.conf &

としてクライアントから繋ぐと・・・つながらない。

コンソールに以下のような表示が出ている。


wlan1: AP-STA-DISCONNECTED 64:80:99:6c:d8:ec
wlan1: STA 64:80:99:6c:d8:ec IEEE 802.11: associated
wlan1: AP-STA-CONNECTED 64:80:99:6c:d8:ec
wlan1: STA 64:80:99:6c:d8:ec RADIUS: starting accounting session 54EB32C50552E9B9
wlan1: STA 64:80:99:6c:d8:ec WPA: pairwise key handshake completed (RSN)
wlan1: STA 64:80:99:6c:d8:ec IEEE 802.11: disassociated
wlan1: AP-STA-DISCONNECTED 64:80:99:6c:d8:ec
wlan1: STA 64:80:99:6c:d8:ec IEEE 802.11: associated
wlan1: AP-STA-CONNECTED 64:80:99:6c:d8:ec
wlan1: STA 64:80:99:6c:d8:ec RADIUS: starting accounting session B7162712FD1494C8
wlan1: STA 64:80:99:6c:d8:ec WPA: pairwise key handshake completed (RSN)
wlan1: STA 64:80:99:6c:d8:ec IEEE 802.11: disassociated
wlan1: AP-STA-DISCONNECTED 64:80:99:6c:d8:ec

isc-dhcp-serverが動いていなかったので再起動するとつながった。
しかし今度はつながっても通信ができない。
家庭用ルータだと、無線インターフェースも有線インターフェースも1つのIPアドレスを使っているが、今回は別々のIPアドレスを使っている。ルーティングやらiptablesの設定やらをしたら今のままでも使えるのだろうけれども、1つのIPアドレスで使えるように設定してみた。

まず、/etc/dhcpcd.confを以下のように修正。


#interface eth0
#static ip_address=192.168.42.1/24
#interface wlan1
#static ip_address=192.168.42.254/24

denyinterfaces eth0 wlan1

interface br0
static ip_address=192.168.42.1/24
static routers=192.168.179.1
static domain_name_servers=192.168.179.1

次に、/etc/network/interfacesを以下のように直した。

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet manual

auto eth0:1
iface eth0:1 inet static
address 169.254.12.25
netmask 255.255.0.0

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

auto br0
iface br0 inet manual
    bridge_ports eth0, wlan1
    bridge_stp off
    bridge_maxwait 3

そうすると、うまくつながるようになりました。
まだDNSがうまく配信できないけど、今回はローカルサーバにだけアクセスさせるからこれでいいかな。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7