RaspberryPi2/3をGW-450D2で5GHz WiFi対応にしてみた(RASPBIAN STRETCH LITE版)

ガジェット・家電・グッズ
この記事は約21分で読めます。
スポンサーリンク
スポンサーリンク

3Dプリンタサーバとして使っていたRaspberryPi2が、ある日突然応答しなくなりました。

どうやらSDカードが寿命を迎えたらしい・・・。

2年程前に作ったイメージファイルからのリストアも考えましたが、RASPBIANがメジャーバージョンアップしてJESSIEからSTRETCHになったという事もあり、今回はゼロからのクリーンインストールをすることにしました。

勿論、物ぐさ太郎として、今回もキーボードもモニタも繋がずにセットアップしております。

 

こういう作業って、たまにやっておかないと忘れてしまうのよね。(^^;)

ということで、今回は自分への備忘録としてセットアップおさらい記事です。

以前のPi ZeroとJESSIE LITEでの記事はコチラ↓

Pi Zero rev1.3をGW-450D2で5GHz WiFi対応にしてみた(RASPBIAN JESSIE LITE版)
RaspberryPiの超小型バージョンのPi Zeroを5GHz無線LAN対応にしてみました。

 

対象環境

対象ハードウェア: RaspberryPi 2/3、GW-450D2

今回はARMv7コアのRaspberry Pi 2/3で試してます。

最近は「日本製」なんてのもあるのね。

尚、ARMv6コアのPi Zeroだと別な手法が必要かもしれません。(いずれ試してみようと思います)【2017/09/18追記】Pi Zeroで試してみました。コチラを参照下さい。

 

5GHz WiFiな無線LANドングルはお馴染みの11ac対応GW-450D2です。(旧版のGW-450Dでも動きました)

microSDカードは信頼?の東芝製 8GBです。

64GBも当たり前なこのご時世になぜ8GBかというと、環境構築したSDをWin32DiskImagerでイメージごとNASへバックアップしておりまして、SDの容量デカいとその分NASのストレージを圧迫するので環境構築時は出来るだけ小さい容量が望ましい・・・という事情です。

ちなみに、Win32DiskImagerでのイメージ書き込みで復元する際に、SD容量小→大の書き込みは可能。(当然、逆はNG)

なので、後から実用する予定の16GBや32GBのSDに、バックアップしておいた8GBのイメージを書き込んで、RASPBIAN上で容量拡張する手法を取ってます。(容量拡張は raspi-config 内のメニューより実行可能です)

 

対象RASPBIAN: STRETCH LITE

2017/8月、2年サイクルのメジャーバージョンアップとしてRASPBIAN STRETCHがリリースされています。

Raspbian Stretch リリース!
Raspbian Jessieに代わる新しいバージョンのRaspbian Stretchがリリースされました。 RaspbianはDebian Linuxをベースとしており、2年ごとのサイクルでメジャーバージョンアップを行うDebianに合わせてリリースされるものです。 raspberrypi.orgの記事から、変更点を簡単に取り上げます。 Sonic Pi バージョン3.0....【続きを読む】

ということで、今回は最新のSTRETCHを使う事にします。(9/6時点では、8/16付け版が最新でした)

事前に公式↓からダウンロードしておいてください。

302 Found

尚、LITE版なのは、個人的にGUIデスクトップ環境は使う予定が無いので、出来るだけ軽くしたいという事情からです。

カーネルは同じでしょうから、RASPBIAN STRETCH WITH DESKTOP版でも同じ手法が使えるとは思います。(試してはないですが。。)

 

作業概要

当ブログへリンクを下さったコチラ↓の記事内容がきっかけです。

カーネルのフルビルド無しで、モジュールビルドする方法があるんですねぇ。(情報有難うございました)

Raspberry Pi 3で GW-450D2(5GHz, 無線LAN)をセットアップする方法【カーネルの全ビルド不要!】 | IoT PLUS
はじめに Raspberry Pi 3は無線LAN(2.4GHz)を内蔵しています。しかし、今時2.4GHz帯なんて電波の干渉が多すぎて使えない(汗 なので、5GHz帯に対応した無...

ただ、日が経ってVerなどの環境が変わったせいか、先の記事通りだと若干躓いた部分もあったので、改めて自分用におさらいとして下記に纏めてみました。

 

大雑把な流れはこんな感じです。

  1. microSDカードへRASPBIAN STRETCH LITEを書き込む
  2. 有線LANでSSH接続して初期設定
  3. Linuxソースのダウンロードと関連モジュールのビルド
  4. ドライバソースへのパッチ当てとビルド&インストール
  5. 無線LANの接続設定

所用時間はPi2で1時間強といったところでした。カーネルフルビルドするより圧倒的に速い。凄い!!

 

尚、前置きでも書きましたが、物ぐさ太郎の矜持として、RaspberryPiへは何も繋がず、キーボード、モニタレスでセットアップ作業しております。(だって、モニタ繋ぐの面倒なんだもん)

なので、事前にRaspberryPiの有線LANでのIPアドレス、無線LANドングルGW-450D2のIPアドレスは把握しておく必要が有ります。 ルーターなどで、MACアドレスからIPを固定割り当てする様にしておけば問題ないでしょう。

 

では、作業を始めましょう。

 

microSDカードへRASPBIAN STRETCH LITEを書き込む

イメージファイルの書き込み

公式からダウンロードしたRASPBIANをmicroSDカードへ書き込みます。

 

私は、イメージ書き込みには「Win32DiskImager」というアプリを使っておりますが、使用方法が分からない場合は、コチラ↓を参考に。

RaspberryPi3をモニター・キーボードレスセットアップしてみた
さて、ケースも無事出来ましたので、RaspberryPi3のセットアップを行おうと思います。 いつもは、RaspberryPi用にHDMIモニタとUSBドングル付きのコードレスキーボード&マウスを用意するのですが、今回は敢えてモニタもキーボードもマウスも用意せず、何も無しのイキナリPCからの遠隔だけでセットアップしてみようと思います。(単に物ぐさなだけw)

 

SSH接続の為の事前準備

最近のRASPBIANでは、そのままだとSSH接続が使えない状態になっています。(セキュリティ対策の一環??)

コチラによると、microSDカードの/boot/直下にsshという名前で拡張子無しの空ファイルを作っておけば、RaspberryPiで起動させた際に自動的にSSH接続が有効になるみたいなので、PCから外す前にファイルを作っておきましょう。

 

有線LANでSSH接続して初期設定

有線LANを繋いで起動させ、PCからSSH接続する

先程イメージファイルを書き込んだmicroSDカードを対象のRaspberryPiへセットし、有線LANを繋いだ状態で起動させます。

(写真では気が早くGW-450D2も繋いでおりますが、繋いだまま作業しても問題なしです)

ちなみに、左の木製(MDF)ケースと右の3Dプリンタ製ケースは、当ブログで公開しているオリジナルのPiケースです。

コチラ↓の記事で紹介しておりますので、ご興味あれば是非見て行ってください。(共にデータ公開中です)

レーザーカッターでRaspberryPi2/3用のケースを作成してみた(SVGデータ公開有り)
レーザーカッターの使いこなしはまだまだですが、習作としてオリジナルのRaspberryPiケースを作ってみました。
RaspberryPi3用のケースを作成してみた(STLデータ公開有り)
FABOOL Laser Miniの制御をWindowsPCからRaspberryPiへ移行すべく、RaspberryPi3を追加発注したところ、RaspberryPi3ではmicroSDスロットの仕様が変更されていることに気付きました。 という事で、今回はRaspberryPi3のケースを作った話です。

 

閑話休題、作業を続行しましょう。

 

事前に判明している有線LANのIPアドレスに対し、PCからTera TermなどのターミナルソフトでSSH接続します。(正しいIPアドレスで、先のSSH有効化処置を行ってあれば、ちゃんと繋がる筈です)

ターミナルソフトが分からない方は、コチラ↓を参考に。

RaspberryPi3をモニター・キーボードレスセットアップしてみた
さて、ケースも無事出来ましたので、RaspberryPi3のセットアップを行おうと思います。 いつもは、RaspberryPi用にHDMIモニタとUSBドングル付きのコードレスキーボード&マウスを用意するのですが、今回は敢えてモニタもキーボードもマウスも用意せず、何も無しのイキナリPCからの遠隔だけでセットアップしてみようと思います。(単に物ぐさなだけw)

 

初期設定を行う

SSH接続で初期ユーザー「pi」でログインしているものとします。

 

下記コマンドで初期設定を行います。

$ sudo raspi-config

 

下記の項目を修正してください。

 

[Change User Password]

「pi」ユーザーのパスワードをデフォルトのまま使うのは、セキュリティリスクとなります。

後ほど、ユーザー名を「pi」から変更する作業なども行いますが、初期工程は「pi」ユーザーで進めますので、最初にデフォルトパスワードを変更しておきましょう。

 

[Localisation Options] ->[Change Locale]

「en_us.UTF-8」「ja_jp.UTF8」「ja_jp.EUC-JP」を追加して、

default system localを「ja_ja.UTF8」に変更します。

 

[Localisation Options] ->[Change Timezone]

「Asia」→「Tokyo」を選択。

 

[Localisation Options] ->[Change WiFi Country]

「JP Japan」を選択。

 

以上の項目を修正したら、Finishを選んで再起動しましょう。

 

一通りアップデートを掛ける

再起動後、もう一度「pi」ユーザーでSSH接続します。(パスワード変更した場合は新しいパスワードを入れて下さい)

 

まずは、下記コマンドで一通りアップデートをしておきます。

$ sudo apt-get update
$ sudo apt-get -y dist-upgrade
$ sudo rpi-update

【2018/2/25追記】 rpi-updateでカーネルバージョンを上げると後半で上手く行かなくなることが分かりました。(詳しくはコメント欄参照)

以前は問題なかったのですが、最近のカーネルバージョンだと問題が出る様です。

取り敢えず使いたい方は、3行目のrpi-updateを掛けないで実行してみてください。

 

rebootを促されるので、一応再起動しておきましょう。

$ sudo reboot

 

もう一度「pi」ユーザーでSSH接続し、下記コマンドで必要なプログラムをインストールします。

$ sudo apt-get install gcc make bc screen ncurses-dev git

 

Lunixソースのダウンロードと関連モジュールのビルド

カーネルバージョンを確認する

下記コマンドでカーネルのバージョンを確認します。

$ uname -r

2017/09/06時点では、「4.9.47-v7+」と返ってきました。

 

カーネルソースと関連モジュールを用意する

作業フォルダへ移動します。

$ cd /usr/src

 

カーネルソースを取得します。もし先に「uname -r」で確認したカーネルバージョンが4.9系列じゃなければ、赤字部分をバージョンに合う様に修正しましょう。

$ sudo wget https://github.com/raspberrypi/linux/archive/rpi-4.9.y.tar.gz

 

一緒に、モジュールチェックファイルも取得します。

$ sudo wget https://github.com/raspberrypi/firmware/raw/master/extra/Module.symvers

 

先程取得したカーネルソースを展開します。(赤字部分は先程のバージョンに合う様に修正しましょう)

$ sudo tar xvfz rpi-4.9.y.tar.gz

 

シンボリックリンクを作成します。(赤字部分は先程のバージョンに合う様に修正しましょう)

$ sudo ln -s /usr/src/linux-rpi-4.9.y/ /lib/modules/`uname -r`/build

 

モジュールビルド用フォルダに移動します。

$ cd /lib/modules/`uname -r`/build

 

makeコンフィギュレーションを初期化します。

$ sudo make mrproper

暫し待たされます・・・。

ちなみに、コチラによると、このコマンド中のmrproperというのは、欧州で知られてるMr.Properというクリーニング製品の名前にちなんだものだそうです。「cleanより綺麗になる」という意味合いなのかな?(笑)

 

config.gzを準備します。

$ sudo modprobe configs

 

コンフィギュレーションを作成します。

$ sudo sh -c 'gzip -dc /proc/config.gz > .config'

 

バージョンチェックで刎ねられない様に、作成したコンフィギュレーションを修正する。(赤字部分は先程のカーネルバージョンに合う様に修正しましょう)

$ sudo sed -i 's/CONFIG_LOCALVERSION="-v7"/CONFIG_LOCALVERSION="-v7+"/' /lib/modules/`uname -r`/build/.config

ちなみに、参考にさせて頂いた記事にはこの作業はありませんでしたが、私の環境では後半のismodの工程でERRORが返ってきましたので、コチラ↓を参考にこの対策を追加しました。

Page not found · GitHub Pages

尚、この対策でバージョンを合わせるだけでは不十分らしく、モジュールチェックファイルを入手してから、コンフィギュレーションの作成をする様も手順変更してあります。(本記事は修正後の手順になってます)

 

関連ファイルをmakeします。

$ sudo make modules_prepare

暫し待たされます・・・。

 

ドライバソースへのパッチ当てとビルド&インストール

Planex公式ドライバを入手する

コチラ↓から、GW-450DのPlanex公式Linux用ドライバをダウンロードします。

ダウンロード|GW-450D|プラネックス

 

取得したzipファイル中の「mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2」を、RaspberryPiへscpコマンドなどで転送します。 (Tera Termの場合は、対象のzipファイルをターミナルウィンドウへドラッグアンドドロップするとダイアログが出ますので、SCPボタンをクリックすればファイルが転送されます)

 

デフォルトだと、/home/pi/に転送されますので、確認します。

$ cd /home/pi
$ ls

「mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2」がちゃんと存在するか確認した後、解凍します。

$ sudo tar xvjf mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2

 

Planex公式ドライバのソースにパッチをあてる

このPlanexドライバはそのままでは使えず、ソースファイルの修正が必要なのですが、修正用パッチを公開されてる方がいらっしゃいますので、有り難く使わせて頂く事にします。ありがたや~

ドライバ修正パッチを取得します。

$ git clone https://gist.github.com/moutend/cb35a37297910c99d3e2 gist

 

そのままだと、何故か$HOMEパスが通らないので、パッチを一部修正します。

$ vi ./gist/patch.sh

下記1行を追加して上書き保存します。

HOME=/home/pi

 

ドライバ修正パッチを実行します。

$ sudo ./gist/patch.sh

 

gcc-4.8を準備する

ドライバのコンパイルにはgcc-4.8あるいは4.9が必要です。

ただ、gcc-4.9だとエラーチェックが厳しくてコンパイルが通らない模様。参考にさせて頂いた記事では、4.9でも通る様にソース修正されてる様です。凄い!!

「なんだか負けたような気がする」という拘りは凄く共感出来るのですが、私は物ぐさな気持ちの方が勝ってしまいまして・・・gcc-4.8でも通るなら良いか・・・ということで、本記事では4.8のままとしています。 悪しからずご了承下さい。m(__)m

 

ということで、gcc-4.8を取得します。

$ sudo apt-get -y install gcc-4.8

 

続いて、gcc-4.8の優先度を変更します。

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60

 

ちゃんと、gcc-4.8が優先になったかを確認します。

$ gcc --version | head -n 1

2017/09/06時点では、「gcc (Raspbian 4.8.5-4) 4.8.5」と返ってきました。

 

ドライバをビルドし、ロードする

ドライバのファイルがあるディレクトリへ移動します。

$ cd ./mt7610u_wifi_sta_v3002_dpo_20130916/

 

続いて、make。

$ sudo make

ちょっと待たされます。 Pi3だと4分程度、Pi2だと10分程度待たされました。

 

インストールします。

$ sudo make install

 

モジュールをロードします。

$ sudo insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/mt7650u_sta.ko

 

カーネルの依存関係情報の更新。

$ sudo depmod -a

 

エディタで、/etc/modulesに追記します。

$ sudo vi /etc/modules
末尾に以下の1行を追加して、上書き保存します。
mt7650u_sta

 

以上で、ドライバのインストール完了です。

 

続いて、無線LANの接続設定を行います。

 

無線LANの接続設定

ネットワーク設定を行う

繋ぎたい無線LANの「SSID」と「パスフレーズ」を用意し、下記コマンドを実行します。(赤字は自身の環境に置き換えて実行してください)
$ sudo sh -c 'wpa_passphrase SSID パスフレーズ >> /etc/wpa_supplicant/wpa_supplicant.conf'

尚、このwpa_passphraseコマンドは、パスフレーズを暗号化してくれるのは良いのですが、何故か暗号化されてない平文のパスフレーズをそのまま併記してくれるとても親切且つ危険なコマンドなので、作成された「wpa_supplicant.conf」ファイルの平文部分を削除しておいた方が良いです。

 

なので、エディタで平文部分だけ削除します。
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
#psk=”xxxxx”の行を削除して、上書き保存します。

 

「/etc/network/interfaces」に追記します。
$ sudo vi /etc/network/interfaces
私は下記だけ追記しています。 環境によってはステルス設定など色々あるかと思いますので、お好みに合わせて編集してください。
auto ra0
allow-hotplug ra0
iface ra0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

 

以上で設定完了です。

 

一旦、シャットダウンさせます。
$ sudo shutdown -h now

 

有線LANを外し、無線LANのIPアドレスに対しSSH接続してみましょう。
ケーブルがmicroUSBだけになって、スッキリですね。 こうでなくては!!

 

上手く接続出来たら、SDカードのイメージバックアップを忘れずにしておきましょう。
間違えてwriteしないように。 バックアップするときはreadですから。(;^ω^)

 

おまけ:セキュリティ対策とスピードテスト

以降は、お好みにあわせて実施して下さい。

 

最近はRaspberryPiを狙ったハッキングなども行われている様です。
ですので、幾つかの対策を行っておきます。

 

rootパスワード設定

初期状態では未設定なので、rootパスワードを設定しておきましょう。
$ sudo passwd root
ルート(管理者権限)の新しいパスワードを入力しましょう。

 

ユーザー名「pi」をオリジナルのユーザー名へ変更

「pi」ユーザーを削除して、新しいユーザーを追加でも良いのですが、piフォルダには色々なモノが入っている様で、経験上不都合が起こることが多いです。
なので、「pi」ユーザーの削除ではなく、ユーザー名の変更で対処することにします。

 

まず、SSHのコンフィグファイルを編集して、rootでのログインを可能にします。
$ sudo vi /etc/ssh/sshd_config
下記を1行追加します。(コメントアウトされてる分はそのままでOK)
PermitRootLogin yes
編集後、上書き保存します。

 

SSHサービスを再起動させます。
$ sudo service ssh restart

 

「pi」ユーザからログアウトします。
$ exit

 

改めて、SSH接続し、今度はユーザー名「root」でログインします。
パスワードは先程設定したモノを入力しましょう。

 

ログイン出来たら、ユーザー名「pi」を新しいユーザ名へ変更します。(自身のユーザー名に合わせて、赤字の部分を差し替えて実行して下さい)
# usermod -l newuser pi
# usermod -d /home/newuser -m newuser
# groupmod -n newuser pi

 

続いて、先程編集したSSHのコンフィグファイルを元に戻し、rootでのログインを不可にします。
# vi /etc/ssh/sshd_config
先程追加した下記1行を削除します。
PermitRootLogin yes
編集後、上書き保存します。

 

SSHサービスを再起動させます。
# service ssh restart

 

「root」ユーザからログアウトします。
# exit

 

改めて、SSH接続し、「root」と「pi」でログイン出来なくなっていることを試しておきましょう。
続いて、新しく作ったユーザー名でログイン出来ることを確認しておきましょう。パスワードは「pi」ユーザーの時に変更したままでOKです。

 

続いて、SSHのポート番号を変更・・・しても良いのですが、スキャンすりゃ分かってしまうということなので、そのままでもアリでしょう。 お好みにあわせて実施して下さい。

 

以上で、取り敢えず最低限のセキュリティ対策は完了です。
もっと細かく対策したい場合は、色々調べてみましょう。

 

スピードテスト

折角、5GHz WiFiに接続したんですから、どれくらい速度出てるのか確認したいのが人情というもの。

コチラ↓の過去記事でその辺触れてますので、ご参考に。

Pi Zero rev1.3をGW-450D2で5GHz WiFi対応にしてみた(RASPBIAN JESSIE LITE版)
RaspberryPiの超小型バージョンのPi Zeroを5GHz無線LAN対応にしてみました。

 

【2017/09/19追記】

Pi2、Pi3それぞれで試してみました。

 

<Pi2&GW-450D2の場合>

Download: 81.95 Mbit/s
Upload: 85.33 Mbit/s

 

<Pi3&GW-450D2の場合>

Download: 94.75 Mbit/s
Upload: 87.12 Mbit/s

 

Pi2でもPi3でもそんなに値は変わりませんね。

 

謝辞

参考にさせて頂いた諸々のサイトリンクです。

 

カーネルのフルビルド無しでモジュールビルドする方法を参考にさせて頂きました。

Raspberry Pi 3で GW-450D2(5GHz, 無線LAN)をセットアップする方法【カーネルの全ビルド不要!】 | IoT PLUS
はじめに Raspberry Pi 3は無線LAN(2.4GHz)を内蔵しています。しかし、今時2.4GHz帯なんて電波の干渉が多すぎて使えない(汗 なので、5GHz帯に対応した無...

 

初期にSSH接続出来ない際の対応方法として、参考にさせて頂きました。

RaspbianでSSHが繋がらなかったので繋がるようにする
Raspberry Pi 3 Model Bを使おうと、SDに書き込んでインストールしたRaspbianにSSHで接続しようとしたら、全然繋がらなかった。 調べてみたところ、RASPBIAN JESSIE 2016-11-25のバージョンか

 

insmodで「insmod: ERROR: could not insert module ・・・:Invalid module format」のエラーが出て困り果てた際に、参考にさせて頂きました。

Page not found · GitHub Pages

 

Planexドライバのパッチを公開されている方、有り難く活用させて頂きました。

301 Moved Permanently

 

セキュリティ対策について、参考にさせて頂きました。

Raspberry Pi 3のセキュリティ対策を行う
サーバー用途としてインストールしたRASPBIAN JESSIE LITEだけど、テスト用ならまだしも、外部に公開するにはそのままの状態では、非常によろしくないのでセキュリティ対策を行ったメモ。以下、SSHでTera Termで接続して設定

 

有難うございました。m(__)m

 

 

Raspberry Pi 3

microSD 8GB 東芝製

GW-450D2

コメント

  1. 箱作 より:

    こちらの記事を参考にGW-450D2のインストールを試みていますがうまくいきません。
    具体的には、
    $sudo insmod /lib/modules/`uname -r`/kernel/drivers/net/wireless/mt7650u_sta.ko

    insmod: ERROR: could not insert module /lib/modules/4.14.18-v7+/kernel/drivers/net/wireless/mt7650u_sta.ko: Unknown symbol in module
    というエラーが出ます。
    Raspberry Pi3B
    gccは4.8.5-4
    カーネルは4.14.18
    です。
    GW-450D2はさした状態で、有線LAN接続しています。
    Pi内蔵のwifiはONでもOFFでもうまくいきません。
    /lib/modules/4.14.18-v7+/kernel/drivers/net/wireless/mt7650u_sta.koが存在していることは確認しています。

    特定するのに他に必要な情報があればわかる範囲でお答えします。
    何か心当たりのある点があれば教えていただけないでしょうか。よろしくお願いします。

    • rin_ofumi rin_ofumi より:

      箱作さん コメント有難う御座います。

      私もinsmodの工程でERRORが返ってきて困ったことがありました。
      記事中盤の「カーネルソースと関連モジュールを用意する」の後半に、
      その時行った対応を書いております。

      参考になれば幸いです。

      • 箱作 より:

        レスをいただきありがとうございます。
        紹介していただいたサイトを参考に uname -r と ドライバ(?)の vermagic を確認しましたが、どちらも4.14.18-v7+。
        最後の+まで一致していました。
        もう少しあがいてみて、ダメだったらカーネルのビルドからしてみることを検討しようと思います。

        • rin_ofumi rin_ofumi より:

          コンフィギュレーションの修正も行われたということですよね?

          当時色々悩んだ挙句にこのプロセスに辿り着いたのですが、現状だと違うんですかね
          むう・・・

          • 箱作 より:

            おはようございます。
            色々調べたところ、カーネル4.14.18にはなぜか__vfs_read()という関数が登録されておらず、そのせいでモジュールのロードに失敗したようです。
            カーネルをアップデートする前の、4.9.59のイメージでこちらのページの通りにしたところ無事、インストールができました。
            ただ、インストール後、カーネルをアップデートするとモジュールのロードに失敗するようで、当面はカーネルのアップデートはできなさそうです。

            ドライバのソースをgrepしてもvfs_readがヒットしないのでどこで使われているのかはよく分かりませんでした・・・

          • rin_ofumi rin_ofumi より:

            箱作さん 追加検証有難う御座いますm(__)m

            本日、私も改めてPi2で試してみましたが、
            同じ様に「insmod: ERROR: could not insert module」が返ってきました。

            私が試した時は、rpi-updateでカーネルが4.14.21-v7+になりましたので、
            やや箱作さん検証時よりver進んでますが、恐らく同じ状況なのだと思います。

            謎ですね・・・Linux難しい・・・(T_T)
            今後、何か分かれば改めてコメントしますね。

            取り敢えず、記事中には
            「rpi-updateでカーネル更新すると上手く行かなくなる」
            旨を追記しておきます。

          • rin_ofumi rin_ofumi より:

            コチラ↓によると、どうやらカーネル4.14以降で「__vfs_read」が使えなくなってるみたいですね。
            https://github.com/zebulon2/rtl8812au-driver-5.2.9/commit/700398c2d50096a358b3968de7dcc6dc31244728

            ドライバ修正パッチの1ファイル「rt_linux.c.patch」の中にて「__vfs_read」となってる箇所を「kernel_read」に変更すればOKな模様。(あるいは、os/linux/rt_linux.cの該当箇所を直接修正する)
            一応、試してみましたが、insmodも無事に出来てGW-450Dでネットワークに繋がりました!!

            申し訳ありませんが、
            本日時間切れの為、また時間ある時に追証して、記事に対応方法を追記する予定です。

            取り急ぎご一報まで。

        • 箱作 より:

          こんばんは。
          原因が分かりました。
          エラーが”Unknown symbol in module”だったので、関数がないのでは?と思い、ログを確認したところ、
          unknown symbol __vfs_read
          とありました。
          こちらのブログ(https://www.masm11.ddo.jp/~masm/tdiary/?date=20171207)でみると4.14ではなぜかシンボルが消えていると指摘しています。別の相談サイト(url失念)ではvfs_readは古いので使用は推奨されないと回答者が述べていました。
          このせいかもしれませんが、4.14.xではモジュールの組み込みができないようです。
          2017-11-29のイメージはカーネルが4.9.59なのでこちらを利用したところ正常にインストールできました。
          もっともrpi-updateでカーネルのバージョンを上げるとモジュールが組み込まれなくなってwifiが機能しなくなるので、シンボルが復活するまで待つか、vfs_readの代わりの関数に書き換えて再コンパイルが必要そうです。
          ただ、ドライバのソースをgrepしてもvsf_readが見つからなかったような・・・

          • rin_ofumi rin_ofumi より:

            2/23のこの箱作さんのコメントが自動スパム判定されて撥ねられておりました。
            申し訳ありません。m(__)m
            続きで頂いたコメントと表示の時系列がズレてしまいますが、一応このまま掲載しておきます。

            現時点では、2/25の私のコメントが最終のモノになります。
            恐らくこの時書いた方法で4.14以降へのカーネルアップデート後でも大丈夫だと思いますが、
            もう少し追証出来たところで、記事へ反映させる予定です。

  2. kuro より:

    無線lanの接続設定のところでお聞きしたいのですが、自分の環境では暗号化方式にWEPを使用しているせいか、うまく動作しません。
    もしWEPにも対応できる方法を知っていれば教えていただきたいです。
    よろしくお願いします。

    • rin_ofumi rin_ofumi より:

      kuroさん コメント有難う御座います。

      当方の環境がWEPでは無いので試してないですが、
      「RaspberryPi WEP」で検索すると色々情報出て来ますので、探してみてください。

      例えばコチラ↓とか
      https://qiita.com/MII-CHANG/items/2b6c7fcb45364fabeca4

      上手く接続出来ることをお祈りします。
      (2.4GHzならまだしも、5GHz WiFi環境でWEPを使うのか疑問が残りますが・・・)