This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3235MODASF:无法使用 WP2-Enterprise 进行连接

Guru**** 2522770 points
Other Parts Discussed in Thread: CC3235MODASF, UNIFLASH

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/991973/cc3235modasf-cannot-connect-using-wp2-enterprise

器件型号:CC3235MODASF
主题中讨论的其他器件: UNIFLASH

您好!

我无法连接 到 PEAP-MSCHAPv2的 WPA2-Enterprise 网络集。

我正在使用 Network_Terminal 示例并对:cmdWlanConnectCallback()函数进行以下修改:

1) 1)添加了用于刷写根证书的代码。

2) 2)添加了用于设置时间的代码。

下面显示了对 Network_Terminal 示例的完整更改:

//******** PEM 格式的 CA 证书*****

const char TestCA[]=
"---- 开始证书-- \r\n "
"MiIDmTCCAoGAwIBAgIQVtgg1/LEcY9N46LX/IxE2DANBgqhkiG9w0BAQsFADBe\r\n"
"MRMwEQYKCZImiZPyLGQBGRYDY29tMRcwFQYKCZImiZPyLQBGRYHZG9tYWluMTES\r\n"
"MBAGCgmSJomT8ixkARkWAmdsMRowGAYDVQDExFnbC1XSU5TRVJWRVIwMS1DQTAg\r\n"
"Fw0yMTA0MDQxNzAzNTVaGA8yMDcxMDQwNDE3MTM1NVowXjETMBEGCgmSJomT8ixk\r\n"
"ARkWA2NvbTEXMBUGCgmSJomT8ixkARkWB2RvbWFPbJExEjAQBgoJkiaJk/IsZAEZ\r\n"
"FgJnbDEaMBgGA1UAxMRZ2wtV0lOU0VSVkVSMDEQ0EwggEiMA0GCSqGSIb3DQEB\r\n"
"AQUAA4IBDwAwggEKAoIBAQCxtTq1GWH77Bj+tarT7DV5NJV0xJLW3/T/uzxG5z4b\r\n"
"YSGddc0Wq7RRFQ6QcyC_pNNeKoZ65PVetnMQl35BXRLVJLYCMhCNykSOPFTJ9K4Pq\r\n"
"qvPDWnwaw8eVl/40pB+TgNZtgKXY5iJJW6cqhXew4+feB4XMnUg0ghXiyD6ffP2g\r\n"
"F9XQ5cGoZTQd9h3JAuOfGgjyhl+m+RTjfRBPfAEVxB2lWKr0oRpf0p9B48lubjru\r\n"
"++w+cc24fPSZqD+9cRR5Y81DhgoBHNEPIdke6EQePPZOB5+He5ioHKgDTqVP55J\r\n"
"4ezij2tjtgcpH63uCGDMAMl45fC7rfEZg/tpBj8StXTdAgMBAAGjUTBPMAsGA1Ud\r\n"
"DwQEAwIBhjAPBgNVHRMBAf8EBTADAPQH/MB0GA1UdDgQWBBT0VZ4XG1CexdRJsiN\r\n"
"jh5weuelHDAQBgkrBgEEAYI3FQEEAwIBADANBgqhkiG9w0BAQsFAAOCAQEAqR99\r\n"
"eKiZR8Vl7spiCHss3oIK9JfVXRmcenTHDF+OcLU1BcZr67zIyoXKRNSgwmLWiGq\r\n"
"/IBfcK4Ho0DC+sAlZAwmMqDMBDDDB60oJXVXrdvOutafaiykhcr6IV6eGGGNJdFrv\r\n"
"qifRW60bgEWerwNVWjyrgf8JRzqArfv5uNDzKWoZOozXoA+YBW9hk3P3MMM/UGZ+r\n"
"zpeBqT4/gAe2U6itp6aVt7d4pE9znpCEZBwTIrtRPu28AALaOSaTfCa/fVBTPl\r\n"
"wBV039mANSCk/Bq6zzfV8lCaQx0GK2vDAkxak6DgZN0DHNQpfLm+8ApogyJubvba\r\n"
"wykJotysAdiTLjC++w=\r\n"
"---- 结束证书-- \r\n "

/*****  闪存证书代码 *****
unsigned long g_tokes[4];
int16_t flashCerts (uint8_t * CertName、uint8_t * buffer、uint32_t bufflen、uint32_t maxlen、bool overwriteCerts)

int ret = 0;
int16_t slStatus = 0;
slfsFileInfo_t fsFileInfo;
int32_t fileHandle;

G_TOKEN[SL_FS_TOKEN_MASTER]= 0x12345678;

/*检查证书文件是否已存在*/
slStatus = sl_FsGetInfo (CertName、0、&fsFileInfo);

/*如果证书不存在,请将其写入(或在指定时覆盖)*/
如果(slStatus = sl_error_fs_file_no_exists || overwriteCerts = true)

fileHandle = sl_FsOpen ((unsigned char *) CertName、
SL_FS_create | SL_FS_CREATE_SECURE | SL_FS_CREATE_VENDOOR_TOKEN | SL_FS_CREATE_NOSIGNATURE
| SL_FS_CREASE_PUBLICE_READ | SL_FS_CREASE_PUBLICE_WRITE | SL_FS_OVERWRITE
| sl_FS_CREASE_MAX_SIZE (maxlen)、&(g_tokes[sl_FS_TOKEN_MASTER]);
如果(fileHandle >0)

RET = sl_FsWrite (fileHandle、0、(unsigned char *) buffer、bufflen);
sl_FsClose (fileHandle、NULL、0);


回程;

//***** 修改了 cmdWlanConnectCallback ***********

int32_t cmdlWlanConnectCallback (void *arg)

int32_t ret = 0;
ConnectCmd_t ConnectParams;

/*调用命令解析器*/
memset (ConnectParams、0x0、sizeof (ConnectCmd_t));
RET = ParseConnectCmd (arg、&ConnectParams);

if (ret < 0)

FreeConnectCmd (ConnectParams);
return(-1);

RET = flashCerts ("/sys/cert/ca.der、(uint8_t *) TestCA、strlen (TestCA)、2048、0);


/*
*检查 NWP 是否处于 STA 角色、
*因为它必须是 STA 角色才能连接到 AP。
*如果不是-设置角色并重置 NWP。
*
if (app_bc.role!= role_STA)

RET = SL_WlanSetMode (Role_STA);
ASSERT_AND_CLEAR_CONNECT (RET、WLAN_ERROR、ConnectParams);

RET = sl_Stop (sl_stop_timeout);
ASSERT_AND_CLEAR_CONNECT (RET、DEVICE_ERROR、ConnectParams);

RET = SL_Start (0、0、0);
ASSERT_AND_CLEAR_CONNECT (RET、DEVICE_ERROR、ConnectParams);

/*这里我们处于 STA 模式*/
app_b.role = ret;

/*根据需要设置静态 IP 配置-否则,
IP 将由网络的 DHCP 服务器分配。 *
if (ConnectParams.IP)

RET =
setStaticIPConfig (uint8_t*)(ConnectParams.IP)、
(uint8_t*)(ConnectParams.GW)、
(uint8_t*)(ConnectParams.DNS);
ASSERT_AND_CLEAR_CONNECT (RET、CMD_ERROR、ConnectParams);

/*如果需要,在连接到 ENT 网络之前设置设备时间和日期*/
if (ConnectParams.secParamsEnt.User!= NULL)

ConnectParams.DateTimeTM_sec = 0;
ConnectParams.DateTime.TM_min = 0;
ConnectParams.DateTimeTM_Hour = 0;
ConnectParams.DateTimeTM_Day = 7;/* 1-31 */
ConnectParams.DateTimeTM_mon = 4;/* 1-12 */
ConnectParams.DateTime.TM_year = 2021;// YYYY 4位数*/

RET =
SL_DeviceSet (SL_DEVICE_General、SL_DEVICE_General_DATE_TIME、
sizeof (slDateTim_t)、
(uint8_t *)(ConnectParams.DateTime));
ASSERT_AND_CLEAR_CONNECT (RET、DEVICE_ERROR、ConnectParams);

//连接到 ENT AP */
RET =
sl_WlanConnect ((const signed char *)(ConnectParams.SSID)、
strlen(
(const char *)(ConnectParams.SSID))、0、
和(ConnectParams.secParams)、
和(ConnectParams.secParamsEnt));
ASSERT_AND_CLEAR_CONNECT (RET、WLAN_ERROR、ConnectParams);

其他

//连接到 AP */
RET =
sl_WlanConnect ((const signed char *)(ConnectParams.SSID)、
strlen(
(const char *)(ConnectParams.SSID))、0、
ConnectParams.secParams、0);
ASSERT_AND_CLEAR_CONNECT (RET、WLAN_ERROR、ConnectParams);

/*等待连接事件:
*为了验证连接是否成功、
*我们在两个传入事件上挂起:已连接和已获取 IP。
*下面的信标被这个(主)上下文挂起。
*它们将在异步事件后发出信号
*表示 NWP 已连接且获取的 IP 地址被提升。
*有关详细信息,请参阅此应用程序自述文件。
*
if (!is_connected (app_b.Status))(如果!is_connected (app_bc.Status)

RET = SEM_WAIT_TIMEOUT (&APP_CB.CON_CB.connectEventSyncObj、
wlan_event_tout);
if (ret ==timeout_sem)

UART_PRINT ("\n\n\r\n[wlanconnect]:连接到 AP 的超时:%s\n\r\n、
ConnectParams.ssid);
FreeConnectCmd (ConnectParams);
return(-1);

if (!is_ip_acquired (app_cb.Status))(如果!is_ip_acquired (app_c

RET = SEM_WAIT_TIMEOUT (&APP_CB.CON_CB.ip4acquireEventSyncObj、
wlan_event_tout);
if (ret ==timeout_sem)

/*在下一步尝试获取 IPv6,
路由器/AP 可能不支持 IPv4 *
UART_PRINT (
"\n\r\n[wlanconnect]:获取 IPv4地址超时。\n\n");

if (!is_IPV6G_Acquired (app_CB.Status))

RET = SEM_WAIT_TIMEOUT (&APP_CB.CON_CB.ip6acquisedEventSyncObj、
wlan_event_tout);
if (ret ==timeout_sem)

UART_PRINT (
"\n\r\n[wlanconnect]:获取 IPv6地址超时。\n\n");

if (!is_IPV6G_Acquired (app_bc.Status)&&
!iS_IPV6L_Acquired (app_CB.Status)&&!is_IP_Acquired (app_CB.Status)

UART_PRINT ("\n\r\n 线:%d、错误:%d]%s\n\r\n、__LINE__、-1、
"网络错误");

FreeConnectCmd (ConnectParams);
返回(0);

我有几个问题:

1) 1)您能否就我可能会出什么问题提供指导?

2) swru455文档指出证书应采用 PEM 格式、但随后指出文件名应为/sys/cert/ca.der. DER 文件扩展名是否正确?

3) 3)   为了获取 NWP 日志、swru455第20节介绍了如何将 PIN_62配置为 UART 引脚。 对于 CC3235MODASF、引脚62是接地焊盘。 您能澄清一下吗?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    需要注意的主要问题是,对于您的证书文件,您不应该为最后的“------ 结束证书-- \r\n "行。 可能导致您的问题的原因。  除此之外、需要查看 NWP 日志才能有效地调试您的问题-很难说没有该输出以及 RADIUS 服务器输出可能在连接期间出错的情况。

    您可以使用 Uniflash 将证书文件直接刷写到 CC32xx 文件系统中、而无需在代码中执行证书刷写、从而消除了这种潜在的错误来源。

    2.是的, www.ti.com/lit/swru455中提供的信息 是正确的。 您需要以 PEM 格式将证书命名为文件系统上的.der。

    3.应使用指定 PIN_62信号的指令。 这是指 CC32xx IC 器件、而不是模块。 对于该模块、您需要使用与内部 IC 引脚62相对应的引脚。 CC3235 IC 上的引脚62用于 GPIO7。 GPIO7位于 CC32xx 模块的引脚52上、因此您需要将 UART 连接到 PC 适配器的引脚。 请注意、您运行的 CC3235上的实际代码仍将使用 PIN_62。

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我从最后一行中删除了"\r\n"。 这不会改变结果。

    我有 NWP 日志。 如何将文件附加到此线程?

    尝试连接未生成服务器日志。 在 NWP 到达服务器之前,操作可能会失败。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我向您发送了一个朋友请求、其中包含指向共享文件夹的链接。 请将 NWP 日志文件上传到该文件夹。

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我看到朋友的请求、但我错过了共享文件夹的链接。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我已下载共享文件夹中提供的日志、但它似乎已损坏。 您是否确保使用正确的 UART 捕获设置? 另外、请确保您捕获的是所有二进制数据、而不仅仅是 ASCII 可打印字符。

    您还可以对收集的日志执行完整性检查、然后再将其提供给我。 如果从冷启动成功捕获 NWP 日志、则应在原始二进制日志中看到一些 ASCII 纯文本、尤其是/sys/servicepack.ucf NWP SP 文件。 此外、该字符串前面的3个字节的二进制数据将为0x27 0xCA 0x2F。 如果您检查字符串+这3个字节并在日志中看到它、并且还看到存在空字符、则应该正确捕获该字符并可由我的工具解码。

    请按照上述建议重新捕获日志并将其重新上载到共享文件夹。

    谢谢、
    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Michael、

    文件 CC3235_Log_20210413.log 已上载到共享文件夹。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您提供这些新日志、我可以成功地对它们进行解码。

    查看日志时,似乎有一个失败的 EAP 连接尝试:

    日志表示在 EAP 服务器握手过程中的某个位置连接尝试失败。 在上一篇文章中,您提到 EAP 服务器没有输出。 您能否进行仔细检查以确保情况正确?

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Michael、

    我已将 Wireshark 日志上载到共享文件夹。  

    为了便于参考、我还包括了从另外两个器件、即 Windows PC 和智能手机采集的数据。 这两个器件均已成功连接。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您提供这些日志。 查看不成功的 CC3235日志和其他设备日志之间的差异、似乎 EAP 连接过程在 CC3235响应 EAP 身份数据包后立即卡住。 这与 NWP 日志数据一致。

    现在、似乎日志仅记录从 AP 发出的数据包、而没有 CC3235的响应。 您能否检查滤波器设置并向我提供包含 CC3235响应的日志? 查看 CC3235发送回 AP 是调试的关键部分、查看上面的日志、可以看到 CC3235尽管发送了正确的响应、但仍然无法从 AP 接收任何后续数据包。

    此外、您能否检查 EAP 服务器调试输出以查看服务器是否有任何原因可能决定终止连接尝试、而不将任何响应发送回 CC3235?

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Michael、

    我上传了一个新的捕获文件。 文件日期为20210422。 还包括未成功连接尝试的 Windows Server 错误日志条目。

    此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您提供最新的日志集。 使用新的 Wireshark 捕获包括来自 CC3235的响应非常有用。

    事实上、当与 Windows Server 中的信息结合使用时、问题的原因似乎相当清楚- CC3235没有向 EAP 服务器提供用户身份。

     在网络终端中使用 wlanconnect 命令时,是否设置 entUserName 参数?

    通过查看网络终端代码、命令解析器中实际上可能存在错误。 在 cmd_parser.c 的 ParseConnectCmd()中,解析 wlanconnect 命令,并从命令字符串中提取 SSID、密钥等信息。 在中有一个

    if (entUserName)检查、该检查应将提供的 entUserName 从命令字符串复制到 secParamEnt 结构。 但是,复制操作似乎不正确。 请使用此代码:

    if(entUserName)
        {
            ConnectParams->secParamsEnt.UserLen = strlen(entUserName);
            ConnectParams->secParamsEnt.User = calloc(
                sizeof(uint8_t), ConnectParams->secParamsEnt.UserLen);
            strcpy(ConnectParams->secParamsEnt.User, entUserName);
            ConnectParams->secParamsEnt.AnonUser = NULL;
            ConnectParams->secParamsEnt.EapMethod =
                    SL_WLAN_ENT_EAP_METHOD_PEAP0_MSCHAPv2;
            ConnectParams->secParams.Type = SL_WLAN_SEC_TYPE_WPA_ENT;
            ConnectParams->dateTime.tm_year = DEVICE_YEAR;
            ConnectParams->dateTime.tm_mon = DEVICE_MONTH;
            ConnectParams->dateTime.tm_day = DEVICE_DATE;
        }

     

    请告诉我这是否能解决您的问题。

     

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Michael、

    您提供的代码解决了该问题。 遗憾的是、连接仍然超时。 这一次,它在 EAP 验证过程中会进一步超时。  

    我已将最新日志下载到共享文件夹。 我还附加了从 Windows Server 导出的证书。 正如我之前指出的、我已在其他设备中成功尝试过相同的证书。

    谢谢。

    Gabino

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gabino、

    感谢您提供调试信息。

    查看 NWP 日志和 Windows Server 日志、可以查看以下几项:

    1.尝试将 cert/ca.der 文件转换为不安全的文件。 这是为了消除文件安全性作为错误来源

    2.您的服务器是否需要客户端证书文件? PEAP_MSCHAPv2设置很少会出现这种情况、但需要确保情况确实如此。

    3. RADIUS 服务器上可能会出现身份验证错误,导致您的问题-您是否仔细检查了以确保您提供的用户名和密码与服务器上的预期相符?

    此外、查看 Windows 服务器输出、似乎有更多可用的日志记录数据、并将所述的实际故障原因写入另一个日志文件:

    "在网络策略服务器使用可扩展身份验证协议(EAP)时发生错误。 检查 EAP 日志文件中是否存在 EAP 错误。"

    您能否找到此日志并检查是否列出了更具体的故障原因?

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外、这里是一个 E2E 主题、 我在其中提供 了一整套更改和有关如何通过网络终端使用 PEAP_MSCHAP 的说明。 我建议您查看一下、看看与您的设置相比是否有什么不同。

    https://e2e.ti.com/support/wireless-connectivity/wifi/f/wi-fi-forum/900299/compiler-cc3235s-how-to-config-cc3235s-enterprise-wifi/3329939#3329939

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Michael 和所有人、

    客户仍在努力使 WPA2企业连接成功工作。

     我们 有两个问题:  

    1. 非 TI 人员是否可以轻松查看 NWP 日志?
    2. 我想逐步浏览 WiFi 驱动程序的源代码。 我们相信 TI 项目已设置为使用预编译的.dll 驱动程序二进制文件。 如果可能的话、他们需要做什么来将其更改为源代码?

    Ty、
    是的

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、您好、

    不可以、NWP 日志包含专有信息、因此只能由 TI 工程师解码。

    2.客户是否参考 NWP 主机驱动程序源代码? 默认情况下、您只需链接到预构建的库、但源代码在 SDK 中提供、位于 source/ti/drivers/net/wii/source。 客户可以将源文件复制到其项目中、并使其像任何其他源文件一样构建、前提是他们希望能够单步执行 NWP 主机驱动程序代码、而库的优化不会影响调试器。

    此致、

    Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Michael、

    1.了解日志的专有性质。

    2.是,主机驱动程序源。  我认为这是我们将在明天的会议上集中讨论的问题。

    希望 Gabino 有机会提前查看您对该主题的其他评论。

    谢谢大家、

    Chris