Wi-Fi Combo Forum Discussions
Is there any documentation or example snips/projects that show our WiFi or WiFi/BT combo devices running in IBSS ADHOC mode?
If so could someone point me to them.
Thanks
Graham
Show Less
Hi Vinayak ,
you referred the documentwifi test commands is operating in Linux or windows. you referred document mentioned contents 1.1
1.1 System Requirements The hardware and software requirements are:
■ The latest Cypress CYW43xx hardware.
■ A Linux operating system platform.
■ The latest version of the Cypress dongle driver.
we are working on windows10 operating system platform
Thanks ,
srikrishna
Show LessHi ,
Thank you for giving answers. I got it .I need to One command with arguments or parameters with python script that is very helpful one eg.
for example scan command will under come parameters like association time , unassociation time,passive time.like that please give example as like as above script. or not required to pass arguments? and some commands have wl join <ssid> [key <xxxxx>] [imode bss|infra|ibss|adhoc] ,where we can mentioned parameters or arguments in the script.
#######################################################
def wwd_wifi_set_scan_params(self,
assoc_time,
unassoc_time,
passive_time,
home_time,
nprobes
😞
########################################################
import sys, string , os ,argparse
parser = argparse.ArgumentParser()
parser.add_argument("-l","--location",help="absolute path to your wl utility,(note the slash) eg:<location>/43xxx_Wi-Fi/libraries/test/wl_tool/ ")
parser.add_argument("-c","--commands",help="location of the commands file, note the slash eg: C:/home/test/test_command.txt")
parser.add_argument("-p","--port",help="com port Number")
args = parser.parse_args()
if args.location and args.port and args.commands:
print("Running wl utility at " + args.location)
type(args.location)
clist = []
file = open(args.commands, 'r')
for line in file:
clist.append(line.strip('\n'))
os.chdir(args.location)
#add your list of commands here inside
for i in range(0,len(clist)):
os.system(args.location + "wl43909B0.exe --serial " + args.port + " " + clist)
else:
print("incorrect usage, type -h for help")
##################################################
Thanks ,
Srikrishna
Show LessCreating a server application with all dynamic pages.Using the WICED macro START_OF_HTTP_PAGE_DATABASE to define all the possible web pages and page callbacks. In our app can treat the pages generically so only a single callback needed for all our pages - relying on the fact that WICED will provide the specific filename and/or data to the callback function.
Since we will have many pages (more than shown below) I would prefer to use wildcard syntax in the web page data base, see below. There appears to be a WICED problem related to this.
If a POST request, we parse the data (part of the parameter http_data in the callback) for some keywords specific to our application. Then we read the file passed as parameter url_path from our embedded file system and serve that via the WICED api wiced_http_response_stream_write. The problem is sometimes a POST request is divided over 2 packets. In the first packet the file name is correct, but no data is attached, http_data->message_data_length = 0. The subsequent packet will have the data but now the filename is incorrect, it is as specified in the web page data base, "*.html". If I do not use wildcard characters in the data base and populate it explicitly with all the possible files everything works as expected. Moving forward we may have hundreds of possible pages so the use of wildcard in the web page data base is needed.
// signature of our page callback.....
static int32_t pageCallback(const char* url_path, const char* url_parameters, wiced_http_response_stream_t* stream, void* arg, wiced_http_message_body_t * http_data )
// example of a portion of web page data based when all files explicitly defined
START_OF_HTTP_PAGE_DATABASE(ap_web_pages)
ROOT_HTTP_PAGE_REDIRECT("/indexhme.htm"),
{ "/upload_a.htm", "text/html", WICED_DYNAMIC_URL_CONTENT, .url_content.dynamic_data = { pageCallback,PostUpload}, },
{ "/buftmp.htm", "text/html", WICED_DYNAMIC_URL_CONTENT, .url_content.dynamic_data = { pageCallback,PostUpload}, },
{ "/buftmp1.htm", "text/html", WICED_DYNAMIC_URL_CONTENT, .url_content.dynamic_data = { pageCallback,PostUpload}, },
{ "/buftmp2.htm", "text/html", WICED_DYNAMIC_URL_CONTENT, .url_content.dynamic_data = { pageCallback,PostUpdate}, },
{ "/buftmp3.htm", "text/html", WICED_DYNAMIC_URL_CONTENT, .url_content.dynamic_data = { pageCallback,PostUpload}, },
{ "/filepost.htm", "text/html", WICED_DYNAMIC_URL_CONTENT, .url_content.dynamic_data = { pageCallback,PostUpload}, },
// example of a portion of our web page database using wildcard
START_OF_HTTP_PAGE_DATABASE(ap_web_pages)
ROOT_HTTP_PAGE_REDIRECT("/indexhme.htm"), // real home
{ "/*.htm", "text/html", WICED_DYNAMIC_URL_CONTENT, .url_content.dynamic_data = { pageCallback,PostUpload}, }, // DAT file
Show Less
I am trying to use parts of code from WICED SDK in my own project to use Murata's LBWA1KL1FX (CYW43364) module with STM32H743 MCU. My goal is to have an access point which could comunicate with PC or mobile apps via TCP and UDP packets. I have similar project working with Broadcom LBWA17DZX6 (SPI bus) and STM32H743, so I need to update it to work with CYW43364 (SDIO bus). I am using FreeRTOS.
All the read register functions as well as wwd_bus_write_wifi_firmware_image( ) function returns with response WWD_SUCCESS, so I assume this means my electrical connection of SDIO is working well.
But I am now stuck in initialisation of the chip, waiting for High speed clock (PLL as I understand) to start up: Code reads SDIO_CHIP_CLOCK_CSR (0x1000E) register from wifi chip and and waits for SBSDIO_HT_AVAIL (0x80) bit to become set, but it gets 0x40 until it times out. This is in a place where this comment is writen:
"If your system times out here, it means that the WLAN firmware is not booting.
* Check that your WLAN chip matches the 'wifi_image.c' being built - in GNU toolchain, $(CHIP) makefile variable must be correct."
I doublechecked my sources and I think I got the fw files right:
Firmware image is a byte array (size 383110 bytes) made from:
WICED-Studio-6.2\43xxx_Wi-Fi\resources\firmware\43364\43364A1.bin
Chip constants file is copied from:
WICED-Studio-6.2\43xxx_Wi-Fi\WICED\WWD\internal\chips\4343x\chip_constants.h
Nvram image (size 625 bytes) is from:
WICED-Studio-6.2\43xxx_Wi-Fi\platforms\BCM943364WCD1\wifi_nvram_image.h
So my question is: what other things (aside from wrong fw image) might have gone wrong to get me in this place. For example:
1. Are there any other files I need to update when going from Broadcom LBWA17DZX6 (CYW43362 - SPI bus) to Murata's LBWA1KL1FX (CYW43364 - SDIO bus)?
2. Is there a diffece in firmware image or nvram image when using muRata vs Broadcom module with CYW43364?
3. Nvram image is stored as an array (static const char wifi_nvram_image[]). Is there any numbers that needs to be modified in that array before writing it to the chip?
4. What are minimal needed connections to get the module on Murata's evaluation board (LBWA1KL1FX-TEMP) up and running?
5. Is the sleep clock (LPO) mandatory to get the chip running? (I can't see how can it be accessed on Murata's i.MX Interconnect boards that I am using now)
Could not connect to a 2018 Network Policy Server with security WPA2, enterprise mode, methods EAP-TLS and EAP-PEAP with TLSv1.2.
Found the issue to be the BESL supplicant export of the MSK.
Replaced the security key returned by besl to the host with a MSK key calculated according to spec EAP TLS RFC5216 in function mbedtls_ssl_derive_keys().
Spec EAP TLS RFC5216:
EAP-TLS derives exported keying material and parameters as follows:
Key_Material = TLS-PRF-128(master_secret, "client EAP encryption",
client.random || server.random)
MSK = Key_Material(0,63)
EMSK = Key_Material(64,127)
IV = TLS-PRF-64("", "client EAP encryption",
client.random || server.random)
Could someone look into the calculation of the key returned to the host by the besl supplicant when using TLSv1.2?
TLSv1.1 works properly.
Running WICED SDK6.2.1:
Starting WICED vWiced_006.002.001.0002
[wiced_platform_init]Platform DPM3_ISM43362_M3G_L44 initialised
[wiced_rtos_init]Started ThreadX v5.8
[wiced_network_init]Initialising NetX_Duo v5.10_sp3
[wiced_network_init]Creating Packet pools
[wiced_wlan_connectivity_init]WLAN MAC Address : C4:7F:51:02:E2:B3
[wiced_wlan_connectivity_init]WLAN Firmware : wl0: May 16 2018 00:27:03 version 5.90.230.31 FWID 01-5849
Included the two modified files besl_host.c andssl_tls.c that fixed our issue, search for: #ifdef FIX_PMK_TLS to find the changes.
Show LessI am trying to communicate with wiced sense 2 from wiced IoT starter kit which has 94343w chip. My goal is be able to send ble data to wifi. I am using bt_smartbridge demo code but it did not work on ble side. I modified the BCM94343W_AVN.mk under the platforms/BCM94343W_AVN as follow and I use WICED SDK 4.1
BT_CHIP := 4343W (modified; was 43438)
BT_CHIP_REVISION := A1
BT_MODE ?= HCI
BT_CHIP_XTAL_FREQUENCY := 37_4MHz
Is it correct? I guess I might need the correct bluetooth firrmware binary bin file for 4343W. The wifi functionality works except ble.
Thank for your help and best regards
Show LessHi Cypress team,
I'm wondering if the wifi-bluetooth combo devices in WICED-Studio is impacted by "Fixed Coordinate Invalid Curve Attack" or not?
If yes, do you have schedule to provide the fix?
References: http://www.cs.technion.ac.il/~biham/BT/
Show LessWe have trouble using the following feature to keep track of wifi activities.
The changes are as follows:
Added to the main thread:
if (wwd_management_set_event_handler( event_type_trig,
event_handler, NULL, WICED_STA_INTERFACE ) != WWD_SUCCESS)
WPRINT_APP_INFO(("Failed to set event handlers! \n"));
The list of events is:
static const wwd_event_num_t event_type_trig[] = {WLC_E_BT_WIFI_HANDOVER_REQ, WLC_E_BCNRX_MSG, WLC_E_BEACON_FRAME_RX,WLC_E_WAKE_EVENT,WLC_E_PROBRESP_MSG,
WLC_E_ACTION_FRAME,WLC_E_PSK_SUP, WLC_E_PSM_WATCHDOG, WLC_E_WNM_STA_SLEEP, WLC_E_AUTH, WLC_E_BEACON_RX, WLC_E_ASSOC};
The event handler is:
void* event_handler ( const wwd_event_header_t* event_header, const uint8_t* event_data, /*@null@*/ void* handler_user_data )
{
WPRINT_APP_INFO(("\nCall back...\n\n"));
return NULL;
}
The program crashes when using WICED 6.1.
When using WICED 5.1, the program works fine, but beacon packets do not call the function.
We realized the the stack utilization is increases when using this feature. Nevertheless, even after removing most the variables, the program still crashes on 6.1.
Show LessIn my application, I have built all images for ota2 with the final one being ota2_manuf_download.
- Built extraction app
- Built ota2_image
- Built otat factory image
- built ota2 manufacturing image (with -debug added to platform).
When I run the application, it fails during wicedfs_init with a -2.
fs_header elements are all 1's.
SDK = 6.2.0
platform_result_t platform_filesystem_init( void )
{
int result;
if ( fs_init_done == 0)
{
if ( init_sflash( &wicedfs_sflash_handle, 0, SFLASH_WRITE_NOT_ALLOWED ) != WICED_SUCCESS )
{
return PLATFORM_ERROR;
}
#if (DCT_BOOTLOADER_SDK_VERSION < DCT_BOOTLOADER_SDK_3_1_2)
/* this SDK does not have apps_locations in bootloader_dct_header_t (platform_dct_header_t for the SDK) */
#else
if ( wiced_framework_app_open( DCT_FILESYSTEM_IMAGE_INDEX, &fs_app ) != WICED_SUCCESS )
{
return PLATFORM_ERROR;
}
#endif /* (DCT_BOOTLOADER_SDK_VERSION < DCT_BOOTLOADER_SDK_3_1_2) */
result = wicedfs_init( 0, read_callback, &resource_fs_handle, &wicedfs_sflash_handle );
wiced_assert( "wicedfs init fail", result == 0 );
fs_init_done = ( result == 0 ) ? 1 : 0;
return ( result == 0 ) ? PLATFORM_SUCCESS : PLATFORM_ERROR;
}
return PLATFORM_SUCCESS;
}
Show Less
int wicedfs_init ( wicedfs_usize_t base, wicedfs_read_func_t read_func, /*@out@*/ wicedfs_filesystem_t* fs_handle, /*@dependent@*/ void * user_param )
{
wicedfs_filesystem_header_t fs_header;
wicedfs_usize_t bytes_read;
WICEDFS_CHECK_PARAMS ( ( read_func == NULL ) || ( fs_handle == NULL ), -1 );
/* Read the filesystem header */
bytes_read = read_func( user_param, &fs_header, (wicedfs_usize_t) sizeof(fs_header), base );
if ( bytes_read != sizeof(fs_header) )
{
return -1;
}
/*@-usedef@*/ /* Lint: splint does not pick up 'out' annotation of function pointer read_func */
/* Check the magic number and version matches */
if ( ( fs_header.magic_number != WICEDFS_MAGIC ) ||
( fs_header.version != (uint32_t) 1 ) )
{
return -2;
}
/* Save the hardware address of the root directory
* in the filesystem handle for use by other functions
*/
fs_handle->root_dir_addr = base + fs_header.root_dir_offset; /*@+usedef@*/
fs_handle->read_func = read_func;
fs_handle->user_param = user_param;
return 0;
}