Ich unterstütze den tp-link t4u Treiber für Linux

Als ich einen WLAN-Adapter kaufte, dachte ich, dass er auf meinem Ubuntu 20.04 funktionieren würde, da Linux unter den unterstützten Systemen aufgeführt war. Es stellte sich heraus, dass es nicht funktionierte. Ich habe die in den Foren angebotenen Lösungen ausprobiert, aber der Adapter hat nicht funktioniert. Ich musste mich gestern und heute um die Fahrerunterstützung kümmern.



Ich dachte, vielleicht ist das nicht schwer zu machen. Und er machte sich an die Arbeit. Kompilierungsfehler sind aufgetreten. Zum Beispiel gibt es keine Funktion get_ds. Nun ja, es war in Version 4 des Kernels, aber in Version 5 ist diese Funktion nicht. Ich denke manchmal, dass Entwickler ihre Treiber nicht unterstützen möchten, weil sie ständig Änderungen im Kernel vornehmen und einige Teile des Codes neu geschrieben werden müssen. Im Allgemeinen habe ich mir angesehen, wie get_ds in der alten Version des Kernels implementiert ist. Es stellt sich heraus, dass nur KERNEL_DS zurückgegeben wird. Nun, ich habe es auch ersetzt. Dann gab es ein Problem mit der Zeitstruktur, die im aktuellen Kernel bereits nur eine 64-Bit-Version hat. Dies ist behoben. Es gab auch kleinere Korrekturen, aber ich kann mich nicht erinnern, was ich behoben habe. Der Treiber wurde also kompiliert, weigerte sich jedoch, das Adaptergerät zu registrieren. Ich habe einen Patch- Link gefunden, was die Hersteller verpflichtet, die Regeln festzulegen. Ich habe jedem Eintrag in os_dep / linux / rtw_cfgvendor.c diese .policy = VENDOR_CMD_RAW_DATA hinzugefügt.



Beispiel:



        {
                {
                        .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
        },


Und kompiliert, kopiert und ausgeführt. und voila! Es gelang mir. ) Obwohl ich die Kernelentwicklung nicht verstehe, habe ich es geschafft, einfache Unterstützung zu leisten. Der Link zum Quellcode des Treibers wird vorerst auf der Google-Disk veröffentlicht. Hier ist ein Link. Link .



Und es ist jetzt auch auf Github .



Ich bin froh, wenn es jemandem nützlich ist.



Bild



All Articles