Raspberry Pi で GW-450D を使う @ 2016.2

Raspberry Pi で GW-450D を使う のアップデート

まとめ


今日時点の 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