zxystd / AppleIntelWifiAdapter

苹果IO80211Controller调用
188 stars 20 forks source link

thinkpad x390 i5版本 ac9560 #5

Open icedifferent opened 4 years ago

icedifferent commented 4 years ago

thinkpad x390 i5 8265U版本 ac9560 1.编译后的kext放到clover里面的other无效。 2.执行 sudo chown -R root:wheel AppleIntelWifiAdapterV2.kext/ sudo kextload -v AppleIntelWifiAdapterV2.kext/ 之后,电脑卡死了,,, 尴尬

zxystd commented 4 years ago

thinkpad x390 i5 8265U版本 ac9560 1.编译后的kext放到clover里面的other无效。 2.执行 sudo chown -R root:wheel AppleIntelWifiAdapterV2.kext/ sudo kextload -v AppleIntelWifiAdapterV2.kext/ 之后,电脑卡死了,,, 尴尬

这个项目刚刚开始

johnnynunez commented 4 years ago

@zxystd any update to work wifi? I am very impressed by the achievement of operating the bluetooth

a565109863 commented 4 years ago

@zxystd 你好,你知道getROAM_THRESH(OSObject, apple80211_roam_threshold_data)这个方法里的struct apple80211_roam_threshold_data这个结构体是什么吗?

zxystd commented 4 years ago

@zxystd 你好,你知道getROAM_THRESH(OSObject, apple80211_roam_threshold_data)这个方法里的struct apple80211_roam_threshold_data这个结构体是什么吗?

我现在还没研究到这块呢,尴尬。。 不过我刚刚大概看了下,大概是这样的 struct apple80211_roam_threshold_data { uint32_t version;//看起来好像是写死的 1 uint32_t threshold; }; 关于漫游的threshold值可以参考http://support.huawei.com/enterprise/docinforeader!loadDocument1.action?contentId=DOC1000088074&partNo=10182

zxystd commented 4 years ago

@zxystd any update to work wifi? I am very impressed by the achievement of operating the bluetooth

upset to say no, it is just a begining as it contains too much work...

a565109863 commented 4 years ago

@zxystd 你好,你知道getROAM_THRESH(OSObject, apple80211_roam_threshold_data)这个方法里的struct apple80211_roam_threshold_data这个结构体是什么吗?

我现在还没研究到这块呢,尴尬。。 不过我刚刚大概看了下,大概是这样的 struct apple80211_roam_threshold_data { uint32_t version;//看起来好像是写死的 1 uint32_t threshold; }; 关于漫游的threshold值可以参考http://support.huawei.com/enterprise/docinforeader!loadDocument1.action?contentId=DOC1000088074&partNo=10182

谢谢!!! 还想请教一下,像这种结构体或枚举,怎样才能知道它的结构是什么呢,不太懂这方面的知识。 就好像: enum apple80211_phymode { APPLE80211_MODE_UNKNOWN = 0, APPLE80211_MODE_AUTO = 0x1, // autoselect APPLE80211_MODE_11A = 0x2, // 5GHz, OFDM APPLE80211_MODE_11B = 0x4, // 2GHz, CCK APPLE80211_MODE_11G = 0x8, // 2GHz, OFDM APPLE80211_MODE_11N = 0x10, // 2GHz/5GHz, OFDM APPLE80211_MODE_TURBO_A = 0x20, // 5GHz, OFDM, 2x clock APPLE80211_MODE_TURBO_G = 0x40, // 2GHz, OFDM, 2x clock APPLE80211_MODE_11AC = 0x80, };

APPLE80211_MODE_11AC这个值,我是试出来的,

zxystd commented 4 years ago

@zxystd 你好,你知道getROAM_THRESH(OSObject, apple80211_roam_threshold_data)这个方法里的struct apple80211_roam_threshold_data这个结构体是什么吗?

我现在还没研究到这块呢,尴尬。。 不过我刚刚大概看了下,大概是这样的 struct apple80211_roam_threshold_data { uint32_t version;//看起来好像是写死的 1 uint32_t threshold; }; 关于漫游的threshold值可以参考http://support.huawei.com/enterprise/docinforeader!loadDocument1.action?contentId=DOC1000088074&partNo=10182

谢谢!!! 还想请教一下,像这种结构体或枚举,怎样才能知道它的结构是什么呢,不太懂这方面的知识。 就好像: enum apple80211_phymode { APPLE80211_MODE_UNKNOWN = 0, APPLE80211_MODE_AUTO = 0x1, // autoselect APPLE80211_MODE_11A = 0x2, // 5GHz, OFDM APPLE80211_MODE_11B = 0x4, // 2GHz, CCK APPLE80211_MODE_11G = 0x8, // 2GHz, OFDM APPLE80211_MODE_11N = 0x10, // 2GHz/5GHz, OFDM APPLE80211_MODE_TURBO_A = 0x20, // 5GHz, OFDM, 2x clock APPLE80211_MODE_TURBO_G = 0x40, // 2GHz, OFDM, 2x clock APPLE80211_MODE_11AC = 0x80, };

APPLE80211_MODE_11AC这个值,我是试出来的,

 LODWORD(v10) = 0;
  if ( *(_BYTE *)(v5 + 12) )
  {
    v11 = wlc_get_current_bss(v5, "vhtmode", 0LL);
    v12 = *((_QWORD *)a1 + 311);
    if ( !*(_BYTE *)(v12 + 95) || (v10 = 128LL, !(*(_BYTE *)(v11 + 168) & 2)) )
    {
      if ( !(*(_BYTE *)(v12 + 93) & 3) || (v10 = 16LL, !(*(_BYTE *)(v11 + 6) & 0x20)) )
      {
        v13 = v11;
        v14 = wlc_get_home_chanspec(v5, "vhtmode", v10);
        LODWORD(v10) = 2;
        if ( v14 <= 0xBFFFu )
        {
          v17 = 0;
          v18 = 0;
          v19 = 0;
          AirPort_BrcmNIC::ratesetModulations(v5, (_DWORD *)(v13 + 56), 0, &v17, &v18, &v19);
          LODWORD(v10) = 4 * v18 + 4;
        }
      }
    }
  }

从这段代码就可以看出来v10的可能值有哪些了 0 2 16 128 4 * x + 4

知道之后,只能靠经验/猜,还有就是动态去试了,(/ω\)

a565109863 commented 4 years ago

@zxystd 你好,你知道getROAM_THRESH(OSObject, apple80211_roam_threshold_data)这个方法里的struct apple80211_roam_threshold_data这个结构体是什么吗?

我现在还没研究到这块呢,尴尬。。 不过我刚刚大概看了下,大概是这样的 struct apple80211_roam_threshold_data { uint32_t version;//看起来好像是写死的 1 uint32_t threshold; }; 关于漫游的threshold值可以参考http://support.huawei.com/enterprise/docinforeader!loadDocument1.action?contentId=DOC1000088074&partNo=10182

谢谢!!! 还想请教一下,像这种结构体或枚举,怎样才能知道它的结构是什么呢,不太懂这方面的知识。 就好像: enum apple80211_phymode { APPLE80211_MODE_UNKNOWN = 0, APPLE80211_MODE_AUTO = 0x1, // autoselect APPLE80211_MODE_11A = 0x2, // 5GHz, OFDM APPLE80211_MODE_11B = 0x4, // 2GHz, CCK APPLE80211_MODE_11G = 0x8, // 2GHz, OFDM APPLE80211_MODE_11N = 0x10, // 2GHz/5GHz, OFDM APPLE80211_MODE_TURBO_A = 0x20, // 5GHz, OFDM, 2x clock APPLE80211_MODE_TURBO_G = 0x40, // 2GHz, OFDM, 2x clock APPLE80211_MODE_11AC = 0x80, }; APPLE80211_MODE_11AC这个值,我是试出来的,

 LODWORD(v10) = 0;
  if ( *(_BYTE *)(v5 + 12) )
  {
    v11 = wlc_get_current_bss(v5, "vhtmode", 0LL);
    v12 = *((_QWORD *)a1 + 311);
    if ( !*(_BYTE *)(v12 + 95) || (v10 = 128LL, !(*(_BYTE *)(v11 + 168) & 2)) )
    {
      if ( !(*(_BYTE *)(v12 + 93) & 3) || (v10 = 16LL, !(*(_BYTE *)(v11 + 6) & 0x20)) )
      {
        v13 = v11;
        v14 = wlc_get_home_chanspec(v5, "vhtmode", v10);
        LODWORD(v10) = 2;
        if ( v14 <= 0xBFFFu )
        {
          v17 = 0;
          v18 = 0;
          v19 = 0;
          AirPort_BrcmNIC::ratesetModulations(v5, (_DWORD *)(v13 + 56), 0, &v17, &v18, &v19);
          LODWORD(v10) = 4 * v18 + 4;
        }
      }
    }
  }

从这段代码就可以看出来v10的可能值有哪些了 0 2 16 128 4 * x + 4

知道之后,只能靠经验/猜,还有就是动态去试了,(/ω\)

好的,谢谢!!