ジャンル不定の日記です。

wlan0 出てきた!

かなり苦戦したが、Orange pi R1 の自ビルドカーネルでwlan0出てきた。
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 02:42:87:c2:e6:34 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.106/24 brd 192.168.2.255 scope global dynamic eth0
       valid_lft 22828sec preferred_lft 22828sec
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether c0:74:2b:ff:da:7b brd ff:ff:ff:ff:ff:ff
4: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 7c:a7:b0:81:a5:6f brd ff:ff:ff:ff:ff:ff

Orange pi R1 のwifiチップは RTL8189FTV なんで最初 https://linux-sunxi.org/Wifi#RTL8189FTV 参考に、
$ git clone https://github.com/jwrdegoede/rtl8189ES_linux.git
$ cd rtl8189ES_linux.git git checkout -B rtl8189fs origin/rtl8189fs
$ make ARCH=arm CROSS_COMPILE=arm-none-eabi- KSRC=../linux
とやって8189fs.koを作ったが、8189fsはロードできるのだがwlan0が出てこなかった。
これのビルドの際にはkernelのmenuconfigで作れるがcfg80211が必要。

RTL8189FTVはSDIOデバイスのようなので、SDIO関連のモジュール入れたり、他のRealtekドライバ入れたり試してみたが解決しなかった。
その際にR1の有線LANの片方はRTL8152Bなんでそれも有効にしたんでeth1は出るようになった。

wlan0が出てくるArmbian確認したらKernel 5.4.8でモジュールは8189fsではなく8189esだった。
kernelバージョン近いし手段はありそうだが・・・
5.4.8のカーネルを自ビルドしてArmbianのモジュールを流用しようか・・・

とか考えてたが、
モジュール作成の際にRTL8189FTVモジュールのビルド手順でブランチをmasterからrtl8189fsに切り替えて8189.fsができあがったが、
$ git checkout master
$ make clean
$ make ARCH=arm CROSS_COMPILE=arm-none-eabi- KSRC=../linux
としてmasterブランチに切り替えてやり直してみた。
そうすると8189es.koが出来上がる。
これいれたらwlan0でてきた。

あとは/deb/mtdがない。
これはkernelのmenuconfigにそれっぽい項目があった。

調べてる際に、
# modprobe 8189fs
[ 3698.524235] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 3698.534056] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 3698.540791] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 3698.549443] cfg80211: failed to load regulatory.db
[ 3698.619093] RTL871X: module init start
[ 3698.622858] RTL871X: rtl8189fs v4.3.24.8_22657.20170607
[ 3698.628236] RTL871X: module init ret=0
と、regulatory.dbが読み込めないとのメッセージが出てた。
これは規制情報のデータベースらしく、wifiの電波の法規制を確認してるみたい。
wireless-regdbとcrdaのパッケージを入れたら
# modprobe 8189fs
[ 4496.923826] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 4496.936829] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 4497.017609] RTL871X: module init start
[ 4497.021413] RTL871X: rtl8189fs v4.3.24.8_22657.20170607
[ 4497.026763] RTL871X: module init ret=0
読み込めたみたい。
だがこれは読めなくても起動するぽい。
wlanが使えるArmbianで確認してもfailedしてた。