收起左侧

无线网卡RTL8188GU芯片(0bda:b711)的驱动编译过程记录

1
回复
38
查看
[ 复制链接 ]

1

主题

1

回帖

0

牛值

江湖小虾

以前买的USB无线网卡,在飞牛加入无线功能时候试过没找到驱动

这两天没事研究了一下

网上公开的驱动试了一些,有些编译问题,或者安装后不能识别网卡。

最后用GitHub上星最多的这个McMCCRU/rtl8188gu(开始试过编译报错pass掉了,试了一圈回来的)。

基本信息

  • 驱动名称: RTL8188GU Linux驱动
  • 芯片型号: Realtek RTL8188GU (RTL8710B)
  • 设备ID: VID:PID = 0x0BDA:0xB711
  • 源码来源: GitHub - McMCCRU/rtl8188gu
  • 内核版本: 6.12.18-trim

ID 0bda:b711 Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter (After Modeswitch)

image.png

编译过程

我是直接编译的,建议使用虚拟机或者docker编译(推荐docker)。

1、安装依赖

#先提权
sudo su

apt update
apt install build-essential git
apt install linux-headers-$(uname -r)

2、克隆和编译驱动

git clone https://github.com/McMCCRU/rtl8188gu.git
cd rtl8188gu
make

我在编译过程中遇到两次错误,内核API不兼容问题需要修改。

问题1: USB驱动结构体不兼容

error: ‘struct usb_driver’ has no member named ‘drvwrap’

修改 os_dep/linux/usb_intf.c文件中的 struct rtw_usb_drv usb_drv代码:

修改前:.drvwrap.driver.shutdown = rtw_dev_shutdown,

修改后:

.usbdrv.driver.shutdown = rtw_dev_shutdown,
问题2: CFG80211 API变更

error: initialization of ‘int (*)(struct wiphy *, struct net_device *, struct cfg80211_ap_update *)’ from incompatible pointer type

修改 os_dep/linux/ioctl_cfg80211.c文件中的 cfg80211_rtw_change_beacon函数:

static int cfg80211_rtw_change_beacon(struct wiphy *wiphy, struct net_device *ndev,
        struct cfg80211_ap_update *info)
{
    int ret = 0;
    _adapter *adapter = (_adapter *)rtw_netdev_priv(ndev);
    struct cfg80211_beacon_data *beacon = &info->beacon;

    RTW_INFO(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev));

    ret = rtw_add_beacon(adapter, beacon->head, beacon->head_len, beacon->tail, beacon->tail_len);

    return ret;
}

3、清理并重新编译

make clean
make

4、安装加载驱动

# 安装驱动模块
sudo make install

# 加载驱动模块
sudo modprobe 8188gu

# 更新模块依赖
sudo depmod -a

5、安装成功

使用lsusb -tv查看驱动加载情况

image.png

网络设置中已经正常显示

image.png

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

1

主题

1

回帖

0

牛值

江湖小虾

5 小时前 楼主 显示全部楼层

我是保存的草稿,出去吃点东西,怎么发贴了,还想完善和加一些内容的。算了就这样吧sweat

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则