在 Raspberry Pi 4 使用 TOTOLINK-N150UA-B


寫在前面, 如果你還沒買, 不要 選這款來當你的 Rpi4 外接 Wifi. 我就是太天真想說都什麼時代了, 應該都有支援吧哈哈然後就搞了一天. 想說裝個驅動有什麼難的, 但找不到照著做就能裝好的範例時還真的沒那麼簡單.

本篇教學的軟硬體環境

Raspberry Pi 4 2GB
Linux raspberrypi 5.10.103-v7l+ #1529 SMP Tue Mar 8 12:24:00 GMT 2022 armv7l GNU/Linux

1. 更新及升級樹莓派

sudo apt-get update -y
sudo apt-get upgrade -y

2. 安裝驅動程式相關工具

sudo apt-get install git bc bison flex libssl-dev make raspberrypi-kernel-headers -y

3. 下載驅動程式原始碼

cd ~
mkdir driver
cd driver
git clone https://github.com/McMCCRU/rtl8188gu.git
cd rtl8188gu

4. 修改 Makefile

找到底下設定

###################### Platform Related #######################
CONFIG_PLATFORM_I386_PC = y
CONFIG_PLATFORM_ARM_RPI = n

CONFIG_PLATFORM_I386 設定為 n
CONFIG_PLATFORM_ARM_RPI 設定為 y

修改後如下

###################### Platform Related #######################
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ARM_RPI = y

5. 修改 kernel process 的結構 (不處理的話等一下編譯驅動程式會出錯)

執行下列 3 行指令

sudo cp /lib/modules/$(uname -r)/build/arch/arm/Makefile /lib/modules/$(uname -r)/build/arch/arm/Makefile.$(date +%Y%m%d%H%M)
sudo sed -i 's/-msoft-float//' /lib/modules/$(uname -r)/build/arch/arm/Makefile
sudo ln -s /lib/modules/$(uname -r)/build/arch/arm /lib/modules/$(uname -r)/build/arch/armv7l

6. 開始編譯驅動程式

sudo make

(會跑一段時間,可能10~20分鐘但不會超過半小時)

7. 安裝驅動程式

依序執行下列指令

sudo make install
sudo depmod -a
sudo modprobe 8188gu

8. 檢查 usb 裝置

執行指令

lsusb

根據目前連接的 USB 裝置數量及種類,內容會有不同,我的輸出內容如下

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 0bda:1a2b Realtek Semiconductor Corp.
Bus 001 Device 004: ID 045e:0750 Microsoft Corp. Wired Keyboard 600
Bus 001 Device 003: ID 192f:0916 Avago Technologies, Pte.
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

ID 0bda:1a2b 就是 N150UA,0bda 是廠商代號,1a2b 是產品代號。1a2b 代表目前是USB磁碟模式,要輸入指令切換

9. 切換 USB 模式

執行指令

sudo usb_modeswitch -KW -v 0bda -p 1a2b

再次檢查剛剛的 "Bus 001 Device 007: ID 0bda:1a2b Realtek Semiconductor Corp."
ID 應該會變更為 0bda:2005 ,此時網卡就已經啟動了

10. 檢查網卡

ifconfig
iwconfig

這兩個指令如果可以看到 wlan0 及 wlan1 就是成功了。
wlan0 是 RPI 內建的無線網卡, wlan1 就是你剛剛設定的。

但因為 N150UA 預設模式就是 USB 磁碟,每當你重新開機或重新拔插,就要再次執行 usb_modeswitch

如果 Wifi USB 固定接在機器上,可以自己寫一個 bash 開機時自動執行,但依然無法避免重新拔插後要再執行 usb_modeswitch 的問題。如果想要一勞永逸的話可以進行下一步。

11. 增加 USB 裝置規則

編輯規則檔

sudo nano /lib/udev/rules.d/40-usb_modeswitch.rules

LABEL="modeswitch_rules_end" 這行之前增加下列指令

# Realtek 8188GU Wifi USB
ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p 1a2b"

完成後重開機, 開機後使用 lsusbifconfig 指令檢查是否成功切換模式
Realtek Semiconductor Corp. 的 ID 如果是 0bda:2005
或是 wlan0 、 wlan1 都同時存在,就是成功。

Ref.

[Github] rtl8188gu 驅動程式原始碼
rtl8188gu網卡驅動安裝筆記
RTL8811CU/RTL8821CU USB网卡驱动安装 树莓派/工控机 Ubuntu18/20
Linux安装无线网卡驱动通用方法
Automatically use usb_modeswitch for Wifi USB
The USB ID Repository

rtl8188gu #raspberrypi #TOTOLINK-N150UA #wifi

##rtl8188gu ##raspberry pi ##TOTOLINK-N150UA ##wifi ##usb






你可能感興趣的文章

如何使用 Python 實現 LRU Cache 快取置換機制

如何使用 Python 實現 LRU Cache 快取置換機制

[Day 3] JS in Pipeline (3): Docker and Local Development Environment (3)

[Day 3] JS in Pipeline (3): Docker and Local Development Environment (3)

Gradient text animation

Gradient text animation






留言討論