Wi-Fi Combo Forum Discussions
We have a platform that uses WICED Version 3.7.0-7. AN STM32F469 processor uses the WiFi/BT module LBEE5KL1DX. We're able to bond with and connect and reconnect to a BTLE 4.0 keyboard without issues. When we do the same with the same model of keyboard that uses BTLE 5.0, we're able to bond with and connect with the keyboard, but upon re connection, the firmware crashes. From the debugger, it seems to be crashing in a pee-compiled module we have: BTE_low_energy.FreeRTOS.LwIP.ARM_CM4.release.a.
Our belief is that something in the firmware is not handling BT 5.0 events correctly and is causing the firmware crash. But it isn't easy to tell what's going on in the project and the .a file is a bit of a mystery too. Are there any clues as to where to look for this issue? Is there perhaps an updated version of WICED or an updated driver file we should be using?
Show LessEnvironment and SDK information:
WICED version: 6.4
Wi-Fi Module: Murata Type1GC
Wi-Fi connection(to wireless LAN AP) is lost immediately after 11 hours past with WPA3-SAE.
We think it was caused due to Wi-Fi module is down. It's not disconnected by wireless AP.
And we have already tried other wireless LAN AP from several vendors, and we confirmed that the same issue was reproduced in every case.
However, if we choose WPA2-PSK, the issue doesn't happen. Wi-Fi connection is still alive after 11 hours past.
Do you have any solutions to this issue?
Show Less1GC sends data using UDP, Call wiced_result_t wiced_udp_send(wiced_udp_socket_t * socket, const wiced_ip_address_t * address, uint16_t port, wiced_packet_t * packet), can only send 1472 bytes?
I have changed NX_DONT_FRAGMENT to NX_FRAGMENT_OKAY when I call wiced_UDP_create_socket to create UDP socket. The result is also not supported.
Call wiced_packet_create_udp(socket, 4000, &packet, (uint8_t**) &data, &available_data_length), The value of available_data_length is 1508.
We have a issue with non-working BLE advertisement after exit from Sleep mode.
Our procedures of enter to and exit from sleep mode looks more or less like that:
// turn on powersave mode (enter to sleep mode)
wiced_wlan_connectivity_deinit(); // WIFI module deinitialization
wiced_gpio_init( WIFI_EN, INPUT_HIGH_IMPEDANCE ); // WIFI module power off (LDO disable)
wiced_platform_mcu_enable_powersave(); // enable MCU sleep mode
// here we have very nice power consumption, about 500uA
// device sleep
// device wakeup
// turn off powersave mode (exit from sleep mode)
wiced_platform_mcu_disable_powersave(); // disable MCU sleep mode
wiced_gpio_init( WIFI_EN, OUTPUT_PUSH_PULL ); // WIFI module power on (LDO enable)
wiced_gpio_output_high ( WIFI_EN );
wiced_wlan_connectivity_init( ); // WIFI module initialization
// enable BLE advertisement after exit from sleep mode
wiced_bt_start_advertisements( BTM_BLE_ADVERT_UNDIRECTED_HIGH, 0, NULL );
Deinitialization WLAN connectivity only (without turning off WiFi power cause high power consumption, above 10mA).
Turning OFF WiFi RF power (by external LDO) decrease power consumption below 500uA which is expected.
Reintialization everything in a clear way, together with turning ON WiFi RF works well until start BLE advertisement.
Starting BLE advertisement causes continuous periodic (every 8.5s) receiving BLE_ENABLE_EVT events from bluetooth stack.
And advertisement doesn't work, we are not able to see any advertisement packets.
We definitely would like to turning off/on WiFi power by external LDO, because it gives us additional 1mA of power savings in compare to powersave only without WiFi deinitialization.
What could be a reason for this behaviour?
Are our enter/exit sleep mode procedures correct?
Show LessHello.
We develop a board with the same processor in CYW943907AEVAL1F.
We mount CYPRESS S25FL064LABNFI010 instead of MX25L6433FZNI as FLASH.
I modify CYW943907AEVAL1F.mk row 62 from
GLOBAL_DEFINES += SFLASH_SUPPORT_MACRONIX_PARTS
to
GLOBAL_DEFINES += SFLASH_SUPPORT_CYPRESS_PARTS.
We used OLIMEX ARM-USB-TINY-H as programmer and I launch this make target
"My project location"-CYW943907AEVAL1F download run JTAG=Olimex_ARM-USB-TINY-H
The debugger log says that's all it's OK but my APP doesn't start.
I try to modify sflash_write.c to execute this steps in order to understand if FLASH can be programmed properly:
/* init */
if ( 0 != init_sflash( &sflash_handle, 0, SFLASH_WRITE_ALLOWED ))
{
DEBUG_PRINTF(( "init_sflash failed!\n" ));
return -1;
}
/* erase */
DEBUG_PRINTF(( "1. erase\n\n" ));
if ( 0 != sflash_chip_erase( &sflash_handle ))
{
DEBUG_PRINTF(( "sflash_chip_erase failed!\n" ));
return -1;
}
/* write */
int i = 0;
for(i=0;i<256;i++) data_transfer.data[i] = (uint8_t)(i&0xFF);
DEBUG_PRINTF(( "ADDRESS HEX\tWRITTEN HEX\tREAD HEX\n" ));
long j=0;
for(j=0;j<32768;j+=256)
{
/* write */
if ( 0 != sflash_write( &sflash_handle, j, &data_transfer.data[0], 256))
{
DEBUG_PRINTF(( "sflash_write failed!\n" ));
goto end_test;
}
(void) platform_watchdog_kick( );
/* read */
if ( 0 != sflash_read( &sflash_handle, j, &Rx_Buffer[0], 256))
{
DEBUG_PRINTF(( "sflash_read failed!\n" ));
goto end_test;
}
(void) platform_watchdog_kick( );
for(i=0;i<256;i++)
{
DEBUG_PRINTF(( "%08X\t\t%02X\t\t%02X", (int)(i+j), data_transfer.data[i]&0xFF, Rx_Buffer[i]&0xFF));
if((data_transfer.data[i]&0xFF) != (Rx_Buffer[i]&0xFF))
{
DEBUG_PRINTF(( "----> failed !"));
}
DEBUG_PRINTF(( "\n" ));
}
}
This test says that FLASH can be programmed in a properly way ... but I don't undestand why after programming FLASH
the APP does'nt start.
Is there a kind who can help me?
Show LessHi,
We uses Murata Type1LD and recently found an issue with 'malloc'. 'malloc' fails to allocate space even though heap has plenty of space. We checked heap status and it shows as below,
sbrk heap size: 206916
sbrk current free: 163832
malloc arena: 43084
malloc allocated: 42300
malloc free: 784
It seems like malloc does not uses all the available heap space (163KB free). We would like to know whether there is any way to configure Wiced (via ld file or any other method) to use all available heap space in malloc. It seems like Wiced uses FreeRTOS 'heap_3' implementation. Any help on this is highly appreciated
regards
SR
Show LessHi,
In my application I need to know what beacon period and DTIM interval are set for the AP that my device (CYW4343W in Type1DX with WICED 6.6) is connected to.
I'm calling wiced_get_bss_info to achieve that. Most of the time, it works fine, however, for some unknown reason it sometimes starts to fail and then fails continuously with the error code 2014 (Buffer too short).
What are the possible reasons for such error for this function ? How can I prevent that ? Is there any other way to get the beacon / DTIM information ?
Thanks for your support.
Best regards,
Mehdi
Test using SDK-5.1.0.
I tried below command but it fails.
> join_ent LAB-ENT-TEST peap testuser testpass wpa2␍␊
besl_supplicant_init OK␍␊
besl_supplicant_start OK␍␊
Joining : LAB-ENT-TEST␍␊
Supplicant received link event␍␊
Supplicant completed successfully␍␊
Failed to join : LAB-ENT-TEST␍␊
Joining : LAB-ENT-TEST␍␊
Failed to join : LAB-ENT-TEST␍␊
Joining : LAB-ENT-TEST␍␊
Failed to join : LAB-ENT-TEST␍␊
Join result 1007: ␍␊
wifi_join fails␍␊
Can someone confirm if BCM4343W and BCM43438 support enterprise security or not?
Show LessWe have found an issue within WICED Studio 6.6 where GKI_find_buf_start()
appears to be accessing an uninitized variable. We noticed that following a soft reset the RAM contents are not zeroed. Therefore GKI_find_buf_start() interpretation of the data leads to unpredicted behavior. The behavior tends to vary with changes to our application code, which is why we say it is unpredictable. However, the behaviour remains the same for each build. For example, in one case we found the BLE would not report the BTM_ENABLED_EVT following init.
Our temporary solution, given that fixing the GKI_find_buf_start()
function is not an option (black box), the only solution available was to ensure the data is initialised. The solution is then to write zeros in RAM during the initialisation sequence (_start()
), which fixes the issue.
/* Enable CPU Cycle counting */
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; /* Global Enable for DWT */
DWT->CYCCNT = 0; /* Reset the counter */
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; /* Enable cycle counter */
// Reset whole RAM
memset((uint8_t *)SRAM1_BASE, 0, SRAM1_SIZE_MAX);
memset((uint8_t *)SRAM2_BASE, 0, SRAM2_SIZE);
Show Less