概要
- 元記事 Compiling Raspberry Pi kernel modules
- RTL8812AUって、標準で対応してない、と探してたら、↑の記事を発見.
環境
- Raspberry Pi 3
2016-05-27-raspbian-jessie-lite.img
手順
-
sudo apt-get update; sudo apt-get upgrade -y
いつもの -
sudo apt-get install curl build-essential bc git
追加パッケージ -
rpi-updateで、ファームウェアとかアップデートして、再起動
sudo apt-get install -y rpi-update
sudo rpi-update
#2016-05-27のカーネルなら、このハッシュで取得
>Linux raspberrypi 4.4.11-v7+ #886 SMP Thu May 19 15:20:49 BST 2016 armv7l
#sudo rpi-update 48cfa89779408ecd69db4eb793b846fb7fe40c4b
sudo reboot
4. カーネルのソース取得とモジュールビルド環境の準備
```bash
# ファームウエアのハッシュから、カーネルのハッシュを取得して、`Module7.symvers`とカーネルのソース取得
#
FIRMWARE_REV=`cat /boot/.firmware_revision`
KERNEL_REV=`curl -L https://github.com/Hexxeh/rpi-firmware/raw/${FIRMWARE_REV}/git_hash`
echo Firmware Rev: ${FIRMWARE_REV}
echo kernel Rev : ${KERNEL_REV}
curl -L https://github.com/Hexxeh/rpi-firmware/raw/${FIRMWARE_REV}/Module.symvers >Module.symvers
curl -L https://github.com/Hexxeh/rpi-firmware/raw/${FIRMWARE_REV}/Module7.symvers >Module7.symvers
curl -L https://github.com/raspberrypi/linux/archive/${KERNEL_REV}.tar.gz >rpi-linux.tar.gz
#
# rootになる
sudo -s
#
# カーネルソース展開 時間がかかるよ
HOME=/home/pi
cd /usr/src
mkdir rpi-linux
cd rpi-linux
tar --strip-components 1 -xf ${HOME}/rpi-linux.tar.gz
#
# Module.symversと .configを取得して配置.
modprobe configs
gunzip -c /proc/config.gz >.config
# cp $HOME/Module.symvers Module.symvers ## RPi1 ????
cp $HOME/Module7.symvers Module.symvers
#
# モジュールビルドの準備とリンク.
time make modules_prepare
ln -sv /usr/src/rpi-linux /lib/modules/$(uname -r)/build
-
rtl8812AU_8821AU_linux
のソース取得・ビルド
rootじゃなかったら.
sudo -s
ソース取得.
cd /usr/src
git clone https://github.com/abperiasamy/rtl8812AU_8821AU_linux.git
cd rtl8812AU_8821AU_linux/
Makefileのコンフィグをらずぱい向けにする - README.mdに書いてあった
> Edit Makefile and turn on CONFIG_PLATFORM_ARM_RPI
, turn off CONFIG_PLATFORM_I386_PC
sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/' Makefile
sed -i 's/CONFIG_PLATFORM_ARM_RPI = n/CONFIG_PLATFORM_ARM_RPI = y/' Makefile
ビルド
make clean
make
make install
modprobe -a 8812au
6. うごいた
```shell-session
pi@raspberrypi:~ $ lsusb | grep 8812
Bus 001 Device 004: ID 0bda:8812 Realtek Semiconductor Corp.
pi@raspberrypi:~ $ lsmod | grep 8812au
8812au 960323 0
cfg80211 427855 2 brcmfmac,8812au
pi@raspberrypi:~ $ ifconfig wlan1 | grep "inet "
inet addr:192.168.41.11 Bcast:192.168.41.255 Mask:255.255.255.0
(追記) MediaTek MT7610U (RT2860) - ID 0e8d:7610 MediaTek Inc.
rootじゃなかったら
sudo -s
MediaTekのダウンロードサイトからもってくるアーカイブと、エラーになった
MT7610U USB 9/16/2013 V3.0.0.2
wget http://s3.amazonaws.com/mtk.cfs/Downloads/linux/mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2
tar xjf mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2
cd mt7610u_wifi_sta_v3002_dpo_20130916
ので、ビルドが通ったものをgit clone
git clone https://github.com/coolshou/mt7610u.git
cd mt7610u
#したけど↑は、うまく設定できなかった。ので別のもの
cd /usr/src
git clone https://github.com/xtknight/mt7610u-linksys-ae6000-wifi-fixes.git
cd mt7610u-linksys-ae6000-wifi-fixes
make
make install
#sed -i 's/SSID=11n-AP/SSID=/' /etc/Wireless/RT2870STA/RT2870STA.dat
#sed -i 's/AuthMode=OPEN/AuthMode=WPA2PSK/' /etc/Wireless/RT2870STA/RT2870STA.dat
#sed -i 's/EncrypType=NONE/EncrypType=AES/' /etc/Wireless/RT2870STA/RT2870STA.dat
modprobe -a mt7610u_sta
- `sudo vi /etc/network/interfaces`
```txt:/etc/network/interfaces
...
# 以下追加
allow-hotplug ra0
iface ra0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
- 動いた
```
pi@raspberrypi:~$ lsusb | grep 7610
Bus 001 Device 005: ID 0e8d:7610 MediaTek Inc.
pi@raspberrypi:~$ lsmod | grep 7610
mt7610u_sta 876773 0
cfg80211 427855 2 brcmfmac,mt7610u_sta
pi@raspberrypi:~$ ifconfig ra0 | grep "inet "
inet addr:192.168.41.13 Bcast:192.168.41.255 Mask:255.255.255.0
## その他
- (試していない) Raspberry Pi 1/Zero対応?<br>`cp $HOME/Module7.symvers Module.symvers` のところの`7`をとる???<br> => `cp $HOME/Module.symvers Module.symvers`
- `rpi-update`で取得すると、`/boot/.firmware_revision`にファームのハッシュが入って、それを利用して、カーネルソースとか取得してる模様..
- ↓のエラーは、`sudo apt-get inatall bc` をやる。
```
include/linux/jiffies.h:10:33: fatal error: generated/timeconst.h: No such file or directory
#include <generated/timeconst.h>
^
compilation terminated.
- テストするとき
sudo wpa_supplicant -iwlan1 -c /etc/wpa_supplicant/wpa_supplicant.conf
# -Bをつけるとデーモン化 - 5GHzのとこにつなぐにはどうすれば..