我支持Linux的tp-link t4u驱动程序

当我购买wifi适配器时,我认为它可以在ubuntu 20.04上使用,因为linux被列为受支持的系统。原来是行不通的。我尝试了论坛上提供的解决方案,但是适配器无法正常工作。昨天和今天,我不得不面对驾驶员的支持。



我想,也许这并不难。然后他开始工作。出现编译错误。例如,没有get_ds函数。好吧,是的,它在内核的版本4中,但是在版本5中却没有。我有时认为开发人员不想支持他们的驱动程序,因为他们不断在内核中进行更改,并且某些代码部分需要重写。通常,我研究了如何在旧版本的内核中实现get_ds。事实证明,它只是返回KERNEL_DS。好吧,我也更换了它。然后是时间结构的问题,该时间结构在当前内核中已经只有64位版本。这是固定的。也有一些小的修复程序,但我不记得自己修复了什么。因此,驱动程序已编译,但拒绝注册适配器设备。我找到了补丁链接,这使制造商有义务指定规则。我在os_dep / linux / rtw_cfgvendor.c中的每个条目中添加了这个.policy = VENDOR_CMD_RAW_DATA,



例如:



        {
                {
                        .vendor_id = OUI_GOOGLE,
                        .subcmd = RTT_SUBCMD_SET_CONFIG
                },
                .policy = VENDOR_CMD_RAW_DATA,
                .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
                .doit = rtw_cfgvendor_rtt_set_config
        },
        {
                {
                        .vendor_id = OUI_GOOGLE,
                        .subcmd = RTT_SUBCMD_CANCEL_CONFIG
                },
                .policy = VENDOR_CMD_RAW_DATA,
                .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
                .doit = rtw_cfgvendor_rtt_cancel_config
        },
        {
                {
                        .vendor_id = OUI_GOOGLE,
                        .subcmd = RTT_SUBCMD_GETCAPABILITY
                },
                .policy = VENDOR_CMD_RAW_DATA,
                .flags = WIPHY_VENDOR_CMD_NEED_WDEV | WIPHY_VENDOR_CMD_NEED_NETDEV,
                .doit = rtw_cfgvendor_rtt_get_capability
        },


并进行编译,复制和运行。和瞧!我管理。)虽然我不了解内核开发,但是我设法提供了简单的支持。目前,驱动程序源代码的链接将发布在google磁盘上。这是一个链接。链接



而且它现在也在github上



我很高兴它对某人有用。



图片



All Articles