eBayでRTL8189FTV(RTL8188FU)を用いたWifiアダプタを購入したが、Ubuntu 16.04の標準ドライバでは認識しないようだ。
ドライバの入手とビルドの確認、そののちDKMSに対応させた時のメモ
eBayでは802.11aの機能もあると書かれているが、実際は5GHzには全く対応していない…
ドライバのビルドとインストール
USBの認識状況をまず調べて、Google検索でドライバのありかを探る
$ lsusb Bus 002 Device 005: ID 0bda:f179 Realtek Semiconductor Corp.
Ask Ubuntu 『Can't find wifi drivers for 0bda:f179 Realtek Semiconductor Corp』に、ドライバの入手方法が書かれている。
ドライバはRealtek公式サイトでは配布が終了したようで、現在はGitHubのlutmm/rtl8188fuで配布されているものを使う。
$ git clone https://github.com/lutmm/rtl8188fu.git
ドライバのソースコードを解凍し、Makefileをテキストエディタで編集し、次の1箇所をコメントアウトして有効化する。
# Fix compile error on gcc 4.9 and later EXTRA_CFLAGS += -Wno-error=date-time
ドライバをmakeし、インストール
$ make $ sudo make install install -p -m 644 8188fu.ko /lib/modules/4.4.0-140-generic/kernel/drivers/net/wireless/ /sbin/depmod -a 4.4.0-140-generic
※ 青着色部の「4.4.0-140」はLinuxカーネルのバージョンで、uname -a
で表示される現在のものに読み替えるとよい
ドライバインストール後の認識状況
$ less /var/log/syslog 〜 略 〜 Jun 9 23:19:39 S5350Ubuntu1604 kernel: [11898.434116] usb 2-1.2: New USB device found, idVendor=0bd a, idProduct=f179 Jun 9 23:19:39 S5350Ubuntu1604 kernel: [11898.434122] usb 2-1.2: New USB device strings: Mfr=1, Pro duct=2, SerialNumber=3 Jun 9 23:19:39 S5350Ubuntu1604 kernel: [11898.434126] usb 2-1.2: Product: 802.11n Jun 9 23:19:39 S5350Ubuntu1604 kernel: [11898.434130] usb 2-1.2: Manufacturer: Realtek Jun 9 23:19:39 S5350Ubuntu1604 kernel: [11898.434133] usb 2-1.2: SerialNumber: 00E0222DB9BD Jun 9 23:19:39 S5350Ubuntu1604 mtp-probe: checking bus 2, device 4: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2" Jun 9 23:19:39 S5350Ubuntu1604 mtp-probe: bus: 2, device: 4 was not an MTP device Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528096] RTL871X: module init start Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528101] RTL871X: rtl8188fu v4.3.23.6_20964.20170110 Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528103] RTL871X: build time: Jun 9 2019 23:09:47 Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528157] RTL871X: Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528157] usb_endpoint_descriptor(0): Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528161] RTL871X: bLength=7 Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528162] RTL871X: bDescriptorType=5 Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528163] RTL871X: bEndpointAddress=81 Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528165] RTL871X: wMaxPacketSize=512 Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528166] RTL871X: bInterval=0 Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528168] RTL871X: RT_usb_endpoint_is_bulk_in = 1 Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528169] RTL871X: Jun 9 23:19:40 S5350Ubuntu1604 kernel: [11899.528169] usb_endpoint_descriptor(1): 〜 略 〜 $ lsmod | grep 8188 8188fu 1306624 0 cfg80211 565248 1 8188fu
DKMSに対応させる
事前準備として、この記事前半で行ったドライバのインストール作業を全て元に戻す。
/lib/modules/4.4.0-140-generic/kernel/drivers/net/wireless/
にインストールされたドライバ8188fu.ko
を削除。
ダウンロードしたソースコードや、ビルドしたファイルをディレクトリごと削除。
そのうえで、再びドライバのソースコードを再ダウンロードする
$ git clone https://github.com/lutmm/rtl8188fu.git
ドライバのディレクトリに、次のような内容の dkms.conf ファイルを作成する
PACKAGE_NAME="rtl8188fu" PACKAGE_VERSION="lutmm-2012" CLEAN="make clean" BUILT_MODULE_NAME[0]="8188fu" ← Makefileで設定されているビルド結果のカーネル モジュールのファイル名(拡張子の .ko は除く) DEST_MODULE_NAME[0]="rtl8188fu" ← システムディレクトリにコピーするときのカーネル モジュールのファイル名(拡張子の .ko は除く) MAKE[0]="cd ${dkms_tree}/rtl8188fu/lutmm-2012/build; make" ← Makefileがあるディレクトリに移るところから書き始める DEST_MODULE_LOCATION[0]="/updates/dkms" ← モジュール ファイルのインストール先ディレクトリ名(先頭の /lib/modules/{$kernelver} は省略して書く) AUTOINSTALL="yes"
dkms.confの存在するドライバのディレクトリで、sourceコマンドを用いて環境変数を読み込む
$ source dkms.conf
そして、ソースコードを/usr/src以下にコピー
$ sudo mkdir /usr/src/$PACKAGE_NAME-$PACKAGE_VERSION $ sudo cp -r ./rtl8188fu/* /usr/src/$PACKAGE_NAME-$PACKAGE_VERSION
コピーされたソースコードの内容は次のようになっているはず
$ ll /usr/src/rtl8188fu-lutmm-2012/
合計 112
drwxr-xr-x 7 root root 4096 6月 9 23:08 ./
drwxr-xr-x 9 root root 4096 6月 9 22:44 ../
-rw-r--r-- 1 root root 110 6月 9 22:45 Kconfig
-rwxr-xr-x 1 root root 52915 6月 9 22:48 Makefile*
-rw-r--r-- 1 root root 64 6月 9 22:45 clean
drwxr-xr-x 3 root root 4096 6月 9 22:45 core/
-rw-r--r-- 1 root root 253 6月 9 23:08 dkms.conf ← ユーザが作成したdkms設定ファイル
drwxr-xr-x 8 root root 4096 6月 9 22:45 hal/
-rw-r--r-- 1 root root 54 6月 9 22:45 ifcfg-wlan0
drwxr-xr-x 4 root root 12288 6月 9 22:45 include/
drwxr-xr-x 3 root root 4096 6月 9 22:45 os_dep/
drwxr-xr-x 2 root root 4096 6月 9 22:45 platform/
-rw-r--r-- 1 root root 423 6月 9 22:45 runwpa
-rw-r--r-- 1 root root 294 6月 9 22:45 wlan0dhcp
ソースコードを手動でビルド、インストールしてみる
$ sudo dkms add $PACKAGE_NAME/$PACKAGE_VERSION $ sudo dkms build $PACKAGE_NAME/$PACKAGE_VERSION $ sudo dkms install $PACKAGE_NAME/$PACKAGE_VERSION
dkmsによるビルドが始まると、ソースコード ディレクトリから、/var/lib/dkms 以下に作成される作業ディレクトリにソースコード一式がコピーされ、そこでmakeが行われる。
make install; make clean 相当のコマンドが実行された後の 作業ディレクトリ内は次のようになっている
$ ll /var/lib/dkms/rtl8188fu/
合計 12
drwxr-xr-x 3 root root 4096 2019-06-09 23:11:38 ./
drwxr-xr-x 7 root root 4096 2019-06-09 23:09:01 ../
lrwxrwxrwx 1 root root 35 2019-06-09 23:11:38 kernel-4.4.0-150-generic-x86_64 -> lutmm-2012/4.4.0-150-generic/x86_64/
drwxr-xr-x 4 root root 4096 2019-06-09 23:10:44 lutmm-2012/
$ ll /var/lib/dkms/rtl8188fu/lutmm-2012/
合計 16
drwxr-xr-x 4 root root 4096 2019-06-09 23:10:44 ./
drwxr-xr-x 3 root root 4096 2019-06-09 23:11:38 ../
drwxr-xr-x 3 root root 4096 2019-06-09 23:10:44 4.4.0-150-generic/
drwxr-xr-x 7 root root 4096 2019-06-09 23:10:44 build/
lrwxrwxrwx 1 root root 29 2019-06-09 23:09:01 source -> /usr/src/rtl8188fu-lutmm-2012/
$ ll /var/lib/dkms/rtl8188fu/lutmm-2012/build/
合計 112
drwxr-xr-x 7 root root 4096 2019-06-09 23:10:44 ./
drwxr-xr-x 4 root root 4096 2019-06-09 23:10:44 ../
-rw-r--r-- 1 root root 110 2019-06-09 23:09:41 Kconfig
-rwxr-xr-x 1 root root 52915 2019-06-09 23:09:41 Makefile*
-rw-r--r-- 1 root root 64 2019-06-09 23:09:41 clean
drwxr-xr-x 3 root root 4096 2019-06-09 23:10:44 core/
-rw-r--r-- 1 root root 253 2019-06-09 23:09:41 dkms.conf
drwxr-xr-x 8 root root 4096 2019-06-09 23:10:44 hal/
-rw-r--r-- 1 root root 54 2019-06-09 23:09:41 ifcfg-wlan0
drwxr-xr-x 4 root root 12288 2019-06-09 23:09:41 include/
drwxr-xr-x 3 root root 4096 2019-06-09 23:10:44 os_dep/
drwxr-xr-x 2 root root 4096 2019-06-09 23:10:44 platform/
-rw-r--r-- 1 root root 423 2019-06-09 23:09:41 runwpa
-rw-r--r-- 1 root root 294 2019-06-09 23:09:41 wlan0dhcp
$ ll /var/lib/dkms/rtl8188fu/lutmm-2012/4.4.0-150-generic/x86_64/module/
合計 2372
drwxr-xr-x 2 root root 4096 2019-06-09 23:10:44 ./
drwxr-xr-x 4 root root 4096 2019-06-09 23:10:44 ../
-rw-r--r-- 1 root root 2418280 2019-06-09 23:10:44 rtl8188fu.ko ← ビルドされたカーネル・モジュール(ドライバ)本体
カーネル モジュールのインストール先は
$ ll /lib/modules/4.4.0-150-generic/updates/dkms/
合計 6196
drwxr-xr-x 2 root root 4096 2019-06-09 23:11:38 ./
drwxr-xr-x 3 root root 4096 2019-06-05 07:26:34 ../
-rw-r--r-- 1 root root 242064 2019-06-09 15:13:14 drm_kms_helper.ko
-rw-r--r-- 1 root root 2212240 2019-06-09 15:13:14 i915.ko
-rw-r--r-- 1 root root 33744 2019-06-09 15:13:14 intel_ips.ko
-rw-r--r-- 1 root root 2418280 2019-06-09 23:11:38 rtl8188fu.ko ← 今回インストールされたファイル
-rw-r--r-- 1 root root 1414336 2019-06-05 07:26:34 rtl8723bu.ko