أنا أدعم برنامج تشغيل tp-link t4u لنظام التشغيل Linux

عندما اشتريت محول wifi ، اعتقدت أنه سيعمل على نظام ubuntu 20.04 الخاص بي ، لأنه تم إدراج نظام Linux ضمن الأنظمة المدعومة. اتضح أنه لا يعمل. جربت الحلول المعروضة على المنتديات ، لكن المحول لم يعمل. اضطررت للتعامل مع دعم السائق أمس واليوم.



فكرت ، ربما هذا ليس بالأمر الصعب. ونزل إلى العمل. ظهرت أخطاء في التجميع. على سبيل المثال ، لا توجد وظيفة get_ds. حسنًا ، نعم ، كان في الإصدار 4 من النواة ، لكن في الإصدار 5 هذه الوظيفة ليست كذلك. أعتقد أحيانًا أن المطورين لا يريدون دعم برامج التشغيل الخاصة بهم نظرًا لحقيقة أنهم يجرون تغييرات مستمرة في النواة وأن بعض أجزاء الكود بحاجة إلى إعادة كتابتها. بشكل عام ، نظرت في كيفية تنفيذ get_ds في الإصدار القديم من kernel. اتضح أنها تقوم بإرجاع KERNEL_DS. حسنًا ، لقد استبدلت أيضًا. ثم كانت هناك مشكلة في بنية الوقت ، والتي في النواة الحالية لديها بالفعل إصدار 64 بت فقط. تم إصلاح هذا. كانت هناك أيضًا إصلاحات طفيفة ، لكنني لا أتذكر ما أصلحته. لذلك قام السائق بترجمة جهاز المهايئ لكنه رفض تسجيله. لقد وجدت ارتباط التصحيح، الأمر الذي يلزم الشركات المصنعة بتحديد القواعد. أضفت إلى كل إدخال في os_dep / linux / rtw_cfgvendor.c ، هذه السياسة = 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 في الوقت الحالي. هنا ارتباط. الارتباط .



وهو الآن أيضًا على جيثب .



أنا سعيد إذا كان مفيدًا لشخص ما.



صورة



All Articles