Saya mendukung driver tp-link t4u untuk linux

Ketika saya membeli adaptor wifi, saya pikir itu akan berfungsi di ubuntu 20.04 saya, karena linux terdaftar di antara sistem yang didukung. Ternyata tidak berhasil. Saya mencoba solusi yang ditawarkan di forum, tetapi adaptor tidak berfungsi. Saya harus berurusan dengan dukungan pengemudi kemarin dan hari ini.



Saya pikir, mungkin ini tidak sulit untuk dilakukan. Dan dia mulai bekerja. Kesalahan kompilasi muncul. Misalnya, tidak ada fungsi get_ds. Ya, itu di versi 4 dari kernel, tetapi di versi 5 fungsi ini tidak. Saya terkadang berpikir bahwa pengembang tidak ingin mendukung driver mereka karena fakta bahwa mereka terus-menerus membuat perubahan di kernel dan beberapa bagian kode perlu ditulis ulang. Secara umum, saya melihat bagaimana get_ds diimplementasikan di versi lama kernel. Ternyata itu hanya mengembalikan KERNEL_DS. Nah, saya juga menggantinya. Lalu ada masalah dengan struktur waktu, yang hanya memiliki versi 64-bit di kernel saat ini. Ini sudah diperbaiki. Ada juga perbaikan kecil, tapi saya tidak ingat apa yang saya perbaiki. Jadi, pengemudi mengompilasi tetapi menolak untuk mendaftarkan perangkat adaptor. Saya menemukan tautan tambalan, yang mewajibkan produsen untuk menentukan aturan. Saya menambahkan ke setiap entri di os_dep / linux / rtw_cfgvendor.c, ini .policy = VENDOR_CMD_RAW_DATA,



Contoh:



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


Dan dikompilasi, disalin, dan dijalankan. dan voila! Saya mengatur. ) Meskipun saya tidak memahami pengembangan kernel, saya berhasil melakukan dukungan sederhana. Tautan ke kode sumber driver akan diposting di disk google untuk saat ini. ini tautannya. tautan .



Dan sekarang juga ada di github .



Saya senang jika itu berguna bagi seseorang.



gambar



All Articles