概要
- 最近買ったPC LinuxサーバにWiFi子機をインストールします。
- 本来は有線でつないでおきたいのですが、筐体が大きくて邪魔なので無線にして部屋の奥底へ設置しようと思います。
USB3.0 WiFi 無線LAN 子機 1200Mbps 高速度 デュアルバンド 2.4G/5G 802.11ac技術 Windows10/8/7/XP/Vista/Mac 対応 (M-1200Y)
USB3.0 WiFi 無線LAN 子機 1200Mbps 高速度 デュアルバンド 2.4G/5G 802.11ac技術 Windows10/8/7/XP/Vista/Mac 対応 (M-1200Y)
事前準備
下調べ。
matsu@dell ~> cat /etc/issue Ubuntu 19.04 \n \l matsu@dell ~> uname -a Linux dell 5.0.0-37-generic #40-Ubuntu SMP Thu Nov 14 00:14:01 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
この製品、Realtekのチップが乗っています。CD-ROMがついてくるので、その中にもドライバはありますが、最新のものを使いたいのでgitから落としてくることにします。
とりあえず、ドライバをコンパイルするためにコンパイラを入れておきます。
sudo apt-get install build-essential git
そしてコンパイル
git clone https://github.com/its-izhar/rtl88x2bu-driver cd rtl88x2bu-driver make clean make -j8
しかし、2箇所でエラーがでます。LinuxのKernelが5にあがってAPIが変わった様子。以下を修正すれば通ります。
diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index e7e8930..a2c2e6a 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -687,8 +687,9 @@ static int rtw_cfg80211_sync_iftype(_adapter *adapter) static u64 rtw_get_systime_us(void) { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)) - struct timespec ts; - get_monotonic_boottime(&ts); + struct timespec64 ts; + ktime_get_boottime_ts64(&ts); + return ((u64)ts.tv_sec * 1000000) + ts.tv_nsec / 1000; #else struct timeval tv; diff --git a/os_dep/linux/rtw_android.c b/os_dep/linux/rtw_android.c index b8b4377..2e4bb31 100644 --- a/os_dep/linux/rtw_android.c +++ b/os_dep/linux/rtw_android.c @@ -657,7 +657,7 @@ int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) goto exit; } - if (!access_ok(VERIFY_READ, priv_cmd.buf, priv_cmd.total_len)) { + if (!access_ok(priv_cmd.buf, priv_cmd.total_len)) { RTW_INFO("%s: failed to access memory\n", __FUNCTION__); ret = -EFAULT; goto exit;
成功したら、モジュールのインストール。(裏では、installコマンドと modprobeを行っている)
sudo make install
そうすると、認識されます。
wlx0013eff32167: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether 00:13:ef:f3:21:67 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
WiFiのアクセスポイントが見えるかを確認してみます。
そしたら、以下のコマンドで設定。
% nmcli device wifi connect 'your ssid' password 'your wifi password' ifname wlx0013eff32167 % ifconfig wlx0013eff32167: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.122 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 240b:10:2120:f400:314b:995:833f:abcd prefixlen 64 scopeid 0x0<global> inet6 240b:10:2120:f400:f93f:c66f:26ff:efgh prefixlen 64 scopeid 0x0<global> inet6 fe80::39cd:14fe:54e1:2d72 prefixlen 64 scopeid 0x20<link> ether 00:13:ef:f3:21:67 txqueuelen 1000 (Ethernet) RX packets 1978 bytes 559674 (559.6 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 56 bytes 8113 (8.1 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
有線LANを抜いて疎通確認すればOK。
WiFiで固定IPを振る場合
このページを参考にした。WiFiの設定はNetworkManagerが管理しているようなので、そっちで行う。
最後に再起動をして、ちゃんとネットワークがつながるかを確認しておく。
Ubuntu 19.10の場合
こちらのレポジトリのドライバを使う。
GitHub - RinCat/RTL88x2BU-Linux-Driver: Realtek RTL88x2BU WiFi USB Driver for Linux
Realtek RTL88x2BU WiFi USB Driver for Linux. Contribute to RinCat/RTL88x2BU-Linux-Driver development by creating an acco...
Comments