Raspberry Pi で GW-450D を使う のアップデート
まとめ
- 基本は Raspberry Pi 2 + RASPBIAN JESSIEでPLANEXのGW-450D(無線LANドングル)を使う - Qiita の手順に従う
- そのままだとドライバのコンパイルでエラーになるので
今日時点の Respbian のイメージ 2016-02-09-raspbian-jessie-lite.img でセットアップして apt-get update & upgrade していた場合、次の環境になっているはず。
$ uname -a Linux raspberrypi 4.1.17+ #843 Mon Feb 15 23:17:46 GMT 2016 armv6l GNU/Linux $ gcc --version gcc (Raspbian 4.9.2-10) 4.9.2
『修正パッチの適用』まで進めて、『カーネルのダウンロード』から手順が変わる。
raspi-kernel だと Raspberry Pi 2 にしか対応していないので、 rpi-source を使う。
ちょっと使うだけなので、適当にダウンロード
$ wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source $ chmod +x rpi-source
alternatives で gcc を一旦 4.9 に戻す。
$ sudo update-alternatives --config gcc
戻さないと、次の通り現環境とのコンパイラバージョン違いで怒られる。
ERROR: gcc version check: mismatch between gcc (4.8.4) and /proc/version (4.9.3) Skip this check with --skip-gcc
カーネルダウンロードとカーネルモジュールのコンパイル環境を構築する。
$ ./rpi-source
問題なければ次の通り表示されます。
$ ./rpi-source *** gcc version check: OK *** rpi-update: https://github.com/Hexxeh/rpi-firmware *** Firmware revision: 2ea8550c0fc6f4b916b3698fad857138d8a2da64 *** Linux source commit: 27bb05acbbed3cb6fdb8b71ac66535a1602e09c6 *** Download kernel source: Already downloaded /home/pi/linux-27bb05acbbed3cb6fdb8b71ac66535a1602e09c6.tar.gz *** Unpack kernel source (snip) *** set 'EXTRAVERSION = +' in Makefile *** Create symlink: /home/pi/linux *** Create /lib/modules/<ver>/{build,source} symlinks *** .config *** Module.symvers *** Create symlink: /home/pi/linux *** Create /lib/modules/<ver>/{build,source} symlinks *** .config *** Module.symvers *** make modules_prepare HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o (snip) HOSTCC scripts/recordmcount HOSTCC scripts/sortextable *** Help: https://github.com/notro/rpi-source/wiki
『ドライバのビルド』の前に再び alternatives で gcc を 4.8 に切り換え。
$ sudo update-alternatives --config gcc
これを怠ると、ドライバのビルド中に次のエラーとなって先に進めません。
gcc 4.9 でチェックが厳しくなった影響の模様。
CC [M] /dev/shm/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/../../sta/sta_cfg.o /dev/shm/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/../../sta/sta_cfg.c: In function ‘RTMPIoctlShow’: /dev/shm/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/../../sta/sta_cfg.c:5401:85: error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time] snprintf(extra, size, "Driver version-%s, %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__ ); ^ /dev/shm/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/../../sta/sta_cfg.c:5401:95: error: macro "__TIME__" might prevent reproducible builds [-Werror=date-time] snprintf(extra, size, "Driver version-%s, %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__ ); ^ cc1: some warnings being treated as errors scripts/Makefile.build:308: recipe for target '/dev/shm/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/../../sta/sta_cfg.o' failed make[2]: *** [/dev/shm/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/../../sta/sta_cfg.o] Error 1 Makefile:1278: recipe for target '_module_/dev/shm/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux' failed make[1]: *** [_module_/dev/shm/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux] Error 2 make[1]: Leaving directory '/usr/lib/modules/3.14.4-2-ck/build' Makefile:393: recipe for target 'LINUX' failed make: *** [LINUX] Error 2
make & make install Rasberry Piだと30分ほどかかる。
$ cd mt7610u_wifi_sta_v3002_dpo_20130916/ $ sudo make $ sudo make install
ビルド後の insmod は -v7 が付いていないディレクトリになります。
$ sudo insmod /lib/modules/4.1.17+/kernel/drivers/net/wireless/mt7650u_sta.ko